From b5835acfc71f6a3324d49a3b2a83ba644977125a Mon Sep 17 00:00:00 2001 From: CMS Build <sha1-7f8a01e8cfe4f7786d42d9cf039f4c3fd2f5cce6@cern.ch> Date: Sat, 16 Dec 2006 02:15:38 +0000 Subject: [PATCH] This commit was manufactured by cvs2git to create tag 'CMSSW_1_2_0_g4_81'. Sprout from master 2006-11-20 16:25:14 UTC mabalazs <sha1-814c98c95c0331e45c899668854de808bc93186d@cern.ch> 'Spacing issues...' Cherrypick from master 2006-12-16 02:15:35 UTC William Tanenbaum <sha1-faefd172b4369b2002e8f0f7d11f304fd9896b5b@cern.ch> 'add RecoTau_DiTaus_pt_20-420.cfg to runall.sh': Alignment/CommonAlignmentAlgorithm/BuildFile CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h CalibCalorimetry/CaloMiscalibTools/src/SealModule.cc CalibTracker/SiStripAPVAnalysis/src/ApvAnalysisFactory.cc Calibration/EcalAlCaRecoProducers/interface/AlCaElectronsProducer.h Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h Calibration/EcalAlCaRecoProducers/src/SealModule.cc CommonTools/TrackerMap/interface/VisTrackerMapBox.h CommonTools/TrackerMap/src/VisTrackerMapBox.cc CondCore/DBCommon/BuildFile CondFormats/SiStripObjects/interface/SiStripApvGain.h CondFormats/SiStripObjects/src/T_EventSetup_SiStripApvGain.cc CondFormats/SiStripObjects/src/classes.h CondFormats/SiStripObjects/src/classes_def.xml CondTools/Hcal/BuildFile CondTools/SiStrip/scripts/SiStripOfflinePedNoiseToDb.sh CondTools/SiStrip/scripts/template_SiStripOfflinePedNoiseToDb.cfg Configuration/SVSuite/data/SVSuite.xml Configuration/SVSuite/data/runall.sh Configuration/StandardSequences/doc/Sequences.doc DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc DQM/CSCMonitorModule/src/CSCStripCluster.cc DQM/CSCMonitorModule/src/CSCStripClusterFitData.cc DQM/CSCMonitorModule/src/ClusterLocalMax.cc DQM/EcalBarrelMonitorDbModule/BuildFile DQM/HcalMonitorClient/interface/HcalLEDClient.h DQM/HcalMonitorClient/interface/HcalPedestalClient.h DQM/HcalMonitorClient/src/HcalLEDClient.cc DQM/HcalMonitorClient/src/HcalPedestalClient.cc DQM/HcalMonitorClient/src/SealModule.cc DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h DQM/SiStripMonitorClient/interface/SiStripUtility.h DQM/SiStripMonitorClient/interface/SiStripWebInterface.h DQM/SiStripMonitorClient/interface/TrackerMapCreator.h DQM/SiStripMonitorClient/src/SiStripActionExecutor.cc DQM/SiStripMonitorClient/src/SiStripClient.cc DQM/SiStripMonitorClient/src/SiStripInformationExtractor.cc DQM/SiStripMonitorClient/src/SiStripUtility.cc DQM/SiStripMonitorClient/src/SiStripWebInterface.cc DQM/SiStripMonitorClient/src/TrackerMapCreator.cc DQM/SiStripMonitorClient/test/.trackermap.txt DQM/SiStripMonitorClient/test/Online.html DQM/SiStripMonitorClient/test/StartAll DQM/SiStripMonitorClient/test/StopAll DQM/SiStripMonitorClient/test/embedded_svg.html DQM/SiStripMonitorClient/test/setup.sh DQM/SiStripMonitorPedestals/test/PedsMonWithDB.csh DataFormats/CSCRecHit/interface/CSCSegment.h DataFormats/CSCRecHit/src/CSCSegment.cc DataFormats/CSCRecHit/src/classes.h DataFormats/CSCRecHit/src/classes_def.xml DataFormats/HepMCCandidate/src/classes_def.xml DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h DataFormats/L1GlobalCaloTrigger/src/L1GctEmCand.cc DataFormats/L1GlobalCaloTrigger/src/L1GctJetCand.cc DataFormats/ParticleFlowReco/src/PFRecHit.cc DataFormats/VZero/BuildFile DetectorDescription/Core/interface/DDD.h EventFilter/Processor/interface/FUEventProcessor.h EventFilter/Processor/src/FUEventProcessor.cc EventFilter/StorageManager/interface/FragmentCollector.h EventFilter/StorageManager/interface/JobController.h EventFilter/StorageManager/interface/SMPerformanceMeter.h EventFilter/StorageManager/src/EventStreamHttpReader.cc EventFilter/StorageManager/src/EvtMsgRingBuffer.cc EventFilter/StorageManager/src/FragmentCollector.cc EventFilter/StorageManager/src/JobController.cc EventFilter/StorageManager/src/SMPerformanceMeter.cc EventFilter/StorageManager/src/StreamerI2OWriter.cc FWCore/FWLite/src/BareRootProductGetter.cc FWCore/FWLite/src/BareRootProductGetter.h FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc GeneratorInterface/AlpgenInterface/BuildFile GeneratorInterface/AlpgenInterface/doc/html/index.html GeneratorInterface/AlpgenInterface/doc/html/overview.html GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h GeneratorInterface/AlpgenInterface/src/AlpgenSource.cc GeneratorInterface/AlpgenInterface/src/FortranTools.F GeneratorInterface/AlpgenInterface/src/SealModule.cc GeneratorInterface/AlpgenInterface/src/alpg_match.F Geometry/TrackerGeometryBuilder/src/PlaneBuilderForGluedDet.cc HLTrigger/Configuration/doc/HLTrigger_AOD.doi HLTrigger/Configuration/doc/HLTrigger_Configuration.doc HLTrigger/Configuration/doc/HLTrigger_RECO.doi IOMC/EventVertexGenerators/src/BetafuncEvtVtxGenerator.cc IOMC/NtupleConverter/src/Ntuple2HepMCFiller.cc IOPool/Common/bin/CollUtil.cc IOPool/Common/bin/CollUtil.h IOPool/Common/bin/EdmFileUtil.cpp IOPool/Output/src/PoolOutputModule.h IOPool/Streamer/interface/EventMessage.h IOPool/Streamer/interface/FileRecord.h IOPool/Streamer/interface/InitMessage.h IOPool/Streamer/interface/OutputService.h IOPool/Streamer/interface/StreamService.h IOPool/Streamer/interface/StreamerOutSrvcManager.h IOPool/Streamer/interface/StreamerOutputModule.h IOPool/Streamer/interface/Utilities.h IOPool/Streamer/src/EventMessage.cc IOPool/Streamer/src/FileRecord.cc IOPool/Streamer/src/OutputService.cc IOPool/Streamer/src/StreamService.cc IOPool/Streamer/src/StreamerOutSrvcManager.cc IOPool/Streamer/src/TestFileReader.cc IOPool/Streamer/src/Utilities.cc IOPool/Streamer/test/EventMessageTest.cpp JetMETCorrections/JetVertexAssociation/BuildFile JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc JetMETCorrections/JetVertexAssociation/src/JetVertexMain.cc JetMETCorrections/JetVertexAssociation/src/SealModule.cc JetMETCorrections/JetVertexAssociation/test/AnalysisJV.cc JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h PhysicsTools/RecoAlgos/src/ObjectCountFilters.h PhysicsTools/RecoAlgos/src/ObjectPairFilters.h PhysicsTools/RecoAlgos/src/ObjectSelectors.h PhysicsTools/RecoAlgos/src/ObjectUtilities.h PhysicsTools/RecoAlgos/src/SealModule.cc PhysicsTools/UtilAlgos/interface/ObjectPairCollectionSelector.h PhysicsTools/UtilAlgos/interface/SortCollectionSelector.h RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h RecoEcal/EgammaClusterAlgos/src/HybridClusterAlgo.cc RecoEcal/EgammaClusterAlgos/src/IslandClusterAlgo.cc RecoEcal/EgammaClusterAlgos/src/PreshowerClusterAlgo.cc RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h RecoEcal/EgammaClusterProducers/src/EgammaSimpleAnalyzer.cc RecoEcal/EgammaClusterProducers/src/HybridClusterProducer.cc RecoEcal/EgammaClusterProducers/src/IslandClusterProducer.cc RecoEcal/EgammaClusterProducers/src/PreshowerAnalyzer.cc RecoEcal/EgammaClusterProducers/src/PreshowerClusterProducer.cc RecoEcal/EgammaClusterProducers/src/SealModule.cc RecoEcal/EgammaCoreTools/BuildFile RecoEcal/EgammaCoreTools/interface/PositionCalc.h RecoEcal/EgammaCoreTools/src/PositionCalc.cc RecoEgamma/Configuration/doc/RecoEgamma_AOD.doi RecoEgamma/Configuration/doc/RecoEgamma_RECO.doi RecoEgamma/EgammaHLTProducers/src/EgammaHLTRecoEcalCandidateProducers.cc RecoEgamma/EgammaPhotonProducers/src/PhotonProducer.cc RecoJets/Configuration/doc/RecoJets_AOD.doi RecoJets/Configuration/doc/RecoJets_RECO.doi RecoLocalMuon/CSCSegment/BuildFile RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h RecoMuon/TrackingTools/src/MuonTrackFinder.cc RecoMuon/TrackingTools/src/MuonTrackReFitter.cc RecoMuon/TrackingTools/src/MuonTrajectoryCleaner.cc RecoParticleFlow/PFClusterProducer/interface/PFClusterProducer.h RecoParticleFlow/PFClusterProducer/src/PFClusterProducer.cc RecoParticleFlow/PFProducer/interface/EFilter.h RecoParticleFlow/PFProducer/setup_pflow RecoParticleFlow/PFProducer/src/EFilter.cc RecoParticleFlow/PFProducer/src/SealModule.cc RecoParticleFlow/PFRootEvent/BuildFile RecoParticleFlow/PFRootEvent/interface/EventColin.h RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h RecoParticleFlow/PFRootEvent/src/IO.cc RecoParticleFlow/PFRootEvent/src/PFRootEventManager.cc RecoParticleFlow/PFRootEvent/src/ResidualFitter.cc RecoParticleFlow/PFRootEvent/src/classes.h RecoParticleFlow/PFRootEvent/src/classes_def.xml RecoParticleFlow/PFRootEvent/test/Macros/compareResMaps.C RecoParticleFlow/PFRootEvent/test/Macros/effEflowIslandStyle.C RecoParticleFlow/PFRootEvent/test/Macros/effEflowSeedsStyle.C RecoParticleFlow/PFRootEvent/test/Macros/effIneff.C RecoParticleFlow/PFRootEvent/test/Macros/effIneffStyle.C RecoParticleFlow/PFRootEvent/test/Macros/impEflowIslandStyle.C RecoParticleFlow/PFRootEvent/test/Macros/impEflowSeedsStyle.C RecoParticleFlow/PFRootEvent/test/Macros/process.C RecoParticleFlow/PFRootEvent/test/Macros/resMaps.C RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterByHelixProjections.h RecoPixelVertexing/PixelTrackFitting/src/PixelFitterByHelixProjections.cc RecoTauTag/HLTProducers/BuildFile RecoTracker/CkfPattern/test/runall.sh RecoTracker/RoadSearchCloudMaker/src/RoadSearchCloudMaker.cc RecoTracker/RoadSearchSeedFinder/src/RoadSearchSeedFinder.cc RecoVZero/VZeroFinding/src/VZeroFinder.cc SimG4Core/PrintGeomInfo/interface/PrintMaterialBudgetInfo.h SimG4Core/PrintGeomInfo/src/PrintMaterialBudgetInfo.cc SimGeneral/HepPDTESSource/test/HepPDTAnalyzer.cc SimGeneral/TrackingAnalysis/src/TrackingTruthProducer.cc SimTracker/SiPixelDigitizer/src/SiPixelDigitizerAlgorithm.cc SimTracker/SiStripDigitizer/src/SiStripDigitizerAlgorithm.cc SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc Utilities/ReleaseScripts/BuildFile Utilities/ReleaseScripts/scripts/CreateCVSPackage.pl Validation/EcalClusters/interface/EgammaSuperClusters.h Validation/EcalClusters/src/EgammaSuperClusters.cc Validation/EcalDigis/src/EcalMixingModuleValidation.cc Validation/EcalDigis/test/HistoCompare.C Validation/EcalHits/test/DoCompare.C Validation/EcalHits/test/HistoCompare.C Validation/EcalHits/test/rootlogon.C Validation/EcalRecHits/test/HistoCompare.C Validation/Geometry/data/trackerMaterials.x0 Validation/Geometry/src/MaterialBudgetAction.cc Validation/Geometry/src/MaterialBudgetData.cc Validation/Geometry/src/MaterialBudgetTrackerHistos.cc Validation/Geometry/test/MaterialBudget.C Validation/Geometry/test/MaterialBudget_TDR.C Validation/Geometry/test/TrackerGeometryValidation.sh Validation/Geometry/test/TrackerMaterialBudgetComparison.C Validation/GlobalHits/data/download.url Validation/RecoPixelVertexing/test/DoCompare.C Validation/RecoPixelVertexing/test/HistoCompare.C Validation/RecoPixelVertexing/test/OvalFile Validation/RecoPixelVertexing/test/PixelTrackVal.cc Validation/RecoPixelVertexing/test/Validation.csh Validation/RecoPixelVertexing/test/Validation.csh.oref Validation/RecoVertex/test/VertexRecoValidOfflinePV.csh Cherrypick from master 2006-10-18 16:57:52 UTC Giuseppe Della Ricca <sha1-2ac9df825d52a0270fbcfdafbd6206ce1b324729@cern.ch> '': Alignment/CocoaModel/interface/OpticalObjectMgr.h Alignment/CocoaModel/src/OpticalObjectMgr.cc CondCore/SiPixelPlugins/src/plugin.cc CondFormats/CSCObjects/interface/CSCReadoutMapping.h CondFormats/CSCObjects/src/CSCReadoutMapping.cc DQM/EcalBarrelMonitorClient/src/EBBeamCaloClient.cc DQM/EcalBarrelMonitorClient/src/EBIntegrityClient.cc DQM/EcalBarrelMonitorClient/src/EBTestPulseClient.cc DQM/EcalBarrelMonitorClient/src/EBTriggerTowerClient.cc DQM/EcalBarrelMonitorTasks/BuildFile DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc DQM/RPCMonitorDigi/src/RPCMonitorEfficiency.cc DQM/RPCMonitorDigi/src/SealModule.cc DQMServices/ClientConfig/src/QTestConfigure.cc DQMServices/ClientConfig/src/QTestParameterNames.cc DataFormats/CSCDigi/interface/CSCALCTDigi.h DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h DataFormats/CSCDigi/interface/CSCCLCTDigi.h DataFormats/CSCDigi/interface/CSCComparatorDigi.h DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h DataFormats/CSCDigi/interface/CSCDCCFormatStatusDigi.h DataFormats/CSCDigi/interface/CSCRPCDigi.h DataFormats/CSCDigi/interface/CSCStripDigi.h DataFormats/CSCDigi/interface/CSCWireDigi.h DataFormats/CSCDigi/src/CSCComparatorDigi.cc DataFormats/CSCDigi/src/CSCWireDigi.cc DataFormats/CSCDigi/test/testCSCDigis.cpp DataFormats/JetReco/interface/BasicJet.h DataFormats/JetReco/interface/CaloJet.h DataFormats/JetReco/interface/GenJet.h DataFormats/JetReco/interface/Jet.h DataFormats/RecoCandidate/BuildFile Documentation/ReferenceManualPages/doc/AodData.doc Documentation/ReferenceManualPages/doc/PixelRecoCollections.doi Documentation/ReferenceManualPages/doc/RecoData.doc Documentation/ReferenceManualPages/doc/Reconstruction.doc Documentation/ReferenceManualPages/doc/StripRecoCollections.doi Documentation/ReferenceManualPages/doc/TrackerPackages.doc EventFilter/CSCRawToDigi/interface/CSCAnodeData.h EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h EventFilter/CSCRawToDigi/interface/CSCEventData.h EventFilter/CSCRawToDigi/interface/CSCTMBData.h EventFilter/CSCRawToDigi/src/CSCAnodeData.cc EventFilter/CSCRawToDigi/src/CSCCFEBData.cc EventFilter/CSCRawToDigi/src/CSCDCCEventData.cc EventFilter/CSCRawToDigi/src/CSCDDUEventData.cc EventFilter/CSCRawToDigi/src/CSCEventData.cc EventFilter/CSCRawToDigi/src/CSCTMBData.cc Geometry/CMSCommonData/data/beampipe.xml Geometry/CMSCommonData/data/cavern.xml Geometry/CMSCommonData/data/cms.xml Geometry/CMSCommonData/data/mgnt.xml Geometry/CaloTopology/src/CaloTowerTopology.cc Geometry/HcalCommonData/data/hcalalgo.xml Geometry/HcalCommonData/data/hcalouteralgo.xml Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryLoader.cc Geometry/MuonCommonData/data/mb1.xml Geometry/MuonCommonData/data/mb2.xml Geometry/MuonCommonData/data/mb3.xml Geometry/MuonCommonData/data/mb4.xml Geometry/MuonCommonData/data/mbCommon.xml Geometry/MuonCommonData/data/mf.xml Geometry/MuonCommonData/data/muonYoke.xml Geometry/TrackerSimData/data/trackerProdCuts.xml Geometry/TrackerSimData/data/trackerProdCuts_mtcc.xml PhysicsTools/ParallelAnalysis/doc/ParallelAnalysis.doc PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h PhysicsTools/ParallelAnalysis/interface/TrackTSelector.h PhysicsTools/ParallelAnalysis/src/SealModule.cc PhysicsTools/ParallelAnalysis/src/TrackAnalysisAlgorithm.cc PhysicsTools/ParallelAnalysis/src/TrackTSelector.cc PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.cc PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h RecoLocalTracker/SiPixelRecHits/BuildFile RecoLocalTracker/SiPixelRecHits/src/SiPixelRecHitConverter.cc RecoPixelVertexing/PixelTriplets/interface/PixelLayerTriplets.h RecoPixelVertexing/PixelTriplets/src/PixelLayerTriplets.cc RecoTracker/TkSeedGenerator/BuildFile RecoTracker/TkSeedGenerator/interface/SeedGeneratorForCosmics.h RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h RecoTracker/TrackProducer/src/TrackProducer.cc RecoTracker/TrackProducer/src/TrackProducerAlgorithm.cc RecoVertex/PrimaryVertexProducer/src/PrimaryVertexProducerAlgorithm.cc RecoVertex/PrimaryVertexProducer/src/TrackClusterizerInZ.cc SimCalorimetry/EcalSelectiveReadoutAlgos/interface/EcalSelectiveReadoutSuppressor.h TrackPropagation/Geant4e/interface/Geant4ePropagator.h TrackPropagation/Geant4e/src/Geant4ePropagator.cc Validation/HcalDigis/interface/HcalDigiTester.h Validation/HcalDigis/src/HcalDigiTester.cc Cherrypick from master 2006-06-08 09:54:21 UTC Nicola Amapane <sha1-ecfc50bc11229bbd7ce8ea817e47f97cd3162da5@cern.ch> 'fix idToDet': Alignment/CocoaApplication/bin/cocoa.cpp Alignment/CocoaApplication/bin/simple2D.meas Alignment/CocoaApplication/bin/simple2D.txt Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h Alignment/CocoaDDLObjects/src/CocoaMaterialElementary.cc Alignment/CocoaUtilities/interface/ALIUtils.h Alignment/CocoaUtilities/src/ALIUtils.cc Alignment/CocoaUtilities/src/GlobalOptionMgr.cc CondCore/CalibPlugins/src/plugin.cc CondCore/MetaDataService/interface/MetaData.h CondCore/MetaDataService/src/MetaData.cc DataFormats/VertexReco/src/classes.h DataFormats/VertexReco/src/classes_def.xml Geometry/RPCGeometry/interface/RPCGeometry.h Geometry/RPCGeometry/interface/RPCRoll.h Geometry/RPCGeometry/src/RPCGeometry.cc Geometry/RPCGeometry/src/RPCRoll.cc MagneticField/Interpolation/interface/Grid1D.h MagneticField/Interpolation/interface/LinearGridInterpolator3D.h MagneticField/Interpolation/interface/MFGrid3D.h MagneticField/Interpolation/interface/RectangularCartesianMFGrid.h MagneticField/Interpolation/interface/RectangularCylindricalMFGrid.h MagneticField/Interpolation/interface/SpecialCylindricalMFGrid.h MagneticField/Interpolation/interface/TrapezoidalCartesianMFGrid.h MagneticField/Interpolation/interface/TrapezoidalCylindricalMFGrid.h MagneticField/Interpolation/src/RectangularCartesianMFGrid.cc MagneticField/Interpolation/src/RectangularCylindricalMFGrid.cc MagneticField/Interpolation/src/SpecialCylindricalMFGrid.cc MagneticField/Interpolation/src/TrapezoidalCartesianMFGrid.cc MagneticField/Interpolation/src/TrapezoidalCylindricalMFGrid.cc MagneticField/VolumeGeometry/interface/MagExceptions.h PhysicsTools/PythonAnalysis/doc/PythonAnalysis.doc PhysicsTools/PythonAnalysis/python/cmstools.py RecoVertex/VertexPrimitives/interface/TransientVertex.h Cherrypick from master 2006-11-11 12:35:32 UTC Philipp Schieferdecker <sha1-d9aae2aca46c6a9ac4cda95dc40c0d5c7fc4181d@cern.ch> 'tag V00-03-01: include <cmath> in DaqFakeReader.cc and change log -> std::log and exp -> std::exp for slc4/gcc3.4.5 compliance': Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h Alignment/MillePedeAlignmentAlgorithm/src/MillePedeAlignmentAlgorithm.cc Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.cc Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.h DQM/EcalBarrelMonitorClient/interface/EcalBarrelMonitorClient.h DQM/EcalBarrelMonitorClient/src/EBLaserClient.cc DQM/EcalBarrelMonitorClient/src/EBPedestalClient.cc DQM/EcalBarrelMonitorClient/src/EBPedestalOnlineClient.cc DQM/EcalBarrelMonitorClient/src/EcalBarrelMonitorClient.cc DataFormats/RecoCandidate/src/classes.h DataFormats/RecoCandidate/src/classes_def.xml IORawData/DaqSource/ChangeLog JetMETCorrections/Type1MET/interface/Type1METAlgo.h JetMETCorrections/Type1MET/src/Type1MET.cc JetMETCorrections/Type1MET/src/Type1METAlgo.cc RecoTracker/TkSeedGenerator/src/SeedGeneratorForCosmics.cc Cherrypick from master 2006-12-04 23:51:16 UTC William Tanenbaum <sha1-faefd172b4369b2002e8f0f7d11f304fd9896b5b@cern.ch> 'temporarily back out change to allow proper tagging without the need for a branch tag.': CondFormats/SiStripObjects/src/SiStripApvGain.cc DataFormats/Common/interface/AssociationMap.h DataFormats/Common/src/classes_def.xml DataFormats/HepMCCandidate/interface/GenParticleCandidate.h IOPool/Input/src/RootFile.cc IOPool/Output/src/PoolOutputModule.cc PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.cc PhysicsTools/RecoAlgos/interface/ElectronSelector.h PhysicsTools/RecoAlgos/interface/PhotonSelector.h PhysicsTools/UtilAlgos/interface/ObjectCountFilter.h RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h Validation/RecoPixelVertexing/test/PixelVertexVal.cc Cherrypick from master 2006-09-29 14:13:33 UTC Giuseppe Della Ricca <sha1-2ac9df825d52a0270fbcfdafbd6206ce1b324729@cern.ch> '': DQM/EcalBarrelMonitorDbModule/src/MonitorElementsDb.cc DQM/EcalBarrelMonitorDbModule/test/data/tb-occupancy.xml DQM/EcalBarrelMonitorTasks/src/EBPedestalTask.cc DQM/EcalBarrelMonitorTasks/src/EBTriggerTowerTask.cc DataFormats/MuonDetId/interface/CSCDetId.h DataFormats/VertexReco/interface/Vertex.h DataFormats/VertexReco/src/Vertex.cc RecoVertex/VertexPrimitives/src/TransientVertex.cc SimTracker/Records/BuildFile TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc Cherrypick from master 2006-08-25 09:52:17 UTC Luca Lista <sha1-73801ca8ca16918e053d407e1ed9c2469728f170@cern.ch> 'added Parser package': Documentation/ReferenceManualPages/doc/PhysicsTools.doc Geometry/RPCGeometry/interface/RPCRollSpecs.h Geometry/RPCGeometry/src/RPCRollSpecs.cc RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitFixedAlphaBetaAlgo.h RecoTBCalo/EcalTBTDCReconstructor/BuildFile RecoTBCalo/EcalTBTDCReconstructor/src/SealModule.cc SimCalorimetry/EcalSelectiveReadoutAlgos/src/EcalSelectiveReadoutSuppressor.cc Cherrypick from master 2005-10-26 08:02:15 UTC Nick Sinanis <sha1-45fa1c44e5a89c7e45cdc46fea13352dcc81cd9b@cern.ch> 'ChangeLog': DataFormats/CaloRecHit/TagLog Documentation/PhysicsTools/TagLog Documentation/ReleaseNotes/TagLog Documentation/RepositoryAndReleases/TagLog Utilities/Timing/TagLog Cherrypick from master 2005-11-29 18:58:44 UTC Christopher Jones <sha1-2771e8733cab130717cecea538ec39d2e5083d13@cern.ch> 'SimG4Core/HelpfulWatchers/TagLog': DetectorDescription/OnlineDBLoader/TagLog Documentation/CodingRules/TagLog MagneticField/Interpolation/TagLog MagneticField/Records/TagLog SimG4Core/HelpfulWatchers/TagLog Cherrypick from master 2006-11-28 06:37:31 UTC Adam Everett <sha1-0480fa7b9471174cc688a8c2e992d84c4f17ed6d@cern.ch> 'important bug fix to stop crashes': DetectorDescription/Core/interface/DDComparator.h DetectorDescription/Core/interface/DDExpandedNode.h RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc RecoTauTag/HLTProducers/src/CaloTowerCreatorForTauHLT.cc Validation/RecoVertex/src/PrimaryVertexAnalyzer.cc Cherrypick from master 2006-11-16 14:16:28 UTC Robert John Bainbridge <sha1-23e31ff3811f548144cca79b92e3ea0df433ced9@cern.ch> 'moved linearfit and meanandstddev to utilities file and within sistrip namespace': DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h DQM/SiStripCommissioningAnalysis/src/MeanAndStdDev.cc L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc SimDataFormats/HcalTestBeam/src/PHcalTB04Info.cc Cherrypick from master 2006-10-24 10:52:02 UTC Isidro Gonzalez Caballero <sha1-4135548fe47aa946fae7634b28336f3000212c43@cern.ch> 'Added semicolon to DEFINE_FWK_MODULE for gcc3.4.5': CalibTracker/SiPixelConnectivity/src/module.cc DQM/EcalBarrelMonitorTasks/src/SealModule.cc TrackPropagation/Geant4e/test/Geant4ePropagatorAnalyzer.cc Cherrypick from master 2006-12-06 19:20:42 UTC Marc Paterno <sha1-50842b2973656903c5335439f1d47b932dc1ae12@cern.ch> 'Fix to sanity check in BranchDescription': DQM/SiStripHistoricInfoClient/src/SiStripHistoricInfoClient.cc FWCore/FWLite/test/ref_t.cppunit.cpp RecoParticleFlow/PFRootEvent/test/scan.pl Cherrypick from master 2006-11-06 16:03:04 UTC riccardo <sha1-a8fe582e28bc10906e7eb2fd4c1098a4a0c0276f@cern.ch> 'A little error recovered': EventFilter/CSCRawToDigi/src/SealModule.cc Geometry/TrackerSimData/data/trackerProdCuts_twentyfivepercent.xml Cherrypick from master 2006-12-05 12:53:07 UTC Patrick Janot <sha1-947b7d2151f410efe7b862ab9e58df9283c85909@cern.ch> 'For FastSim to work in CMSSW120': FastSimulation/TrackerSetup/interface/TrackerLayer.h FastSimulation/TrackerSetup/src/TrackerInteractionGeometry.cc Cherrypick from master 2006-12-12 17:11:43 UTC William Tanenbaum <sha1-faefd172b4369b2002e8f0f7d11f304fd9896b5b@cern.ch> 'explicitly generate all needed dictionaries': DataFormats/Math/src/classes.h DataFormats/Math/src/classes_def.xml Cherrypick from master 2005-10-28 14:10:39 UTC sashby <sha1-0665f252eb8e02afcb80198b20033a58c31fd1b3@cern.ch> 'SimGeneral/NoiseGenerators/ChangeLog': SimGeneral/NoiseGenerators/TagLog Cherrypick from master 2005-12-05 17:33:51 UTC Sunanda Banerjee <sha1-b4788d7bc76f55c45b7ae35f27b935e0e0f10682@cern.ch> 'Geometry/HcalSimData/TagLog': Geometry/HcalSimData/TagLog Cherrypick from master 2006-02-28 08:59:40 UTC Tommaso Boccali <sha1-ce6f8e33294befdbdd970525cd264b612743e399@cern.ch> '*** empty log message ***': TrackingTools/AnalyticalJacobians/TagLog Cherrypick from master 2006-03-03 20:57:23 UTC Jeremy Mans <sha1-8c13ed8543bcbb752234eba083938d877e748795@cern.ch> 'CondFormats/HcalMapping/TagLog': CondFormats/HcalMapping/TagLog Cherrypick from master 2006-09-14 19:34:41 UTC egeland <sha1-f6919fe6227703e11fc3407143274a6a419ae791@cern.ch> 'Added SQL for remapping of SM1 (online DB) to SM4 (required for HCAL alignment)': CondTools/O2OFramework/sql/EcalPedestals_payload_o2o-H2.sql Cherrypick from master 2006-11-08 18:11:05 UTC sfricke <sha1-a3e9314907daa7d8818c7915e5e43f36adf46966@cern.ch> 'change amplitudes of clusters from short to unsigned': EventFilter/SiStripChannelChargeFilter/src/TECClusterFilter.cc Cherrypick from master 2006-11-16 09:58:01 UTC Pedro Arce <sha1-a7e83fd644adcfec94499d67c7f8f23354d9a549@cern.ch> 'corrections for slc4': Alignment/CocoaFit/src/Fit.cc Cherrypick from master 2006-12-08 02:48:04 UTC William Tanenbaum <sha1-faefd172b4369b2002e8f0f7d11f304fd9896b5b@cern.ch> 'temporarily back out changes to get good tag for CMSSW_1_2_0': PhysicsTools/HepMCCandAlgos/src/SealModule.cc Cherrypick from BV04-01-01 2006-12-14 12:41:31 UTC Luca Lista <sha1-73801ca8ca16918e053d407e1ed9c2469728f170@cern.ch> 'fixed mm -> cms': DataFormats/HepMCCandidate/src/GenParticleCandidate.cc Cherrypick from V01-05-05 2006-11-24 16:38:43 UTC Tommaso Boccali <sha1-ce6f8e33294befdbdd970525cd264b612743e399@cern.ch> 'doc': Configuration/EventContent/doc/EventContent.doc Cherrypick from fix_slc4_120 2006-11-16 12:50:17 UTC Nicola Amapane <sha1-ecfc50bc11229bbd7ce8ea817e47f97cd3162da5@cern.ch> 'gcc34 fix': Geometry/RPCGeometry/test/RPCGeometryAnalyzer.cc Delete: Alignment/CocoaApplication/bin/simple2DWithMirror.meas Alignment/CocoaApplication/bin/simple2DWithMirror.txt Alignment/CocoaApplication/interface/CocoaAnalyzer.h Alignment/CocoaApplication/src/CocoaAnalyzer.cc Alignment/CocoaApplication/src/SealModule.cc Alignment/CocoaApplication/test/configuration.xml Alignment/CommonAlignmentMonitor/doc/html/index.html Alignment/CommonAlignmentMonitor/doc/html/overview.html Alignment/HIPAlignmentAlgorithm/doc/html/index.html Alignment/HIPAlignmentAlgorithm/doc/html/overview.html Alignment/LaserAlignment/doc/html/index.html Alignment/LaserAlignment/doc/html/overview.html Alignment/LaserAlignmentSimulation/doc/html/index.html Alignment/LaserAlignmentSimulation/doc/html/overview.html Alignment/LaserDQM/doc/html/index.html Alignment/LaserDQM/doc/html/overview.html Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariables.cc Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariablesIORoot.cc Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.cc Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.h Alignment/MuonAlignmentAlgorithms/doc/html/index.html Alignment/MuonAlignmentAlgorithms/doc/html/overview.html Alignment/OfflineValidation/doc/html/index.html Alignment/OfflineValidation/doc/html/overview.html Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h Alignment/OptAlignCSV2DB/interface/OpticalAlignInfoRcd.h Alignment/OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc Alignment/OptAlignCSV2DB/src/OptAlignDataConverter.cc Alignment/OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc Alignment/OptAlignCSV2DB/src/SealModule.cc Alignment/OptAlignCSV2DB/test/opt_align_simple2DWithMirror.csv Alignment/ReferenceTrajectories/doc/html/index.html Alignment/ReferenceTrajectories/doc/html/overview.html Alignment/SurveyAnalysis/doc/html/index.html Alignment/SurveyAnalysis/doc/html/overview.html Alignment/TrackHitFilter/doc/html/index.html Alignment/TrackHitFilter/doc/html/overview.html Alignment/TwoBodyDecay/doc/html/index.html Alignment/TwoBodyDecay/doc/html/overview.html AnalysisAlgos/SiStripClusterInfoProducer/doc/html/index.html AnalysisAlgos/SiStripClusterInfoProducer/doc/html/overview.html AnalysisAlgos/TrackInfoProducer/doc/html/index.html AnalysisAlgos/TrackInfoProducer/doc/html/overview.html AnalysisDataFormats/EWK/doc/html/index.html AnalysisDataFormats/EWK/doc/html/overview.html AnalysisDataFormats/Egamma/doc/html/index.html AnalysisDataFormats/Egamma/doc/html/overview.html AnalysisDataFormats/SUSYBSMObjects/doc/html/index.html AnalysisDataFormats/SUSYBSMObjects/doc/html/overview.html AnalysisDataFormats/SiStripClusterInfo/doc/html/index.html AnalysisDataFormats/SiStripClusterInfo/doc/html/overview.html AnalysisDataFormats/TopObjects/doc/html/index.html AnalysisDataFormats/TopObjects/doc/html/overview.html AnalysisDataFormats/TrackInfo/doc/html/index.html AnalysisDataFormats/TrackInfo/doc/html/overview.html AnalysisExamples/SiStripDetectorPerformance/BuildFile AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h AnalysisExamples/SiStripDetectorPerformance/src/AnalyzeTracksClusters.cc AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysis.cc AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysisFilter.cc AnalysisExamples/SiStripDetectorPerformance/src/MTCCNtupleMaker.cc AnalysisExamples/SiStripDetectorPerformance/src/SealModules.cc AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngle.cc AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngleNew.cc AnalysisExamples/SiStripDetectorPerformance/test/ClusterAnalysis.sh AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/BadStrips.C AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.C AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.sh AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/PedestalEvolution.C AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/README AnalysisExamples/SiStripDetectorPerformance/test/langaus.C AnalysisExamples/SiStripDetectorPerformance/test/readme.txt CalibCalorimetry/CastorCalib/doc/html/index.html CalibCalorimetry/CastorCalib/doc/html/overview.html CalibCalorimetry/Configuration/doc/html/index.html CalibCalorimetry/Configuration/doc/html/overview.html CalibCalorimetry/EcalCorrectionModules/doc/html/index.html CalibCalorimetry/EcalCorrectionModules/doc/html/overview.html CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/index.html CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/overview.html CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/index.html CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/overview.html CalibCalorimetry/EcalLaserAnalyzer/doc/html/index.html CalibCalorimetry/EcalLaserAnalyzer/doc/html/overview.html CalibCalorimetry/EcalLaserCorrection/doc/html/index.html CalibCalorimetry/EcalLaserCorrection/doc/html/overview.html CalibCalorimetry/EcalLaserSorting/doc/html/index.html CalibCalorimetry/EcalLaserSorting/doc/html/overview.html CalibCalorimetry/EcalSRTools/doc/html/index.html CalibCalorimetry/EcalSRTools/doc/html/overview.html CalibCalorimetry/EcalTPGTools/doc/html/index.html CalibCalorimetry/EcalTPGTools/doc/html/overview.html CalibCalorimetry/HcalTPGIO/doc/html/index.html CalibCalorimetry/HcalTPGIO/doc/html/overview.html CalibFormats/CastorObjects/doc/html/index.html CalibFormats/CastorObjects/doc/html/overview.html CalibFormats/SiPixelObjects/doc/html/index.html CalibFormats/SiPixelObjects/doc/html/overview.html CalibMuon/CSCCalibration/BuildFile CalibMuon/CSCCalibration/doc/html/index.html CalibMuon/CSCCalibration/doc/html/overview.html CalibMuon/CSCCalibration/interface/AutoCorrMat.h CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h CalibMuon/CSCCalibration/interface/CSCToAFEB.h CalibMuon/CSCCalibration/interface/CSCxTalk.h CalibMuon/CSCCalibration/interface/condbc.h CalibMuon/CSCCalibration/interface/condbon.h CalibMuon/CSCCalibration/interface/cscmap.h CalibMuon/CSCCalibration/src/CSCAFEBAnalyzer.cc CalibMuon/CSCCalibration/src/CSCAFEBThrAnalysis.cc CalibMuon/CSCCalibration/src/CSCAFEBdacAnalyzer.cc CalibMuon/CSCCalibration/src/CSCCompThreshAnalyzer.cc CalibMuon/CSCCalibration/src/CSCCrossTalkAnalyzer.cc CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc CalibMuon/CSCCalibration/src/CSCGainAnalyzer.cc CalibMuon/CSCCalibration/src/CSCNoiseMatrixAnalyzer.cc CalibMuon/CSCCalibration/src/CSCThrTurnOnFcn.cc CalibMuon/CSCCalibration/src/CSCToAFEB.cc CalibMuon/CSCCalibration/src/SealModule.cc CalibMuon/Configuration/doc/html/index.html CalibMuon/Configuration/doc/html/overview.html CalibMuon/DTDigiSync/doc/html/index.html CalibMuon/DTDigiSync/doc/html/overview.html CalibMuon/RPCCalibration/doc/html/index.html CalibMuon/RPCCalibration/doc/html/overview.html CalibTracker/Configuration/doc/html/index.html CalibTracker/Configuration/doc/html/overview.html CalibTracker/SiPixelESProducers/doc/html/index.html CalibTracker/SiPixelESProducers/doc/html/overview.html CalibTracker/SiPixelErrorEstimation/doc/html/index.html CalibTracker/SiPixelErrorEstimation/doc/html/overview.html CalibTracker/SiPixelGainCalibration/doc/html/index.html CalibTracker/SiPixelGainCalibration/doc/html/overview.html CalibTracker/SiPixelIsAliveCalibration/doc/html/index.html CalibTracker/SiPixelIsAliveCalibration/doc/html/overview.html CalibTracker/SiPixelSCurveCalibration/doc/html/index.html CalibTracker/SiPixelSCurveCalibration/doc/html/overview.html CalibTracker/SiPixelTools/doc/html/index.html CalibTracker/SiPixelTools/doc/html/overview.html CalibTracker/SiStripCommon/doc/html/index.html CalibTracker/SiStripCommon/doc/html/overview.html CalibTracker/SiStripDCS/doc/html/index.html CalibTracker/SiStripDCS/doc/html/overview.html CalibTracker/SiStripESProducers/doc/html/index.html CalibTracker/SiStripESProducers/doc/html/overview.html CalibTracker/SiStripHitEfficiency/doc/html/index.html CalibTracker/SiStripHitEfficiency/doc/html/overview.html CalibTracker/SiStripLorentzAngle/BuildFile CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h CalibTracker/SiStripLorentzAngle/src/SealModules.cc CalibTracker/SiStripLorentzAngle/src/SiStripLorentzAngle.cc CalibTracker/SiStripLorentzAngle/src/TrackLocalAngle.cc CalibTracker/SiStripQuality/doc/html/index.html CalibTracker/SiStripQuality/doc/html/overview.html Calibration/HcalConnectivity/doc/html/index.html Calibration/HcalConnectivity/doc/html/overview.html Calibration/HcalIsolatedTrackReco/doc/html/index.html Calibration/HcalIsolatedTrackReco/doc/html/overview.html Calibration/IsolatedParticles/doc/html/index.html Calibration/IsolatedParticles/doc/html/overview.html Calibration/TkAlCaRecoProducers/doc/html/index.html Calibration/TkAlCaRecoProducers/doc/html/overview.html CaloOnlineTools/EcalTools/doc/html/index.html CaloOnlineTools/EcalTools/doc/html/overview.html CaloOnlineTools/HcalOnlineDb/doc/html/index.html CaloOnlineTools/HcalOnlineDb/doc/html/overview.html CommonTools/CandAlgos/doc/html/index.html CommonTools/CandAlgos/doc/html/overview.html CommonTools/CandUtils/doc/html/index.html CommonTools/CandUtils/doc/html/overview.html CommonTools/ConditionDBWriter/doc/html/index.html CommonTools/ConditionDBWriter/doc/html/overview.html CommonTools/RecoAlgos/doc/html/index.html CommonTools/RecoAlgos/doc/html/overview.html CommonTools/RecoUtils/doc/html/index.html CommonTools/RecoUtils/doc/html/overview.html CommonTools/UtilAlgos/doc/html/index.html CommonTools/UtilAlgos/doc/html/overview.html CommonTools/Utils/doc/html/index.html CommonTools/Utils/doc/html/overview.html CondCore/BTauPlugins/doc/html/index.html CondCore/BTauPlugins/doc/html/overview.html CondCore/BeamSpotPlugins/doc/html/index.html CondCore/BeamSpotPlugins/doc/html/overview.html CondCore/CastorPlugins/doc/html/index.html CondCore/CastorPlugins/doc/html/overview.html CondCore/DQMPlugins/doc/html/index.html CondCore/DQMPlugins/doc/html/overview.html CondCore/ESPlugins/doc/html/index.html CondCore/ESPlugins/doc/html/overview.html CondCore/EgammaPlugins/doc/html/index.html CondCore/EgammaPlugins/doc/html/overview.html CondCore/GeometryPlugins/doc/html/index.html CondCore/GeometryPlugins/doc/html/overview.html CondCore/HIPlugins/doc/html/index.html CondCore/HIPlugins/doc/html/overview.html CondCore/L1TPlugins/doc/html/index.html CondCore/L1TPlugins/doc/html/overview.html CondCore/LuminosityPlugins/doc/html/index.html CondCore/LuminosityPlugins/doc/html/overview.html CondCore/ORA/doc/html/index.html CondCore/ORA/doc/html/overview.html CondCore/PhysicsToolsPlugins/doc/html/index.html CondCore/PhysicsToolsPlugins/doc/html/overview.html CondCore/PopCon/doc/html/index.html CondCore/PopCon/doc/html/overview.html CondCore/RecoMuonPlugins/doc/html/index.html CondCore/RecoMuonPlugins/doc/html/overview.html CondCore/RunInfoPlugins/doc/html/index.html CondCore/RunInfoPlugins/doc/html/overview.html CondCore/TagCollection/doc/html/index.html CondCore/TagCollection/doc/html/overview.html CondCore/Utilities/doc/html/index.html CondCore/Utilities/doc/html/overview.html CondFormats/AlignmentRecord/doc/html/index.html CondFormats/AlignmentRecord/doc/html/overview.html CondFormats/BTauObjects/doc/html/index.html CondFormats/BTauObjects/doc/html/overview.html CondFormats/BeamSpotObjects/doc/html/index.html CondFormats/BeamSpotObjects/doc/html/overview.html CondFormats/CastorObjects/doc/html/index.html CondFormats/CastorObjects/doc/html/overview.html CondFormats/Common/doc/html/index.html CondFormats/Common/doc/html/overview.html CondFormats/DQMObjects/doc/html/index.html CondFormats/DQMObjects/doc/html/overview.html CondFormats/ESObjects/doc/html/index.html CondFormats/ESObjects/doc/html/overview.html CondFormats/EcalCorrections/doc/html/index.html CondFormats/EcalCorrections/doc/html/overview.html CondFormats/EgammaObjects/doc/html/index.html CondFormats/EgammaObjects/doc/html/overview.html CondFormats/GeometryObjects/doc/html/index.html CondFormats/GeometryObjects/doc/html/overview.html CondFormats/HIObjects/doc/html/index.html CondFormats/HIObjects/doc/html/overview.html CondFormats/JetMETObjects/doc/html/index.html CondFormats/JetMETObjects/doc/html/overview.html CondFormats/L1TObjects/doc/html/index.html CondFormats/L1TObjects/doc/html/overview.html CondFormats/Luminosity/doc/html/index.html CondFormats/Luminosity/doc/html/overview.html CondFormats/PhysicsToolsObjects/doc/html/index.html CondFormats/PhysicsToolsObjects/doc/html/overview.html CondFormats/RecoMuonObjects/doc/html/index.html CondFormats/RecoMuonObjects/doc/html/overview.html CondFormats/RunInfo/doc/html/index.html CondFormats/RunInfo/doc/html/overview.html CondTools/DQM/doc/html/index.html CondTools/DQM/doc/html/overview.html CondTools/Geometry/doc/html/index.html CondTools/Geometry/doc/html/overview.html CondTools/L1Trigger/doc/html/index.html CondTools/L1Trigger/doc/html/overview.html CondTools/Luminosity/doc/html/index.html CondTools/Luminosity/doc/html/overview.html CondTools/RunInfo/doc/html/index.html CondTools/RunInfo/doc/html/overview.html Configuration/GlobalRuns/doc/html/index.html Configuration/GlobalRuns/doc/html/overview.html Configuration/SiStripDAQ/doc/html/index.html Configuration/SiStripDAQ/doc/html/overview.html Configuration/Skimming/doc/html/index.html Configuration/Skimming/doc/html/overview.html Configuration/StandardSequences/doc/Reconstruction.doc DPGAnalysis/SiStripTools/doc/html/index.html DPGAnalysis/SiStripTools/doc/html/overview.html DPGAnalysis/Skims/doc/html/index.html DPGAnalysis/Skims/doc/html/overview.html DQM/BeamMonitor/doc/html/index.html DQM/BeamMonitor/doc/html/overview.html DQM/CastorMonitor/doc/html/index.html DQM/CastorMonitor/doc/html/overview.html DQM/DTMonitorClient/BuildFile DQM/DTMonitorClient/doc/html/index.html DQM/DTMonitorClient/doc/html/overview.html DQM/DTMonitorClient/interface/DTDQMClient.h DQM/DTMonitorClient/interface/DTNoiseClient.h DQM/DTMonitorClient/interface/DTWebInterface.h DQM/DTMonitorClient/src/DTDQMClient.cc DQM/DTMonitorClient/src/DTNoiseClient.cc DQM/DTMonitorClient/src/DTWebInterface.cc DQM/DTMonitorClient/test/QualityTests.xml DQM/EcalBarrelMonitorDbModule/test/data/tb-temperature.xml DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h DQM/EcalBarrelMonitorTasks/src/EBClusterTask.cc DQM/EcalCommon/doc/html/index.html DQM/EcalCommon/doc/html/overview.html DQM/EcalEndcapMonitorClient/doc/html/index.html DQM/EcalEndcapMonitorClient/doc/html/overview.html DQM/EcalEndcapMonitorDbModule/doc/html/index.html DQM/EcalEndcapMonitorDbModule/doc/html/overview.html DQM/EcalEndcapMonitorModule/doc/html/index.html DQM/EcalEndcapMonitorModule/doc/html/overview.html DQM/EcalEndcapMonitorTasks/doc/html/index.html DQM/EcalEndcapMonitorTasks/doc/html/overview.html DQM/EcalPreshowerMonitorClient/doc/html/index.html DQM/EcalPreshowerMonitorClient/doc/html/overview.html DQM/EcalPreshowerMonitorModule/doc/html/index.html DQM/EcalPreshowerMonitorModule/doc/html/overview.html DQM/HLTEvF/BuildFile DQM/HLTEvF/interface/HltAnalyzer.h DQM/HLTEvF/src/HltAnalyzer.cc DQM/HLTEvF/src/SealModule.cc DQM/HLXMonitor/doc/html/index.html DQM/HLXMonitor/doc/html/overview.html DQM/L1TMonitorClient/doc/html/index.html DQM/L1TMonitorClient/doc/html/overview.html DQM/Physics/doc/html/index.html DQM/Physics/doc/html/overview.html DQM/RCTMonitor/doc/html/index.html DQM/RCTMonitor/doc/html/overview.html DQM/RPCMonitorDigi/interface/RPCMonitorSync.h DQM/RPCMonitorDigi/src/RPCMonitorSync.cc DQM/SiPixelCommon/doc/html/index.html DQM/SiPixelCommon/doc/html/overview.html DQM/SiPixelHistoricInfoClient/doc/html/index.html DQM/SiPixelHistoricInfoClient/doc/html/overview.html DQM/SiPixelMonitorClient/BuildFile DQM/SiPixelMonitorClient/doc/html/index.html DQM/SiPixelMonitorClient/doc/html/overview.html DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h DQM/SiPixelMonitorClient/interface/SiPixelUtility.h DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h DQM/SiPixelMonitorClient/interface/TmModule.h DQM/SiPixelMonitorClient/interface/TrackerMap.h DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc DQM/SiPixelMonitorClient/src/SiPixelConfigParser.cc DQM/SiPixelMonitorClient/src/SiPixelConfigWriter.cc DQM/SiPixelMonitorClient/src/SiPixelInformationExtractor.cc DQM/SiPixelMonitorClient/src/SiPixelQualityTester.cc DQM/SiPixelMonitorClient/src/SiPixelUtility.cc DQM/SiPixelMonitorClient/src/SiPixelWebClient.cc DQM/SiPixelMonitorClient/src/SiPixelWebInterface.cc DQM/SiPixelMonitorClient/src/TmModule.cc DQM/SiPixelMonitorClient/src/TrackerMap.cc DQM/SiPixelMonitorClient/test/.WebLib.js DQM/SiPixelMonitorClient/test/.profile.xml DQM/SiPixelMonitorClient/test/sendCmdToApp.pl DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml DQM/SiPixelMonitorClient/test/sipixel_qualitytest_config.xml DQM/SiPixelMonitorClient/test/style.css DQM/SiPixelMonitorCluster/doc/html/index.html DQM/SiPixelMonitorCluster/doc/html/overview.html DQM/SiPixelMonitorDigi/BuildFile DQM/SiPixelMonitorDigi/doc/SiPixelMonitorDigi.doc DQM/SiPixelMonitorDigi/doc/html/index.html DQM/SiPixelMonitorDigi/doc/html/overview.html DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h DQM/SiPixelMonitorDigi/src/SiPixelDigiModule.cc DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc DQM/SiPixelMonitorRawData/doc/html/index.html DQM/SiPixelMonitorRawData/doc/html/overview.html DQM/SiPixelMonitorRecHit/doc/html/index.html DQM/SiPixelMonitorRecHit/doc/html/overview.html DQM/SiPixelMonitorTrack/doc/html/index.html DQM/SiPixelMonitorTrack/doc/html/overview.html DQM/SiStripCommissioningDbClients/doc/html/index.html DQM/SiStripCommissioningDbClients/doc/html/overview.html DQM/SiStripMonitorHardware/doc/html/index.html DQM/SiStripMonitorHardware/doc/html/overview.html DQM/SiStripMonitorTrack/doc/html/index.html DQM/SiStripMonitorTrack/doc/html/overview.html DQM/TrackerCommon/doc/html/index.html DQM/TrackerCommon/doc/html/overview.html DQM/TrackingMonitor/doc/html/index.html DQM/TrackingMonitor/doc/html/overview.html DQM/TrigXMonitor/doc/html/index.html DQM/TrigXMonitor/doc/html/overview.html DQM/TrigXMonitorClient/doc/html/index.html DQM/TrigXMonitorClient/doc/html/overview.html DQMOffline/Alignment/doc/html/index.html DQMOffline/Alignment/doc/html/overview.html DQMOffline/CalibCalo/doc/html/index.html DQMOffline/CalibCalo/doc/html/overview.html DQMOffline/CalibMuon/doc/html/index.html DQMOffline/CalibMuon/doc/html/overview.html DQMOffline/CalibTracker/doc/html/index.html DQMOffline/CalibTracker/doc/html/overview.html DQMOffline/Configuration/doc/html/index.html DQMOffline/Configuration/doc/html/overview.html DQMOffline/EGamma/doc/html/index.html DQMOffline/EGamma/doc/html/overview.html DQMOffline/Ecal/doc/html/index.html DQMOffline/Ecal/doc/html/overview.html DQMOffline/JetMET/doc/html/index.html DQMOffline/JetMET/doc/html/overview.html DQMOffline/Muon/doc/html/index.html DQMOffline/Muon/doc/html/overview.html DQMOffline/PFTau/doc/html/index.html DQMOffline/PFTau/doc/html/overview.html DQMOffline/RecoB/doc/html/index.html DQMOffline/RecoB/doc/html/overview.html DQMOffline/Trigger/doc/html/index.html DQMOffline/Trigger/doc/html/overview.html DQMServices/Diagnostic/doc/html/index.html DQMServices/Diagnostic/doc/html/overview.html DataFormats/Alignment/doc/html/index.html DataFormats/Alignment/doc/html/overview.html DataFormats/BeamSpot/doc/html/index.html DataFormats/BeamSpot/doc/html/overview.html DataFormats/CLHEP/doc/html/index.html DataFormats/CLHEP/doc/html/overview.html DataFormats/CSCRecHit/interface/CSCStripHit.h DataFormats/CSCRecHit/interface/CSCStripHitCollection.h DataFormats/CSCRecHit/interface/CSCWireHit.h DataFormats/CSCRecHit/interface/CSCWireHitCollection.h DataFormats/CSCRecHit/src/CSCStripHit.cc DataFormats/CSCRecHit/src/CSCWireHit.cc DataFormats/CastorReco/doc/html/index.html DataFormats/CastorReco/doc/html/overview.html DataFormats/EgammaTrackReco/doc/html/index.html DataFormats/EgammaTrackReco/doc/html/overview.html DataFormats/FP420Cluster/doc/html/index.html DataFormats/FP420Cluster/doc/html/overview.html DataFormats/FP420Digi/doc/html/index.html DataFormats/FP420Digi/doc/html/overview.html DataFormats/FWLite/doc/html/index.html DataFormats/FWLite/doc/html/overview.html DataFormats/GeometryCommonDetAlgo/doc/html/index.html DataFormats/GeometryCommonDetAlgo/doc/html/overview.html DataFormats/GeometrySurface/doc/html/index.html DataFormats/GeometrySurface/doc/html/overview.html DataFormats/GeometryVector/doc/html/index.html DataFormats/GeometryVector/doc/html/overview.html DataFormats/GsfTrackReco/doc/html/index.html DataFormats/GsfTrackReco/doc/html/overview.html DataFormats/HcalCalibObjects/doc/html/index.html DataFormats/HcalCalibObjects/doc/html/overview.html DataFormats/HcalIsolatedTrack/doc/html/index.html DataFormats/HcalIsolatedTrack/doc/html/overview.html DataFormats/HeavyIonEvent/doc/html/index.html DataFormats/HeavyIonEvent/doc/html/overview.html DataFormats/Histograms/doc/html/index.html DataFormats/Histograms/doc/html/overview.html DataFormats/LaserAlignment/doc/html/index.html DataFormats/LaserAlignment/doc/html/overview.html DataFormats/Luminosity/doc/html/index.html DataFormats/Luminosity/doc/html/overview.html DataFormats/MuonSeed/doc/html/index.html DataFormats/MuonSeed/doc/html/overview.html DataFormats/ParticleFlowCandidate/doc/html/index.html DataFormats/ParticleFlowCandidate/doc/html/overview.html DataFormats/PatCandidates/doc/html/index.html DataFormats/PatCandidates/doc/html/overview.html DataFormats/PixelMatchTrackReco/doc/html/index.html DataFormats/PixelMatchTrackReco/doc/html/overview.html DataFormats/Provenance/doc/html/index.html DataFormats/Provenance/doc/html/overview.html DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h DataFormats/RecoCandidate/src/CaloRecHitCandidate.cc DataFormats/RoadSearchSeed/doc/html/index.html DataFormats/RoadSearchSeed/doc/html/overview.html DataFormats/Scalers/doc/html/index.html DataFormats/Scalers/doc/html/overview.html DataFormats/SiPixelRawData/doc/html/index.html DataFormats/SiPixelRawData/doc/html/overview.html DataFormats/SiPixelRawData/doc/tex/RawDataFormat.tex DataFormats/StdDictionaries/doc/html/index.html DataFormats/StdDictionaries/doc/html/overview.html DataFormats/TauReco/doc/html/index.html DataFormats/TauReco/doc/html/overview.html DataFormats/TrackingSeed/BuildFile DataFormats/TrackingSeed/doc/html/index.html DataFormats/TrackingSeed/doc/html/overview.html DataFormats/TrackingSeed/interface/TrackingSeed.h DataFormats/TrackingSeed/interface/TrackingSeedCollection.h DataFormats/TrackingSeed/interface/TrackingSeedCollectionfwd.h DataFormats/TrackingSeed/interface/TrackingSeedfwd.h DataFormats/TrackingSeed/src/classes.h DataFormats/TrackingSeed/src/classes_def.xml DataFormats/V0Candidate/doc/html/index.html DataFormats/V0Candidate/doc/html/overview.html DataFormats/WrappedStdDictionaries/doc/html/index.html DataFormats/WrappedStdDictionaries/doc/html/overview.html DiffractiveForwardAnalysis/Configuration/doc/html/index.html DiffractiveForwardAnalysis/Configuration/doc/html/overview.html DiffractiveForwardAnalysis/Skimming/doc/html/index.html DiffractiveForwardAnalysis/Skimming/doc/html/overview.html Documentation/PhysicsTools/Makefile Documentation/PhysicsTools/colornames.sty Documentation/PhysicsTools/cpplistings.sty Documentation/PhysicsTools/doc/html/index.html Documentation/PhysicsTools/doc/html/overview.html Documentation/PhysicsTools/document.tex Documentation/PhysicsTools/listings.cfg Documentation/PhysicsTools/listings.sty Documentation/PhysicsTools/lstdoc.sty Documentation/PhysicsTools/lstlang1.sty Documentation/PhysicsTools/lstlang2.sty Documentation/PhysicsTools/lstlang3.sty Documentation/PhysicsTools/lstmisc.sty Documentation/PhysicsTools/lstpatch.sty Documentation/PhysicsTools/mem10.clo Documentation/PhysicsTools/mem11.clo Documentation/PhysicsTools/mem12.clo Documentation/PhysicsTools/mem14.clo Documentation/PhysicsTools/mem17.clo Documentation/PhysicsTools/mem9.clo Documentation/PhysicsTools/memarticle.cls Documentation/PhysicsTools/memhfixc.sty Documentation/PhysicsTools/memoir.cls Documentation/PhysicsTools/mempatch.sty Documentation/PhysicsTools/miktex.mk Documentation/PhysicsTools/notes.rst Documentation/PhysicsTools/pdfdraftcopy.sty Documentation/PhysicsTools/rcs.sty Documentation/PhysicsTools/tasks.rst Documentation/ReleaseNotes/doc/ReleaseNotes010.txt Documentation/ReleaseNotes/doc/html/index.html Documentation/ReleaseNotes/doc/html/overview.html EgammaAnalysis/CSA07Skims/doc/html/index.html EgammaAnalysis/CSA07Skims/doc/html/overview.html EgammaAnalysis/Configuration/doc/html/index.html EgammaAnalysis/Configuration/doc/html/overview.html EgammaAnalysis/ElectronIDESSources/doc/html/index.html EgammaAnalysis/ElectronIDESSources/doc/html/overview.html EgammaAnalysis/PhotonIDProducers/doc/html/index.html EgammaAnalysis/PhotonIDProducers/doc/html/overview.html ElectroWeakAnalysis/Configuration/doc/html/index.html ElectroWeakAnalysis/Configuration/doc/html/overview.html ElectroWeakAnalysis/Skimming/doc/html/index.html ElectroWeakAnalysis/Skimming/doc/html/overview.html ElectroWeakAnalysis/Utilities/doc/html/index.html ElectroWeakAnalysis/Utilities/doc/html/overview.html ElectroWeakAnalysis/WENu/doc/html/index.html ElectroWeakAnalysis/WENu/doc/html/overview.html ElectroWeakAnalysis/WMuNu/doc/html/index.html ElectroWeakAnalysis/WMuNu/doc/html/overview.html ElectroWeakAnalysis/WReco/doc/html/index.html ElectroWeakAnalysis/WReco/doc/html/overview.html ElectroWeakAnalysis/ZEE/doc/html/index.html ElectroWeakAnalysis/ZEE/doc/html/overview.html ElectroWeakAnalysis/ZMuMu/doc/html/index.html ElectroWeakAnalysis/ZMuMu/doc/html/overview.html ElectroWeakAnalysis/ZReco/doc/html/index.html ElectroWeakAnalysis/ZReco/doc/html/overview.html EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.cc EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h EventFilter/CastorRawToDigi/doc/html/index.html EventFilter/CastorRawToDigi/doc/html/overview.html EventFilter/Configuration/doc/html/index.html EventFilter/Configuration/doc/html/overview.html EventFilter/Cosmics/doc/html/index.html EventFilter/Cosmics/doc/html/overview.html EventFilter/DTTFRawToDigi/doc/html/index.html EventFilter/DTTFRawToDigi/doc/html/overview.html EventFilter/ESDigiToRaw/doc/html/index.html EventFilter/ESDigiToRaw/doc/html/overview.html EventFilter/ESRawToDigi/doc/html/index.html EventFilter/ESRawToDigi/doc/html/overview.html EventFilter/EcalDigiToRaw/doc/html/index.html EventFilter/EcalDigiToRaw/doc/html/overview.html EventFilter/EcalRawToDigiDev/doc/html/index.html EventFilter/EcalRawToDigiDev/doc/html/overview.html EventFilter/FEDInterface/doc/html/index.html EventFilter/FEDInterface/doc/html/overview.html EventFilter/GctRawToDigi/BuildFile EventFilter/GctRawToDigi/src/GctUnpacker.cc EventFilter/GctRawToDigi/src/GctUnpacker.h EventFilter/Goodies/doc/html/index.html EventFilter/Goodies/doc/html/overview.html EventFilter/L1GlobalTriggerRawToDigi/BuildFile EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h EventFilter/L1GlobalTriggerRawToDigi/src/L1GTDigiToRaw.cc EventFilter/L1GlobalTriggerRawToDigi/src/L1GlobaTriggerRawToDigi.cc EventFilter/L1GlobalTriggerRawToDigi/src/SealModule.cc EventFilter/Modules/doc/html/index.html EventFilter/Modules/doc/html/overview.html EventFilter/RawDataCollector/doc/html/index.html EventFilter/RawDataCollector/doc/html/overview.html EventFilter/SMProxyServer/doc/html/index.html EventFilter/SMProxyServer/doc/html/overview.html EventFilter/ScalersRawToDigi/doc/html/index.html EventFilter/ScalersRawToDigi/doc/html/overview.html EventFilter/ShmBuffer/doc/html/index.html EventFilter/ShmBuffer/doc/html/overview.html FWCore/Catalog/doc/html/index.html FWCore/Catalog/doc/html/overview.html FWCore/Common/doc/html/index.html FWCore/Common/doc/html/overview.html FWCore/GuiBrowsers/doc/html/index.html FWCore/GuiBrowsers/doc/html/overview.html FWCore/PluginManager/doc/html/index.html FWCore/PluginManager/doc/html/overview.html FWCore/PrescaleService/doc/html/index.html FWCore/PrescaleService/doc/html/overview.html FWCore/Python/BuildFile FWCore/Python/doc/Python.doc FWCore/Python/src/EventWrapper.cc FWCore/Python/src/EventWrapper.h FWCore/Python/src/PyModule.cc FWCore/Python/src/PythonFilter.cc FWCore/Python/src/PythonFilter.h FWCore/Python/src/PythonManager.h FWCore/Python/src/PythonService.cc FWCore/Python/src/PythonService.h FWCore/Python/src/SealModule.cc FWCore/Python/test/loggingExample.cfg FWCore/Python/test/loggingExample.py FWCore/Python/test/loggingServer.py FWCore/Python/test/serviceExample.py FWCore/Python/test/serviceTest.cfg FWCore/Python/test/simpleTest.cfg FWCore/PythonParameterSet/doc/html/index.html FWCore/PythonParameterSet/doc/html/overview.html FWCore/RootAutoLibraryLoader/doc/html/index.html FWCore/RootAutoLibraryLoader/doc/html/overview.html FWCore/Sources/doc/html/index.html FWCore/Sources/doc/html/overview.html FWCore/Version/doc/html/index.html FWCore/Version/doc/html/overview.html FastSimDataFormats/External/doc/html/index.html FastSimDataFormats/External/doc/html/overview.html FastSimDataFormats/L1GlobalMuonTrigger/doc/html/index.html FastSimDataFormats/L1GlobalMuonTrigger/doc/html/overview.html FastSimDataFormats/NuclearInteractions/doc/html/index.html FastSimDataFormats/NuclearInteractions/doc/html/overview.html FastSimDataFormats/PileUpEvents/doc/html/index.html FastSimDataFormats/PileUpEvents/doc/html/overview.html FastSimulation/Configuration/doc/html/index.html FastSimulation/Configuration/doc/html/overview.html FastSimulation/EgammaElectronAlgos/doc/html/index.html FastSimulation/EgammaElectronAlgos/doc/html/overview.html FastSimulation/ForwardDetectors/doc/html/index.html FastSimulation/ForwardDetectors/doc/html/overview.html FastSimulation/HighLevelTrigger/doc/html/index.html FastSimulation/HighLevelTrigger/doc/html/overview.html FastSimulation/L1CaloTriggerProducer/doc/html/index.html FastSimulation/L1CaloTriggerProducer/doc/html/overview.html FastSimulation/MuonSimHitProducer/doc/html/index.html FastSimulation/MuonSimHitProducer/doc/html/overview.html FastSimulation/Tracking/doc/html/index.html FastSimulation/Tracking/doc/html/overview.html FastSimulation/Validation/doc/html/index.html FastSimulation/Validation/doc/html/overview.html GeneratorInterface/AMPTInterface/doc/html/index.html GeneratorInterface/AMPTInterface/doc/html/overview.html GeneratorInterface/Configuration/doc/html/index.html GeneratorInterface/Configuration/doc/html/overview.html GeneratorInterface/Core/doc/html/index.html GeneratorInterface/Core/doc/html/overview.html GeneratorInterface/ExhumeInterface/doc/html/index.html GeneratorInterface/ExhumeInterface/doc/html/overview.html GeneratorInterface/ExternalDecays/doc/html/index.html GeneratorInterface/ExternalDecays/doc/html/overview.html GeneratorInterface/GenExtensions/doc/html/index.html GeneratorInterface/GenExtensions/doc/html/overview.html GeneratorInterface/GenFilters/doc/html/index.html GeneratorInterface/GenFilters/doc/html/overview.html GeneratorInterface/Herwig6Interface/BuildFile GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.cc GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.h GeneratorInterface/Herwig6Interface/src/HepEvt.F GeneratorInterface/Herwig6Interface/src/Herwig6Source.cc GeneratorInterface/Herwig6Interface/src/HerwigWrapper6_4.h GeneratorInterface/Herwig6Interface/src/IO_BaseClass.h GeneratorInterface/Herwig6Interface/src/IO_HERWIG.cc GeneratorInterface/Herwig6Interface/src/IO_HERWIG.h GeneratorInterface/Herwig6Interface/src/ParticleData.h GeneratorInterface/Herwig6Interface/src/ParticleDataTable.h GeneratorInterface/Herwig6Interface/src/SealModule.cc GeneratorInterface/Herwig6Interface/test/H4muAnalyzer.cc GeneratorInterface/HiGenCommon/doc/html/index.html GeneratorInterface/HiGenCommon/doc/html/overview.html GeneratorInterface/HijingInterface/doc/html/index.html GeneratorInterface/HijingInterface/doc/html/overview.html GeneratorInterface/LHEInterface/doc/html/index.html GeneratorInterface/LHEInterface/doc/html/overview.html GeneratorInterface/MCatNLOInterface/BuildFile GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.cc GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.h GeneratorInterface/MCatNLOInterface/src/HepEvt.F GeneratorInterface/MCatNLOInterface/src/HerwigWrapper6_4.h GeneratorInterface/MCatNLOInterface/src/IO_BaseClass.h GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.cc GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.h GeneratorInterface/MCatNLOInterface/src/MCatNLOSource.cc GeneratorInterface/MCatNLOInterface/src/ParticleData.h GeneratorInterface/MCatNLOInterface/src/ParticleDataTable.h GeneratorInterface/MCatNLOInterface/src/SealModule.cc GeneratorInterface/MCatNLOInterface/src/mcatnlo_hwlhin.f GeneratorInterface/MCatNLOInterface/src/mcatnlo_str.f GeneratorInterface/MCatNLOInterface/test/ZeeAnalyzer.cc GeneratorInterface/PartonShowerVeto/doc/html/index.html GeneratorInterface/PartonShowerVeto/doc/html/overview.html GeneratorInterface/PomwigInterface/doc/html/index.html GeneratorInterface/PomwigInterface/doc/html/overview.html GeneratorInterface/PyquenInterface/doc/html/index.html GeneratorInterface/PyquenInterface/doc/html/overview.html GeneratorInterface/SherpaInterface/doc/html/index.html GeneratorInterface/SherpaInterface/doc/html/overview.html GeneratorInterface/ThePEGInterface/doc/html/index.html GeneratorInterface/ThePEGInterface/doc/html/overview.html Geometry/CMSCommonData/data/caloBase.xml Geometry/CMSCommonData/data/cmsCalo.xml Geometry/CMSCommonData/data/cmsMagneticField.xml Geometry/CMSCommonData/data/cmsMuonMagnetBeam.xml Geometry/CMSCommonData/data/cmsTracker.xml Geometry/CMSCommonData/data/muonBase.xml Geometry/CommonTopologies/interface/RadialStripTopology.h Geometry/CommonTopologies/src/RadialStripTopology.cc Geometry/EcalCommonData/test/data/ecal_test.xml Geometry/EcalMapping/doc/html/index.html Geometry/EcalMapping/doc/html/overview.html Geometry/ForwardGeometry/doc/html/index.html Geometry/ForwardGeometry/doc/html/overview.html Geometry/MTCCTrackerCommonData/data/tracker.xml Geometry/RPCGeometry/interface/RPCChamber.h Geometry/RPCGeometry/src/RPCChamber.cc Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml Geometry/TrackerTopology/doc/TrackerTopology.doc HLTrigger/Egamma/doc/html/index.html HLTrigger/Egamma/doc/html/overview.html HLTrigger/JetMET/doc/html/index.html HLTrigger/JetMET/doc/html/overview.html HLTrigger/Muon/doc/html/index.html HLTrigger/Muon/doc/html/overview.html HLTrigger/btau/doc/html/index.html HLTrigger/btau/doc/html/overview.html HLTrigger/special/doc/html/index.html HLTrigger/special/doc/html/overview.html HLTriggerOffline/BJet/doc/html/index.html HLTriggerOffline/BJet/doc/html/overview.html HLTriggerOffline/Common/doc/html/index.html HLTriggerOffline/Common/doc/html/overview.html HLTriggerOffline/Egamma/doc/html/index.html HLTriggerOffline/Egamma/doc/html/overview.html HLTriggerOffline/HeavyFlavor/doc/html/index.html HLTriggerOffline/HeavyFlavor/doc/html/overview.html HLTriggerOffline/Higgs/doc/html/index.html HLTriggerOffline/Higgs/doc/html/overview.html HLTriggerOffline/JetMET/doc/html/index.html HLTriggerOffline/JetMET/doc/html/overview.html HLTriggerOffline/Muon/doc/html/index.html HLTriggerOffline/Muon/doc/html/overview.html HLTriggerOffline/SUSYBSM/doc/html/index.html HLTriggerOffline/SUSYBSM/doc/html/overview.html HLTriggerOffline/Tau/doc/html/index.html HLTriggerOffline/Tau/doc/html/overview.html HLTriggerOffline/Top/doc/html/index.html HLTriggerOffline/Top/doc/html/overview.html HLTriggerOffline/special/doc/html/index.html HLTriggerOffline/special/doc/html/overview.html HeavyFlavorAnalysis/Configuration/doc/html/index.html HeavyFlavorAnalysis/Configuration/doc/html/overview.html HeavyFlavorAnalysis/Skimming/doc/html/index.html HeavyFlavorAnalysis/Skimming/doc/html/overview.html HeavyIonsAnalysis/Configuration/doc/html/index.html HeavyIonsAnalysis/Configuration/doc/html/overview.html HiggsAnalysis/Configuration/doc/html/index.html HiggsAnalysis/Configuration/doc/html/overview.html HiggsAnalysis/Skimming/doc/html/index.html HiggsAnalysis/Skimming/doc/html/overview.html IOPool/PFNCatalog/doc/html/index.html IOPool/PFNCatalog/doc/html/overview.html IOPool/TrivialFileCatalog/doc/trivial.dtd IORawData/CaloPatterns/BuildFile IORawData/CaloPatterns/interface/HcalFiberPattern.h IORawData/CaloPatterns/interface/HcalPatternXMLParser.h IORawData/CaloPatterns/src/HcalFiberPattern.cc IORawData/CaloPatterns/src/HcalPatternSource.cc IORawData/CaloPatterns/src/HcalPatternSource.h IORawData/CaloPatterns/src/HcalPatternXMLParser.cc IORawData/CaloPatterns/src/SealModule.cc IORawData/SiPixelInputSources/doc/html/index.html IORawData/SiPixelInputSources/doc/html/overview.html JetMETAnalysis/Configuration/doc/html/index.html JetMETAnalysis/Configuration/doc/html/overview.html JetMETAnalysis/JetSkims/doc/html/index.html JetMETAnalysis/JetSkims/doc/html/overview.html JetMETAnalysis/METSkims/doc/html/index.html JetMETAnalysis/METSkims/doc/html/overview.html JetMETCorrections/Algorithms/doc/html/index.html JetMETCorrections/Algorithms/doc/html/overview.html JetMETCorrections/Configuration/doc/html/index.html JetMETCorrections/Configuration/doc/html/overview.html JetMETCorrections/Modules/doc/html/index.html JetMETCorrections/Modules/doc/html/overview.html JetMETCorrections/Objects/doc/html/index.html JetMETCorrections/Objects/doc/html/overview.html L1Trigger/Configuration/doc/html/index.html L1Trigger/Configuration/doc/html/overview.html L1Trigger/GlobalTriggerAnalyzer/doc/html/index.html L1Trigger/GlobalTriggerAnalyzer/doc/html/overview.html L1Trigger/HardwareValidation/doc/html/index.html L1Trigger/HardwareValidation/doc/html/overview.html L1Trigger/L1GctAnalyzer/BuildFile L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc L1Trigger/L1GctAnalyzer/src/L1GctBasicHistogrammer.cc L1Trigger/L1GctAnalyzer/src/L1GctHistogrammer.cc L1Trigger/L1GctAnalyzer/src/L1GctJetCheckHistogrammer.cc L1Trigger/L1GctAnalyzer/src/L1GctMETCheckHistogrammer.cc L1Trigger/RPCTechnicalTrigger/doc/html/index.html L1Trigger/RPCTechnicalTrigger/doc/html/overview.html L1Trigger/Skimmer/doc/html/index.html L1Trigger/Skimmer/doc/html/overview.html L1Trigger/TextToDigi/doc/html/index.html L1Trigger/TextToDigi/doc/html/overview.html L1TriggerConfig/CSCTFConfigProducers/doc/html/index.html L1TriggerConfig/CSCTFConfigProducers/doc/html/overview.html L1TriggerConfig/DTTPGConfig/doc/html/index.html L1TriggerConfig/DTTPGConfig/doc/html/overview.html L1TriggerConfig/DTTPGConfigProducers/doc/html/index.html L1TriggerConfig/DTTPGConfigProducers/doc/html/overview.html L1TriggerConfig/DTTrackFinder/doc/html/index.html L1TriggerConfig/DTTrackFinder/doc/html/overview.html L1TriggerConfig/GMTConfigProducers/doc/html/index.html L1TriggerConfig/GMTConfigProducers/doc/html/overview.html L1TriggerConfig/GctConfigProducers/doc/html/index.html L1TriggerConfig/GctConfigProducers/doc/html/overview.html L1TriggerConfig/L1CSCTPConfigProducers/doc/html/index.html L1TriggerConfig/L1CSCTPConfigProducers/doc/html/overview.html L1TriggerConfig/L1GeometryProducers/doc/html/index.html L1TriggerConfig/L1GeometryProducers/doc/html/overview.html L1TriggerConfig/L1GtConfigProducers/doc/html/index.html L1TriggerConfig/L1GtConfigProducers/doc/html/overview.html L1TriggerConfig/L1ScalesProducers/doc/html/index.html L1TriggerConfig/L1ScalesProducers/doc/html/overview.html L1TriggerConfig/RCTConfigProducers/doc/html/index.html L1TriggerConfig/RCTConfigProducers/doc/html/overview.html L1TriggerConfig/RPCTriggerConfig/doc/html/index.html L1TriggerConfig/RPCTriggerConfig/doc/html/overview.html L1TriggerOffline/Configuration/doc/html/index.html L1TriggerOffline/Configuration/doc/html/overview.html L1TriggerOffline/L1Analyzer/doc/html/index.html L1TriggerOffline/L1Analyzer/doc/html/overview.html MagneticField/Interpolation/src/MFGrid3D.cc MagneticField/ParametrizedEngine/doc/html/index.html MagneticField/ParametrizedEngine/doc/html/overview.html MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h MuonAnalysis/Configuration/doc/html/index.html MuonAnalysis/Configuration/doc/html/overview.html MuonAnalysis/MomentumScaleCalibration/doc/html/index.html MuonAnalysis/MomentumScaleCalibration/doc/html/overview.html MuonAnalysis/MuonAssociators/doc/html/index.html MuonAnalysis/MuonAssociators/doc/html/overview.html MuonAnalysis/Skims/doc/html/index.html MuonAnalysis/Skims/doc/html/overview.html OnlineDB/CSCCondDB/BuildFile OnlineDB/CSCCondDB/interface/AutoCorrMat.h OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h OnlineDB/CSCCondDB/interface/CSCMap.h OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h OnlineDB/CSCCondDB/interface/CSCOnlineDB.h OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h OnlineDB/CSCCondDB/interface/CSCToAFEB.h OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h OnlineDB/CSCCondDB/interface/CSCxTalk.h OnlineDB/CSCCondDB/interface/SaturationFcn.h OnlineDB/CSCCondDB/interface/SaturationFit.h OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc OnlineDB/CSCCondDB/src/CSCAFEBConnectAnalysis.cc OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc OnlineDB/CSCCondDB/src/CSCCFEBConnectivityAnalyzer.cc OnlineDB/CSCCondDB/src/CSCCompThreshAnalyzer.cc OnlineDB/CSCCondDB/src/CSCCrossTalkAnalyzer.cc OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc OnlineDB/CSCCondDB/src/CSCMap.cc OnlineDB/CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc OnlineDB/CSCCondDB/src/CSCOnlineDB.cc OnlineDB/CSCCondDB/src/CSCSaturationAnalyzer.cc OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc OnlineDB/CSCCondDB/src/CSCToAFEB.cc OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc OnlineDB/CSCCondDB/src/SealModule.cc OnlineDB/CSCCondDB/test/Readme OnlineDB/CSCCondDB/test/csc_slice_test_map.txt OnlineDB/Oracle/doc/html/index.html OnlineDB/Oracle/doc/html/overview.html OnlineDB/SiStripO2O/doc/html/index.html OnlineDB/SiStripO2O/doc/html/overview.html PerfTools/Callgrind/doc/html/index.html PerfTools/Callgrind/doc/html/overview.html PerfTools/EdmEvent/doc/html/index.html PerfTools/EdmEvent/doc/html/overview.html PhysicsTools/CondLiteIO/doc/html/index.html PhysicsTools/CondLiteIO/doc/html/overview.html PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.cc PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h PhysicsTools/IsolationAlgos/doc/html/index.html PhysicsTools/IsolationAlgos/doc/html/overview.html PhysicsTools/IsolationUtils/doc/html/index.html PhysicsTools/IsolationUtils/doc/html/overview.html PhysicsTools/JetCharge/doc/html/index.html PhysicsTools/JetCharge/doc/html/overview.html PhysicsTools/JetExamples/doc/html/index.html PhysicsTools/JetExamples/doc/html/overview.html PhysicsTools/JetMCAlgos/doc/html/index.html PhysicsTools/JetMCAlgos/doc/html/overview.html PhysicsTools/JetMCUtils/doc/html/index.html PhysicsTools/JetMCUtils/doc/html/overview.html PhysicsTools/KinFitter/doc/html/index.html PhysicsTools/KinFitter/doc/html/overview.html PhysicsTools/MVAComputer/doc/html/index.html PhysicsTools/MVAComputer/doc/html/overview.html PhysicsTools/MVATrainer/doc/html/index.html PhysicsTools/MVATrainer/doc/html/overview.html PhysicsTools/PFCandProducer/doc/html/index.html PhysicsTools/PFCandProducer/doc/html/overview.html PhysicsTools/PatAlgos/doc/html/index.html PhysicsTools/PatAlgos/doc/html/overview.html PhysicsTools/PatExamples/doc/html/index.html PhysicsTools/PatExamples/doc/html/overview.html PhysicsTools/PatUtils/doc/html/index.html PhysicsTools/PatUtils/doc/html/overview.html PhysicsTools/PythonAnalysis/examples/MCTruth.py PhysicsTools/PythonAnalysis/examples/MCTruth2.py PhysicsTools/PythonAnalysis/examples/howto.txt PhysicsTools/PythonAnalysis/examples/interactiveExample.py PhysicsTools/PythonAnalysis/examples/start.py PhysicsTools/PythonAnalysis/examples/trackerHits.py PhysicsTools/RecoUtils/doc/html/index.html PhysicsTools/RecoUtils/doc/html/overview.html PhysicsTools/RooStatsCms/doc/html/index.html PhysicsTools/RooStatsCms/doc/html/overview.html PhysicsTools/SelectorUtils/doc/html/index.html PhysicsTools/SelectorUtils/doc/html/overview.html PhysicsTools/StarterKit/doc/html/index.html PhysicsTools/StarterKit/doc/html/overview.html PhysicsTools/StatPatternRecognition/doc/html/index.html PhysicsTools/StatPatternRecognition/doc/html/overview.html QCDAnalysis/ChargedHadronSpectra/doc/html/index.html QCDAnalysis/ChargedHadronSpectra/doc/html/overview.html QCDAnalysis/Configuration/doc/html/index.html QCDAnalysis/Configuration/doc/html/overview.html QCDAnalysis/Skimming/doc/html/index.html QCDAnalysis/Skimming/doc/html/overview.html QCDAnalysis/UEAnalysis/doc/html/index.html QCDAnalysis/UEAnalysis/doc/html/overview.html RecoBTag/ImpactParameter/doc/html/index.html RecoBTag/ImpactParameter/doc/html/overview.html RecoBTag/ImpactParameterLearning/doc/html/index.html RecoBTag/ImpactParameterLearning/doc/html/overview.html RecoBTag/PerformanceDB/doc/html/index.html RecoBTag/PerformanceDB/doc/html/overview.html RecoBTag/Records/doc/html/index.html RecoBTag/Records/doc/html/overview.html RecoBTag/SecondaryVertex/doc/html/index.html RecoBTag/SecondaryVertex/doc/html/overview.html RecoBTag/Skimming/doc/html/index.html RecoBTag/Skimming/doc/html/overview.html RecoBTag/TrackProbability/doc/html/index.html RecoBTag/TrackProbability/doc/html/overview.html RecoBTau/JetCrystalsAssociator/doc/html/index.html RecoBTau/JetCrystalsAssociator/doc/html/overview.html RecoBTau/JetTagComputer/doc/html/index.html RecoBTau/JetTagComputer/doc/html/overview.html RecoBTau/JetTagMVALearning/doc/html/index.html RecoBTau/JetTagMVALearning/doc/html/overview.html RecoCaloTools/EcalChannelKiller/doc/html/index.html RecoCaloTools/EcalChannelKiller/doc/html/overview.html RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h RecoEcal/EgammaClusterAlgos/src/ClusteringAlgorithm.cc RecoEcal/EgammaClusterAlgos/src/LogPositionCalc.cc RecoEcal/EgammaClusterAlgos/src/PositionAwareHit.cc RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h RecoEcal/EgammaCoreTools/src/LogPositionCalc.cc RecoEgamma/EgammaHFProducers/doc/html/index.html RecoEgamma/EgammaHFProducers/doc/html/overview.html RecoEgamma/EgammaIsolationAlgos/doc/html/index.html RecoEgamma/EgammaIsolationAlgos/doc/html/overview.html RecoEgamma/EgammaMCTools/doc/html/index.html RecoEgamma/EgammaMCTools/doc/html/overview.html RecoEgamma/ElectronIdentification/doc/html/index.html RecoEgamma/ElectronIdentification/doc/html/overview.html RecoEgamma/Examples/doc/html/index.html RecoEgamma/Examples/doc/html/overview.html RecoEgamma/PhotonIdentification/doc/html/index.html RecoEgamma/PhotonIdentification/doc/html/overview.html RecoHI/Configuration/doc/html/index.html RecoHI/Configuration/doc/html/overview.html RecoHI/HiCentralityAlgos/doc/html/index.html RecoHI/HiCentralityAlgos/doc/html/overview.html RecoHI/HiEgammaAlgos/doc/html/index.html RecoHI/HiEgammaAlgos/doc/html/overview.html RecoHI/HiEvtPlaneAlgos/doc/html/index.html RecoHI/HiEvtPlaneAlgos/doc/html/overview.html RecoHI/HiJetAlgos/doc/html/index.html RecoHI/HiJetAlgos/doc/html/overview.html RecoHI/HiMuonAlgos/doc/html/index.html RecoHI/HiMuonAlgos/doc/html/overview.html RecoHI/HiTracking/doc/html/index.html RecoHI/HiTracking/doc/html/overview.html RecoHIMuon/HiMuPropagator/doc/html/index.html RecoHIMuon/HiMuPropagator/doc/html/overview.html RecoHIMuon/HiMuSeed/doc/html/index.html RecoHIMuon/HiMuSeed/doc/html/overview.html RecoHIMuon/HiMuTracking/doc/html/index.html RecoHIMuon/HiMuTracking/doc/html/overview.html RecoJets/JetAnalyzers/BuildFile RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h RecoJets/JetAnalyzers/interface/CaloTowersExample.h RecoJets/JetAnalyzers/interface/DijetMass.h RecoJets/JetAnalyzers/interface/JetAnalysis.h RecoJets/JetAnalyzers/interface/JetAnalyzer.h RecoJets/JetAnalyzers/interface/JetPlotsExample.h RecoJets/JetAnalyzers/interface/JetToDigiDump.h RecoJets/JetAnalyzers/interface/JetUtil.h RecoJets/JetAnalyzers/interface/JetValidation.h RecoJets/JetAnalyzers/src/CaloTowersExample.cc RecoJets/JetAnalyzers/src/DijetMass.cc RecoJets/JetAnalyzers/src/JetAnalysis.cc RecoJets/JetAnalyzers/src/JetAnalyzer.cc RecoJets/JetAnalyzers/src/JetPlotsExample.cc RecoJets/JetAnalyzers/src/JetToDigiDump.cc RecoJets/JetAnalyzers/src/JetValidation.cc RecoJets/JetAnalyzers/src/SealModule.cc RecoJets/JetAnalyzers/test/DijetMassQstar.cint RecoJets/JetAnalyzers/test/DijetMassZprime.cint RecoJets/JetAssociationAlgorithms/doc/html/index.html RecoJets/JetAssociationAlgorithms/doc/html/overview.html RecoJets/JetAssociationProducers/doc/html/index.html RecoJets/JetAssociationProducers/doc/html/overview.html RecoJets/JetPlusTracks/doc/html/index.html RecoJets/JetPlusTracks/doc/html/overview.html RecoLocalCalo/CaloRecCandCreator/doc/html/index.html RecoLocalCalo/CaloRecCandCreator/doc/html/overview.html RecoLocalCalo/Castor/doc/html/index.html RecoLocalCalo/Castor/doc/html/overview.html RecoLocalCalo/CastorReco/doc/html/index.html RecoLocalCalo/CastorReco/doc/html/overview.html RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/index.html RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/overview.html RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/index.html RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/overview.html RecoLocalCalo/HcalLaserReco/doc/html/index.html RecoLocalCalo/HcalLaserReco/doc/html/overview.html RecoLocalMuon/CSCEfficiency/doc/html/index.html RecoLocalMuon/CSCEfficiency/doc/html/overview.html RecoLocalMuon/CSCRecHitD/doc/html/index.html RecoLocalMuon/CSCRecHitD/doc/html/overview.html RecoLocalMuon/CSCValidation/doc/html/index.html RecoLocalMuon/CSCValidation/doc/html/overview.html RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h RecoLocalTracker/SiPixelRecHits/src/PixelCPETemplateReco.cc RecoLocalTracker/SiPixelRecHits/src/SiPixelTemplateReco.cc RecoLocalTracker/SubCollectionProducers/doc/html/index.html RecoLocalTracker/SubCollectionProducers/doc/html/overview.html RecoLuminosity/LumiDB/doc/html/index.html RecoLuminosity/LumiDB/doc/html/overview.html RecoLuminosity/LumiProducer/doc/html/index.html RecoLuminosity/LumiProducer/doc/html/overview.html RecoLuminosity/ROOTSchema/doc/html/index.html RecoLuminosity/ROOTSchema/doc/html/overview.html RecoLuminosity/TCPReceiver/doc/html/index.html RecoLuminosity/TCPReceiver/doc/html/overview.html RecoMuon/GlobalTrackingTools/doc/html/index.html RecoMuon/GlobalTrackingTools/doc/html/overview.html RecoMuon/L3TrackFinder/doc/html/index.html RecoMuon/L3TrackFinder/doc/html/overview.html RecoMuon/MuonIdentification/BuildFile RecoMuon/MuonIdentification/doc/html/index.html RecoMuon/MuonIdentification/doc/html/overview.html RecoMuon/MuonIdentification/interface/MuonIdProducer.h RecoMuon/MuonIdentification/src/MuonIdProducer.cc RecoMuon/MuonIdentification/test/TestMuonIdProducer.cxx RecoMuon/MuonIdentification/test/resolution_fit.cxx RecoMuon/MuonIdentification/test/rootlogon.C RecoMuon/MuonIsolationProducers/doc/html/index.html RecoMuon/MuonIsolationProducers/doc/html/overview.html RecoParticleFlow/Benchmark/doc/html/index.html RecoParticleFlow/Benchmark/doc/html/overview.html RecoParticleFlow/Configuration/doc/html/index.html RecoParticleFlow/Configuration/doc/html/overview.html RecoParticleFlow/PFBlockProducer/doc/html/index.html RecoParticleFlow/PFBlockProducer/doc/html/overview.html RecoParticleFlow/PFClusterShapeProducer/doc/html/index.html RecoParticleFlow/PFClusterShapeProducer/doc/html/overview.html RecoParticleFlow/PFClusterTools/doc/html/index.html RecoParticleFlow/PFClusterTools/doc/html/overview.html RecoParticleFlow/PFTracking/doc/html/index.html RecoParticleFlow/PFTracking/doc/html/overview.html RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGenerator.cc RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGeneratorFromLayerTriplet.cc RecoPixelVertexing/PixelTriplets/src/CosmicLayerTriplets.cc RecoRomanPot/Configuration/doc/html/index.html RecoRomanPot/Configuration/doc/html/overview.html RecoRomanPot/RecoFP420/doc/html/index.html RecoRomanPot/RecoFP420/doc/html/overview.html RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoAlgo.cc RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoProducer.cc RecoTBCalo/HcalPlotter/doc/html/index.html RecoTBCalo/HcalPlotter/doc/html/overview.html RecoTBCalo/ZDCTBAnalysis/doc/html/index.html RecoTBCalo/ZDCTBAnalysis/doc/html/overview.html RecoTauTag/ImpactParameter/BuildFile RecoTauTag/ImpactParameter/interface/ImpactParameter.h RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h RecoTauTag/ImpactParameter/src/ImpactParameter.cc RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc RecoTauTag/ImpactParameter/src/SealModule.cc RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc RecoTauTag/Pi0Tau/doc/html/index.html RecoTauTag/Pi0Tau/doc/html/overview.html RecoTauTag/RecoTau/doc/html/index.html RecoTauTag/RecoTau/doc/html/overview.html RecoTauTag/TauTagTools/doc/html/index.html RecoTauTag/TauTagTools/doc/html/overview.html RecoTracker/DeDx/doc/html/index.html RecoTracker/DeDx/doc/html/overview.html RecoTracker/DebugTools/doc/html/index.html RecoTracker/DebugTools/doc/html/overview.html RecoTracker/FinalTrackSelectors/doc/html/index.html RecoTracker/FinalTrackSelectors/doc/html/overview.html RecoTracker/IterativeTracking/doc/html/index.html RecoTracker/IterativeTracking/doc/html/overview.html RecoTracker/NuclearSeedGenerator/doc/html/index.html RecoTracker/NuclearSeedGenerator/doc/html/overview.html RecoTracker/RingESSource/doc/html/index.html RecoTracker/RingESSource/doc/html/overview.html RecoTracker/RingMakerESProducer/doc/html/index.html RecoTracker/RingMakerESProducer/doc/html/overview.html RecoTracker/RingRecord/doc/html/index.html RecoTracker/RingRecord/doc/html/overview.html RecoTracker/SiTrackerMRHTools/doc/html/index.html RecoTracker/SiTrackerMRHTools/doc/html/overview.html RecoTracker/SpecialSeedGenerators/doc/html/index.html RecoTracker/SpecialSeedGenerators/doc/html/overview.html RecoTracker/TkSeedingLayers/doc/html/index.html RecoTracker/TkSeedingLayers/doc/html/overview.html RecoTracker/TrackProducer/test/analyze.C RecoTracker/TrackProducer/test/analyze_HZZ.C RecoTracker/TrackProducer/test/analyze_HZZ_head.C RecoTracker/TrackProducer/test/analyze_head.C RecoVertex/AdaptiveVertexFinder/BuildFile RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h RecoVertex/AdaptiveVertexFinder/src/AdaptiveVertexReconstructor.cc RecoVertex/ConfigurableVertexReco/BuildFile RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveFitter.cc RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveReconstructor.cc RecoVertex/ConfigurableVertexReco/src/ConfigurableKalmanFitter.cc RecoVertex/ConfigurableVertexReco/src/ConfigurableLinPtFinder.cc RecoVertex/ConfigurableVertexReco/src/ConfigurableTrimmedKalmanFinder.cc RecoVertex/ConfigurableVertexReco/src/ConfigurableVertexReconstructor.cc RecoVertex/ConfigurableVertexReco/src/ReconstructorFromFitter.cc RecoVertex/ConfigurableVertexReco/src/ReconstructorFromLinPtFinder.cc RecoVertex/ConfigurableVertexReco/src/VertexRecoManager.cc RecoVertex/GhostTrackFitter/doc/html/index.html RecoVertex/GhostTrackFitter/doc/html/overview.html RecoVertex/KinematicFit/BuildFile RecoVertex/KinematicFit/doc/html/index.html RecoVertex/KinematicFit/doc/html/overview.html RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h RecoVertex/KinematicFit/interface/ChildUpdator.h RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h RecoVertex/KinematicFit/interface/FinalTreeBuilder.h RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h RecoVertex/KinematicFit/interface/InputSort.h RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h RecoVertex/KinematicFit/interface/KinematicParticleFitter.h RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h RecoVertex/KinematicFit/interface/MassKinematicConstraint.h RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h RecoVertex/KinematicFit/interface/ParentParticleFitter.h RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h RecoVertex/KinematicFit/interface/SimplePointingConstraint.h RecoVertex/KinematicFit/interface/SmartPointingConstraint.h RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h RecoVertex/KinematicFit/src/BackToBackKinematicConstraint.cc RecoVertex/KinematicFit/src/ConstrainedTreeBuilder.cc RecoVertex/KinematicFit/src/FinalTreeBuilder.cc RecoVertex/KinematicFit/src/FourMomentumKinematicConstraint.cc RecoVertex/KinematicFit/src/InputSort.cc RecoVertex/KinematicFit/src/KinematicConstrainedVertexFitter.cc RecoVertex/KinematicFit/src/KinematicConstrainedVertexUpdator.cc RecoVertex/KinematicFit/src/KinematicParticleFitter.cc RecoVertex/KinematicFit/src/KinematicParticleVertexFitter.cc RecoVertex/KinematicFit/src/LagrangeChildUpdator.cc RecoVertex/KinematicFit/src/LagrangeParentParticleFitter.cc RecoVertex/KinematicFit/src/MassKinematicConstraint.cc RecoVertex/KinematicFit/src/MomentumKinematicConstraint.cc RecoVertex/KinematicFit/src/PointingKinematicConstraint.cc RecoVertex/KinematicFit/src/SequentialKinematicVertexFitter.cc RecoVertex/KinematicFit/src/SimplePointingConstraint.cc RecoVertex/KinematicFit/src/SmartPointingConstraint.cc RecoVertex/KinematicFit/src/TwoTrackMassKinematicConstraint.cc RecoVertex/KinematicFit/src/VertexKinematicConstraint.cc RecoVertex/KinematicFitPrimitives/BuildFile RecoVertex/KinematicFitPrimitives/doc/html/index.html RecoVertex/KinematicFitPrimitives/doc/html/overview.html RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h RecoVertex/KinematicFitPrimitives/interface/KinematicState.h RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h RecoVertex/KinematicFitPrimitives/interface/KinematicVertexAssociator.h RecoVertex/KinematicFitPrimitives/interface/KinematicVertexDistance.h RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h RecoVertex/KinematicFitPrimitives/src/KinematicParameters.cc RecoVertex/KinematicFitPrimitives/src/KinematicParametersError.cc RecoVertex/KinematicFitPrimitives/src/KinematicParticle.cc RecoVertex/KinematicFitPrimitives/src/KinematicParticleFactoryFromTransientTrack.cc RecoVertex/KinematicFitPrimitives/src/KinematicPerigeeConversions.cc RecoVertex/KinematicFitPrimitives/src/KinematicRefittedTrackState.cc RecoVertex/KinematicFitPrimitives/src/KinematicState.cc RecoVertex/KinematicFitPrimitives/src/KinematicTree.cc RecoVertex/KinematicFitPrimitives/src/KinematicVertex.cc RecoVertex/KinematicFitPrimitives/src/KinematicVertexFactory.cc RecoVertex/KinematicFitPrimitives/src/MultipleKinematicConstraint.cc RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackState.cc RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackStateFactory.cc RecoVertex/KinematicFitPrimitives/src/PerigeeKinematicState.cc RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicParticle.cc RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicStateBuilder.cc RecoVertex/KinematicFitPrimitives/src/TrackKinematicStatePropagator.cc RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticle.cc RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticleFactory.cc RecoVertex/NuclearInteractionProducer/doc/html/index.html RecoVertex/NuclearInteractionProducer/doc/html/overview.html RecoVertex/TertiaryTracksVertexFinder/doc/html/index.html RecoVertex/TertiaryTracksVertexFinder/doc/html/overview.html RecoVertex/TrimmedVertexFit/doc/html/index.html RecoVertex/TrimmedVertexFit/doc/html/overview.html RecoVertex/V0Producer/doc/html/index.html RecoVertex/V0Producer/doc/html/overview.html SLHCUpgradeSimulations/Geometry/doc/html/index.html SLHCUpgradeSimulations/Geometry/doc/html/overview.html SLHCUpgradeSimulations/L1CaloTrigger/doc/html/index.html SLHCUpgradeSimulations/L1CaloTrigger/doc/html/overview.html SLHCUpgradeSimulations/L1TrackTrigger/doc/html/index.html SLHCUpgradeSimulations/L1TrackTrigger/doc/html/overview.html SUSYBSMAnalysis/Configuration/doc/html/index.html SUSYBSMAnalysis/Configuration/doc/html/overview.html SUSYBSMAnalysis/HSCP/doc/html/index.html SUSYBSMAnalysis/HSCP/doc/html/overview.html SUSYBSMAnalysis/Skimming/doc/html/index.html SUSYBSMAnalysis/Skimming/doc/html/overview.html SimCalorimetry/CastorSim/doc/html/index.html SimCalorimetry/CastorSim/doc/html/overview.html SimCalorimetry/EcalElectronicsEmulation/doc/html/index.html SimCalorimetry/EcalElectronicsEmulation/doc/html/overview.html SimCalorimetry/HcalTrigPrimAlgos/doc/html/index.html SimCalorimetry/HcalTrigPrimAlgos/doc/html/overview.html SimCalorimetry/HcalTrigPrimProducers/doc/html/index.html SimCalorimetry/HcalTrigPrimProducers/doc/html/overview.html SimDataFormats/DigiSimLinks/doc/html/index.html SimDataFormats/DigiSimLinks/doc/html/overview.html SimDataFormats/GeneratorProducts/doc/html/index.html SimDataFormats/GeneratorProducts/doc/html/overview.html SimDataFormats/HiGenData/doc/html/index.html SimDataFormats/HiGenData/doc/html/overview.html SimDataFormats/JetMatching/doc/html/index.html SimDataFormats/JetMatching/doc/html/overview.html SimDataFormats/SLHC/doc/html/index.html SimDataFormats/SLHC/doc/html/overview.html SimDataFormats/ValidationFormats/doc/html/index.html SimDataFormats/ValidationFormats/doc/html/overview.html SimG4CMS/CherenkovAnalysis/doc/html/index.html SimG4CMS/CherenkovAnalysis/doc/html/overview.html SimG4CMS/Forward/src/classes.h SimG4CMS/Forward/src/classes_def.xml SimG4CMS/ShowerLibraryProducer/doc/html/index.html SimG4CMS/ShowerLibraryProducer/doc/html/overview.html SimG4Core/CheckSecondary/doc/html/index.html SimG4Core/CheckSecondary/doc/html/overview.html SimG4Core/PhysicsLists/doc/html/index.html SimG4Core/PhysicsLists/doc/html/overview.html SimG4Core/SaveSimTrackAction/doc/html/index.html SimG4Core/SaveSimTrackAction/doc/html/overview.html SimGeneral/Configuration/doc/html/index.html SimGeneral/Configuration/doc/html/overview.html SimGeneral/DataMixingModule/doc/html/index.html SimGeneral/DataMixingModule/doc/html/overview.html SimGeneral/GFlash/doc/html/index.html SimGeneral/GFlash/doc/html/overview.html SimGeneral/TrackingAnalysis/src/classes.h SimGeneral/TrackingAnalysis/src/classes_def.xml SimMuon/MCTruth/doc/html/index.html SimMuon/MCTruth/doc/html/overview.html SimMuon/Neutron/BuildFile SimMuon/Neutron/interface/SubsystemNeutronReader.h SimMuon/Neutron/interface/SubsystemNeutronWriter.h SimMuon/Neutron/src/AsciiNeutronReader.cc SimMuon/Neutron/src/AsciiNeutronReader.h SimMuon/Neutron/src/AsciiNeutronWriter.cc SimMuon/Neutron/src/AsciiNeutronWriter.h SimMuon/Neutron/src/LinkDef.h SimMuon/Neutron/src/NeutronReader.h SimMuon/Neutron/src/NeutronWriter.h SimMuon/Neutron/src/RootChamberReader.cc SimMuon/Neutron/src/RootChamberReader.h SimMuon/Neutron/src/RootChamberWriter.cc SimMuon/Neutron/src/RootChamberWriter.h SimMuon/Neutron/src/RootNeutronReader.cc SimMuon/Neutron/src/RootNeutronReader.h SimMuon/Neutron/src/RootNeutronWriter.cc SimMuon/Neutron/src/RootNeutronWriter.h SimMuon/Neutron/src/RootSimHit.cc SimMuon/Neutron/src/RootSimHit.h SimMuon/Neutron/src/SubsystemNeutronReader.cc SimMuon/Neutron/src/SubsystemNeutronWriter.cc SimMuon/Neutron/test/AsciiNeutronTest.cpp SimMuon/Neutron/test/AsciiNeutronTest.ref SimMuon/Neutron/test/NeutronReaderTest.cpp SimMuon/Neutron/test/RootNeutronTest.cpp SimRomanPot/Configuration/doc/html/index.html SimRomanPot/Configuration/doc/html/overview.html SimRomanPot/SimFP420/doc/html/index.html SimRomanPot/SimFP420/doc/html/overview.html SimTracker/TrackHistory/doc/html/index.html SimTracker/TrackHistory/doc/html/overview.html SimTracker/TrackerFilters/doc/html/index.html SimTracker/TrackerFilters/doc/html/overview.html SimTracker/TrackerMaterialAnalysis/doc/html/index.html SimTracker/TrackerMaterialAnalysis/doc/html/overview.html SimTracker/VertexAssociation/doc/html/index.html SimTracker/VertexAssociation/doc/html/overview.html SimTracker/VertexAssociatorESProducer/doc/html/index.html SimTracker/VertexAssociatorESProducer/doc/html/overview.html SimTransport/HectorProducer/doc/html/index.html SimTransport/HectorProducer/doc/html/overview.html TauAnalysis/MCEmbeddingTools/doc/html/index.html TauAnalysis/MCEmbeddingTools/doc/html/overview.html TopQuarkAnalysis/Configuration/doc/html/index.html TopQuarkAnalysis/Configuration/doc/html/overview.html TopQuarkAnalysis/Examples/doc/html/index.html TopQuarkAnalysis/Examples/doc/html/overview.html TopQuarkAnalysis/TopEventProducers/doc/html/index.html TopQuarkAnalysis/TopEventProducers/doc/html/overview.html TopQuarkAnalysis/TopEventSelection/doc/html/index.html TopQuarkAnalysis/TopEventSelection/doc/html/overview.html TopQuarkAnalysis/TopJetCombination/doc/html/index.html TopQuarkAnalysis/TopJetCombination/doc/html/overview.html TopQuarkAnalysis/TopKinFitter/doc/html/index.html TopQuarkAnalysis/TopKinFitter/doc/html/overview.html TopQuarkAnalysis/TopObjectProducers/doc/html/index.html TopQuarkAnalysis/TopObjectProducers/doc/html/overview.html TopQuarkAnalysis/TopObjectResolutions/doc/html/index.html TopQuarkAnalysis/TopObjectResolutions/doc/html/overview.html TopQuarkAnalysis/TopPairBSM/doc/html/index.html TopQuarkAnalysis/TopPairBSM/doc/html/overview.html TopQuarkAnalysis/TopSkimming/doc/html/index.html TopQuarkAnalysis/TopSkimming/doc/html/overview.html TopQuarkAnalysis/TopTools/doc/html/index.html TopQuarkAnalysis/TopTools/doc/html/overview.html TrackPropagation/NavGeometry/BuildFile TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h TrackPropagation/NavGeometry/interface/NavCone.h TrackPropagation/NavGeometry/interface/NavCylinder.h TrackPropagation/NavGeometry/interface/NavPlane.h TrackPropagation/NavGeometry/interface/NavSurface.h TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h TrackPropagation/NavGeometry/interface/NavVolume.h TrackPropagation/NavGeometry/interface/NavVolume6Faces.h TrackPropagation/NavGeometry/interface/NavVolumeSide.h TrackPropagation/NavGeometry/interface/ShiftingMagneticFieldProvider.h TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h TrackPropagation/NavGeometry/src/LinearEquation3.h TrackPropagation/NavGeometry/src/LinearSearchNavSurfaceImpl.cc TrackPropagation/NavGeometry/src/NavCone.cc TrackPropagation/NavGeometry/src/NavCylinder.cc TrackPropagation/NavGeometry/src/NavPlane.cc TrackPropagation/NavGeometry/src/NavSurfaceBuilder.cc TrackPropagation/NavGeometry/src/NavVolume6Faces.cc TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc TrackPropagation/NavGeometry/src/ThreePlaneCrossing.cc TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h TrackPropagation/NavGeometry/test/DoubleVolumeTest.cpp TrackPropagation/NavGeometry/test/PropagatorTestInTrackerVolume.cpp TrackPropagation/NavGeometry/test/SingleVolumeTest.cpp TrackPropagation/NavGeometry/test/plot.C TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.cc TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.cc TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.cc TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.cc TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.cc TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h TrackPropagation/NavPropagator/BuildFile TrackPropagation/NavPropagator/interface/NavPropagator.h TrackPropagation/NavPropagator/src/NavPropagator.cc TrackPropagation/NavPropagator/test/TrackerToMuonTest.cc TrackPropagation/RungeKutta/BuildFile TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h TrackPropagation/RungeKutta/interface/CartesianState.h TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h TrackPropagation/RungeKutta/interface/CurvilinearState.h TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h TrackPropagation/RungeKutta/interface/CylindricalState.h TrackPropagation/RungeKutta/interface/FrameChanger.h TrackPropagation/RungeKutta/interface/PathToPlane2Order.h TrackPropagation/RungeKutta/interface/RK4OneStep.h TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h TrackPropagation/RungeKutta/interface/RK4PreciseStep.h TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h TrackPropagation/RungeKutta/interface/RKCartesianDistance.h TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h TrackPropagation/RungeKutta/interface/RKDerivative.h TrackPropagation/RungeKutta/interface/RKDistance.h TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h TrackPropagation/RungeKutta/interface/RKPropagatorInR.h TrackPropagation/RungeKutta/interface/RKPropagatorInS.h TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h TrackPropagation/RungeKutta/interface/RKSmallVector.h TrackPropagation/RungeKutta/interface/RKSolver.h TrackPropagation/RungeKutta/interface/RKSolverTempl.h TrackPropagation/RungeKutta/interface/VectorDoublet.h TrackPropagation/RungeKutta/src/CartesianLorentzForce.cc TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc TrackPropagation/RungeKutta/src/PathToPlane2Order.cc TrackPropagation/RungeKutta/src/RK4OneStep.cc TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc TrackPropagation/RungeKutta/src/RK4PreciseStep.cc TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc TrackPropagation/RungeKutta/src/RKPropagatorInR.cc TrackPropagation/RungeKutta/src/RKPropagatorInS.cc TrackPropagation/RungeKutta/src/RKPropagatorInZ.cc TrackingTools/IPTools/doc/html/index.html TrackingTools/IPTools/doc/html/overview.html TrackingTools/RecoGeometry/doc/html/index.html TrackingTools/RecoGeometry/doc/html/overview.html TrackingTools/RoadSearchEventFilter/doc/html/index.html TrackingTools/RoadSearchEventFilter/doc/html/overview.html TrackingTools/TrackAssociator/tools/classdiagram TrackingTools/TrajectoryFiltering/doc/html/index.html TrackingTools/TrajectoryFiltering/doc/html/overview.html Utilities/General/interface/RedirectedSB.h Utilities/XrdAdaptor/doc/html/index.html Utilities/XrdAdaptor/doc/html/overview.html Validation/CSCRecHits/doc/html/index.html Validation/CSCRecHits/doc/html/overview.html Validation/Configuration/doc/html/index.html Validation/Configuration/doc/html/overview.html Validation/EcalTriggerPrimitives/doc/html/index.html Validation/EcalTriggerPrimitives/doc/html/overview.html Validation/Generator/doc/html/index.html Validation/Generator/doc/html/overview.html Validation/GlobalRecHits/doc/html/index.html Validation/GlobalRecHits/doc/html/overview.html Validation/HcalDigis/src/HcalSubdetDigiMonitor.cc Validation/HcalDigis/src/HcalSubdetDigiMonitor.h Validation/HcalDigis/src/SealModule.cc Validation/MuonIdentification/doc/html/index.html Validation/MuonIdentification/doc/html/overview.html Validation/MuonIsolation/doc/html/index.html Validation/MuonIsolation/doc/html/overview.html Validation/MuonRPCGeometry/doc/html/index.html Validation/MuonRPCGeometry/doc/html/overview.html Validation/RPCRecHits/doc/html/index.html Validation/RPCRecHits/doc/html/overview.html Validation/RecoParticleFlow/doc/html/index.html Validation/RecoParticleFlow/doc/html/overview.html Validation/TrackerConfiguration/doc/html/index.html Validation/TrackerConfiguration/doc/html/overview.html Validation/TrackingMCTruth/doc/html/index.html Validation/TrackingMCTruth/doc/html/overview.html --- Alignment/CocoaApplication/bin/cocoa.cpp | 8 +- Alignment/CocoaApplication/bin/simple2D.meas | 200 +- Alignment/CocoaApplication/bin/simple2D.txt | 4 +- .../bin/simple2DWithMirror.meas | 900 -- .../bin/simple2DWithMirror.txt | 131 - .../interface/CocoaAnalyzer.h | 89 - .../CocoaApplication/src/CocoaAnalyzer.cc | 733 -- Alignment/CocoaApplication/src/SealModule.cc | 4 - .../CocoaApplication/test/configuration.xml | 8 - .../interface/CocoaMaterialElementary.h | 6 +- .../src/CocoaMaterialElementary.cc | 5 +- Alignment/CocoaFit/src/Fit.cc | 8 +- .../CocoaModel/interface/OpticalObjectMgr.h | 3 +- Alignment/CocoaModel/src/OpticalObjectMgr.cc | 24 +- Alignment/CocoaUtilities/interface/ALIUtils.h | 7 +- Alignment/CocoaUtilities/src/ALIUtils.cc | 291 +- .../CocoaUtilities/src/GlobalOptionMgr.cc | 11 +- Alignment/CommonAlignmentAlgorithm/BuildFile | 2 - .../HIPAlignmentAlgorithm/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - Alignment/LaserAlignment/doc/html/index.html | 11 - .../LaserAlignment/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - Alignment/LaserDQM/doc/html/index.html | 11 - Alignment/LaserDQM/doc/html/overview.html | 12 - .../interface/MillePedeAlignmentAlgorithm.h | 11 +- .../interface/MillePedeVariables.h | 65 - .../interface/MillePedeVariablesIORoot.h | 79 - .../src/MillePedeAlignmentAlgorithm.cc | 95 +- .../src/MillePedeVariables.cc | 42 - .../src/MillePedeVariablesIORoot.cc | 163 - .../src/PedeReader.cc | 195 - .../src/PedeReader.h | 49 - .../src/PedeSteerer.cc | 67 +- .../src/PedeSteerer.h | 27 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../OfflineValidation/doc/html/index.html | 11 - .../OfflineValidation/doc/html/overview.html | 12 - .../interface/OptAlignDBAnalyzer.h | 29 - .../interface/OptAlignDataConverter.h | 22 - .../interface/OpticalAlignInfoRcd.h | 11 - .../OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc | 23 - .../src/OptAlignDataConverter.cc | 166 - .../OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc | 6 - Alignment/OptAlignCSV2DB/src/SealModule.cc | 7 - .../test/opt_align_simple2DWithMirror.csv | 4 - .../ReferenceTrajectories/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - Alignment/SurveyAnalysis/doc/html/index.html | 11 - .../SurveyAnalysis/doc/html/overview.html | 12 - Alignment/TrackHitFilter/doc/html/index.html | 11 - .../TrackHitFilter/doc/html/overview.html | 12 - Alignment/TwoBodyDecay/doc/html/index.html | 11 - Alignment/TwoBodyDecay/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../TrackInfoProducer/doc/html/index.html | 11 - .../TrackInfoProducer/doc/html/overview.html | 12 - AnalysisDataFormats/EWK/doc/html/index.html | 11 - .../EWK/doc/html/overview.html | 12 - .../Egamma/doc/html/index.html | 11 - .../Egamma/doc/html/overview.html | 12 - .../SUSYBSMObjects/doc/html/index.html | 11 - .../SUSYBSMObjects/doc/html/overview.html | 12 - .../SiStripClusterInfo/doc/html/index.html | 11 - .../SiStripClusterInfo/doc/html/overview.html | 12 - .../TopObjects/doc/html/index.html | 11 - .../TopObjects/doc/html/overview.html | 12 - .../TrackInfo/doc/html/index.html | 11 - .../TrackInfo/doc/html/overview.html | 12 - .../SiStripDetectorPerformance/BuildFile | 52 - .../interface/AnalyzeTracksClusters.h | 127 - .../interface/ClusterAnalysis.h | 133 - .../interface/ClusterAnalysisFilter.h | 46 - .../interface/MTCCNtupleMaker.h | 287 - .../interface/TrackLocalAngle.h | 63 - .../interface/TrackLocalAngleNew.h | 86 - .../src/AnalyzeTracksClusters.cc | 331 - .../src/ClusterAnalysis.cc | 820 -- .../src/ClusterAnalysisFilter.cc | 152 - .../src/MTCCNtupleMaker.cc | 2081 ----- .../src/SealModules.cc | 15 - .../src/TrackLocalAngle.cc | 344 - .../src/TrackLocalAngleNew.cc | 320 - .../test/ClusterAnalysis.sh | 157 - .../test/NoiseStudy/BadStrips.C | 182 - .../test/NoiseStudy/NoiseEvolution.C | 406 - .../test/NoiseStudy/NoiseEvolution.sh | 9 - .../test/NoiseStudy/PedestalEvolution.C | 406 - .../test/NoiseStudy/README | 56 - .../SiStripDetectorPerformance/test/langaus.C | 291 - .../test/readme.txt | 36 - .../interface/CaloMiscalibTools.h | 7 +- .../interface/EcalRecHitRecalib.h | 9 +- .../interface/HcalRecHitRecalib.h | 8 +- .../CaloMiscalibTools/src/SealModule.cc | 6 +- .../CastorCalib/doc/html/index.html | 11 - .../CastorCalib/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../EcalCorrectionModules/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../EcalLaserAnalyzer/doc/html/index.html | 11 - .../EcalLaserAnalyzer/doc/html/overview.html | 12 - .../EcalLaserCorrection/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../EcalLaserSorting/doc/html/index.html | 11 - .../EcalLaserSorting/doc/html/overview.html | 12 - .../EcalSRTools/doc/html/index.html | 11 - .../EcalSRTools/doc/html/overview.html | 12 - .../EcalTPGTools/doc/html/index.html | 11 - .../EcalTPGTools/doc/html/overview.html | 12 - .../HcalTPGIO/doc/html/index.html | 11 - .../HcalTPGIO/doc/html/overview.html | 12 - .../CastorObjects/doc/html/index.html | 11 - .../CastorObjects/doc/html/overview.html | 12 - .../SiPixelObjects/doc/html/index.html | 11 - .../SiPixelObjects/doc/html/overview.html | 12 - CalibMuon/CSCCalibration/BuildFile | 38 - CalibMuon/CSCCalibration/doc/html/index.html | 11 - .../CSCCalibration/doc/html/overview.html | 12 - .../CSCCalibration/interface/AutoCorrMat.h | 86 - .../interface/CSCAFEBAnalyzer.h | 22 - .../interface/CSCAFEBThrAnalysis.h | 69 - .../interface/CSCAFEBdacAnalyzer.h | 98 - .../interface/CSCCompThreshAnalyzer.h | 71 - .../interface/CSCCrossTalkAnalyzer.h | 417 - .../CSCCalibration/interface/CSCFitAFEBThr.h | 42 - .../interface/CSCGainAnalyzer.h | 172 - .../interface/CSCNoiseMatrixAnalyzer.h | 172 - .../interface/CSCThrTurnOnFcn.h | 53 - .../CSCCalibration/interface/CSCToAFEB.h | 135 - CalibMuon/CSCCalibration/interface/CSCxTalk.h | 162 - CalibMuon/CSCCalibration/interface/condbc.h | 75 - CalibMuon/CSCCalibration/interface/condbon.h | 48 - CalibMuon/CSCCalibration/interface/cscmap.h | 35 - .../CSCCalibration/src/CSCAFEBAnalyzer.cc | 40 - .../CSCCalibration/src/CSCAFEBThrAnalysis.cc | 396 - .../CSCCalibration/src/CSCAFEBdacAnalyzer.cc | 119 - .../src/CSCCompThreshAnalyzer.cc | 165 - .../src/CSCCrossTalkAnalyzer.cc | 232 - CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc | 142 - .../CSCCalibration/src/CSCGainAnalyzer.cc | 159 - .../src/CSCNoiseMatrixAnalyzer.cc | 132 - .../CSCCalibration/src/CSCThrTurnOnFcn.cc | 37 - CalibMuon/CSCCalibration/src/CSCToAFEB.cc | 52 - CalibMuon/CSCCalibration/src/SealModule.cc | 16 - CalibMuon/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - CalibMuon/DTDigiSync/doc/html/index.html | 11 - CalibMuon/DTDigiSync/doc/html/overview.html | 12 - CalibMuon/RPCCalibration/doc/html/index.html | 11 - .../RPCCalibration/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../SiPixelConnectivity/src/module.cc | 2 +- .../SiPixelESProducers/doc/html/index.html | 11 - .../SiPixelESProducers/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - CalibTracker/SiPixelTools/doc/html/index.html | 11 - .../SiPixelTools/doc/html/overview.html | 12 - .../src/ApvAnalysisFactory.cc | 3 +- .../SiStripCommon/doc/html/index.html | 11 - .../SiStripCommon/doc/html/overview.html | 12 - CalibTracker/SiStripDCS/doc/html/index.html | 11 - .../SiStripDCS/doc/html/overview.html | 12 - .../SiStripESProducers/doc/html/index.html | 11 - .../SiStripESProducers/doc/html/overview.html | 12 - .../SiStripHitEfficiency/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - CalibTracker/SiStripLorentzAngle/BuildFile | 12 - .../interface/SiStripLorentzAngle.h | 244 - .../interface/TrackLocalAngle.h | 67 - .../SiStripLorentzAngle/src/SealModules.cc | 8 - .../src/SiStripLorentzAngle.cc | 1580 ---- .../src/TrackLocalAngle.cc | 300 - .../SiStripQuality/doc/html/index.html | 11 - .../SiStripQuality/doc/html/overview.html | 12 - .../interface/AlCaElectronsProducer.h | 7 +- .../interface/AlCaPhiSymRecHitsProducer.h | 9 +- .../EcalAlCaRecoProducers/src/SealModule.cc | 1 - .../HcalConnectivity/doc/html/index.html | 11 - .../HcalConnectivity/doc/html/overview.html | 12 - .../HcalIsolatedTrackReco/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../IsolatedParticles/doc/html/index.html | 11 - .../IsolatedParticles/doc/html/overview.html | 12 - .../TkAlCaRecoProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - CaloOnlineTools/EcalTools/doc/html/index.html | 11 - .../EcalTools/doc/html/overview.html | 12 - .../HcalOnlineDb/doc/html/index.html | 11 - .../HcalOnlineDb/doc/html/overview.html | 12 - CommonTools/CandAlgos/doc/html/index.html | 11 - CommonTools/CandAlgos/doc/html/overview.html | 12 - CommonTools/CandUtils/doc/html/index.html | 11 - CommonTools/CandUtils/doc/html/overview.html | 12 - .../ConditionDBWriter/doc/html/index.html | 11 - .../ConditionDBWriter/doc/html/overview.html | 12 - CommonTools/RecoAlgos/doc/html/index.html | 11 - CommonTools/RecoAlgos/doc/html/overview.html | 12 - CommonTools/RecoUtils/doc/html/index.html | 11 - CommonTools/RecoUtils/doc/html/overview.html | 12 - .../TrackerMap/interface/VisTrackerMapBox.h | 2 + .../TrackerMap/src/VisTrackerMapBox.cc | 3 + CommonTools/UtilAlgos/doc/html/index.html | 11 - CommonTools/UtilAlgos/doc/html/overview.html | 12 - CommonTools/Utils/doc/html/index.html | 11 - CommonTools/Utils/doc/html/overview.html | 12 - CondCore/BTauPlugins/doc/html/index.html | 11 - CondCore/BTauPlugins/doc/html/overview.html | 12 - CondCore/BeamSpotPlugins/doc/html/index.html | 11 - .../BeamSpotPlugins/doc/html/overview.html | 12 - CondCore/CastorPlugins/doc/html/index.html | 11 - CondCore/CastorPlugins/doc/html/overview.html | 12 - CondCore/DBCommon/BuildFile | 4 +- CondCore/DQMPlugins/doc/html/index.html | 11 - CondCore/DQMPlugins/doc/html/overview.html | 12 - CondCore/ESPlugins/doc/html/index.html | 11 - CondCore/ESPlugins/doc/html/overview.html | 12 - CondCore/EgammaPlugins/doc/html/index.html | 11 - CondCore/EgammaPlugins/doc/html/overview.html | 12 - CondCore/GeometryPlugins/doc/html/index.html | 11 - .../GeometryPlugins/doc/html/overview.html | 12 - CondCore/HIPlugins/doc/html/index.html | 11 - CondCore/HIPlugins/doc/html/overview.html | 12 - CondCore/L1TPlugins/doc/html/index.html | 11 - CondCore/L1TPlugins/doc/html/overview.html | 12 - .../LuminosityPlugins/doc/html/index.html | 11 - .../LuminosityPlugins/doc/html/overview.html | 12 - CondCore/MetaDataService/interface/MetaData.h | 4 +- CondCore/MetaDataService/src/MetaData.cc | 76 +- CondCore/ORA/doc/html/index.html | 11 - CondCore/ORA/doc/html/overview.html | 12 - .../PhysicsToolsPlugins/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - CondCore/PopCon/doc/html/index.html | 11 - CondCore/PopCon/doc/html/overview.html | 12 - CondCore/RecoMuonPlugins/doc/html/index.html | 11 - .../RecoMuonPlugins/doc/html/overview.html | 12 - CondCore/RunInfoPlugins/doc/html/index.html | 11 - .../RunInfoPlugins/doc/html/overview.html | 12 - CondCore/SiPixelPlugins/src/plugin.cc | 3 - CondCore/TagCollection/doc/html/index.html | 11 - CondCore/TagCollection/doc/html/overview.html | 12 - CondCore/Utilities/doc/html/index.html | 11 - CondCore/Utilities/doc/html/overview.html | 12 - .../AlignmentRecord/doc/html/index.html | 11 - .../AlignmentRecord/doc/html/overview.html | 12 - CondFormats/BTauObjects/doc/html/index.html | 11 - .../BTauObjects/doc/html/overview.html | 12 - .../BeamSpotObjects/doc/html/index.html | 11 - .../BeamSpotObjects/doc/html/overview.html | 12 - .../CSCObjects/interface/CSCReadoutMapping.h | 11 - .../CSCObjects/src/CSCReadoutMapping.cc | 13 - CondFormats/CastorObjects/doc/html/index.html | 11 - .../CastorObjects/doc/html/overview.html | 12 - CondFormats/Common/doc/html/index.html | 11 - CondFormats/Common/doc/html/overview.html | 12 - CondFormats/DQMObjects/doc/html/index.html | 11 - CondFormats/DQMObjects/doc/html/overview.html | 12 - CondFormats/ESObjects/doc/html/index.html | 11 - CondFormats/ESObjects/doc/html/overview.html | 12 - .../EcalCorrections/doc/html/index.html | 11 - .../EcalCorrections/doc/html/overview.html | 12 - CondFormats/EgammaObjects/doc/html/index.html | 11 - .../EgammaObjects/doc/html/overview.html | 12 - .../GeometryObjects/doc/html/index.html | 11 - .../GeometryObjects/doc/html/overview.html | 12 - CondFormats/HIObjects/doc/html/index.html | 11 - CondFormats/HIObjects/doc/html/overview.html | 12 - CondFormats/HcalMapping/TagLog | 24 + CondFormats/JetMETObjects/doc/html/index.html | 11 - .../JetMETObjects/doc/html/overview.html | 12 - CondFormats/L1TObjects/doc/html/index.html | 11 - CondFormats/L1TObjects/doc/html/overview.html | 12 - CondFormats/Luminosity/doc/html/index.html | 11 - CondFormats/Luminosity/doc/html/overview.html | 12 - .../PhysicsToolsObjects/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../RecoMuonObjects/doc/html/index.html | 11 - .../RecoMuonObjects/doc/html/overview.html | 12 - CondFormats/RunInfo/doc/html/index.html | 11 - CondFormats/RunInfo/doc/html/overview.html | 12 - .../SiStripObjects/interface/SiStripApvGain.h | 37 + .../SiStripObjects/src/SiStripApvGain.cc | 65 + .../src/T_EventSetup_SiStripApvGain.cc | 7 + CondFormats/SiStripObjects/src/classes.h | 11 +- .../SiStripObjects/src/classes_def.xml | 2 + CondTools/DQM/doc/html/index.html | 11 - CondTools/DQM/doc/html/overview.html | 12 - CondTools/Geometry/doc/html/index.html | 11 - CondTools/Geometry/doc/html/overview.html | 12 - CondTools/Hcal/BuildFile | 4 +- CondTools/L1Trigger/doc/html/index.html | 11 - CondTools/L1Trigger/doc/html/overview.html | 12 - CondTools/Luminosity/doc/html/index.html | 11 - CondTools/Luminosity/doc/html/overview.html | 12 - .../sql/EcalPedestals_payload_o2o-H2.sql | 59 +- CondTools/RunInfo/doc/html/index.html | 11 - CondTools/RunInfo/doc/html/overview.html | 12 - .../scripts/SiStripOfflinePedNoiseToDb.sh | 9 +- .../template_SiStripOfflinePedNoiseToDb.cfg | 11 +- .../EventContent/doc/EventContent.doc | 62 + Configuration/GlobalRuns/doc/html/index.html | 11 - .../GlobalRuns/doc/html/overview.html | 12 - Configuration/SVSuite/data/SVSuite.xml | 5 +- Configuration/SVSuite/data/runall.sh | 73 + Configuration/SiStripDAQ/doc/html/index.html | 11 - .../SiStripDAQ/doc/html/overview.html | 12 - Configuration/Skimming/doc/html/index.html | 11 - Configuration/Skimming/doc/html/overview.html | 12 - .../doc/{Reconstruction.doc => Sequences.doc} | 18 +- DPGAnalysis/SiStripTools/doc/html/index.html | 11 - .../SiStripTools/doc/html/overview.html | 12 - DPGAnalysis/Skims/doc/html/index.html | 11 - DPGAnalysis/Skims/doc/html/overview.html | 12 - DQM/BeamMonitor/doc/html/index.html | 11 - DQM/BeamMonitor/doc/html/overview.html | 12 - DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc | 6 +- DQM/CSCMonitorModule/src/CSCStripCluster.cc | 4 +- .../src/CSCStripClusterFitData.cc | 4 +- DQM/CSCMonitorModule/src/ClusterLocalMax.cc | 4 +- DQM/CastorMonitor/doc/html/index.html | 11 - DQM/CastorMonitor/doc/html/overview.html | 12 - DQM/DTMonitorClient/BuildFile | 34 - DQM/DTMonitorClient/doc/html/index.html | 11 - DQM/DTMonitorClient/doc/html/overview.html | 12 - DQM/DTMonitorClient/interface/DTDQMClient.h | 87 - DQM/DTMonitorClient/interface/DTNoiseClient.h | 74 - .../interface/DTWebInterface.h | 46 - DQM/DTMonitorClient/src/DTDQMClient.cc | 128 - DQM/DTMonitorClient/src/DTNoiseClient.cc | 269 - DQM/DTMonitorClient/src/DTWebInterface.cc | 105 - DQM/DTMonitorClient/test/QualityTests.xml | 17 - .../interface/EcalBarrelMonitorClient.h | 7 +- .../src/EBBeamCaloClient.cc | 12 +- .../src/EBIntegrityClient.cc | 22 +- .../src/EBLaserClient.cc | 32 +- .../src/EBPedestalClient.cc | 14 +- .../src/EBPedestalOnlineClient.cc | 11 +- .../src/EBTestPulseClient.cc | 14 +- .../src/EBTriggerTowerClient.cc | 8 +- .../src/EcalBarrelMonitorClient.cc | 63 +- DQM/EcalBarrelMonitorDbModule/BuildFile | 4 +- .../src/MonitorElementsDb.cc | 13 +- .../test/data/tb-occupancy.xml | 222 +- .../test/data/tb-temperature.xml | 46 - DQM/EcalBarrelMonitorTasks/BuildFile | 4 - .../interface/EBClusterTask.h | 96 - .../src/EBClusterTask.cc | 214 - .../src/EBPedestalTask.cc | 5 +- .../src/EBTriggerTowerTask.cc | 14 +- DQM/EcalBarrelMonitorTasks/src/SealModule.cc | 3 - DQM/EcalCommon/doc/html/index.html | 11 - DQM/EcalCommon/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/HLTEvF/BuildFile | 12 - DQM/HLTEvF/interface/HltAnalyzer.h | 76 - DQM/HLTEvF/src/HltAnalyzer.cc | 174 - DQM/HLTEvF/src/SealModule.cc | 9 - DQM/HLXMonitor/doc/html/index.html | 11 - DQM/HLXMonitor/doc/html/overview.html | 12 - .../interface/HcalLEDClient.h | 2 +- .../interface/HcalPedestalClient.h | 2 +- DQM/HcalMonitorClient/src/HcalLEDClient.cc | 1 - .../src/HcalPedestalClient.cc | 3 +- DQM/HcalMonitorClient/src/SealModule.cc | 2 +- DQM/L1TMonitorClient/doc/html/index.html | 11 - DQM/L1TMonitorClient/doc/html/overview.html | 12 - DQM/Physics/doc/html/index.html | 11 - DQM/Physics/doc/html/overview.html | 12 - DQM/RCTMonitor/doc/html/index.html | 11 - DQM/RCTMonitor/doc/html/overview.html | 12 - .../interface/RPCMonitorEfficiency.h | 38 +- DQM/RPCMonitorDigi/interface/RPCMonitorSync.h | 121 - DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc | 10 +- DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc | 9 +- .../src/RPCMonitorEfficiency.cc | 727 +- DQM/RPCMonitorDigi/src/RPCMonitorSync.cc | 299 - DQM/RPCMonitorDigi/src/SealModule.cc | 2 - DQM/SiPixelCommon/doc/html/index.html | 11 - DQM/SiPixelCommon/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/SiPixelMonitorClient/BuildFile | 14 - DQM/SiPixelMonitorClient/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../interface/SiPixelActionExecutor.h | 44 - .../interface/SiPixelConfigParser.h | 41 - .../interface/SiPixelConfigWriter.h | 64 - .../interface/SiPixelInformationExtractor.h | 58 - .../interface/SiPixelQualityTester.h | 58 - .../interface/SiPixelUtility.h | 30 - .../interface/SiPixelWebClient.h | 72 - .../interface/SiPixelWebInterface.h | 54 - DQM/SiPixelMonitorClient/interface/TmModule.h | 40 - .../interface/TrackerMap.h | 237 - .../src/SiPixelActionExecutor.cc | 423 - .../src/SiPixelConfigParser.cc | 134 - .../src/SiPixelConfigWriter.cc | 81 - .../src/SiPixelInformationExtractor.cc | 341 - .../src/SiPixelQualityTester.cc | 154 - .../src/SiPixelUtility.cc | 67 - .../src/SiPixelWebClient.cc | 70 - .../src/SiPixelWebInterface.cc | 211 - DQM/SiPixelMonitorClient/src/TmModule.cc | 23 - DQM/SiPixelMonitorClient/src/TrackerMap.cc | 361 - DQM/SiPixelMonitorClient/test/.WebLib.js | 81 - DQM/SiPixelMonitorClient/test/.profile.xml | 36 - DQM/SiPixelMonitorClient/test/sendCmdToApp.pl | 36 - .../test/sipixel_monitorelement_config.xml | 13 - .../test/sipixel_qualitytest_config.xml | 36 - DQM/SiPixelMonitorClient/test/style.css | 9 - DQM/SiPixelMonitorCluster/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/SiPixelMonitorDigi/BuildFile | 20 - .../doc/SiPixelMonitorDigi.doc | 42 - DQM/SiPixelMonitorDigi/doc/html/index.html | 11 - DQM/SiPixelMonitorDigi/doc/html/overview.html | 12 - .../interface/SiPixelDigiModule.h | 50 - .../interface/SiPixelDigiSource.h | 70 - .../src/SiPixelDigiModule.cc | 96 - .../src/SiPixelDigiSource.cc | 192 - DQM/SiPixelMonitorRawData/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/SiPixelMonitorRecHit/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/SiPixelMonitorTrack/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../interface/MeanAndStdDev.h | 5 + .../src/MeanAndStdDev.cc | 5 + .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../src/SiStripHistoricInfoClient.cc | 68 +- .../interface/SiStripActionExecutor.h | 2 + .../interface/SiStripUtility.h | 9 +- .../interface/SiStripWebInterface.h | 8 +- .../interface/TrackerMapCreator.h | 7 +- .../src/SiStripActionExecutor.cc | 20 +- DQM/SiStripMonitorClient/src/SiStripClient.cc | 2 +- .../src/SiStripInformationExtractor.cc | 42 +- .../src/SiStripUtility.cc | 57 +- .../src/SiStripWebInterface.cc | 46 +- .../src/TrackerMapCreator.cc | 95 +- DQM/SiStripMonitorClient/test/.trackermap.txt | 402 + DQM/SiStripMonitorClient/test/Online.html | 35 +- DQM/SiStripMonitorClient/test/StartAll | 45 +- DQM/SiStripMonitorClient/test/StopAll | 7 + .../test/embedded_svg.html | 2 +- DQM/SiStripMonitorClient/test/setup.sh | 2 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../test/PedsMonWithDB.csh | 6 +- DQM/SiStripMonitorTrack/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DQM/TrackerCommon/doc/html/index.html | 11 - DQM/TrackerCommon/doc/html/overview.html | 12 - DQM/TrackingMonitor/doc/html/index.html | 11 - DQM/TrackingMonitor/doc/html/overview.html | 12 - DQM/TrigXMonitor/doc/html/index.html | 11 - DQM/TrigXMonitor/doc/html/overview.html | 12 - DQM/TrigXMonitorClient/doc/html/index.html | 11 - DQM/TrigXMonitorClient/doc/html/overview.html | 12 - DQMOffline/Alignment/doc/html/index.html | 11 - DQMOffline/Alignment/doc/html/overview.html | 12 - DQMOffline/CalibCalo/doc/html/index.html | 11 - DQMOffline/CalibCalo/doc/html/overview.html | 12 - DQMOffline/CalibMuon/doc/html/index.html | 11 - DQMOffline/CalibMuon/doc/html/overview.html | 12 - DQMOffline/CalibTracker/doc/html/index.html | 11 - .../CalibTracker/doc/html/overview.html | 12 - DQMOffline/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - DQMOffline/EGamma/doc/html/index.html | 11 - DQMOffline/EGamma/doc/html/overview.html | 12 - DQMOffline/Ecal/doc/html/index.html | 11 - DQMOffline/Ecal/doc/html/overview.html | 12 - DQMOffline/JetMET/doc/html/index.html | 11 - DQMOffline/JetMET/doc/html/overview.html | 12 - DQMOffline/Muon/doc/html/index.html | 11 - DQMOffline/Muon/doc/html/overview.html | 12 - DQMOffline/PFTau/doc/html/index.html | 11 - DQMOffline/PFTau/doc/html/overview.html | 12 - DQMOffline/RecoB/doc/html/index.html | 11 - DQMOffline/RecoB/doc/html/overview.html | 12 - DQMOffline/Trigger/doc/html/index.html | 11 - DQMOffline/Trigger/doc/html/overview.html | 12 - .../ClientConfig/src/QTestConfigure.cc | 17 +- .../ClientConfig/src/QTestParameterNames.cc | 16 +- DQMServices/Diagnostic/doc/html/index.html | 11 - DQMServices/Diagnostic/doc/html/overview.html | 12 - DataFormats/Alignment/doc/html/index.html | 11 - DataFormats/Alignment/doc/html/overview.html | 12 - DataFormats/BeamSpot/doc/html/index.html | 11 - DataFormats/BeamSpot/doc/html/overview.html | 12 - DataFormats/CLHEP/doc/html/index.html | 11 - DataFormats/CLHEP/doc/html/overview.html | 12 - DataFormats/CSCDigi/interface/CSCALCTDigi.h | 6 +- .../CSCDigi/interface/CSCCFEBStatusDigi.h | 5 +- DataFormats/CSCDigi/interface/CSCCLCTDigi.h | 6 +- .../CSCDigi/interface/CSCComparatorDigi.h | 56 +- .../CSCDigi/interface/CSCCorrelatedLCTDigi.h | 5 +- .../interface/CSCDCCFormatStatusDigi.h | 5 +- DataFormats/CSCDigi/interface/CSCRPCDigi.h | 6 +- DataFormats/CSCDigi/interface/CSCStripDigi.h | 5 +- DataFormats/CSCDigi/interface/CSCWireDigi.h | 2 +- DataFormats/CSCDigi/src/CSCComparatorDigi.cc | 87 +- DataFormats/CSCDigi/src/CSCWireDigi.cc | 15 +- DataFormats/CSCDigi/test/testCSCDigis.cpp | 78 +- DataFormats/CSCRecHit/interface/CSCSegment.h | 6 +- DataFormats/CSCRecHit/interface/CSCStripHit.h | 66 - .../interface/CSCStripHitCollection.h | 21 - DataFormats/CSCRecHit/interface/CSCWireHit.h | 50 - .../interface/CSCWireHitCollection.h | 20 - DataFormats/CSCRecHit/src/CSCSegment.cc | 12 +- DataFormats/CSCRecHit/src/CSCStripHit.cc | 23 - DataFormats/CSCRecHit/src/CSCWireHit.cc | 18 - DataFormats/CSCRecHit/src/classes.h | 19 +- DataFormats/CSCRecHit/src/classes_def.xml | 19 +- DataFormats/CaloRecHit/TagLog | 0 DataFormats/CastorReco/doc/html/index.html | 11 - DataFormats/CastorReco/doc/html/overview.html | 12 - DataFormats/Common/interface/AssociationMap.h | 4 +- DataFormats/Common/src/classes_def.xml | 1 + .../EgammaTrackReco/doc/html/index.html | 11 - .../EgammaTrackReco/doc/html/overview.html | 12 - DataFormats/FP420Cluster/doc/html/index.html | 11 - .../FP420Cluster/doc/html/overview.html | 12 - DataFormats/FP420Digi/doc/html/index.html | 11 - DataFormats/FP420Digi/doc/html/overview.html | 12 - DataFormats/FWLite/doc/html/index.html | 11 - DataFormats/FWLite/doc/html/overview.html | 12 - .../GeometryCommonDetAlgo/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../GeometrySurface/doc/html/index.html | 11 - .../GeometrySurface/doc/html/overview.html | 12 - .../GeometryVector/doc/html/index.html | 11 - .../GeometryVector/doc/html/overview.html | 12 - DataFormats/GsfTrackReco/doc/html/index.html | 11 - .../GsfTrackReco/doc/html/overview.html | 12 - .../HcalCalibObjects/doc/html/index.html | 11 - .../HcalCalibObjects/doc/html/overview.html | 12 - .../HcalIsolatedTrack/doc/html/index.html | 11 - .../HcalIsolatedTrack/doc/html/overview.html | 12 - DataFormats/HeavyIonEvent/doc/html/index.html | 11 - .../HeavyIonEvent/doc/html/overview.html | 12 - .../interface/GenParticleCandidate.h | 6 +- .../src/GenParticleCandidate.cc | 4 +- .../HepMCCandidate/src/classes_def.xml | 4 +- DataFormats/Histograms/doc/html/index.html | 11 - DataFormats/Histograms/doc/html/overview.html | 12 - DataFormats/JetReco/interface/BasicJet.h | 4 +- DataFormats/JetReco/interface/CaloJet.h | 4 +- DataFormats/JetReco/interface/GenJet.h | 4 +- DataFormats/JetReco/interface/Jet.h | 4 +- .../interface/L1CaloRegionDetId.h | 18 +- .../L1GlobalCaloTrigger/src/L1GctEmCand.cc | 2 +- .../L1GlobalCaloTrigger/src/L1GctJetCand.cc | 2 +- .../LaserAlignment/doc/html/index.html | 11 - .../LaserAlignment/doc/html/overview.html | 12 - DataFormats/Luminosity/doc/html/index.html | 11 - DataFormats/Luminosity/doc/html/overview.html | 12 - DataFormats/Math/src/classes.h | 188 +- DataFormats/Math/src/classes_def.xml | 10 + DataFormats/MuonDetId/interface/CSCDetId.h | 7 +- DataFormats/MuonSeed/doc/html/index.html | 11 - DataFormats/MuonSeed/doc/html/overview.html | 12 - .../ParticleFlowCandidate/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DataFormats/ParticleFlowReco/src/PFRecHit.cc | 7 + DataFormats/PatCandidates/doc/html/index.html | 11 - .../PatCandidates/doc/html/overview.html | 12 - .../PixelMatchTrackReco/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - DataFormats/Provenance/doc/html/index.html | 11 - DataFormats/Provenance/doc/html/overview.html | 12 - DataFormats/RecoCandidate/BuildFile | 4 - .../interface/CaloRecHitCandidate.h | 46 - .../RecoCandidate/src/CaloRecHitCandidate.cc | 18 - DataFormats/RecoCandidate/src/classes.h | 8 +- DataFormats/RecoCandidate/src/classes_def.xml | 17 +- .../RoadSearchSeed/doc/html/index.html | 11 - .../RoadSearchSeed/doc/html/overview.html | 12 - DataFormats/Scalers/doc/html/index.html | 11 - DataFormats/Scalers/doc/html/overview.html | 12 - .../SiPixelRawData/doc/html/index.html | 11 - .../SiPixelRawData/doc/html/overview.html | 12 - .../SiPixelRawData/doc/tex/RawDataFormat.tex | 66 - .../StdDictionaries/doc/html/index.html | 11 - .../StdDictionaries/doc/html/overview.html | 12 - DataFormats/TauReco/doc/html/index.html | 11 - DataFormats/TauReco/doc/html/overview.html | 12 - DataFormats/TrackingSeed/BuildFile | 7 - DataFormats/TrackingSeed/doc/html/index.html | 11 - .../TrackingSeed/doc/html/overview.html | 12 - .../TrackingSeed/interface/TrackingSeed.h | 49 - .../interface/TrackingSeedCollection.h | 25 - .../interface/TrackingSeedCollectionfwd.h | 19 - .../TrackingSeed/interface/TrackingSeedfwd.h | 19 - DataFormats/TrackingSeed/src/classes.h | 14 - DataFormats/TrackingSeed/src/classes_def.xml | 5 - DataFormats/V0Candidate/doc/html/index.html | 11 - .../V0Candidate/doc/html/overview.html | 12 - DataFormats/VZero/BuildFile | 2 + DataFormats/VertexReco/interface/Vertex.h | 32 +- DataFormats/VertexReco/src/Vertex.cc | 47 +- DataFormats/VertexReco/src/classes.h | 6 +- DataFormats/VertexReco/src/classes_def.xml | 1 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../Core/interface/DDComparator.h | 14 +- DetectorDescription/Core/interface/DDD.h | 2 +- .../Core/interface/DDExpandedNode.h | 14 +- DetectorDescription/OnlineDBLoader/TagLog | 7 + .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../Skimming/doc/html/index.html | 11 - .../Skimming/doc/html/overview.html | 12 - Documentation/CodingRules/TagLog | 6 + Documentation/PhysicsTools/Makefile | 20 - Documentation/PhysicsTools/TagLog | 0 Documentation/PhysicsTools/colornames.sty | 364 - Documentation/PhysicsTools/cpplistings.sty | 112 - .../PhysicsTools/doc/html/index.html | 11 - .../PhysicsTools/doc/html/overview.html | 12 - Documentation/PhysicsTools/document.tex | 806 -- Documentation/PhysicsTools/listings.cfg | 45 - Documentation/PhysicsTools/listings.sty | 2002 ---- Documentation/PhysicsTools/lstdoc.sty | 451 - Documentation/PhysicsTools/lstlang1.sty | 1226 --- Documentation/PhysicsTools/lstlang2.sty | 1532 --- Documentation/PhysicsTools/lstlang3.sty | 1006 -- Documentation/PhysicsTools/lstmisc.sty | 2086 ----- Documentation/PhysicsTools/lstpatch.sty | 246 - Documentation/PhysicsTools/mem10.clo | 109 - Documentation/PhysicsTools/mem11.clo | 109 - Documentation/PhysicsTools/mem12.clo | 109 - Documentation/PhysicsTools/mem14.clo | 109 - Documentation/PhysicsTools/mem17.clo | 110 - Documentation/PhysicsTools/mem9.clo | 109 - Documentation/PhysicsTools/memarticle.cls | 329 - Documentation/PhysicsTools/memhfixc.sty | 189 - Documentation/PhysicsTools/memoir.cls | 8278 ----------------- Documentation/PhysicsTools/mempatch.sty | 382 - Documentation/PhysicsTools/miktex.mk | 36 - Documentation/PhysicsTools/notes.rst | 262 - Documentation/PhysicsTools/pdfdraftcopy.sty | 198 - Documentation/PhysicsTools/rcs.sty | 1033 -- Documentation/PhysicsTools/tasks.rst | 456 - .../ReferenceManualPages/doc/AodData.doc | 34 +- .../ReferenceManualPages/doc/PhysicsTools.doc | 42 + .../doc/PixelRecoCollections.doi | 18 + .../ReferenceManualPages/doc/RecoData.doc | 10 +- .../doc/Reconstruction.doc | 23 +- .../doc/StripRecoCollections.doi | 24 + .../doc/TrackerPackages.doc | 9 +- Documentation/ReleaseNotes/TagLog | 0 .../ReleaseNotes/doc/ReleaseNotes010.txt | 214 - .../ReleaseNotes/doc/html/index.html | 11 - .../ReleaseNotes/doc/html/overview.html | 12 - Documentation/RepositoryAndReleases/TagLog | 0 EgammaAnalysis/CSA07Skims/doc/html/index.html | 11 - .../CSA07Skims/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../ElectronIDESSources/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../PhotonIDProducers/doc/html/index.html | 11 - .../PhotonIDProducers/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../Skimming/doc/html/index.html | 11 - .../Skimming/doc/html/overview.html | 12 - .../Utilities/doc/html/index.html | 11 - .../Utilities/doc/html/overview.html | 12 - ElectroWeakAnalysis/WENu/doc/html/index.html | 11 - .../WENu/doc/html/overview.html | 12 - ElectroWeakAnalysis/WMuNu/doc/html/index.html | 11 - .../WMuNu/doc/html/overview.html | 12 - ElectroWeakAnalysis/WReco/doc/html/index.html | 11 - .../WReco/doc/html/overview.html | 12 - ElectroWeakAnalysis/ZEE/doc/html/index.html | 11 - .../ZEE/doc/html/overview.html | 12 - ElectroWeakAnalysis/ZMuMu/doc/html/index.html | 11 - .../ZMuMu/doc/html/overview.html | 12 - ElectroWeakAnalysis/ZReco/doc/html/index.html | 11 - .../ZReco/doc/html/overview.html | 12 - .../CSCRawToDigi/interface/CSCAnodeData.h | 7 + .../CSCRawToDigi/interface/CSCDCCEventData.h | 5 +- .../CSCRawToDigi/interface/CSCDDUEventData.h | 7 +- .../CSCRawToDigi/interface/CSCEventData.h | 10 +- .../CSCRawToDigi/interface/CSCTMBData.h | 4 +- EventFilter/CSCRawToDigi/src/CSCAnodeData.cc | 27 - EventFilter/CSCRawToDigi/src/CSCCFEBData.cc | 11 - .../CSCRawToDigi/src/CSCDCCEventData.cc | 15 - .../CSCRawToDigi/src/CSCDDUEventData.cc | 15 - EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc | 152 - EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h | 39 - .../CSCRawToDigi/src/CSCDigiToRawModule.cc | 50 - .../CSCRawToDigi/src/CSCDigiToRawModule.h | 34 - EventFilter/CSCRawToDigi/src/CSCEventData.cc | 59 - EventFilter/CSCRawToDigi/src/CSCTMBData.cc | 13 - EventFilter/CSCRawToDigi/src/SealModule.cc | 2 - .../CastorRawToDigi/doc/html/index.html | 11 - .../CastorRawToDigi/doc/html/overview.html | 12 - EventFilter/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - EventFilter/Cosmics/doc/html/index.html | 11 - EventFilter/Cosmics/doc/html/overview.html | 12 - EventFilter/DTTFRawToDigi/doc/html/index.html | 11 - .../DTTFRawToDigi/doc/html/overview.html | 12 - EventFilter/ESDigiToRaw/doc/html/index.html | 11 - .../ESDigiToRaw/doc/html/overview.html | 12 - EventFilter/ESRawToDigi/doc/html/index.html | 11 - .../ESRawToDigi/doc/html/overview.html | 12 - EventFilter/EcalDigiToRaw/doc/html/index.html | 11 - .../EcalDigiToRaw/doc/html/overview.html | 12 - .../EcalRawToDigiDev/doc/html/index.html | 11 - .../EcalRawToDigiDev/doc/html/overview.html | 12 - EventFilter/FEDInterface/doc/html/index.html | 11 - .../FEDInterface/doc/html/overview.html | 12 - EventFilter/GctRawToDigi/BuildFile | 10 - EventFilter/GctRawToDigi/src/GctUnpacker.cc | 65 - EventFilter/GctRawToDigi/src/GctUnpacker.h | 53 - EventFilter/Goodies/doc/html/index.html | 11 - EventFilter/Goodies/doc/html/overview.html | 12 - .../L1GlobalTriggerRawToDigi/BuildFile | 14 - .../interface/L1GTDigiToRaw.h | 53 - .../interface/L1GlobalTriggerRawToDigi.h | 49 - .../src/L1GTDigiToRaw.cc | 157 - .../src/L1GlobaTriggerRawToDigi.cc | 86 - .../src/SealModule.cc | 9 - EventFilter/Modules/doc/html/index.html | 11 - EventFilter/Modules/doc/html/overview.html | 12 - .../Processor/interface/FUEventProcessor.h | 5 + EventFilter/Processor/src/FUEventProcessor.cc | 303 +- .../RawDataCollector/doc/html/index.html | 11 - .../RawDataCollector/doc/html/overview.html | 12 - EventFilter/SMProxyServer/doc/html/index.html | 11 - .../SMProxyServer/doc/html/overview.html | 12 - .../ScalersRawToDigi/doc/html/index.html | 11 - .../ScalersRawToDigi/doc/html/overview.html | 12 - EventFilter/ShmBuffer/doc/html/index.html | 11 - EventFilter/ShmBuffer/doc/html/overview.html | 12 - .../interface/FragmentCollector.h | 29 +- .../StorageManager/interface/JobController.h | 23 +- .../interface/SMPerformanceMeter.h | 1 + .../src/EventStreamHttpReader.cc | 8 +- .../StorageManager/src/EvtMsgRingBuffer.cc | 4 +- .../StorageManager/src/FragmentCollector.cc | 203 +- .../StorageManager/src/JobController.cc | 37 +- .../StorageManager/src/SMPerformanceMeter.cc | 5 + .../StorageManager/src/StreamerI2OWriter.cc | 5 +- FWCore/Catalog/doc/html/index.html | 11 - FWCore/Catalog/doc/html/overview.html | 12 - FWCore/Common/doc/html/index.html | 11 - FWCore/Common/doc/html/overview.html | 12 - FWCore/FWLite/src/BareRootProductGetter.cc | 29 +- FWCore/FWLite/src/BareRootProductGetter.h | 9 +- FWCore/FWLite/test/ref_t.cppunit.cpp | 13 +- FWCore/GuiBrowsers/doc/html/index.html | 11 - FWCore/GuiBrowsers/doc/html/overview.html | 12 - FWCore/PluginManager/doc/html/index.html | 11 - FWCore/PluginManager/doc/html/overview.html | 12 - FWCore/PrescaleService/doc/html/index.html | 11 - FWCore/PrescaleService/doc/html/overview.html | 12 - FWCore/Python/BuildFile | 15 - FWCore/Python/doc/Python.doc | 41 - FWCore/Python/src/EventWrapper.cc | 83 - FWCore/Python/src/EventWrapper.h | 59 - FWCore/Python/src/PyModule.cc | 67 - FWCore/Python/src/PythonFilter.cc | 126 - FWCore/Python/src/PythonFilter.h | 46 - FWCore/Python/src/PythonManager.h | 133 - FWCore/Python/src/PythonService.cc | 128 - FWCore/Python/src/PythonService.h | 52 - FWCore/Python/src/SealModule.cc | 10 - FWCore/Python/test/loggingExample.cfg | 14 - FWCore/Python/test/loggingExample.py | 38 - FWCore/Python/test/loggingServer.py | 11 - FWCore/Python/test/serviceExample.py | 26 - FWCore/Python/test/serviceTest.cfg | 14 - FWCore/Python/test/simpleTest.cfg | 30 - FWCore/PythonParameterSet/doc/html/index.html | 11 - .../PythonParameterSet/doc/html/overview.html | 12 - .../RootAutoLibraryLoader/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - FWCore/Sources/doc/html/index.html | 11 - FWCore/Sources/doc/html/overview.html | 12 - .../src/TFWLiteSelectorBasic.cc | 44 +- FWCore/Version/doc/html/index.html | 11 - FWCore/Version/doc/html/overview.html | 12 - .../External/doc/html/index.html | 11 - .../External/doc/html/overview.html | 12 - .../L1GlobalMuonTrigger/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../NuclearInteractions/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../PileUpEvents/doc/html/index.html | 11 - .../PileUpEvents/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../EgammaElectronAlgos/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../ForwardDetectors/doc/html/index.html | 11 - .../ForwardDetectors/doc/html/overview.html | 12 - .../HighLevelTrigger/doc/html/index.html | 11 - .../HighLevelTrigger/doc/html/overview.html | 12 - .../L1CaloTriggerProducer/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../MuonSimHitProducer/doc/html/index.html | 11 - .../MuonSimHitProducer/doc/html/overview.html | 12 - .../src/TrackerInteractionGeometry.cc | 28 +- FastSimulation/Tracking/doc/html/index.html | 11 - .../Tracking/doc/html/overview.html | 12 - FastSimulation/Validation/doc/html/index.html | 11 - .../Validation/doc/html/overview.html | 12 - .../AMPTInterface/doc/html/index.html | 11 - .../AMPTInterface/doc/html/overview.html | 12 - GeneratorInterface/AlpgenInterface/BuildFile | 27 + .../AlpgenInterface}/doc/html/index.html | 0 .../AlpgenInterface}/doc/html/overview.html | 0 .../AlpgenInterface/interface/AlpgenSource.h | 86 + .../AlpgenInterface/src/AlpgenSource.cc | 204 + .../src/FortranTools.F} | 6 +- .../src/SealModule.cc | 7 +- .../AlpgenInterface/src/alpg_match.F | 1848 ++++ .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - GeneratorInterface/Core/doc/html/index.html | 11 - .../Core/doc/html/overview.html | 12 - .../ExhumeInterface/doc/html/index.html | 11 - .../ExhumeInterface/doc/html/overview.html | 12 - .../ExternalDecays/doc/html/index.html | 11 - .../ExternalDecays/doc/html/overview.html | 12 - .../GenExtensions/doc/html/index.html | 11 - .../GenExtensions/doc/html/overview.html | 12 - .../GenFilters/doc/html/index.html | 11 - .../GenFilters/doc/html/overview.html | 12 - GeneratorInterface/Herwig6Interface/BuildFile | 20 - .../interface/Herwig6Source.h | 50 - .../Herwig6Interface/src/HEPEVT_Wrapper.cc | 228 - .../Herwig6Interface/src/HEPEVT_Wrapper.h | 542 -- .../Herwig6Interface/src/HepEvt.F | 10 - .../Herwig6Interface/src/Herwig6Source.cc | 1172 --- .../Herwig6Interface/src/HerwigWrapper6_4.h | 136 - .../Herwig6Interface/src/IO_BaseClass.h | 142 - .../Herwig6Interface/src/IO_HERWIG.cc | 778 -- .../Herwig6Interface/src/IO_HERWIG.h | 128 - .../Herwig6Interface/src/ParticleData.h | 216 - .../Herwig6Interface/src/ParticleDataTable.h | 233 - .../Herwig6Interface/src/SealModule.cc | 9 - .../Herwig6Interface/test/H4muAnalyzer.cc | 105 - .../HiGenCommon/doc/html/index.html | 11 - .../HiGenCommon/doc/html/overview.html | 12 - .../HijingInterface/doc/html/index.html | 11 - .../HijingInterface/doc/html/overview.html | 12 - .../LHEInterface/doc/html/index.html | 11 - .../LHEInterface/doc/html/overview.html | 12 - GeneratorInterface/MCatNLOInterface/BuildFile | 20 - .../interface/MCatNLOSource.h | 50 - .../MCatNLOInterface/src/HEPEVT_Wrapper.cc | 228 - .../MCatNLOInterface/src/HEPEVT_Wrapper.h | 542 -- .../MCatNLOInterface/src/HerwigWrapper6_4.h | 136 - .../MCatNLOInterface/src/IO_BaseClass.h | 142 - .../MCatNLOInterface/src/IO_HERWIG.cc | 778 -- .../MCatNLOInterface/src/IO_HERWIG.h | 128 - .../MCatNLOInterface/src/MCatNLOSource.cc | 1456 --- .../MCatNLOInterface/src/ParticleData.h | 216 - .../MCatNLOInterface/src/ParticleDataTable.h | 233 - .../MCatNLOInterface/src/mcatnlo_hwlhin.f | 1330 --- .../MCatNLOInterface/src/mcatnlo_str.f | 122 - .../MCatNLOInterface/test/ZeeAnalyzer.cc | 113 - .../PartonShowerVeto/doc/html/index.html | 11 - .../PartonShowerVeto/doc/html/overview.html | 12 - .../PomwigInterface/doc/html/index.html | 11 - .../PomwigInterface/doc/html/overview.html | 12 - .../PyquenInterface/doc/html/index.html | 11 - .../PyquenInterface/doc/html/overview.html | 12 - .../SherpaInterface/doc/html/index.html | 11 - .../SherpaInterface/doc/html/overview.html | 12 - .../ThePEGInterface/doc/html/index.html | 11 - .../ThePEGInterface/doc/html/overview.html | 12 - Geometry/CMSCommonData/data/beampipe.xml | 10 + Geometry/CMSCommonData/data/caloBase.xml | 29 - Geometry/CMSCommonData/data/cavern.xml | 3 - Geometry/CMSCommonData/data/cms.xml | 144 +- Geometry/CMSCommonData/data/cmsCalo.xml | 19 - .../CMSCommonData/data/cmsMagneticField.xml | 16 - .../CMSCommonData/data/cmsMuonMagnetBeam.xml | 51 - Geometry/CMSCommonData/data/cmsTracker.xml | 19 - Geometry/CMSCommonData/data/mgnt.xml | 5 + Geometry/CMSCommonData/data/muonBase.xml | 65 - .../CaloTopology/src/CaloTowerTopology.cc | 61 +- .../interface/RadialStripTopology.h | 230 - .../src/RadialStripTopology.cc | 232 - .../EcalCommonData/test/data/ecal_test.xml | 63 - Geometry/EcalMapping/doc/html/index.html | 11 - Geometry/EcalMapping/doc/html/overview.html | 12 - Geometry/ForwardGeometry/doc/html/index.html | 11 - .../ForwardGeometry/doc/html/overview.html | 12 - Geometry/HcalCommonData/data/hcalalgo.xml | 35 +- .../HcalCommonData/data/hcalouteralgo.xml | 20 +- Geometry/HcalSimData/TagLog | 12 + .../src/HcalHardcodeGeometryLoader.cc | 9 +- .../MTCCTrackerCommonData/data/tracker.xml | 225 - Geometry/MuonCommonData/data/mb1.xml | 30 +- Geometry/MuonCommonData/data/mb2.xml | 38 +- Geometry/MuonCommonData/data/mb3.xml | 30 +- Geometry/MuonCommonData/data/mb4.xml | 140 +- Geometry/MuonCommonData/data/mbCommon.xml | 103 +- Geometry/MuonCommonData/data/mf.xml | 4 +- Geometry/MuonCommonData/data/muonYoke.xml | 508 +- Geometry/RPCGeometry/interface/RPCChamber.h | 68 - Geometry/RPCGeometry/interface/RPCGeometry.h | 22 +- Geometry/RPCGeometry/interface/RPCRoll.h | 16 +- Geometry/RPCGeometry/interface/RPCRollSpecs.h | 6 +- Geometry/RPCGeometry/src/RPCChamber.cc | 78 - Geometry/RPCGeometry/src/RPCGeometry.cc | 56 +- Geometry/RPCGeometry/src/RPCRoll.cc | 38 +- Geometry/RPCGeometry/src/RPCRollSpecs.cc | 6 - .../RPCGeometry/test/RPCGeometryAnalyzer.cc | 31 +- .../src/PlaneBuilderForGluedDet.cc | 2 +- .../TrackerSimData/data/trackerProdCuts.xml | 16 + .../data/trackerProdCutsBEAM.xml | 25 - .../data/trackerProdCuts_mtcc.xml | 17 + .../trackerProdCuts_twentyfivepercent.xml | 16 + .../TrackerTopology/doc/TrackerTopology.doc | 41 - HLTrigger/Configuration/doc/HLTrigger_AOD.doi | 3 + .../doc/HLTrigger_Configuration.doc | 49 + .../Configuration/doc/HLTrigger_RECO.doi | 3 + HLTrigger/Egamma/doc/html/index.html | 11 - HLTrigger/Egamma/doc/html/overview.html | 12 - HLTrigger/JetMET/doc/html/index.html | 11 - HLTrigger/JetMET/doc/html/overview.html | 12 - HLTrigger/Muon/doc/html/index.html | 11 - HLTrigger/Muon/doc/html/overview.html | 12 - HLTrigger/btau/doc/html/index.html | 11 - HLTrigger/btau/doc/html/overview.html | 12 - HLTrigger/special/doc/html/index.html | 11 - HLTrigger/special/doc/html/overview.html | 12 - HLTriggerOffline/BJet/doc/html/index.html | 11 - HLTriggerOffline/BJet/doc/html/overview.html | 12 - HLTriggerOffline/Common/doc/html/index.html | 11 - .../Common/doc/html/overview.html | 12 - HLTriggerOffline/Egamma/doc/html/index.html | 11 - .../Egamma/doc/html/overview.html | 12 - .../HeavyFlavor/doc/html/index.html | 11 - .../HeavyFlavor/doc/html/overview.html | 12 - HLTriggerOffline/Higgs/doc/html/index.html | 11 - HLTriggerOffline/Higgs/doc/html/overview.html | 12 - HLTriggerOffline/JetMET/doc/html/index.html | 11 - .../JetMET/doc/html/overview.html | 12 - HLTriggerOffline/Muon/doc/html/index.html | 11 - HLTriggerOffline/Muon/doc/html/overview.html | 12 - HLTriggerOffline/SUSYBSM/doc/html/index.html | 11 - .../SUSYBSM/doc/html/overview.html | 12 - HLTriggerOffline/Tau/doc/html/index.html | 11 - HLTriggerOffline/Tau/doc/html/overview.html | 12 - HLTriggerOffline/Top/doc/html/index.html | 11 - HLTriggerOffline/Top/doc/html/overview.html | 12 - HLTriggerOffline/special/doc/html/index.html | 11 - .../special/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../Skimming/doc/html/index.html | 11 - .../Skimming/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - HiggsAnalysis/Skimming/doc/html/index.html | 11 - HiggsAnalysis/Skimming/doc/html/overview.html | 12 - .../src/BetafuncEvtVtxGenerator.cc | 6 +- .../NtupleConverter/src/Ntuple2HepMCFiller.cc | 2 +- IOPool/Common/bin/CollUtil.cc | 138 +- IOPool/Common/bin/CollUtil.h | 4 + IOPool/Common/bin/EdmFileUtil.cpp | 209 +- IOPool/Input/src/RootFile.cc | 10 +- IOPool/Output/src/PoolOutputModule.cc | 16 +- IOPool/Output/src/PoolOutputModule.h | 9 +- IOPool/PFNCatalog/doc/html/index.html | 11 - IOPool/PFNCatalog/doc/html/overview.html | 12 - IOPool/Streamer/interface/EventMessage.h | 5 - IOPool/Streamer/interface/FileRecord.h | 64 + IOPool/Streamer/interface/InitMessage.h | 1 + IOPool/Streamer/interface/OutputService.h | 40 + IOPool/Streamer/interface/StreamService.h | 100 + .../interface/StreamerOutSrvcManager.h | 93 +- .../Streamer/interface/StreamerOutputModule.h | 35 +- IOPool/Streamer/interface/Utilities.h | 2 + IOPool/Streamer/src/EventMessage.cc | 38 - IOPool/Streamer/src/FileRecord.cc | 149 + IOPool/Streamer/src/OutputService.cc | 115 + IOPool/Streamer/src/StreamService.cc | 348 + IOPool/Streamer/src/StreamerOutSrvcManager.cc | 238 +- IOPool/Streamer/src/TestFileReader.cc | 8 +- IOPool/Streamer/src/Utilities.cc | 85 +- IOPool/Streamer/test/EventMessageTest.cpp | 2 +- IOPool/TrivialFileCatalog/doc/trivial.dtd | 11 - IORawData/CaloPatterns/BuildFile | 16 - .../CaloPatterns/interface/HcalFiberPattern.h | 30 - .../interface/HcalPatternXMLParser.h | 23 - .../CaloPatterns/src/HcalFiberPattern.cc | 64 - .../CaloPatterns/src/HcalPatternSource.cc | 137 - .../CaloPatterns/src/HcalPatternSource.h | 31 - .../CaloPatterns/src/HcalPatternXMLParser.cc | 179 - IORawData/CaloPatterns/src/SealModule.cc | 7 - IORawData/DaqSource/ChangeLog | 2 +- .../SiPixelInputSources/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - JetMETAnalysis/JetSkims/doc/html/index.html | 11 - .../JetSkims/doc/html/overview.html | 12 - JetMETAnalysis/METSkims/doc/html/index.html | 11 - .../METSkims/doc/html/overview.html | 12 - .../Algorithms/doc/html/index.html | 11 - .../Algorithms/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../JetVertexAssociation/BuildFile | 32 + .../interface/JetVertexAssociation.h | 45 + .../interface/JetVertexMain.h | 42 + .../src/JetVertexAssociation.cc | 121 + .../JetVertexAssociation/src/JetVertexMain.cc | 93 + .../JetVertexAssociation/src/SealModule.cc | 6 + .../JetVertexAssociation/test/AnalysisJV.cc | 103 + .../JetVertexAssociation/test/AnalysisJV.h | 44 + JetMETCorrections/Modules/doc/html/index.html | 11 - .../Modules/doc/html/overview.html | 12 - JetMETCorrections/Objects/doc/html/index.html | 11 - .../Objects/doc/html/overview.html | 12 - .../Type1MET/interface/Type1METAlgo.h | 6 +- JetMETCorrections/Type1MET/src/Type1MET.cc | 10 +- .../Type1MET/src/Type1METAlgo.cc | 8 +- .../src/CSCAnodeLCTProcessor.cc | 6 +- L1Trigger/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../GlobalTriggerAnalyzer/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../HardwareValidation/doc/html/index.html | 11 - .../HardwareValidation/doc/html/overview.html | 12 - L1Trigger/L1GctAnalyzer/BuildFile | 21 - .../L1GctAnalyzer/interface/L1GctAnalyzer.h | 63 - .../interface/L1GctBasicHistogrammer.h | 44 - .../interface/L1GctHistogrammer.h | 97 - .../interface/L1GctJetCheckHistogrammer.h | 50 - .../interface/L1GctMETCheckHistogrammer.h | 47 - L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc | 208 - .../src/L1GctBasicHistogrammer.cc | 48 - .../L1GctAnalyzer/src/L1GctHistogrammer.cc | 60 - .../src/L1GctJetCheckHistogrammer.cc | 51 - .../src/L1GctMETCheckHistogrammer.cc | 47 - .../RPCTechnicalTrigger/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - L1Trigger/Skimmer/doc/html/index.html | 11 - L1Trigger/Skimmer/doc/html/overview.html | 12 - L1Trigger/TextToDigi/doc/html/index.html | 11 - L1Trigger/TextToDigi/doc/html/overview.html | 12 - .../CSCTFConfigProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../DTTPGConfig/doc/html/index.html | 11 - .../DTTPGConfig/doc/html/overview.html | 12 - .../DTTPGConfigProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../DTTrackFinder/doc/html/index.html | 11 - .../DTTrackFinder/doc/html/overview.html | 12 - .../GMTConfigProducers/doc/html/index.html | 11 - .../GMTConfigProducers/doc/html/overview.html | 12 - .../GctConfigProducers/doc/html/index.html | 11 - .../GctConfigProducers/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../L1GeometryProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../L1GtConfigProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../L1ScalesProducers/doc/html/index.html | 11 - .../L1ScalesProducers/doc/html/overview.html | 12 - .../RCTConfigProducers/doc/html/index.html | 11 - .../RCTConfigProducers/doc/html/overview.html | 12 - .../RPCTriggerConfig/doc/html/index.html | 11 - .../RPCTriggerConfig/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../L1Analyzer/doc/html/index.html | 11 - .../L1Analyzer/doc/html/overview.html | 12 - MagneticField/Interpolation/TagLog | 3 + .../Interpolation/interface/Grid1D.h | 7 +- .../interface/LinearGridInterpolator3D.h | 8 - .../Interpolation/interface/MFGrid3D.h | 3 - .../interface/RectangularCartesianMFGrid.h | 2 +- .../interface/RectangularCylindricalMFGrid.h | 2 +- .../interface/SpecialCylindricalMFGrid.h | 2 +- .../interface/TrapezoidalCartesianMFGrid.h | 2 +- .../interface/TrapezoidalCylindricalMFGrid.h | 2 +- MagneticField/Interpolation/src/MFGrid3D.cc | 16 - .../src/RectangularCartesianMFGrid.cc | 3 +- .../src/RectangularCylindricalMFGrid.cc | 18 +- .../src/SpecialCylindricalMFGrid.cc | 2 +- .../src/TrapezoidalCartesianMFGrid.cc | 2 +- .../src/TrapezoidalCylindricalMFGrid.cc | 2 +- .../ParametrizedEngine/doc/html/index.html | 11 - .../ParametrizedEngine/doc/html/overview.html | 12 - MagneticField/Records/TagLog | 3 + .../VolumeGeometry/interface/MagExceptions.h | 17 - .../interface/MagVolumeOutsideValidity.h | 26 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../MuonAssociators/doc/html/index.html | 11 - .../MuonAssociators/doc/html/overview.html | 12 - MuonAnalysis/Skims/doc/html/index.html | 11 - MuonAnalysis/Skims/doc/html/overview.html | 12 - OnlineDB/CSCCondDB/BuildFile | 32 - OnlineDB/CSCCondDB/interface/AutoCorrMat.h | 105 - .../CSCCondDB/interface/CSCAFEBAnalyzer.h | 26 - .../interface/CSCAFEBConnectAnalysis.h | 64 - .../CSCCondDB/interface/CSCAFEBThrAnalysis.h | 69 - .../interface/CSCCFEBConnectivityAnalyzer.h | 76 - .../interface/CSCCompThreshAnalyzer.h | 47 - .../interface/CSCCrossTalkAnalyzer.h | 175 - OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h | 42 - .../CSCCondDB/interface/CSCGainAnalyzer.h | 67 - OnlineDB/CSCCondDB/interface/CSCMap.h | 60 - .../interface/CSCNoiseMatrixAnalyzer.h | 74 - OnlineDB/CSCCondDB/interface/CSCOnlineDB.h | 41 - .../interface/CSCSaturationAnalyzer.h | 109 - .../CSCCondDB/interface/CSCThrTurnOnFcn.h | 53 - OnlineDB/CSCCondDB/interface/CSCToAFEB.h | 135 - OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h | 72 - OnlineDB/CSCCondDB/interface/CSCxTalk.h | 162 - OnlineDB/CSCCondDB/interface/SaturationFcn.h | 63 - OnlineDB/CSCCondDB/interface/SaturationFit.h | 59 - OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc | 48 - .../CSCCondDB/src/CSCAFEBConnectAnalysis.cc | 356 - OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc | 420 - .../src/CSCCFEBConnectivityAnalyzer.cc | 233 - .../CSCCondDB/src/CSCCompThreshAnalyzer.cc | 219 - .../CSCCondDB/src/CSCCrossTalkAnalyzer.cc | 725 -- OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc | 142 - OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc | 302 - OnlineDB/CSCCondDB/src/CSCMap.cc | 91 - .../CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc | 250 - OnlineDB/CSCCondDB/src/CSCOnlineDB.cc | 327 - .../CSCCondDB/src/CSCSaturationAnalyzer.cc | 416 - OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc | 37 - OnlineDB/CSCCondDB/src/CSCToAFEB.cc | 52 - OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc | 229 - OnlineDB/CSCCondDB/src/SealModule.cc | 20 - OnlineDB/CSCCondDB/test/Readme | 92 - .../CSCCondDB/test/csc_slice_test_map.txt | 50 - OnlineDB/Oracle/doc/html/index.html | 11 - OnlineDB/Oracle/doc/html/overview.html | 12 - OnlineDB/SiStripO2O/doc/html/index.html | 11 - OnlineDB/SiStripO2O/doc/html/overview.html | 12 - PerfTools/Callgrind/doc/html/index.html | 11 - PerfTools/Callgrind/doc/html/overview.html | 12 - PerfTools/EdmEvent/doc/html/index.html | 11 - PerfTools/EdmEvent/doc/html/overview.html | 12 - PhysicsTools/CondLiteIO/doc/html/index.html | 11 - .../CondLiteIO/doc/html/overview.html | 12 - .../src/GenParticleCandidateProducer.cc | 27 +- PhysicsTools/HepMCCandAlgos/src/SealModule.cc | 2 - .../src/SetGenParticleMotherReference.cc | 31 - .../src/SetGenParticleMotherReference.h | 18 - .../IsolationAlgos/doc/html/index.html | 11 - .../IsolationAlgos/doc/html/overview.html | 12 - .../IsolationUtils/doc/html/index.html | 11 - .../IsolationUtils/doc/html/overview.html | 12 - PhysicsTools/JetCharge/doc/html/index.html | 11 - PhysicsTools/JetCharge/doc/html/overview.html | 12 - PhysicsTools/JetExamples/doc/html/index.html | 11 - .../JetExamples/doc/html/overview.html | 12 - PhysicsTools/JetMCAlgos/doc/html/index.html | 11 - .../JetMCAlgos/doc/html/overview.html | 12 - PhysicsTools/JetMCUtils/doc/html/index.html | 11 - .../JetMCUtils/doc/html/overview.html | 12 - PhysicsTools/KinFitter/doc/html/index.html | 11 - PhysicsTools/KinFitter/doc/html/overview.html | 12 - PhysicsTools/MVAComputer/doc/html/index.html | 11 - .../MVAComputer/doc/html/overview.html | 12 - PhysicsTools/MVATrainer/doc/html/index.html | 11 - .../MVATrainer/doc/html/overview.html | 12 - .../PFCandProducer/doc/html/index.html | 11 - .../PFCandProducer/doc/html/overview.html | 12 - .../ParallelAnalysis/doc/ParallelAnalysis.doc | 2 +- .../interface/TrackAnalysisAlgorithm.h | 8 +- .../interface/TrackTSelector.h | 9 +- .../ParallelAnalysis/src/SealModule.cc | 7 +- .../src/TrackAnalysisAlgorithm.cc | 16 - .../ParallelAnalysis/src/TrackTSelector.cc | 15 +- .../src/TrackTSelectorAnalyzer.cc | 26 + .../src/TrackTSelectorAnalyzer.h | 34 + PhysicsTools/PatAlgos/doc/html/index.html | 11 - PhysicsTools/PatAlgos/doc/html/overview.html | 12 - PhysicsTools/PatExamples/doc/html/index.html | 11 - .../PatExamples/doc/html/overview.html | 12 - PhysicsTools/PatUtils/doc/html/index.html | 11 - PhysicsTools/PatUtils/doc/html/overview.html | 12 - .../PythonAnalysis/doc/PythonAnalysis.doc | 3 +- .../PythonAnalysis/examples/MCTruth.py | 34 - .../PythonAnalysis/examples/MCTruth2.py | 21 - .../PythonAnalysis/examples/howto.txt | 15 - .../examples/interactiveExample.py | 66 - PhysicsTools/PythonAnalysis/examples/start.py | 8 - .../PythonAnalysis/examples/trackerHits.py | 30 - .../PythonAnalysis/python/cmstools.py | 91 +- .../RecoAlgos/interface/ElectronSelector.h | 8 +- .../RecoAlgos/interface/PhotonSelector.h | 6 +- .../RecoAlgos/src/ObjectCountFilters.h | 106 +- .../RecoAlgos/src/ObjectPairFilters.h | 33 +- PhysicsTools/RecoAlgos/src/ObjectSelectors.h | 192 +- PhysicsTools/RecoAlgos/src/ObjectUtilities.h | 30 +- PhysicsTools/RecoAlgos/src/SealModule.cc | 74 +- PhysicsTools/RecoUtils/doc/html/index.html | 11 - PhysicsTools/RecoUtils/doc/html/overview.html | 12 - PhysicsTools/RooStatsCms/doc/html/index.html | 11 - .../RooStatsCms/doc/html/overview.html | 12 - .../SelectorUtils/doc/html/index.html | 11 - .../SelectorUtils/doc/html/overview.html | 12 - PhysicsTools/StarterKit/doc/html/index.html | 11 - .../StarterKit/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../UtilAlgos/interface/ObjectCountFilter.h | 14 +- .../interface/ObjectPairCollectionSelector.h | 6 +- .../interface/SortCollectionSelector.h | 6 +- .../ChargedHadronSpectra/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - QCDAnalysis/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - QCDAnalysis/Skimming/doc/html/index.html | 11 - QCDAnalysis/Skimming/doc/html/overview.html | 12 - QCDAnalysis/UEAnalysis/doc/html/index.html | 11 - QCDAnalysis/UEAnalysis/doc/html/overview.html | 12 - RecoBTag/ImpactParameter/doc/html/index.html | 11 - .../ImpactParameter/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoBTag/PerformanceDB/doc/html/index.html | 11 - RecoBTag/PerformanceDB/doc/html/overview.html | 12 - RecoBTag/Records/doc/html/index.html | 11 - RecoBTag/Records/doc/html/overview.html | 12 - RecoBTag/SecondaryVertex/doc/html/index.html | 11 - .../SecondaryVertex/doc/html/overview.html | 12 - RecoBTag/Skimming/doc/html/index.html | 11 - RecoBTag/Skimming/doc/html/overview.html | 12 - RecoBTag/TrackProbability/doc/html/index.html | 11 - .../TrackProbability/doc/html/overview.html | 12 - .../JetCrystalsAssociator/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoBTau/JetTagComputer/doc/html/index.html | 11 - .../JetTagComputer/doc/html/overview.html | 12 - .../JetTagMVALearning/doc/html/index.html | 11 - .../JetTagMVALearning/doc/html/overview.html | 12 - .../EcalChannelKiller/doc/html/index.html | 11 - .../EcalChannelKiller/doc/html/overview.html | 12 - .../interface/ClusteringAlgorithm.h | 64 - .../interface/HybridClusterAlgo.h | 5 +- .../interface/IslandClusterAlgo.h | 4 +- .../interface/PositionAwareHit.h | 44 - .../interface/PreshowerClusterAlgo.h | 13 +- .../src/ClusteringAlgorithm.cc | 177 - .../src/HybridClusterAlgo.cc | 40 +- .../src/IslandClusterAlgo.cc | 12 +- .../EgammaClusterAlgos/src/LogPositionCalc.cc | 136 - .../src/PositionAwareHit.cc | 20 - .../src/PreshowerClusterAlgo.cc | 45 +- .../interface/EgammaSimpleAnalyzer.h | 7 +- .../interface/PreshowerAnalyzer.h | 5 +- .../interface/PreshowerClusterProducer.h | 10 +- .../src/EgammaSimpleAnalyzer.cc | 90 +- .../src/HybridClusterProducer.cc | 8 +- .../src/IslandClusterProducer.cc | 14 +- .../src/PreshowerAnalyzer.cc | 15 +- .../src/PreshowerClusterProducer.cc | 71 +- .../EgammaClusterProducers/src/SealModule.cc | 2 + RecoEcal/EgammaCoreTools/BuildFile | 2 + .../interface/LogPositionCalc.h | 30 - .../EgammaCoreTools/interface/PositionCalc.h | 11 +- .../EgammaCoreTools/src/LogPositionCalc.cc | 136 - RecoEcal/EgammaCoreTools/src/PositionCalc.cc | 48 +- .../Configuration/doc/RecoEgamma_AOD.doi | 39 + .../Configuration/doc/RecoEgamma_RECO.doi | 39 + .../EgammaHFProducers/doc/html/index.html | 11 - .../EgammaHFProducers/doc/html/overview.html | 12 - .../EgammaHLTRecoEcalCandidateProducers.cc | 3 +- .../EgammaIsolationAlgos/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoEgamma/EgammaMCTools/doc/html/index.html | 11 - .../EgammaMCTools/doc/html/overview.html | 12 - .../src/PhotonProducer.cc | 3 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoEgamma/Examples/doc/html/index.html | 11 - RecoEgamma/Examples/doc/html/overview.html | 12 - .../PhotonIdentification/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoHI/Configuration/doc/html/index.html | 11 - RecoHI/Configuration/doc/html/overview.html | 12 - RecoHI/HiCentralityAlgos/doc/html/index.html | 11 - .../HiCentralityAlgos/doc/html/overview.html | 12 - RecoHI/HiEgammaAlgos/doc/html/index.html | 11 - RecoHI/HiEgammaAlgos/doc/html/overview.html | 12 - RecoHI/HiEvtPlaneAlgos/doc/html/index.html | 11 - RecoHI/HiEvtPlaneAlgos/doc/html/overview.html | 12 - RecoHI/HiJetAlgos/doc/html/index.html | 11 - RecoHI/HiJetAlgos/doc/html/overview.html | 12 - RecoHI/HiMuonAlgos/doc/html/index.html | 11 - RecoHI/HiMuonAlgos/doc/html/overview.html | 12 - RecoHI/HiTracking/doc/html/index.html | 11 - RecoHI/HiTracking/doc/html/overview.html | 12 - RecoHIMuon/HiMuPropagator/doc/html/index.html | 11 - .../HiMuPropagator/doc/html/overview.html | 12 - RecoHIMuon/HiMuSeed/doc/html/index.html | 11 - RecoHIMuon/HiMuSeed/doc/html/overview.html | 12 - RecoHIMuon/HiMuTracking/doc/html/index.html | 11 - .../HiMuTracking/doc/html/overview.html | 12 - RecoJets/Configuration/doc/RecoJets_AOD.doi | 31 + RecoJets/Configuration/doc/RecoJets_RECO.doi | 31 + RecoJets/JetAnalyzers/BuildFile | 31 - .../interface/CaloTowerBoundries.h | 139 - .../interface/CaloTowersExample.h | 26 - RecoJets/JetAnalyzers/interface/DijetMass.h | 54 - RecoJets/JetAnalyzers/interface/JetAnalysis.h | 145 - RecoJets/JetAnalyzers/interface/JetAnalyzer.h | 29 - .../JetAnalyzers/interface/JetPlotsExample.h | 27 - .../JetAnalyzers/interface/JetToDigiDump.h | 35 - RecoJets/JetAnalyzers/interface/JetUtil.h | 54 - .../JetAnalyzers/interface/JetValidation.h | 67 - .../JetAnalyzers/src/CaloTowersExample.cc | 51 - RecoJets/JetAnalyzers/src/DijetMass.cc | 278 - RecoJets/JetAnalyzers/src/JetAnalysis.cc | 853 -- RecoJets/JetAnalyzers/src/JetAnalyzer.cc | 156 - RecoJets/JetAnalyzers/src/JetPlotsExample.cc | 77 - RecoJets/JetAnalyzers/src/JetToDigiDump.cc | 260 - RecoJets/JetAnalyzers/src/JetValidation.cc | 408 - RecoJets/JetAnalyzers/src/SealModule.cc | 16 - .../JetAnalyzers/test/DijetMassQstar.cint | 286 - .../JetAnalyzers/test/DijetMassZprime.cint | 286 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoJets/JetPlusTracks/doc/html/index.html | 11 - RecoJets/JetPlusTracks/doc/html/overview.html | 12 - .../CaloRecCandCreator/doc/html/index.html | 11 - .../CaloRecCandCreator/doc/html/overview.html | 12 - RecoLocalCalo/Castor/doc/html/index.html | 11 - RecoLocalCalo/Castor/doc/html/overview.html | 12 - RecoLocalCalo/CastorReco/doc/html/index.html | 11 - .../CastorReco/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../EcalUncalibRecHitFixedAlphaBetaAlgo.h | 8 +- .../HcalLaserReco/doc/html/index.html | 11 - .../HcalLaserReco/doc/html/overview.html | 12 - .../CSCEfficiency/doc/html/index.html | 11 - .../CSCEfficiency/doc/html/overview.html | 12 - RecoLocalMuon/CSCRecHitD/doc/html/index.html | 11 - .../CSCRecHitD/doc/html/overview.html | 12 - RecoLocalMuon/CSCSegment/BuildFile | 1 + RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc | 31 +- RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h | 3 +- RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc | 34 +- RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h | 5 +- RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc | 155 +- RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h | 20 +- .../CSCValidation/doc/html/index.html | 11 - .../CSCValidation/doc/html/overview.html | 12 - RecoLocalTracker/SiPixelRecHits/BuildFile | 2 - .../interface/PixelCPETemplateReco.h | 82 - .../interface/SiPixelTemplateReco.h | 32 - .../src/PixelCPETemplateReco.cc | 411 - .../src/SiPixelRecHitConverter.cc | 5 - .../SiPixelRecHits/src/SiPixelTemplateReco.cc | 550 -- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoLuminosity/LumiDB/doc/html/index.html | 11 - RecoLuminosity/LumiDB/doc/html/overview.html | 12 - .../LumiProducer/doc/html/index.html | 11 - .../LumiProducer/doc/html/overview.html | 12 - RecoLuminosity/ROOTSchema/doc/html/index.html | 11 - .../ROOTSchema/doc/html/overview.html | 12 - .../TCPReceiver/doc/html/index.html | 11 - .../TCPReceiver/doc/html/overview.html | 12 - .../src/GlobalMuonProducer.cc | 15 +- .../src/GlobalMuonProducer.h | 6 +- .../src/GlobalMuonTrajectoryBuilder.cc | 66 +- .../GlobalTrackingTools/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoMuon/L3TrackFinder/doc/html/index.html | 11 - RecoMuon/L3TrackFinder/doc/html/overview.html | 12 - RecoMuon/MuonIdentification/BuildFile | 22 - .../MuonIdentification/doc/html/index.html | 11 - .../MuonIdentification/doc/html/overview.html | 12 - .../interface/MuonIdProducer.h | 70 - .../MuonIdentification/src/MuonIdProducer.cc | 237 - .../test/TestMuonIdProducer.cxx | 61 - .../test/resolution_fit.cxx | 23 - RecoMuon/MuonIdentification/test/rootlogon.C | 10 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../interface/MuonTrajectoryCleaner.h | 8 +- RecoMuon/TrackingTools/src/MuonTrackFinder.cc | 7 +- .../TrackingTools/src/MuonTrackReFitter.cc | 64 +- .../src/MuonTrajectoryCleaner.cc | 125 +- .../Benchmark/doc/html/index.html | 11 - .../Benchmark/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../PFBlockProducer/doc/html/index.html | 11 - .../PFBlockProducer/doc/html/overview.html | 12 - .../interface/PFClusterProducer.h | 14 + .../src/PFClusterProducer.cc | 636 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../PFClusterTools/doc/html/index.html | 11 - .../PFClusterTools/doc/html/overview.html | 12 - .../PFProducer/interface/EFilter.h | 50 + RecoParticleFlow/PFProducer/setup_pflow | 5 +- RecoParticleFlow/PFProducer/src/EFilter.cc | 131 + RecoParticleFlow/PFProducer/src/SealModule.cc | 2 + RecoParticleFlow/PFRootEvent/BuildFile | 2 + .../PFRootEvent/interface/EventColin.h | 7 + .../interface/PFRootEventManager.h | 25 +- .../PFRootEvent/interface/ResidualFitter.h | 93 + RecoParticleFlow/PFRootEvent/src/IO.cc | 6 + .../PFRootEvent/src/PFRootEventManager.cc | 152 +- .../PFRootEvent/src/ResidualFitter.cc | 185 + RecoParticleFlow/PFRootEvent/src/classes.h | 1 + .../PFRootEvent/src/classes_def.xml | 3 + .../PFRootEvent/test/Macros/compareResMaps.C | 25 + .../test/Macros/effEflowIslandStyle.C | 67 + .../test/Macros/effEflowSeedsStyle.C | 47 + .../PFRootEvent/test/Macros/effIneff.C | 298 + .../PFRootEvent/test/Macros/effIneffStyle.C | 67 + .../test/Macros/impEflowIslandStyle.C | 44 + .../test/Macros/impEflowSeedsStyle.C | 63 + .../PFRootEvent/test/Macros/process.C | 24 + .../PFRootEvent/test/Macros/resMaps.C | 35 + RecoParticleFlow/PFRootEvent/test/scan.pl | 106 +- .../PFTracking/doc/html/index.html | 11 - .../PFTracking/doc/html/overview.html | 12 - .../interface/PixelFitterByHelixProjections.h | 6 +- .../src/PixelFitterByHelixProjections.cc | 8 +- .../interface/CosmicHitTripletGenerator.h | 53 - ...osmicHitTripletGeneratorFromLayerTriplet.h | 51 - .../interface/CosmicLayerTriplets.h | 74 - .../PixelTriplets/interface/LayerTriplets.h | 32 - .../interface/PixelLayerTriplets.h | 14 +- .../src/CosmicHitTripletGenerator.cc | 60 - ...smicHitTripletGeneratorFromLayerTriplet.cc | 103 - .../PixelTriplets/src/CosmicLayerTriplets.cc | 106 - .../PixelTriplets/src/PixelLayerTriplets.cc | 2 +- .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - RecoRomanPot/RecoFP420/doc/html/index.html | 11 - RecoRomanPot/RecoFP420/doc/html/overview.html | 12 - RecoTBCalo/EcalTBTDCReconstructor/BuildFile | 2 - .../interface/EcalTBH2TDCRecInfoAlgo.h | 37 - .../interface/EcalTBH2TDCRecInfoProducer.h | 35 - .../src/EcalTBH2TDCRecInfoAlgo.cc | 67 - .../src/EcalTBH2TDCRecInfoProducer.cc | 100 - .../EcalTBTDCReconstructor/src/SealModule.cc | 2 - RecoTBCalo/HcalPlotter/doc/html/index.html | 11 - RecoTBCalo/HcalPlotter/doc/html/overview.html | 12 - RecoTBCalo/ZDCTBAnalysis/doc/html/index.html | 11 - .../ZDCTBAnalysis/doc/html/overview.html | 12 - RecoTauTag/HLTProducers/BuildFile | 5 +- .../src/CaloTowerCreatorForTauHLT.cc | 29 +- RecoTauTag/ImpactParameter/BuildFile | 22 - .../interface/ImpactParameter.h | 27 - .../interface/ImpactParameterAlgorithm.h | 56 - .../ImpactParameter/src/ImpactParameter.cc | 129 - .../src/ImpactParameterAlgorithm.cc | 72 - RecoTauTag/ImpactParameter/src/SealModule.cc | 11 - .../test/TauImpactParameterTest.cc | 101 - RecoTauTag/Pi0Tau/doc/html/index.html | 11 - RecoTauTag/Pi0Tau/doc/html/overview.html | 12 - RecoTauTag/RecoTau/doc/html/index.html | 11 - RecoTauTag/RecoTau/doc/html/overview.html | 12 - RecoTauTag/TauTagTools/doc/html/index.html | 11 - RecoTauTag/TauTagTools/doc/html/overview.html | 12 - RecoTracker/CkfPattern/test/runall.sh | 3 +- RecoTracker/DeDx/doc/html/index.html | 11 - RecoTracker/DeDx/doc/html/overview.html | 12 - RecoTracker/DebugTools/doc/html/index.html | 11 - RecoTracker/DebugTools/doc/html/overview.html | 12 - .../FinalTrackSelectors/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../IterativeTracking/doc/html/index.html | 11 - .../IterativeTracking/doc/html/overview.html | 12 - .../NuclearSeedGenerator/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoTracker/RingESSource/doc/html/index.html | 11 - .../RingESSource/doc/html/overview.html | 12 - .../RingMakerESProducer/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoTracker/RingRecord/doc/html/index.html | 11 - RecoTracker/RingRecord/doc/html/overview.html | 12 - .../src/RoadSearchCloudMaker.cc | 57 +- .../src/RoadSearchSeedFinder.cc | 31 +- .../SiTrackerMRHTools/doc/html/index.html | 11 - .../SiTrackerMRHTools/doc/html/overview.html | 12 - .../SpecialSeedGenerators/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - RecoTracker/TkSeedGenerator/BuildFile | 2 - .../interface/SeedGeneratorForCosmics.h | 6 +- .../src/SeedGeneratorForCosmics.cc | 98 +- .../TkSeedingLayers/doc/html/index.html | 11 - .../TkSeedingLayers/doc/html/overview.html | 12 - .../interface/TrackProducerAlgorithm.h | 6 +- .../TrackProducer/src/TrackProducer.cc | 2 + .../src/TrackProducerAlgorithm.cc | 4 +- RecoTracker/TrackProducer/test/analyze.C | 31 - RecoTracker/TrackProducer/test/analyze_HZZ.C | 105 - .../TrackProducer/test/analyze_HZZ_head.C | 7 - RecoTracker/TrackProducer/test/analyze_head.C | 7 - RecoVZero/VZeroFinding/src/VZeroFinder.cc | 2 +- RecoVertex/AdaptiveVertexFinder/BuildFile | 8 - .../interface/AdaptiveVertexReconstructor.h | 48 - .../src/AdaptiveVertexReconstructor.cc | 110 - RecoVertex/ConfigurableVertexReco/BuildFile | 14 - .../interface/AbstractConfReconstructor.h | 25 - .../interface/ConfRecoBuilder.h | 18 - .../interface/ConfigurableAdaptiveFitter.h | 31 - .../ConfigurableAdaptiveReconstructor.h | 25 - .../interface/ConfigurableKalmanFitter.h | 25 - .../interface/ConfigurableLinPtFinder.h | 25 - .../ConfigurableTrimmedKalmanFinder.h | 25 - .../ConfigurableVertexReconstructor.h | 28 - .../interface/ReconstructorFromFitter.h | 26 - .../interface/ReconstructorFromLinPtFinder.h | 26 - .../interface/VertexRecoManager.h | 34 - .../src/ConfigurableAdaptiveFitter.cc | 82 - .../src/ConfigurableAdaptiveReconstructor.cc | 68 - .../src/ConfigurableKalmanFitter.cc | 58 - .../src/ConfigurableLinPtFinder.cc | 61 - .../src/ConfigurableTrimmedKalmanFinder.cc | 65 - .../src/ConfigurableVertexReconstructor.cc | 43 - .../src/ReconstructorFromFitter.cc | 42 - .../src/ReconstructorFromLinPtFinder.cc | 44 - .../src/VertexRecoManager.cc | 66 - .../GhostTrackFitter/doc/html/index.html | 11 - .../GhostTrackFitter/doc/html/overview.html | 12 - RecoVertex/KinematicFit/BuildFile | 6 - RecoVertex/KinematicFit/doc/html/index.html | 11 - .../KinematicFit/doc/html/overview.html | 12 - .../interface/BackToBackKinematicConstraint.h | 56 - .../KinematicFit/interface/ChildUpdator.h | 40 - .../interface/ConstrainedTreeBuilder.h | 45 - .../KinematicFit/interface/FinalTreeBuilder.h | 36 - .../FourMomentumKinematicConstraint.h | 65 - RecoVertex/KinematicFit/interface/InputSort.h | 29 - .../KinematicConstrainedVertexFitter.h | 61 - .../KinematicConstrainedVertexUpdator.h | 48 - .../interface/KinematicParticleFitter.h | 68 - .../interface/KinematicParticleVertexFitter.h | 62 - .../interface/LagrangeChildUpdator.h | 30 - .../interface/LagrangeParentParticleFitter.h | 46 - .../interface/MassKinematicConstraint.h | 61 - .../interface/MomentumKinematicConstraint.h | 63 - .../interface/ParentParticleFitter.h | 42 - .../interface/PointingKinematicConstraint.h | 65 - .../SequentialKinematicVertexFitter.h | 71 - .../interface/SimplePointingConstraint.h | 65 - .../interface/SmartPointingConstraint.h | 65 - .../TwoTrackMassKinematicConstraint.h | 66 - .../interface/VertexKinematicConstraint.h | 57 - .../src/BackToBackKinematicConstraint.cc | 86 - .../src/ConstrainedTreeBuilder.cc | 269 - .../KinematicFit/src/FinalTreeBuilder.cc | 237 - .../src/FourMomentumKinematicConstraint.cc | 112 - RecoVertex/KinematicFit/src/InputSort.cc | 38 - .../src/KinematicConstrainedVertexFitter.cc | 148 - .../src/KinematicConstrainedVertexUpdator.cc | 161 - .../src/KinematicParticleFitter.cc | 39 - .../src/KinematicParticleVertexFitter.cc | 86 - .../KinematicFit/src/LagrangeChildUpdator.cc | 23 - .../src/LagrangeParentParticleFitter.cc | 283 - .../src/MassKinematicConstraint.cc | 85 - .../src/MomentumKinematicConstraint.cc | 89 - .../src/PointingKinematicConstraint.cc | 178 - .../src/SequentialKinematicVertexFitter.cc | 111 - .../src/SimplePointingConstraint.cc | 252 - .../src/SmartPointingConstraint.cc | 181 - .../src/TwoTrackMassKinematicConstraint.cc | 160 - .../src/VertexKinematicConstraint.cc | 158 - RecoVertex/KinematicFitPrimitives/BuildFile | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../ExtendedPerigeeTrajectoryError.h | 52 - .../ExtendedPerigeeTrajectoryParameters.h | 47 - .../interface/KinematicConstraint.h | 82 - .../interface/KinematicParameters.h | 47 - .../interface/KinematicParametersError.h | 44 - .../interface/KinematicParticle.h | 151 - ...nematicParticleFactoryFromTransientTrack.h | 79 - .../interface/KinematicPerigeeConversions.h | 44 - .../interface/KinematicRefittedTrackState.h | 72 - .../interface/KinematicState.h | 77 - .../interface/KinematicStatePropagator.h | 41 - .../interface/KinematicTree.h | 218 - .../interface/KinematicVertex.h | 123 - .../interface/KinematicVertexAssociator.h | 37 - .../interface/KinematicVertexDistance.h | 26 - .../interface/KinematicVertexFactory.h | 65 - .../interface/MultiTrackKinematicConstraint.h | 61 - .../interface/MultipleKinematicConstraint.h | 63 - .../ParticleKinematicLinearizedTrackState.h | 151 - ...icleKinematicLinearizedTrackStateFactory.h | 30 - .../interface/ParticleMass.h | 7 - .../interface/PerigeeKinematicState.h | 102 - .../interface/RefCountedKinematicParticle.h | 14 - .../interface/RefCountedKinematicTree.h | 8 - .../interface/RefCountedKinematicVertex.h | 9 - .../interface/TrackKinematicStatePropagator.h | 57 - .../TransientTrackKinematicParticle.h | 86 - .../TransientTrackKinematicStateBuilder.h | 67 - .../interface/VirtualKinematicParticle.h | 74 - .../VirtualKinematicParticleFactory.h | 42 - .../src/KinematicParameters.cc | 8 - .../src/KinematicParametersError.cc | 1 - .../src/KinematicParticle.cc | 33 - ...ematicParticleFactoryFromTransientTrack.cc | 66 - .../src/KinematicPerigeeConversions.cc | 147 - .../src/KinematicRefittedTrackState.cc | 89 - .../src/KinematicState.cc | 56 - .../src/KinematicTree.cc | 439 - .../src/KinematicVertex.cc | 107 - .../src/KinematicVertexFactory.cc | 1 - .../src/MultipleKinematicConstraint.cc | 151 - .../ParticleKinematicLinearizedTrackState.cc | 338 - ...cleKinematicLinearizedTrackStateFactory.cc | 8 - .../src/PerigeeKinematicState.cc | 97 - .../src/RecTrackKinematicParticle.cc | 95 - .../src/RecTrackKinematicStateBuilder.cc | 70 - .../src/TrackKinematicStatePropagator.cc | 213 - .../src/VirtualKinematicParticle.cc | 77 - .../src/VirtualKinematicParticleFactory.cc | 29 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../src/PrimaryVertexProducerAlgorithm.cc | 29 +- .../src/TrackClusterizerInZ.cc | 4 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../TrimmedVertexFit/doc/html/index.html | 11 - .../TrimmedVertexFit/doc/html/overview.html | 12 - RecoVertex/V0Producer/doc/html/index.html | 11 - RecoVertex/V0Producer/doc/html/overview.html | 12 - .../interface/TransientVertex.h | 2 +- .../VertexPrimitives/src/TransientVertex.cc | 9 +- .../Geometry/doc/html/index.html | 11 - .../Geometry/doc/html/overview.html | 12 - .../L1CaloTrigger/doc/html/index.html | 11 - .../L1CaloTrigger/doc/html/overview.html | 12 - .../L1TrackTrigger/doc/html/index.html | 11 - .../L1TrackTrigger/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - SUSYBSMAnalysis/HSCP/doc/html/index.html | 11 - SUSYBSMAnalysis/HSCP/doc/html/overview.html | 12 - SUSYBSMAnalysis/Skimming/doc/html/index.html | 11 - .../Skimming/doc/html/overview.html | 12 - SimCalorimetry/CastorSim/doc/html/index.html | 11 - .../CastorSim/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../EcalSelectiveReadoutSuppressor.h | 8 +- .../src/EcalSelectiveReadoutSuppressor.cc | 68 +- .../HcalTrigPrimAlgos/doc/html/index.html | 11 - .../HcalTrigPrimAlgos/doc/html/overview.html | 12 - .../HcalTrigPrimProducers/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../DigiSimLinks/doc/html/index.html | 11 - .../DigiSimLinks/doc/html/overview.html | 12 - .../GeneratorProducts/doc/html/index.html | 11 - .../GeneratorProducts/doc/html/overview.html | 12 - .../HcalTestBeam/src/PHcalTB04Info.cc | 4 +- SimDataFormats/HiGenData/doc/html/index.html | 11 - .../HiGenData/doc/html/overview.html | 12 - .../JetMatching/doc/html/index.html | 11 - .../JetMatching/doc/html/overview.html | 12 - SimDataFormats/SLHC/doc/html/index.html | 11 - SimDataFormats/SLHC/doc/html/overview.html | 12 - .../ValidationFormats/doc/html/index.html | 11 - .../ValidationFormats/doc/html/overview.html | 12 - .../CherenkovAnalysis/doc/html/index.html | 11 - .../CherenkovAnalysis/doc/html/overview.html | 12 - SimG4CMS/Forward/src/classes.h | 5 - SimG4CMS/Forward/src/classes_def.xml | 5 - .../ShowerLibraryProducer/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - SimG4Core/CheckSecondary/doc/html/index.html | 11 - .../CheckSecondary/doc/html/overview.html | 12 - SimG4Core/HelpfulWatchers/TagLog | 6 + SimG4Core/PhysicsLists/doc/html/index.html | 11 - SimG4Core/PhysicsLists/doc/html/overview.html | 12 - .../interface/PrintMaterialBudgetInfo.h | 12 +- .../src/PrintMaterialBudgetInfo.cc | 103 +- .../SaveSimTrackAction/doc/html/index.html | 11 - .../SaveSimTrackAction/doc/html/overview.html | 12 - SimGeneral/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../DataMixingModule/doc/html/index.html | 11 - .../DataMixingModule/doc/html/overview.html | 12 - SimGeneral/GFlash/doc/html/index.html | 11 - SimGeneral/GFlash/doc/html/overview.html | 12 - .../HepPDTESSource/test/HepPDTAnalyzer.cc | 2 +- SimGeneral/NoiseGenerators/TagLog | 6 + .../src/TrackingTruthProducer.cc | 2 + SimGeneral/TrackingAnalysis/src/classes.h | 1 - .../TrackingAnalysis/src/classes_def.xml | 2 - SimMuon/MCTruth/doc/html/index.html | 11 - SimMuon/MCTruth/doc/html/overview.html | 12 - SimMuon/Neutron/BuildFile | 16 - .../interface/SubsystemNeutronReader.h | 55 - .../interface/SubsystemNeutronWriter.h | 65 - SimMuon/Neutron/src/AsciiNeutronReader.cc | 70 - SimMuon/Neutron/src/AsciiNeutronReader.h | 35 - SimMuon/Neutron/src/AsciiNeutronWriter.cc | 37 - SimMuon/Neutron/src/AsciiNeutronWriter.h | 26 - SimMuon/Neutron/src/LinkDef.h | 6 - SimMuon/Neutron/src/NeutronReader.h | 21 - SimMuon/Neutron/src/NeutronWriter.h | 23 - SimMuon/Neutron/src/RootChamberReader.cc | 55 - SimMuon/Neutron/src/RootChamberReader.h | 27 - SimMuon/Neutron/src/RootChamberWriter.cc | 34 - SimMuon/Neutron/src/RootChamberWriter.h | 28 - SimMuon/Neutron/src/RootNeutronReader.cc | 35 - SimMuon/Neutron/src/RootNeutronReader.h | 30 - SimMuon/Neutron/src/RootNeutronWriter.cc | 49 - SimMuon/Neutron/src/RootNeutronWriter.h | 32 - SimMuon/Neutron/src/RootSimHit.cc | 32 - SimMuon/Neutron/src/RootSimHit.h | 40 - SimMuon/Neutron/src/SubsystemNeutronReader.cc | 87 - SimMuon/Neutron/src/SubsystemNeutronWriter.cc | 144 - SimMuon/Neutron/test/AsciiNeutronTest.cpp | 45 - SimMuon/Neutron/test/AsciiNeutronTest.ref | 4 - SimMuon/Neutron/test/NeutronReaderTest.cpp | 46 - SimMuon/Neutron/test/RootNeutronTest.cpp | 60 - SimRomanPot/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - SimRomanPot/SimFP420/doc/html/index.html | 11 - SimRomanPot/SimFP420/doc/html/overview.html | 12 - SimTracker/Records/BuildFile | 2 - .../src/SiPixelDigitizerAlgorithm.cc | 1 + .../src/SiStripDigitizerAlgorithm.cc | 2 +- SimTracker/TrackHistory/doc/html/index.html | 11 - .../TrackHistory/doc/html/overview.html | 12 - SimTracker/TrackerFilters/doc/html/index.html | 11 - .../TrackerFilters/doc/html/overview.html | 12 - .../src/TrackerHitAssociator.cc | 5 +- .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../VertexAssociation/doc/html/index.html | 11 - .../VertexAssociation/doc/html/overview.html | 12 - .../doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../HectorProducer/doc/html/index.html | 11 - .../HectorProducer/doc/html/overview.html | 12 - .../MCEmbeddingTools/doc/html/index.html | 11 - .../MCEmbeddingTools/doc/html/overview.html | 12 - .../Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - TopQuarkAnalysis/Examples/doc/html/index.html | 11 - .../Examples/doc/html/overview.html | 12 - .../TopEventProducers/doc/html/index.html | 11 - .../TopEventProducers/doc/html/overview.html | 12 - .../TopEventSelection/doc/html/index.html | 11 - .../TopEventSelection/doc/html/overview.html | 12 - .../TopJetCombination/doc/html/index.html | 11 - .../TopJetCombination/doc/html/overview.html | 12 - .../TopKinFitter/doc/html/index.html | 11 - .../TopKinFitter/doc/html/overview.html | 12 - .../TopObjectProducers/doc/html/index.html | 11 - .../TopObjectProducers/doc/html/overview.html | 12 - .../TopObjectResolutions/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../TopPairBSM/doc/html/index.html | 11 - .../TopPairBSM/doc/html/overview.html | 12 - .../TopSkimming/doc/html/index.html | 11 - .../TopSkimming/doc/html/overview.html | 12 - TopQuarkAnalysis/TopTools/doc/html/index.html | 11 - .../TopTools/doc/html/overview.html | 12 - .../Geant4e/interface/Geant4ePropagator.h | 8 +- .../Geant4e/src/Geant4ePropagator.cc | 16 +- .../Geant4e/test/Geant4ePropagatorAnalyzer.cc | 244 +- TrackPropagation/NavGeometry/BuildFile | 13 - .../interface/LinearSearchNavSurfaceImpl.h | 34 - .../NavGeometry/interface/NavCone.h | 53 - .../NavGeometry/interface/NavCylinder.h | 52 - .../NavGeometry/interface/NavPlane.h | 57 - .../NavGeometry/interface/NavSurface.h | 64 - .../NavGeometry/interface/NavSurfaceBuilder.h | 15 - .../NavGeometry/interface/NavVolume.h | 44 - .../NavGeometry/interface/NavVolume6Faces.h | 71 - .../NavGeometry/interface/NavVolumeSide.h | 45 - .../interface/ShiftingMagneticFieldProvider.h | 36 - .../NavGeometry/interface/SurfaceAndBounds.h | 49 - .../interface/VolumeCrossReturnType.h | 46 - .../NavGeometry/src/LinearEquation3.h | 116 - .../src/LinearSearchNavSurfaceImpl.cc | 50 - TrackPropagation/NavGeometry/src/NavCone.cc | 32 - .../NavGeometry/src/NavCylinder.cc | 27 - TrackPropagation/NavGeometry/src/NavPlane.cc | 27 - .../NavGeometry/src/NavSurfaceBuilder.cc | 28 - .../NavGeometry/src/NavVolume6Faces.cc | 358 - .../src/ShiftingMagneticFieldProvider.icc | 56 - .../NavGeometry/src/ThreePlaneCrossing.cc | 23 - .../NavGeometry/src/ThreePlaneCrossing.h | 15 - .../NavGeometry/test/DoubleVolumeTest.cpp | 379 - .../test/PropagatorTestInTrackerVolume.cpp | 470 - .../NavGeometry/test/SingleVolumeTest.cpp | 162 - TrackPropagation/NavGeometry/test/plot.C | 5 - .../stubs/HelixPropagationTestGenerator.cc | 172 - .../stubs/HelixPropagationTestGenerator.h | 60 - .../test/stubs/PropagationTestGenerator.cc | 141 - .../test/stubs/PropagationTestGenerator.h | 94 - .../test/stubs/PropagatorTestTree.cc | 232 - .../test/stubs/PropagatorTestTree.h | 130 - .../test/stubs/RandomCylinderGenerator.h | 56 - .../test/stubs/RandomPlaneGenerator.h | 35 - .../test/stubs/RandomPlaneGeneratorByAxis.cc | 182 - .../test/stubs/RandomPlaneGeneratorByAxis.h | 53 - .../test/stubs/UniformMomentumGenerator.cc | 24 - .../test/stubs/UniformMomentumGenerator.h | 21 - TrackPropagation/NavPropagator/BuildFile | 10 - .../NavPropagator/interface/NavPropagator.h | 96 - .../NavPropagator/src/NavPropagator.cc | 207 - .../NavPropagator/test/TrackerToMuonTest.cc | 121 - TrackPropagation/RungeKutta/BuildFile | 19 - .../interface/CartesianLorentzForce.h | 26 - .../RungeKutta/interface/CartesianState.h | 55 - .../interface/CartesianStateAdaptor.h | 42 - .../interface/CurvilinearLorentzForce.h | 28 - .../RungeKutta/interface/CurvilinearState.h | 93 - .../interface/CylindricalLorentzForce.h | 28 - .../RungeKutta/interface/CylindricalState.h | 87 - .../RungeKutta/interface/FrameChanger.h | 37 - .../RungeKutta/interface/PathToPlane2Order.h | 53 - .../RungeKutta/interface/RK4OneStep.h | 20 - .../RungeKutta/interface/RK4OneStepTempl.h | 33 - .../RungeKutta/interface/RK4PreciseSolver.h | 36 - .../RungeKutta/interface/RK4PreciseStep.h | 27 - .../RungeKutta/interface/RKAdaptiveSolver.h | 39 - .../interface/RKCartesianDerivative.h | 15 - .../interface/RKCartesianDistance.h | 27 - .../interface/RKCurvilinearDistance.h | 34 - .../interface/RKCylindricalDistance.h | 26 - .../RungeKutta/interface/RKDerivative.h | 19 - .../RungeKutta/interface/RKDistance.h | 19 - .../interface/RKLocalFieldProvider.h | 59 - .../RungeKutta/interface/RKOne4OrderStep.h | 32 - .../RungeKutta/interface/RKOneCashKarpStep.h | 28 - .../RungeKutta/interface/RKPropagatorInR.h | 35 - .../RungeKutta/interface/RKPropagatorInS.h | 80 - .../RungeKutta/interface/RKPropagatorInZ.h | 35 - .../RungeKutta/interface/RKSmallVector.h | 144 - .../RungeKutta/interface/RKSolver.h | 33 - .../RungeKutta/interface/RKSolverTempl.h | 36 - .../RungeKutta/interface/VectorDoublet.h | 86 - .../RungeKutta/src/CartesianLorentzForce.cc | 17 - .../src/CurvilinearLorentzForce.icc | 54 - .../src/CylindricalLorentzForce.icc | 67 - .../RungeKutta/src/PathToPlane2Order.cc | 79 - TrackPropagation/RungeKutta/src/RK4OneStep.cc | 23 - .../RungeKutta/src/RK4PreciseSolver.icc | 73 - .../RungeKutta/src/RK4PreciseStep.cc | 74 - .../RungeKutta/src/RKAdaptiveSolver.icc | 58 - .../RungeKutta/src/RKLocalFieldProvider.cc | 45 - .../RungeKutta/src/RKOneCashKarpStep.icc | 40 - .../RungeKutta/src/RKPropagatorInR.cc | 76 - .../RungeKutta/src/RKPropagatorInS.cc | 275 - .../RungeKutta/src/RKPropagatorInZ.cc | 82 - .../interface/SteppingHelixPropagator.h | 73 +- .../src/SteppingHelixPropagator.cc | 838 +- TrackingTools/AnalyticalJacobians/TagLog | 0 TrackingTools/IPTools/doc/html/index.html | 11 - TrackingTools/IPTools/doc/html/overview.html | 12 - .../RecoGeometry/doc/html/index.html | 11 - .../RecoGeometry/doc/html/overview.html | 12 - .../RoadSearchEventFilter/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../TrackAssociator/tools/classdiagram | 446 - .../TrajectoryFiltering/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - Utilities/General/interface/RedirectedSB.h | 32 - Utilities/ReleaseScripts/BuildFile | 2 - .../scripts/CreateCVSPackage.pl | 1081 ++- Utilities/Timing/TagLog | 0 Utilities/XrdAdaptor/doc/html/index.html | 11 - Utilities/XrdAdaptor/doc/html/overview.html | 12 - Validation/CSCRecHits/doc/html/index.html | 11 - Validation/CSCRecHits/doc/html/overview.html | 12 - Validation/Configuration/doc/html/index.html | 11 - .../Configuration/doc/html/overview.html | 12 - .../interface/EgammaSuperClusters.h | 9 +- .../EcalClusters/src/EgammaSuperClusters.cc | 95 +- .../src/EcalMixingModuleValidation.cc | 12 +- Validation/EcalDigis/test/HistoCompare.C | 11 +- Validation/EcalHits/test/DoCompare.C | 6 +- Validation/EcalHits/test/HistoCompare.C | 45 +- Validation/EcalHits/test/rootlogon.C | 4 +- Validation/EcalRecHits/test/HistoCompare.C | 11 +- .../EcalTriggerPrimitives/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - Validation/Generator/doc/html/index.html | 11 - Validation/Generator/doc/html/overview.html | 12 - Validation/Geometry/data/trackerMaterials.x0 | 41 +- .../Geometry/src/MaterialBudgetAction.cc | 13 +- Validation/Geometry/src/MaterialBudgetData.cc | 15 +- .../src/MaterialBudgetTrackerHistos.cc | 118 +- Validation/Geometry/test/MaterialBudget.C | 78 +- Validation/Geometry/test/MaterialBudget_TDR.C | 188 +- .../test/TrackerGeometryValidation.sh | 161 + .../test/TrackerMaterialBudgetComparison.C | 360 + Validation/GlobalHits/data/download.url | 1 - Validation/GlobalRecHits/doc/html/index.html | 11 - .../GlobalRecHits/doc/html/overview.html | 12 - .../HcalDigis/interface/HcalDigiTester.h | 100 +- Validation/HcalDigis/src/HcalDigiTester.cc | 320 +- .../HcalDigis/src/HcalSubdetDigiMonitor.cc | 123 - .../HcalDigis/src/HcalSubdetDigiMonitor.h | 70 - Validation/HcalDigis/src/SealModule.cc | 8 - .../MuonIdentification/doc/html/index.html | 11 - .../MuonIdentification/doc/html/overview.html | 12 - Validation/MuonIsolation/doc/html/index.html | 11 - .../MuonIsolation/doc/html/overview.html | 12 - .../MuonRPCGeometry/doc/html/index.html | 11 - .../MuonRPCGeometry/doc/html/overview.html | 12 - Validation/RPCRecHits/doc/html/index.html | 11 - Validation/RPCRecHits/doc/html/overview.html | 12 - .../RecoParticleFlow/doc/html/index.html | 11 - .../RecoParticleFlow/doc/html/overview.html | 12 - .../RecoPixelVertexing/test/DoCompare.C | 34 +- .../RecoPixelVertexing/test/HistoCompare.C | 10 +- Validation/RecoPixelVertexing/test/OvalFile | 3 +- .../RecoPixelVertexing/test/PixelTrackVal.cc | 138 +- .../RecoPixelVertexing/test/PixelVertexVal.cc | 149 +- .../RecoPixelVertexing/test/Validation.csh | 24 + .../test/Validation.csh.oref | 211 + .../RecoVertex/src/PrimaryVertexAnalyzer.cc | 10 +- .../test/VertexRecoValidOfflinePV.csh | 2 +- .../TrackerConfiguration/doc/html/index.html | 11 - .../doc/html/overview.html | 12 - .../TrackingMCTruth/doc/html/index.html | 11 - .../TrackingMCTruth/doc/html/overview.html | 12 - 1979 files changed, 13677 insertions(+), 101943 deletions(-) delete mode 100644 Alignment/CocoaApplication/bin/simple2DWithMirror.meas delete mode 100644 Alignment/CocoaApplication/bin/simple2DWithMirror.txt delete mode 100644 Alignment/CocoaApplication/interface/CocoaAnalyzer.h delete mode 100644 Alignment/CocoaApplication/src/CocoaAnalyzer.cc delete mode 100644 Alignment/CocoaApplication/src/SealModule.cc delete mode 100644 Alignment/CocoaApplication/test/configuration.xml delete mode 100644 Alignment/HIPAlignmentAlgorithm/doc/html/index.html delete mode 100644 Alignment/HIPAlignmentAlgorithm/doc/html/overview.html delete mode 100644 Alignment/LaserAlignment/doc/html/index.html delete mode 100644 Alignment/LaserAlignment/doc/html/overview.html delete mode 100644 Alignment/LaserAlignmentSimulation/doc/html/index.html delete mode 100644 Alignment/LaserAlignmentSimulation/doc/html/overview.html delete mode 100644 Alignment/LaserDQM/doc/html/index.html delete mode 100644 Alignment/LaserDQM/doc/html/overview.html delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariables.cc delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariablesIORoot.cc delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.cc delete mode 100644 Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.h delete mode 100644 Alignment/MuonAlignmentAlgorithms/doc/html/index.html delete mode 100644 Alignment/MuonAlignmentAlgorithms/doc/html/overview.html delete mode 100644 Alignment/OfflineValidation/doc/html/index.html delete mode 100644 Alignment/OfflineValidation/doc/html/overview.html delete mode 100644 Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h delete mode 100644 Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h delete mode 100644 Alignment/OptAlignCSV2DB/interface/OpticalAlignInfoRcd.h delete mode 100644 Alignment/OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc delete mode 100644 Alignment/OptAlignCSV2DB/src/OptAlignDataConverter.cc delete mode 100644 Alignment/OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc delete mode 100644 Alignment/OptAlignCSV2DB/src/SealModule.cc delete mode 100644 Alignment/OptAlignCSV2DB/test/opt_align_simple2DWithMirror.csv delete mode 100644 Alignment/ReferenceTrajectories/doc/html/index.html delete mode 100644 Alignment/ReferenceTrajectories/doc/html/overview.html delete mode 100644 Alignment/SurveyAnalysis/doc/html/index.html delete mode 100644 Alignment/SurveyAnalysis/doc/html/overview.html delete mode 100644 Alignment/TrackHitFilter/doc/html/index.html delete mode 100644 Alignment/TrackHitFilter/doc/html/overview.html delete mode 100644 Alignment/TwoBodyDecay/doc/html/index.html delete mode 100644 Alignment/TwoBodyDecay/doc/html/overview.html delete mode 100644 AnalysisAlgos/SiStripClusterInfoProducer/doc/html/index.html delete mode 100644 AnalysisAlgos/SiStripClusterInfoProducer/doc/html/overview.html delete mode 100644 AnalysisAlgos/TrackInfoProducer/doc/html/index.html delete mode 100644 AnalysisAlgos/TrackInfoProducer/doc/html/overview.html delete mode 100644 AnalysisDataFormats/EWK/doc/html/index.html delete mode 100644 AnalysisDataFormats/EWK/doc/html/overview.html delete mode 100644 AnalysisDataFormats/Egamma/doc/html/index.html delete mode 100644 AnalysisDataFormats/Egamma/doc/html/overview.html delete mode 100644 AnalysisDataFormats/SUSYBSMObjects/doc/html/index.html delete mode 100644 AnalysisDataFormats/SUSYBSMObjects/doc/html/overview.html delete mode 100644 AnalysisDataFormats/SiStripClusterInfo/doc/html/index.html delete mode 100644 AnalysisDataFormats/SiStripClusterInfo/doc/html/overview.html delete mode 100644 AnalysisDataFormats/TopObjects/doc/html/index.html delete mode 100644 AnalysisDataFormats/TopObjects/doc/html/overview.html delete mode 100644 AnalysisDataFormats/TrackInfo/doc/html/index.html delete mode 100644 AnalysisDataFormats/TrackInfo/doc/html/overview.html delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/BuildFile delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/AnalyzeTracksClusters.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysis.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysisFilter.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/MTCCNtupleMaker.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/SealModules.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngle.cc delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngleNew.cc delete mode 100755 AnalysisExamples/SiStripDetectorPerformance/test/ClusterAnalysis.sh delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/BadStrips.C delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.C delete mode 100755 AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.sh delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/PedestalEvolution.C delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/README delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/langaus.C delete mode 100644 AnalysisExamples/SiStripDetectorPerformance/test/readme.txt delete mode 100644 CalibCalorimetry/CastorCalib/doc/html/index.html delete mode 100644 CalibCalorimetry/CastorCalib/doc/html/overview.html delete mode 100644 CalibCalorimetry/Configuration/doc/html/index.html delete mode 100644 CalibCalorimetry/Configuration/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalCorrectionModules/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalCorrectionModules/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalLaserAnalyzer/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalLaserAnalyzer/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalLaserCorrection/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalLaserCorrection/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalLaserSorting/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalLaserSorting/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalSRTools/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalSRTools/doc/html/overview.html delete mode 100644 CalibCalorimetry/EcalTPGTools/doc/html/index.html delete mode 100644 CalibCalorimetry/EcalTPGTools/doc/html/overview.html delete mode 100644 CalibCalorimetry/HcalTPGIO/doc/html/index.html delete mode 100644 CalibCalorimetry/HcalTPGIO/doc/html/overview.html delete mode 100644 CalibFormats/CastorObjects/doc/html/index.html delete mode 100644 CalibFormats/CastorObjects/doc/html/overview.html delete mode 100644 CalibFormats/SiPixelObjects/doc/html/index.html delete mode 100644 CalibFormats/SiPixelObjects/doc/html/overview.html delete mode 100644 CalibMuon/CSCCalibration/BuildFile delete mode 100644 CalibMuon/CSCCalibration/doc/html/index.html delete mode 100644 CalibMuon/CSCCalibration/doc/html/overview.html delete mode 100644 CalibMuon/CSCCalibration/interface/AutoCorrMat.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCToAFEB.h delete mode 100644 CalibMuon/CSCCalibration/interface/CSCxTalk.h delete mode 100644 CalibMuon/CSCCalibration/interface/condbc.h delete mode 100644 CalibMuon/CSCCalibration/interface/condbon.h delete mode 100644 CalibMuon/CSCCalibration/interface/cscmap.h delete mode 100644 CalibMuon/CSCCalibration/src/CSCAFEBAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCAFEBThrAnalysis.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCAFEBdacAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCCompThreshAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCCrossTalkAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCGainAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCNoiseMatrixAnalyzer.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCThrTurnOnFcn.cc delete mode 100644 CalibMuon/CSCCalibration/src/CSCToAFEB.cc delete mode 100644 CalibMuon/CSCCalibration/src/SealModule.cc delete mode 100644 CalibMuon/Configuration/doc/html/index.html delete mode 100644 CalibMuon/Configuration/doc/html/overview.html delete mode 100644 CalibMuon/DTDigiSync/doc/html/index.html delete mode 100644 CalibMuon/DTDigiSync/doc/html/overview.html delete mode 100644 CalibMuon/RPCCalibration/doc/html/index.html delete mode 100644 CalibMuon/RPCCalibration/doc/html/overview.html delete mode 100644 CalibTracker/Configuration/doc/html/index.html delete mode 100644 CalibTracker/Configuration/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelESProducers/doc/html/index.html delete mode 100644 CalibTracker/SiPixelESProducers/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelErrorEstimation/doc/html/index.html delete mode 100644 CalibTracker/SiPixelErrorEstimation/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelGainCalibration/doc/html/index.html delete mode 100644 CalibTracker/SiPixelGainCalibration/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelIsAliveCalibration/doc/html/index.html delete mode 100644 CalibTracker/SiPixelIsAliveCalibration/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelSCurveCalibration/doc/html/index.html delete mode 100644 CalibTracker/SiPixelSCurveCalibration/doc/html/overview.html delete mode 100644 CalibTracker/SiPixelTools/doc/html/index.html delete mode 100644 CalibTracker/SiPixelTools/doc/html/overview.html delete mode 100644 CalibTracker/SiStripCommon/doc/html/index.html delete mode 100644 CalibTracker/SiStripCommon/doc/html/overview.html delete mode 100644 CalibTracker/SiStripDCS/doc/html/index.html delete mode 100644 CalibTracker/SiStripDCS/doc/html/overview.html delete mode 100644 CalibTracker/SiStripESProducers/doc/html/index.html delete mode 100644 CalibTracker/SiStripESProducers/doc/html/overview.html delete mode 100644 CalibTracker/SiStripHitEfficiency/doc/html/index.html delete mode 100644 CalibTracker/SiStripHitEfficiency/doc/html/overview.html delete mode 100644 CalibTracker/SiStripLorentzAngle/BuildFile delete mode 100644 CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h delete mode 100644 CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h delete mode 100644 CalibTracker/SiStripLorentzAngle/src/SealModules.cc delete mode 100644 CalibTracker/SiStripLorentzAngle/src/SiStripLorentzAngle.cc delete mode 100644 CalibTracker/SiStripLorentzAngle/src/TrackLocalAngle.cc delete mode 100644 CalibTracker/SiStripQuality/doc/html/index.html delete mode 100644 CalibTracker/SiStripQuality/doc/html/overview.html delete mode 100644 Calibration/HcalConnectivity/doc/html/index.html delete mode 100644 Calibration/HcalConnectivity/doc/html/overview.html delete mode 100644 Calibration/HcalIsolatedTrackReco/doc/html/index.html delete mode 100644 Calibration/HcalIsolatedTrackReco/doc/html/overview.html delete mode 100644 Calibration/IsolatedParticles/doc/html/index.html delete mode 100644 Calibration/IsolatedParticles/doc/html/overview.html delete mode 100644 Calibration/TkAlCaRecoProducers/doc/html/index.html delete mode 100644 Calibration/TkAlCaRecoProducers/doc/html/overview.html delete mode 100644 CaloOnlineTools/EcalTools/doc/html/index.html delete mode 100644 CaloOnlineTools/EcalTools/doc/html/overview.html delete mode 100644 CaloOnlineTools/HcalOnlineDb/doc/html/index.html delete mode 100644 CaloOnlineTools/HcalOnlineDb/doc/html/overview.html delete mode 100644 CommonTools/CandAlgos/doc/html/index.html delete mode 100644 CommonTools/CandAlgos/doc/html/overview.html delete mode 100644 CommonTools/CandUtils/doc/html/index.html delete mode 100644 CommonTools/CandUtils/doc/html/overview.html delete mode 100644 CommonTools/ConditionDBWriter/doc/html/index.html delete mode 100644 CommonTools/ConditionDBWriter/doc/html/overview.html delete mode 100644 CommonTools/RecoAlgos/doc/html/index.html delete mode 100644 CommonTools/RecoAlgos/doc/html/overview.html delete mode 100644 CommonTools/RecoUtils/doc/html/index.html delete mode 100644 CommonTools/RecoUtils/doc/html/overview.html delete mode 100644 CommonTools/UtilAlgos/doc/html/index.html delete mode 100644 CommonTools/UtilAlgos/doc/html/overview.html delete mode 100644 CommonTools/Utils/doc/html/index.html delete mode 100644 CommonTools/Utils/doc/html/overview.html delete mode 100644 CondCore/BTauPlugins/doc/html/index.html delete mode 100644 CondCore/BTauPlugins/doc/html/overview.html delete mode 100644 CondCore/BeamSpotPlugins/doc/html/index.html delete mode 100644 CondCore/BeamSpotPlugins/doc/html/overview.html delete mode 100644 CondCore/CastorPlugins/doc/html/index.html delete mode 100644 CondCore/CastorPlugins/doc/html/overview.html delete mode 100644 CondCore/DQMPlugins/doc/html/index.html delete mode 100644 CondCore/DQMPlugins/doc/html/overview.html delete mode 100644 CondCore/ESPlugins/doc/html/index.html delete mode 100644 CondCore/ESPlugins/doc/html/overview.html delete mode 100644 CondCore/EgammaPlugins/doc/html/index.html delete mode 100644 CondCore/EgammaPlugins/doc/html/overview.html delete mode 100644 CondCore/GeometryPlugins/doc/html/index.html delete mode 100644 CondCore/GeometryPlugins/doc/html/overview.html delete mode 100644 CondCore/HIPlugins/doc/html/index.html delete mode 100644 CondCore/HIPlugins/doc/html/overview.html delete mode 100644 CondCore/L1TPlugins/doc/html/index.html delete mode 100644 CondCore/L1TPlugins/doc/html/overview.html delete mode 100644 CondCore/LuminosityPlugins/doc/html/index.html delete mode 100644 CondCore/LuminosityPlugins/doc/html/overview.html delete mode 100644 CondCore/ORA/doc/html/index.html delete mode 100644 CondCore/ORA/doc/html/overview.html delete mode 100644 CondCore/PhysicsToolsPlugins/doc/html/index.html delete mode 100644 CondCore/PhysicsToolsPlugins/doc/html/overview.html delete mode 100644 CondCore/PopCon/doc/html/index.html delete mode 100644 CondCore/PopCon/doc/html/overview.html delete mode 100644 CondCore/RecoMuonPlugins/doc/html/index.html delete mode 100644 CondCore/RecoMuonPlugins/doc/html/overview.html delete mode 100644 CondCore/RunInfoPlugins/doc/html/index.html delete mode 100644 CondCore/RunInfoPlugins/doc/html/overview.html delete mode 100644 CondCore/TagCollection/doc/html/index.html delete mode 100644 CondCore/TagCollection/doc/html/overview.html delete mode 100644 CondCore/Utilities/doc/html/index.html delete mode 100644 CondCore/Utilities/doc/html/overview.html delete mode 100644 CondFormats/AlignmentRecord/doc/html/index.html delete mode 100644 CondFormats/AlignmentRecord/doc/html/overview.html delete mode 100644 CondFormats/BTauObjects/doc/html/index.html delete mode 100644 CondFormats/BTauObjects/doc/html/overview.html delete mode 100644 CondFormats/BeamSpotObjects/doc/html/index.html delete mode 100644 CondFormats/BeamSpotObjects/doc/html/overview.html delete mode 100644 CondFormats/CastorObjects/doc/html/index.html delete mode 100644 CondFormats/CastorObjects/doc/html/overview.html delete mode 100644 CondFormats/Common/doc/html/index.html delete mode 100644 CondFormats/Common/doc/html/overview.html delete mode 100644 CondFormats/DQMObjects/doc/html/index.html delete mode 100644 CondFormats/DQMObjects/doc/html/overview.html delete mode 100644 CondFormats/ESObjects/doc/html/index.html delete mode 100644 CondFormats/ESObjects/doc/html/overview.html delete mode 100644 CondFormats/EcalCorrections/doc/html/index.html delete mode 100644 CondFormats/EcalCorrections/doc/html/overview.html delete mode 100644 CondFormats/EgammaObjects/doc/html/index.html delete mode 100644 CondFormats/EgammaObjects/doc/html/overview.html delete mode 100644 CondFormats/GeometryObjects/doc/html/index.html delete mode 100644 CondFormats/GeometryObjects/doc/html/overview.html delete mode 100644 CondFormats/HIObjects/doc/html/index.html delete mode 100644 CondFormats/HIObjects/doc/html/overview.html create mode 100644 CondFormats/HcalMapping/TagLog delete mode 100644 CondFormats/JetMETObjects/doc/html/index.html delete mode 100644 CondFormats/JetMETObjects/doc/html/overview.html delete mode 100644 CondFormats/L1TObjects/doc/html/index.html delete mode 100644 CondFormats/L1TObjects/doc/html/overview.html delete mode 100644 CondFormats/Luminosity/doc/html/index.html delete mode 100644 CondFormats/Luminosity/doc/html/overview.html delete mode 100644 CondFormats/PhysicsToolsObjects/doc/html/index.html delete mode 100644 CondFormats/PhysicsToolsObjects/doc/html/overview.html delete mode 100644 CondFormats/RecoMuonObjects/doc/html/index.html delete mode 100644 CondFormats/RecoMuonObjects/doc/html/overview.html delete mode 100644 CondFormats/RunInfo/doc/html/index.html delete mode 100644 CondFormats/RunInfo/doc/html/overview.html create mode 100644 CondFormats/SiStripObjects/interface/SiStripApvGain.h create mode 100644 CondFormats/SiStripObjects/src/SiStripApvGain.cc create mode 100644 CondFormats/SiStripObjects/src/T_EventSetup_SiStripApvGain.cc delete mode 100644 CondTools/DQM/doc/html/index.html delete mode 100644 CondTools/DQM/doc/html/overview.html delete mode 100644 CondTools/Geometry/doc/html/index.html delete mode 100644 CondTools/Geometry/doc/html/overview.html delete mode 100644 CondTools/L1Trigger/doc/html/index.html delete mode 100644 CondTools/L1Trigger/doc/html/overview.html delete mode 100644 CondTools/Luminosity/doc/html/index.html delete mode 100644 CondTools/Luminosity/doc/html/overview.html delete mode 100644 CondTools/RunInfo/doc/html/index.html delete mode 100644 CondTools/RunInfo/doc/html/overview.html create mode 100644 Configuration/EventContent/doc/EventContent.doc delete mode 100644 Configuration/GlobalRuns/doc/html/index.html delete mode 100644 Configuration/GlobalRuns/doc/html/overview.html create mode 100755 Configuration/SVSuite/data/runall.sh delete mode 100644 Configuration/SiStripDAQ/doc/html/index.html delete mode 100644 Configuration/SiStripDAQ/doc/html/overview.html delete mode 100644 Configuration/Skimming/doc/html/index.html delete mode 100644 Configuration/Skimming/doc/html/overview.html rename Configuration/StandardSequences/doc/{Reconstruction.doc => Sequences.doc} (71%) delete mode 100644 DPGAnalysis/SiStripTools/doc/html/index.html delete mode 100644 DPGAnalysis/SiStripTools/doc/html/overview.html delete mode 100644 DPGAnalysis/Skims/doc/html/index.html delete mode 100644 DPGAnalysis/Skims/doc/html/overview.html delete mode 100644 DQM/BeamMonitor/doc/html/index.html delete mode 100644 DQM/BeamMonitor/doc/html/overview.html delete mode 100644 DQM/CastorMonitor/doc/html/index.html delete mode 100644 DQM/CastorMonitor/doc/html/overview.html delete mode 100644 DQM/DTMonitorClient/BuildFile delete mode 100644 DQM/DTMonitorClient/doc/html/index.html delete mode 100644 DQM/DTMonitorClient/doc/html/overview.html delete mode 100644 DQM/DTMonitorClient/interface/DTDQMClient.h delete mode 100644 DQM/DTMonitorClient/interface/DTNoiseClient.h delete mode 100644 DQM/DTMonitorClient/interface/DTWebInterface.h delete mode 100644 DQM/DTMonitorClient/src/DTDQMClient.cc delete mode 100644 DQM/DTMonitorClient/src/DTNoiseClient.cc delete mode 100644 DQM/DTMonitorClient/src/DTWebInterface.cc delete mode 100644 DQM/DTMonitorClient/test/QualityTests.xml delete mode 100644 DQM/EcalBarrelMonitorDbModule/test/data/tb-temperature.xml delete mode 100644 DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h delete mode 100644 DQM/EcalBarrelMonitorTasks/src/EBClusterTask.cc delete mode 100644 DQM/EcalCommon/doc/html/index.html delete mode 100644 DQM/EcalCommon/doc/html/overview.html delete mode 100644 DQM/EcalEndcapMonitorClient/doc/html/index.html delete mode 100644 DQM/EcalEndcapMonitorClient/doc/html/overview.html delete mode 100644 DQM/EcalEndcapMonitorDbModule/doc/html/index.html delete mode 100644 DQM/EcalEndcapMonitorDbModule/doc/html/overview.html delete mode 100644 DQM/EcalEndcapMonitorModule/doc/html/index.html delete mode 100644 DQM/EcalEndcapMonitorModule/doc/html/overview.html delete mode 100644 DQM/EcalEndcapMonitorTasks/doc/html/index.html delete mode 100644 DQM/EcalEndcapMonitorTasks/doc/html/overview.html delete mode 100644 DQM/EcalPreshowerMonitorClient/doc/html/index.html delete mode 100644 DQM/EcalPreshowerMonitorClient/doc/html/overview.html delete mode 100644 DQM/EcalPreshowerMonitorModule/doc/html/index.html delete mode 100644 DQM/EcalPreshowerMonitorModule/doc/html/overview.html delete mode 100644 DQM/HLTEvF/BuildFile delete mode 100644 DQM/HLTEvF/interface/HltAnalyzer.h delete mode 100644 DQM/HLTEvF/src/HltAnalyzer.cc delete mode 100644 DQM/HLTEvF/src/SealModule.cc delete mode 100644 DQM/HLXMonitor/doc/html/index.html delete mode 100644 DQM/HLXMonitor/doc/html/overview.html delete mode 100644 DQM/L1TMonitorClient/doc/html/index.html delete mode 100644 DQM/L1TMonitorClient/doc/html/overview.html delete mode 100644 DQM/Physics/doc/html/index.html delete mode 100644 DQM/Physics/doc/html/overview.html delete mode 100644 DQM/RCTMonitor/doc/html/index.html delete mode 100644 DQM/RCTMonitor/doc/html/overview.html delete mode 100644 DQM/RPCMonitorDigi/interface/RPCMonitorSync.h delete mode 100644 DQM/RPCMonitorDigi/src/RPCMonitorSync.cc delete mode 100644 DQM/SiPixelCommon/doc/html/index.html delete mode 100644 DQM/SiPixelCommon/doc/html/overview.html delete mode 100644 DQM/SiPixelHistoricInfoClient/doc/html/index.html delete mode 100644 DQM/SiPixelHistoricInfoClient/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorClient/BuildFile delete mode 100644 DQM/SiPixelMonitorClient/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorClient/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelUtility.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h delete mode 100644 DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h delete mode 100644 DQM/SiPixelMonitorClient/interface/TmModule.h delete mode 100644 DQM/SiPixelMonitorClient/interface/TrackerMap.h delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelConfigParser.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelConfigWriter.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelInformationExtractor.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelQualityTester.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelUtility.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelWebClient.cc delete mode 100644 DQM/SiPixelMonitorClient/src/SiPixelWebInterface.cc delete mode 100644 DQM/SiPixelMonitorClient/src/TmModule.cc delete mode 100644 DQM/SiPixelMonitorClient/src/TrackerMap.cc delete mode 100644 DQM/SiPixelMonitorClient/test/.WebLib.js delete mode 100644 DQM/SiPixelMonitorClient/test/.profile.xml delete mode 100644 DQM/SiPixelMonitorClient/test/sendCmdToApp.pl delete mode 100644 DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml delete mode 100644 DQM/SiPixelMonitorClient/test/sipixel_qualitytest_config.xml delete mode 100644 DQM/SiPixelMonitorClient/test/style.css delete mode 100644 DQM/SiPixelMonitorCluster/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorCluster/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorDigi/BuildFile delete mode 100644 DQM/SiPixelMonitorDigi/doc/SiPixelMonitorDigi.doc delete mode 100644 DQM/SiPixelMonitorDigi/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorDigi/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h delete mode 100644 DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h delete mode 100644 DQM/SiPixelMonitorDigi/src/SiPixelDigiModule.cc delete mode 100644 DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc delete mode 100644 DQM/SiPixelMonitorRawData/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorRawData/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorRecHit/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorRecHit/doc/html/overview.html delete mode 100644 DQM/SiPixelMonitorTrack/doc/html/index.html delete mode 100644 DQM/SiPixelMonitorTrack/doc/html/overview.html create mode 100644 DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h create mode 100644 DQM/SiStripCommissioningAnalysis/src/MeanAndStdDev.cc delete mode 100644 DQM/SiStripCommissioningDbClients/doc/html/index.html delete mode 100644 DQM/SiStripCommissioningDbClients/doc/html/overview.html create mode 100644 DQM/SiStripMonitorClient/test/.trackermap.txt create mode 100755 DQM/SiStripMonitorClient/test/StopAll delete mode 100644 DQM/SiStripMonitorHardware/doc/html/index.html delete mode 100644 DQM/SiStripMonitorHardware/doc/html/overview.html delete mode 100644 DQM/SiStripMonitorTrack/doc/html/index.html delete mode 100644 DQM/SiStripMonitorTrack/doc/html/overview.html delete mode 100644 DQM/TrackerCommon/doc/html/index.html delete mode 100644 DQM/TrackerCommon/doc/html/overview.html delete mode 100644 DQM/TrackingMonitor/doc/html/index.html delete mode 100644 DQM/TrackingMonitor/doc/html/overview.html delete mode 100644 DQM/TrigXMonitor/doc/html/index.html delete mode 100644 DQM/TrigXMonitor/doc/html/overview.html delete mode 100644 DQM/TrigXMonitorClient/doc/html/index.html delete mode 100644 DQM/TrigXMonitorClient/doc/html/overview.html delete mode 100644 DQMOffline/Alignment/doc/html/index.html delete mode 100644 DQMOffline/Alignment/doc/html/overview.html delete mode 100644 DQMOffline/CalibCalo/doc/html/index.html delete mode 100644 DQMOffline/CalibCalo/doc/html/overview.html delete mode 100644 DQMOffline/CalibMuon/doc/html/index.html delete mode 100644 DQMOffline/CalibMuon/doc/html/overview.html delete mode 100644 DQMOffline/CalibTracker/doc/html/index.html delete mode 100644 DQMOffline/CalibTracker/doc/html/overview.html delete mode 100644 DQMOffline/Configuration/doc/html/index.html delete mode 100644 DQMOffline/Configuration/doc/html/overview.html delete mode 100644 DQMOffline/EGamma/doc/html/index.html delete mode 100644 DQMOffline/EGamma/doc/html/overview.html delete mode 100644 DQMOffline/Ecal/doc/html/index.html delete mode 100644 DQMOffline/Ecal/doc/html/overview.html delete mode 100644 DQMOffline/JetMET/doc/html/index.html delete mode 100644 DQMOffline/JetMET/doc/html/overview.html delete mode 100644 DQMOffline/Muon/doc/html/index.html delete mode 100644 DQMOffline/Muon/doc/html/overview.html delete mode 100644 DQMOffline/PFTau/doc/html/index.html delete mode 100644 DQMOffline/PFTau/doc/html/overview.html delete mode 100644 DQMOffline/RecoB/doc/html/index.html delete mode 100644 DQMOffline/RecoB/doc/html/overview.html delete mode 100644 DQMOffline/Trigger/doc/html/index.html delete mode 100644 DQMOffline/Trigger/doc/html/overview.html delete mode 100644 DQMServices/Diagnostic/doc/html/index.html delete mode 100644 DQMServices/Diagnostic/doc/html/overview.html delete mode 100644 DataFormats/Alignment/doc/html/index.html delete mode 100644 DataFormats/Alignment/doc/html/overview.html delete mode 100644 DataFormats/BeamSpot/doc/html/index.html delete mode 100644 DataFormats/BeamSpot/doc/html/overview.html delete mode 100644 DataFormats/CLHEP/doc/html/index.html delete mode 100644 DataFormats/CLHEP/doc/html/overview.html delete mode 100644 DataFormats/CSCRecHit/interface/CSCStripHit.h delete mode 100644 DataFormats/CSCRecHit/interface/CSCStripHitCollection.h delete mode 100644 DataFormats/CSCRecHit/interface/CSCWireHit.h delete mode 100644 DataFormats/CSCRecHit/interface/CSCWireHitCollection.h delete mode 100644 DataFormats/CSCRecHit/src/CSCStripHit.cc delete mode 100644 DataFormats/CSCRecHit/src/CSCWireHit.cc create mode 100644 DataFormats/CaloRecHit/TagLog delete mode 100644 DataFormats/CastorReco/doc/html/index.html delete mode 100644 DataFormats/CastorReco/doc/html/overview.html delete mode 100644 DataFormats/EgammaTrackReco/doc/html/index.html delete mode 100644 DataFormats/EgammaTrackReco/doc/html/overview.html delete mode 100644 DataFormats/FP420Cluster/doc/html/index.html delete mode 100644 DataFormats/FP420Cluster/doc/html/overview.html delete mode 100644 DataFormats/FP420Digi/doc/html/index.html delete mode 100644 DataFormats/FP420Digi/doc/html/overview.html delete mode 100644 DataFormats/FWLite/doc/html/index.html delete mode 100644 DataFormats/FWLite/doc/html/overview.html delete mode 100644 DataFormats/GeometryCommonDetAlgo/doc/html/index.html delete mode 100644 DataFormats/GeometryCommonDetAlgo/doc/html/overview.html delete mode 100644 DataFormats/GeometrySurface/doc/html/index.html delete mode 100644 DataFormats/GeometrySurface/doc/html/overview.html delete mode 100644 DataFormats/GeometryVector/doc/html/index.html delete mode 100644 DataFormats/GeometryVector/doc/html/overview.html delete mode 100644 DataFormats/GsfTrackReco/doc/html/index.html delete mode 100644 DataFormats/GsfTrackReco/doc/html/overview.html delete mode 100644 DataFormats/HcalCalibObjects/doc/html/index.html delete mode 100644 DataFormats/HcalCalibObjects/doc/html/overview.html delete mode 100644 DataFormats/HcalIsolatedTrack/doc/html/index.html delete mode 100644 DataFormats/HcalIsolatedTrack/doc/html/overview.html delete mode 100644 DataFormats/HeavyIonEvent/doc/html/index.html delete mode 100644 DataFormats/HeavyIonEvent/doc/html/overview.html delete mode 100644 DataFormats/Histograms/doc/html/index.html delete mode 100644 DataFormats/Histograms/doc/html/overview.html delete mode 100644 DataFormats/LaserAlignment/doc/html/index.html delete mode 100644 DataFormats/LaserAlignment/doc/html/overview.html delete mode 100644 DataFormats/Luminosity/doc/html/index.html delete mode 100644 DataFormats/Luminosity/doc/html/overview.html delete mode 100644 DataFormats/MuonSeed/doc/html/index.html delete mode 100644 DataFormats/MuonSeed/doc/html/overview.html delete mode 100644 DataFormats/ParticleFlowCandidate/doc/html/index.html delete mode 100644 DataFormats/ParticleFlowCandidate/doc/html/overview.html delete mode 100644 DataFormats/PatCandidates/doc/html/index.html delete mode 100644 DataFormats/PatCandidates/doc/html/overview.html delete mode 100644 DataFormats/PixelMatchTrackReco/doc/html/index.html delete mode 100644 DataFormats/PixelMatchTrackReco/doc/html/overview.html delete mode 100644 DataFormats/Provenance/doc/html/index.html delete mode 100644 DataFormats/Provenance/doc/html/overview.html delete mode 100755 DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h delete mode 100755 DataFormats/RecoCandidate/src/CaloRecHitCandidate.cc delete mode 100644 DataFormats/RoadSearchSeed/doc/html/index.html delete mode 100644 DataFormats/RoadSearchSeed/doc/html/overview.html delete mode 100644 DataFormats/Scalers/doc/html/index.html delete mode 100644 DataFormats/Scalers/doc/html/overview.html delete mode 100644 DataFormats/SiPixelRawData/doc/html/index.html delete mode 100644 DataFormats/SiPixelRawData/doc/html/overview.html delete mode 100644 DataFormats/SiPixelRawData/doc/tex/RawDataFormat.tex delete mode 100644 DataFormats/StdDictionaries/doc/html/index.html delete mode 100644 DataFormats/StdDictionaries/doc/html/overview.html delete mode 100644 DataFormats/TauReco/doc/html/index.html delete mode 100644 DataFormats/TauReco/doc/html/overview.html delete mode 100644 DataFormats/TrackingSeed/BuildFile delete mode 100644 DataFormats/TrackingSeed/doc/html/index.html delete mode 100644 DataFormats/TrackingSeed/doc/html/overview.html delete mode 100644 DataFormats/TrackingSeed/interface/TrackingSeed.h delete mode 100644 DataFormats/TrackingSeed/interface/TrackingSeedCollection.h delete mode 100644 DataFormats/TrackingSeed/interface/TrackingSeedCollectionfwd.h delete mode 100644 DataFormats/TrackingSeed/interface/TrackingSeedfwd.h delete mode 100755 DataFormats/TrackingSeed/src/classes.h delete mode 100755 DataFormats/TrackingSeed/src/classes_def.xml delete mode 100644 DataFormats/V0Candidate/doc/html/index.html delete mode 100644 DataFormats/V0Candidate/doc/html/overview.html delete mode 100644 DataFormats/WrappedStdDictionaries/doc/html/index.html delete mode 100644 DataFormats/WrappedStdDictionaries/doc/html/overview.html create mode 100644 DetectorDescription/OnlineDBLoader/TagLog delete mode 100644 DiffractiveForwardAnalysis/Configuration/doc/html/index.html delete mode 100644 DiffractiveForwardAnalysis/Configuration/doc/html/overview.html delete mode 100644 DiffractiveForwardAnalysis/Skimming/doc/html/index.html delete mode 100644 DiffractiveForwardAnalysis/Skimming/doc/html/overview.html create mode 100644 Documentation/CodingRules/TagLog delete mode 100644 Documentation/PhysicsTools/Makefile create mode 100644 Documentation/PhysicsTools/TagLog delete mode 100644 Documentation/PhysicsTools/colornames.sty delete mode 100644 Documentation/PhysicsTools/cpplistings.sty delete mode 100644 Documentation/PhysicsTools/doc/html/index.html delete mode 100644 Documentation/PhysicsTools/doc/html/overview.html delete mode 100755 Documentation/PhysicsTools/document.tex delete mode 100644 Documentation/PhysicsTools/listings.cfg delete mode 100644 Documentation/PhysicsTools/listings.sty delete mode 100644 Documentation/PhysicsTools/lstdoc.sty delete mode 100644 Documentation/PhysicsTools/lstlang1.sty delete mode 100644 Documentation/PhysicsTools/lstlang2.sty delete mode 100644 Documentation/PhysicsTools/lstlang3.sty delete mode 100644 Documentation/PhysicsTools/lstmisc.sty delete mode 100644 Documentation/PhysicsTools/lstpatch.sty delete mode 100644 Documentation/PhysicsTools/mem10.clo delete mode 100644 Documentation/PhysicsTools/mem11.clo delete mode 100644 Documentation/PhysicsTools/mem12.clo delete mode 100644 Documentation/PhysicsTools/mem14.clo delete mode 100644 Documentation/PhysicsTools/mem17.clo delete mode 100644 Documentation/PhysicsTools/mem9.clo delete mode 100644 Documentation/PhysicsTools/memarticle.cls delete mode 100644 Documentation/PhysicsTools/memhfixc.sty delete mode 100644 Documentation/PhysicsTools/memoir.cls delete mode 100644 Documentation/PhysicsTools/mempatch.sty delete mode 100644 Documentation/PhysicsTools/miktex.mk delete mode 100644 Documentation/PhysicsTools/notes.rst delete mode 100644 Documentation/PhysicsTools/pdfdraftcopy.sty delete mode 100644 Documentation/PhysicsTools/rcs.sty delete mode 100644 Documentation/PhysicsTools/tasks.rst create mode 100755 Documentation/ReferenceManualPages/doc/PhysicsTools.doc create mode 100644 Documentation/ReferenceManualPages/doc/PixelRecoCollections.doi create mode 100644 Documentation/ReferenceManualPages/doc/StripRecoCollections.doi create mode 100644 Documentation/ReleaseNotes/TagLog delete mode 100644 Documentation/ReleaseNotes/doc/ReleaseNotes010.txt delete mode 100644 Documentation/ReleaseNotes/doc/html/index.html delete mode 100644 Documentation/ReleaseNotes/doc/html/overview.html create mode 100644 Documentation/RepositoryAndReleases/TagLog delete mode 100644 EgammaAnalysis/CSA07Skims/doc/html/index.html delete mode 100644 EgammaAnalysis/CSA07Skims/doc/html/overview.html delete mode 100644 EgammaAnalysis/Configuration/doc/html/index.html delete mode 100644 EgammaAnalysis/Configuration/doc/html/overview.html delete mode 100644 EgammaAnalysis/ElectronIDESSources/doc/html/index.html delete mode 100644 EgammaAnalysis/ElectronIDESSources/doc/html/overview.html delete mode 100644 EgammaAnalysis/PhotonIDProducers/doc/html/index.html delete mode 100644 EgammaAnalysis/PhotonIDProducers/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/Configuration/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/Configuration/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/Skimming/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/Skimming/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/Utilities/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/Utilities/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/WENu/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/WENu/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/WMuNu/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/WMuNu/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/WReco/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/WReco/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/ZEE/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/ZEE/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/ZMuMu/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/ZMuMu/doc/html/overview.html delete mode 100644 ElectroWeakAnalysis/ZReco/doc/html/index.html delete mode 100644 ElectroWeakAnalysis/ZReco/doc/html/overview.html delete mode 100644 EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc delete mode 100644 EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h delete mode 100644 EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.cc delete mode 100644 EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h delete mode 100644 EventFilter/CastorRawToDigi/doc/html/index.html delete mode 100644 EventFilter/CastorRawToDigi/doc/html/overview.html delete mode 100644 EventFilter/Configuration/doc/html/index.html delete mode 100644 EventFilter/Configuration/doc/html/overview.html delete mode 100644 EventFilter/Cosmics/doc/html/index.html delete mode 100644 EventFilter/Cosmics/doc/html/overview.html delete mode 100644 EventFilter/DTTFRawToDigi/doc/html/index.html delete mode 100644 EventFilter/DTTFRawToDigi/doc/html/overview.html delete mode 100644 EventFilter/ESDigiToRaw/doc/html/index.html delete mode 100644 EventFilter/ESDigiToRaw/doc/html/overview.html delete mode 100644 EventFilter/ESRawToDigi/doc/html/index.html delete mode 100644 EventFilter/ESRawToDigi/doc/html/overview.html delete mode 100644 EventFilter/EcalDigiToRaw/doc/html/index.html delete mode 100644 EventFilter/EcalDigiToRaw/doc/html/overview.html delete mode 100644 EventFilter/EcalRawToDigiDev/doc/html/index.html delete mode 100644 EventFilter/EcalRawToDigiDev/doc/html/overview.html delete mode 100644 EventFilter/FEDInterface/doc/html/index.html delete mode 100644 EventFilter/FEDInterface/doc/html/overview.html delete mode 100644 EventFilter/GctRawToDigi/BuildFile delete mode 100644 EventFilter/GctRawToDigi/src/GctUnpacker.cc delete mode 100644 EventFilter/GctRawToDigi/src/GctUnpacker.h delete mode 100644 EventFilter/Goodies/doc/html/index.html delete mode 100644 EventFilter/Goodies/doc/html/overview.html delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/BuildFile delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/src/L1GTDigiToRaw.cc delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/src/L1GlobaTriggerRawToDigi.cc delete mode 100644 EventFilter/L1GlobalTriggerRawToDigi/src/SealModule.cc delete mode 100644 EventFilter/Modules/doc/html/index.html delete mode 100644 EventFilter/Modules/doc/html/overview.html delete mode 100644 EventFilter/RawDataCollector/doc/html/index.html delete mode 100644 EventFilter/RawDataCollector/doc/html/overview.html delete mode 100644 EventFilter/SMProxyServer/doc/html/index.html delete mode 100644 EventFilter/SMProxyServer/doc/html/overview.html delete mode 100644 EventFilter/ScalersRawToDigi/doc/html/index.html delete mode 100644 EventFilter/ScalersRawToDigi/doc/html/overview.html delete mode 100644 EventFilter/ShmBuffer/doc/html/index.html delete mode 100644 EventFilter/ShmBuffer/doc/html/overview.html delete mode 100644 FWCore/Catalog/doc/html/index.html delete mode 100644 FWCore/Catalog/doc/html/overview.html delete mode 100644 FWCore/Common/doc/html/index.html delete mode 100644 FWCore/Common/doc/html/overview.html delete mode 100644 FWCore/GuiBrowsers/doc/html/index.html delete mode 100644 FWCore/GuiBrowsers/doc/html/overview.html delete mode 100644 FWCore/PluginManager/doc/html/index.html delete mode 100644 FWCore/PluginManager/doc/html/overview.html delete mode 100644 FWCore/PrescaleService/doc/html/index.html delete mode 100644 FWCore/PrescaleService/doc/html/overview.html delete mode 100755 FWCore/Python/BuildFile delete mode 100644 FWCore/Python/doc/Python.doc delete mode 100644 FWCore/Python/src/EventWrapper.cc delete mode 100644 FWCore/Python/src/EventWrapper.h delete mode 100755 FWCore/Python/src/PyModule.cc delete mode 100755 FWCore/Python/src/PythonFilter.cc delete mode 100644 FWCore/Python/src/PythonFilter.h delete mode 100644 FWCore/Python/src/PythonManager.h delete mode 100644 FWCore/Python/src/PythonService.cc delete mode 100644 FWCore/Python/src/PythonService.h delete mode 100644 FWCore/Python/src/SealModule.cc delete mode 100644 FWCore/Python/test/loggingExample.cfg delete mode 100644 FWCore/Python/test/loggingExample.py delete mode 100644 FWCore/Python/test/loggingServer.py delete mode 100644 FWCore/Python/test/serviceExample.py delete mode 100644 FWCore/Python/test/serviceTest.cfg delete mode 100644 FWCore/Python/test/simpleTest.cfg delete mode 100644 FWCore/PythonParameterSet/doc/html/index.html delete mode 100644 FWCore/PythonParameterSet/doc/html/overview.html delete mode 100644 FWCore/RootAutoLibraryLoader/doc/html/index.html delete mode 100644 FWCore/RootAutoLibraryLoader/doc/html/overview.html delete mode 100644 FWCore/Sources/doc/html/index.html delete mode 100644 FWCore/Sources/doc/html/overview.html delete mode 100644 FWCore/Version/doc/html/index.html delete mode 100644 FWCore/Version/doc/html/overview.html delete mode 100644 FastSimDataFormats/External/doc/html/index.html delete mode 100644 FastSimDataFormats/External/doc/html/overview.html delete mode 100644 FastSimDataFormats/L1GlobalMuonTrigger/doc/html/index.html delete mode 100644 FastSimDataFormats/L1GlobalMuonTrigger/doc/html/overview.html delete mode 100644 FastSimDataFormats/NuclearInteractions/doc/html/index.html delete mode 100644 FastSimDataFormats/NuclearInteractions/doc/html/overview.html delete mode 100644 FastSimDataFormats/PileUpEvents/doc/html/index.html delete mode 100644 FastSimDataFormats/PileUpEvents/doc/html/overview.html delete mode 100644 FastSimulation/Configuration/doc/html/index.html delete mode 100644 FastSimulation/Configuration/doc/html/overview.html delete mode 100644 FastSimulation/EgammaElectronAlgos/doc/html/index.html delete mode 100644 FastSimulation/EgammaElectronAlgos/doc/html/overview.html delete mode 100644 FastSimulation/ForwardDetectors/doc/html/index.html delete mode 100644 FastSimulation/ForwardDetectors/doc/html/overview.html delete mode 100644 FastSimulation/HighLevelTrigger/doc/html/index.html delete mode 100644 FastSimulation/HighLevelTrigger/doc/html/overview.html delete mode 100644 FastSimulation/L1CaloTriggerProducer/doc/html/index.html delete mode 100644 FastSimulation/L1CaloTriggerProducer/doc/html/overview.html delete mode 100644 FastSimulation/MuonSimHitProducer/doc/html/index.html delete mode 100644 FastSimulation/MuonSimHitProducer/doc/html/overview.html delete mode 100644 FastSimulation/Tracking/doc/html/index.html delete mode 100644 FastSimulation/Tracking/doc/html/overview.html delete mode 100644 FastSimulation/Validation/doc/html/index.html delete mode 100644 FastSimulation/Validation/doc/html/overview.html delete mode 100644 GeneratorInterface/AMPTInterface/doc/html/index.html delete mode 100644 GeneratorInterface/AMPTInterface/doc/html/overview.html create mode 100644 GeneratorInterface/AlpgenInterface/BuildFile rename {Alignment/CommonAlignmentMonitor => GeneratorInterface/AlpgenInterface}/doc/html/index.html (100%) rename {Alignment/CommonAlignmentMonitor => GeneratorInterface/AlpgenInterface}/doc/html/overview.html (100%) create mode 100644 GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h create mode 100644 GeneratorInterface/AlpgenInterface/src/AlpgenSource.cc rename GeneratorInterface/{MCatNLOInterface/src/HepEvt.F => AlpgenInterface/src/FortranTools.F} (51%) rename GeneratorInterface/{MCatNLOInterface => AlpgenInterface}/src/SealModule.cc (53%) create mode 100644 GeneratorInterface/AlpgenInterface/src/alpg_match.F delete mode 100644 GeneratorInterface/Configuration/doc/html/index.html delete mode 100644 GeneratorInterface/Configuration/doc/html/overview.html delete mode 100644 GeneratorInterface/Core/doc/html/index.html delete mode 100644 GeneratorInterface/Core/doc/html/overview.html delete mode 100644 GeneratorInterface/ExhumeInterface/doc/html/index.html delete mode 100644 GeneratorInterface/ExhumeInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/ExternalDecays/doc/html/index.html delete mode 100644 GeneratorInterface/ExternalDecays/doc/html/overview.html delete mode 100644 GeneratorInterface/GenExtensions/doc/html/index.html delete mode 100644 GeneratorInterface/GenExtensions/doc/html/overview.html delete mode 100644 GeneratorInterface/GenFilters/doc/html/index.html delete mode 100644 GeneratorInterface/GenFilters/doc/html/overview.html delete mode 100644 GeneratorInterface/Herwig6Interface/BuildFile delete mode 100644 GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.cc delete mode 100644 GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/HepEvt.F delete mode 100644 GeneratorInterface/Herwig6Interface/src/Herwig6Source.cc delete mode 100644 GeneratorInterface/Herwig6Interface/src/HerwigWrapper6_4.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/IO_BaseClass.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/IO_HERWIG.cc delete mode 100644 GeneratorInterface/Herwig6Interface/src/IO_HERWIG.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/ParticleData.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/ParticleDataTable.h delete mode 100644 GeneratorInterface/Herwig6Interface/src/SealModule.cc delete mode 100644 GeneratorInterface/Herwig6Interface/test/H4muAnalyzer.cc delete mode 100644 GeneratorInterface/HiGenCommon/doc/html/index.html delete mode 100644 GeneratorInterface/HiGenCommon/doc/html/overview.html delete mode 100644 GeneratorInterface/HijingInterface/doc/html/index.html delete mode 100644 GeneratorInterface/HijingInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/LHEInterface/doc/html/index.html delete mode 100644 GeneratorInterface/LHEInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/MCatNLOInterface/BuildFile delete mode 100644 GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.cc delete mode 100644 GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/HerwigWrapper6_4.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/IO_BaseClass.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.cc delete mode 100644 GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/MCatNLOSource.cc delete mode 100644 GeneratorInterface/MCatNLOInterface/src/ParticleData.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/ParticleDataTable.h delete mode 100644 GeneratorInterface/MCatNLOInterface/src/mcatnlo_hwlhin.f delete mode 100644 GeneratorInterface/MCatNLOInterface/src/mcatnlo_str.f delete mode 100644 GeneratorInterface/MCatNLOInterface/test/ZeeAnalyzer.cc delete mode 100644 GeneratorInterface/PartonShowerVeto/doc/html/index.html delete mode 100644 GeneratorInterface/PartonShowerVeto/doc/html/overview.html delete mode 100644 GeneratorInterface/PomwigInterface/doc/html/index.html delete mode 100644 GeneratorInterface/PomwigInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/PyquenInterface/doc/html/index.html delete mode 100644 GeneratorInterface/PyquenInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/SherpaInterface/doc/html/index.html delete mode 100644 GeneratorInterface/SherpaInterface/doc/html/overview.html delete mode 100644 GeneratorInterface/ThePEGInterface/doc/html/index.html delete mode 100644 GeneratorInterface/ThePEGInterface/doc/html/overview.html delete mode 100644 Geometry/CMSCommonData/data/caloBase.xml delete mode 100644 Geometry/CMSCommonData/data/cmsCalo.xml delete mode 100644 Geometry/CMSCommonData/data/cmsMagneticField.xml delete mode 100644 Geometry/CMSCommonData/data/cmsMuonMagnetBeam.xml delete mode 100644 Geometry/CMSCommonData/data/cmsTracker.xml delete mode 100644 Geometry/CMSCommonData/data/muonBase.xml delete mode 100644 Geometry/CommonTopologies/interface/RadialStripTopology.h delete mode 100644 Geometry/CommonTopologies/src/RadialStripTopology.cc delete mode 100644 Geometry/EcalCommonData/test/data/ecal_test.xml delete mode 100644 Geometry/EcalMapping/doc/html/index.html delete mode 100644 Geometry/EcalMapping/doc/html/overview.html delete mode 100644 Geometry/ForwardGeometry/doc/html/index.html delete mode 100644 Geometry/ForwardGeometry/doc/html/overview.html create mode 100644 Geometry/HcalSimData/TagLog delete mode 100644 Geometry/MTCCTrackerCommonData/data/tracker.xml delete mode 100644 Geometry/RPCGeometry/interface/RPCChamber.h delete mode 100644 Geometry/RPCGeometry/src/RPCChamber.cc delete mode 100644 Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml delete mode 100644 Geometry/TrackerTopology/doc/TrackerTopology.doc create mode 100644 HLTrigger/Configuration/doc/HLTrigger_AOD.doi create mode 100644 HLTrigger/Configuration/doc/HLTrigger_Configuration.doc create mode 100644 HLTrigger/Configuration/doc/HLTrigger_RECO.doi delete mode 100644 HLTrigger/Egamma/doc/html/index.html delete mode 100644 HLTrigger/Egamma/doc/html/overview.html delete mode 100644 HLTrigger/JetMET/doc/html/index.html delete mode 100644 HLTrigger/JetMET/doc/html/overview.html delete mode 100644 HLTrigger/Muon/doc/html/index.html delete mode 100644 HLTrigger/Muon/doc/html/overview.html delete mode 100644 HLTrigger/btau/doc/html/index.html delete mode 100644 HLTrigger/btau/doc/html/overview.html delete mode 100644 HLTrigger/special/doc/html/index.html delete mode 100644 HLTrigger/special/doc/html/overview.html delete mode 100644 HLTriggerOffline/BJet/doc/html/index.html delete mode 100644 HLTriggerOffline/BJet/doc/html/overview.html delete mode 100644 HLTriggerOffline/Common/doc/html/index.html delete mode 100644 HLTriggerOffline/Common/doc/html/overview.html delete mode 100644 HLTriggerOffline/Egamma/doc/html/index.html delete mode 100644 HLTriggerOffline/Egamma/doc/html/overview.html delete mode 100644 HLTriggerOffline/HeavyFlavor/doc/html/index.html delete mode 100644 HLTriggerOffline/HeavyFlavor/doc/html/overview.html delete mode 100644 HLTriggerOffline/Higgs/doc/html/index.html delete mode 100644 HLTriggerOffline/Higgs/doc/html/overview.html delete mode 100644 HLTriggerOffline/JetMET/doc/html/index.html delete mode 100644 HLTriggerOffline/JetMET/doc/html/overview.html delete mode 100644 HLTriggerOffline/Muon/doc/html/index.html delete mode 100644 HLTriggerOffline/Muon/doc/html/overview.html delete mode 100644 HLTriggerOffline/SUSYBSM/doc/html/index.html delete mode 100644 HLTriggerOffline/SUSYBSM/doc/html/overview.html delete mode 100644 HLTriggerOffline/Tau/doc/html/index.html delete mode 100644 HLTriggerOffline/Tau/doc/html/overview.html delete mode 100644 HLTriggerOffline/Top/doc/html/index.html delete mode 100644 HLTriggerOffline/Top/doc/html/overview.html delete mode 100644 HLTriggerOffline/special/doc/html/index.html delete mode 100644 HLTriggerOffline/special/doc/html/overview.html delete mode 100644 HeavyFlavorAnalysis/Configuration/doc/html/index.html delete mode 100644 HeavyFlavorAnalysis/Configuration/doc/html/overview.html delete mode 100644 HeavyFlavorAnalysis/Skimming/doc/html/index.html delete mode 100644 HeavyFlavorAnalysis/Skimming/doc/html/overview.html delete mode 100644 HeavyIonsAnalysis/Configuration/doc/html/index.html delete mode 100644 HeavyIonsAnalysis/Configuration/doc/html/overview.html delete mode 100644 HiggsAnalysis/Configuration/doc/html/index.html delete mode 100644 HiggsAnalysis/Configuration/doc/html/overview.html delete mode 100644 HiggsAnalysis/Skimming/doc/html/index.html delete mode 100644 HiggsAnalysis/Skimming/doc/html/overview.html delete mode 100644 IOPool/PFNCatalog/doc/html/index.html delete mode 100644 IOPool/PFNCatalog/doc/html/overview.html create mode 100644 IOPool/Streamer/interface/FileRecord.h create mode 100644 IOPool/Streamer/interface/OutputService.h create mode 100644 IOPool/Streamer/interface/StreamService.h create mode 100644 IOPool/Streamer/src/FileRecord.cc create mode 100644 IOPool/Streamer/src/OutputService.cc create mode 100644 IOPool/Streamer/src/StreamService.cc delete mode 100644 IOPool/TrivialFileCatalog/doc/trivial.dtd delete mode 100644 IORawData/CaloPatterns/BuildFile delete mode 100644 IORawData/CaloPatterns/interface/HcalFiberPattern.h delete mode 100644 IORawData/CaloPatterns/interface/HcalPatternXMLParser.h delete mode 100644 IORawData/CaloPatterns/src/HcalFiberPattern.cc delete mode 100644 IORawData/CaloPatterns/src/HcalPatternSource.cc delete mode 100644 IORawData/CaloPatterns/src/HcalPatternSource.h delete mode 100644 IORawData/CaloPatterns/src/HcalPatternXMLParser.cc delete mode 100644 IORawData/CaloPatterns/src/SealModule.cc delete mode 100644 IORawData/SiPixelInputSources/doc/html/index.html delete mode 100644 IORawData/SiPixelInputSources/doc/html/overview.html delete mode 100644 JetMETAnalysis/Configuration/doc/html/index.html delete mode 100644 JetMETAnalysis/Configuration/doc/html/overview.html delete mode 100644 JetMETAnalysis/JetSkims/doc/html/index.html delete mode 100644 JetMETAnalysis/JetSkims/doc/html/overview.html delete mode 100644 JetMETAnalysis/METSkims/doc/html/index.html delete mode 100644 JetMETAnalysis/METSkims/doc/html/overview.html delete mode 100644 JetMETCorrections/Algorithms/doc/html/index.html delete mode 100644 JetMETCorrections/Algorithms/doc/html/overview.html delete mode 100644 JetMETCorrections/Configuration/doc/html/index.html delete mode 100644 JetMETCorrections/Configuration/doc/html/overview.html create mode 100644 JetMETCorrections/JetVertexAssociation/BuildFile create mode 100644 JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h create mode 100644 JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h create mode 100644 JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc create mode 100644 JetMETCorrections/JetVertexAssociation/src/JetVertexMain.cc create mode 100644 JetMETCorrections/JetVertexAssociation/src/SealModule.cc create mode 100644 JetMETCorrections/JetVertexAssociation/test/AnalysisJV.cc create mode 100644 JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h delete mode 100644 JetMETCorrections/Modules/doc/html/index.html delete mode 100644 JetMETCorrections/Modules/doc/html/overview.html delete mode 100644 JetMETCorrections/Objects/doc/html/index.html delete mode 100644 JetMETCorrections/Objects/doc/html/overview.html delete mode 100644 L1Trigger/Configuration/doc/html/index.html delete mode 100644 L1Trigger/Configuration/doc/html/overview.html delete mode 100644 L1Trigger/GlobalTriggerAnalyzer/doc/html/index.html delete mode 100644 L1Trigger/GlobalTriggerAnalyzer/doc/html/overview.html delete mode 100644 L1Trigger/HardwareValidation/doc/html/index.html delete mode 100644 L1Trigger/HardwareValidation/doc/html/overview.html delete mode 100644 L1Trigger/L1GctAnalyzer/BuildFile delete mode 100644 L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h delete mode 100644 L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h delete mode 100644 L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h delete mode 100644 L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h delete mode 100644 L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h delete mode 100644 L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc delete mode 100644 L1Trigger/L1GctAnalyzer/src/L1GctBasicHistogrammer.cc delete mode 100644 L1Trigger/L1GctAnalyzer/src/L1GctHistogrammer.cc delete mode 100644 L1Trigger/L1GctAnalyzer/src/L1GctJetCheckHistogrammer.cc delete mode 100644 L1Trigger/L1GctAnalyzer/src/L1GctMETCheckHistogrammer.cc delete mode 100644 L1Trigger/RPCTechnicalTrigger/doc/html/index.html delete mode 100644 L1Trigger/RPCTechnicalTrigger/doc/html/overview.html delete mode 100644 L1Trigger/Skimmer/doc/html/index.html delete mode 100644 L1Trigger/Skimmer/doc/html/overview.html delete mode 100644 L1Trigger/TextToDigi/doc/html/index.html delete mode 100644 L1Trigger/TextToDigi/doc/html/overview.html delete mode 100644 L1TriggerConfig/CSCTFConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/CSCTFConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/DTTPGConfig/doc/html/index.html delete mode 100644 L1TriggerConfig/DTTPGConfig/doc/html/overview.html delete mode 100644 L1TriggerConfig/DTTPGConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/DTTPGConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/DTTrackFinder/doc/html/index.html delete mode 100644 L1TriggerConfig/DTTrackFinder/doc/html/overview.html delete mode 100644 L1TriggerConfig/GMTConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/GMTConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/GctConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/GctConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/L1CSCTPConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/L1CSCTPConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/L1GeometryProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/L1GeometryProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/L1GtConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/L1GtConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/L1ScalesProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/L1ScalesProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/RCTConfigProducers/doc/html/index.html delete mode 100644 L1TriggerConfig/RCTConfigProducers/doc/html/overview.html delete mode 100644 L1TriggerConfig/RPCTriggerConfig/doc/html/index.html delete mode 100644 L1TriggerConfig/RPCTriggerConfig/doc/html/overview.html delete mode 100644 L1TriggerOffline/Configuration/doc/html/index.html delete mode 100644 L1TriggerOffline/Configuration/doc/html/overview.html delete mode 100644 L1TriggerOffline/L1Analyzer/doc/html/index.html delete mode 100644 L1TriggerOffline/L1Analyzer/doc/html/overview.html create mode 100644 MagneticField/Interpolation/TagLog delete mode 100644 MagneticField/Interpolation/src/MFGrid3D.cc delete mode 100644 MagneticField/ParametrizedEngine/doc/html/index.html delete mode 100644 MagneticField/ParametrizedEngine/doc/html/overview.html create mode 100644 MagneticField/Records/TagLog delete mode 100644 MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h delete mode 100644 MuonAnalysis/Configuration/doc/html/index.html delete mode 100644 MuonAnalysis/Configuration/doc/html/overview.html delete mode 100644 MuonAnalysis/MomentumScaleCalibration/doc/html/index.html delete mode 100644 MuonAnalysis/MomentumScaleCalibration/doc/html/overview.html delete mode 100644 MuonAnalysis/MuonAssociators/doc/html/index.html delete mode 100644 MuonAnalysis/MuonAssociators/doc/html/overview.html delete mode 100644 MuonAnalysis/Skims/doc/html/index.html delete mode 100644 MuonAnalysis/Skims/doc/html/overview.html delete mode 100644 OnlineDB/CSCCondDB/BuildFile delete mode 100644 OnlineDB/CSCCondDB/interface/AutoCorrMat.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCMap.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCOnlineDB.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCToAFEB.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h delete mode 100644 OnlineDB/CSCCondDB/interface/CSCxTalk.h delete mode 100644 OnlineDB/CSCCondDB/interface/SaturationFcn.h delete mode 100644 OnlineDB/CSCCondDB/interface/SaturationFit.h delete mode 100644 OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCAFEBConnectAnalysis.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCCFEBConnectivityAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCCompThreshAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCCrossTalkAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCMap.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCOnlineDB.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCSaturationAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCToAFEB.cc delete mode 100644 OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc delete mode 100644 OnlineDB/CSCCondDB/src/SealModule.cc delete mode 100644 OnlineDB/CSCCondDB/test/Readme delete mode 100644 OnlineDB/CSCCondDB/test/csc_slice_test_map.txt delete mode 100644 OnlineDB/Oracle/doc/html/index.html delete mode 100644 OnlineDB/Oracle/doc/html/overview.html delete mode 100644 OnlineDB/SiStripO2O/doc/html/index.html delete mode 100644 OnlineDB/SiStripO2O/doc/html/overview.html delete mode 100644 PerfTools/Callgrind/doc/html/index.html delete mode 100644 PerfTools/Callgrind/doc/html/overview.html delete mode 100644 PerfTools/EdmEvent/doc/html/index.html delete mode 100644 PerfTools/EdmEvent/doc/html/overview.html delete mode 100644 PhysicsTools/CondLiteIO/doc/html/index.html delete mode 100644 PhysicsTools/CondLiteIO/doc/html/overview.html delete mode 100644 PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.cc delete mode 100644 PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h delete mode 100644 PhysicsTools/IsolationAlgos/doc/html/index.html delete mode 100644 PhysicsTools/IsolationAlgos/doc/html/overview.html delete mode 100644 PhysicsTools/IsolationUtils/doc/html/index.html delete mode 100644 PhysicsTools/IsolationUtils/doc/html/overview.html delete mode 100644 PhysicsTools/JetCharge/doc/html/index.html delete mode 100644 PhysicsTools/JetCharge/doc/html/overview.html delete mode 100644 PhysicsTools/JetExamples/doc/html/index.html delete mode 100644 PhysicsTools/JetExamples/doc/html/overview.html delete mode 100644 PhysicsTools/JetMCAlgos/doc/html/index.html delete mode 100644 PhysicsTools/JetMCAlgos/doc/html/overview.html delete mode 100644 PhysicsTools/JetMCUtils/doc/html/index.html delete mode 100644 PhysicsTools/JetMCUtils/doc/html/overview.html delete mode 100644 PhysicsTools/KinFitter/doc/html/index.html delete mode 100644 PhysicsTools/KinFitter/doc/html/overview.html delete mode 100644 PhysicsTools/MVAComputer/doc/html/index.html delete mode 100644 PhysicsTools/MVAComputer/doc/html/overview.html delete mode 100644 PhysicsTools/MVATrainer/doc/html/index.html delete mode 100644 PhysicsTools/MVATrainer/doc/html/overview.html delete mode 100644 PhysicsTools/PFCandProducer/doc/html/index.html delete mode 100644 PhysicsTools/PFCandProducer/doc/html/overview.html create mode 100755 PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.cc create mode 100755 PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h delete mode 100644 PhysicsTools/PatAlgos/doc/html/index.html delete mode 100644 PhysicsTools/PatAlgos/doc/html/overview.html delete mode 100644 PhysicsTools/PatExamples/doc/html/index.html delete mode 100644 PhysicsTools/PatExamples/doc/html/overview.html delete mode 100644 PhysicsTools/PatUtils/doc/html/index.html delete mode 100644 PhysicsTools/PatUtils/doc/html/overview.html delete mode 100644 PhysicsTools/PythonAnalysis/examples/MCTruth.py delete mode 100644 PhysicsTools/PythonAnalysis/examples/MCTruth2.py delete mode 100644 PhysicsTools/PythonAnalysis/examples/howto.txt delete mode 100644 PhysicsTools/PythonAnalysis/examples/interactiveExample.py delete mode 100644 PhysicsTools/PythonAnalysis/examples/start.py delete mode 100644 PhysicsTools/PythonAnalysis/examples/trackerHits.py delete mode 100644 PhysicsTools/RecoUtils/doc/html/index.html delete mode 100644 PhysicsTools/RecoUtils/doc/html/overview.html delete mode 100644 PhysicsTools/RooStatsCms/doc/html/index.html delete mode 100644 PhysicsTools/RooStatsCms/doc/html/overview.html delete mode 100644 PhysicsTools/SelectorUtils/doc/html/index.html delete mode 100644 PhysicsTools/SelectorUtils/doc/html/overview.html delete mode 100644 PhysicsTools/StarterKit/doc/html/index.html delete mode 100644 PhysicsTools/StarterKit/doc/html/overview.html delete mode 100644 PhysicsTools/StatPatternRecognition/doc/html/index.html delete mode 100644 PhysicsTools/StatPatternRecognition/doc/html/overview.html delete mode 100644 QCDAnalysis/ChargedHadronSpectra/doc/html/index.html delete mode 100644 QCDAnalysis/ChargedHadronSpectra/doc/html/overview.html delete mode 100644 QCDAnalysis/Configuration/doc/html/index.html delete mode 100644 QCDAnalysis/Configuration/doc/html/overview.html delete mode 100644 QCDAnalysis/Skimming/doc/html/index.html delete mode 100644 QCDAnalysis/Skimming/doc/html/overview.html delete mode 100644 QCDAnalysis/UEAnalysis/doc/html/index.html delete mode 100644 QCDAnalysis/UEAnalysis/doc/html/overview.html delete mode 100644 RecoBTag/ImpactParameter/doc/html/index.html delete mode 100644 RecoBTag/ImpactParameter/doc/html/overview.html delete mode 100644 RecoBTag/ImpactParameterLearning/doc/html/index.html delete mode 100644 RecoBTag/ImpactParameterLearning/doc/html/overview.html delete mode 100644 RecoBTag/PerformanceDB/doc/html/index.html delete mode 100644 RecoBTag/PerformanceDB/doc/html/overview.html delete mode 100644 RecoBTag/Records/doc/html/index.html delete mode 100644 RecoBTag/Records/doc/html/overview.html delete mode 100644 RecoBTag/SecondaryVertex/doc/html/index.html delete mode 100644 RecoBTag/SecondaryVertex/doc/html/overview.html delete mode 100644 RecoBTag/Skimming/doc/html/index.html delete mode 100644 RecoBTag/Skimming/doc/html/overview.html delete mode 100644 RecoBTag/TrackProbability/doc/html/index.html delete mode 100644 RecoBTag/TrackProbability/doc/html/overview.html delete mode 100644 RecoBTau/JetCrystalsAssociator/doc/html/index.html delete mode 100644 RecoBTau/JetCrystalsAssociator/doc/html/overview.html delete mode 100644 RecoBTau/JetTagComputer/doc/html/index.html delete mode 100644 RecoBTau/JetTagComputer/doc/html/overview.html delete mode 100644 RecoBTau/JetTagMVALearning/doc/html/index.html delete mode 100644 RecoBTau/JetTagMVALearning/doc/html/overview.html delete mode 100644 RecoCaloTools/EcalChannelKiller/doc/html/index.html delete mode 100644 RecoCaloTools/EcalChannelKiller/doc/html/overview.html delete mode 100644 RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h delete mode 100644 RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h delete mode 100644 RecoEcal/EgammaClusterAlgos/src/ClusteringAlgorithm.cc delete mode 100644 RecoEcal/EgammaClusterAlgos/src/LogPositionCalc.cc delete mode 100644 RecoEcal/EgammaClusterAlgos/src/PositionAwareHit.cc delete mode 100644 RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h delete mode 100644 RecoEcal/EgammaCoreTools/src/LogPositionCalc.cc create mode 100644 RecoEgamma/Configuration/doc/RecoEgamma_AOD.doi create mode 100644 RecoEgamma/Configuration/doc/RecoEgamma_RECO.doi delete mode 100644 RecoEgamma/EgammaHFProducers/doc/html/index.html delete mode 100644 RecoEgamma/EgammaHFProducers/doc/html/overview.html delete mode 100644 RecoEgamma/EgammaIsolationAlgos/doc/html/index.html delete mode 100644 RecoEgamma/EgammaIsolationAlgos/doc/html/overview.html delete mode 100644 RecoEgamma/EgammaMCTools/doc/html/index.html delete mode 100644 RecoEgamma/EgammaMCTools/doc/html/overview.html delete mode 100644 RecoEgamma/ElectronIdentification/doc/html/index.html delete mode 100644 RecoEgamma/ElectronIdentification/doc/html/overview.html delete mode 100644 RecoEgamma/Examples/doc/html/index.html delete mode 100644 RecoEgamma/Examples/doc/html/overview.html delete mode 100644 RecoEgamma/PhotonIdentification/doc/html/index.html delete mode 100644 RecoEgamma/PhotonIdentification/doc/html/overview.html delete mode 100644 RecoHI/Configuration/doc/html/index.html delete mode 100644 RecoHI/Configuration/doc/html/overview.html delete mode 100644 RecoHI/HiCentralityAlgos/doc/html/index.html delete mode 100644 RecoHI/HiCentralityAlgos/doc/html/overview.html delete mode 100644 RecoHI/HiEgammaAlgos/doc/html/index.html delete mode 100644 RecoHI/HiEgammaAlgos/doc/html/overview.html delete mode 100644 RecoHI/HiEvtPlaneAlgos/doc/html/index.html delete mode 100644 RecoHI/HiEvtPlaneAlgos/doc/html/overview.html delete mode 100644 RecoHI/HiJetAlgos/doc/html/index.html delete mode 100644 RecoHI/HiJetAlgos/doc/html/overview.html delete mode 100644 RecoHI/HiMuonAlgos/doc/html/index.html delete mode 100644 RecoHI/HiMuonAlgos/doc/html/overview.html delete mode 100644 RecoHI/HiTracking/doc/html/index.html delete mode 100644 RecoHI/HiTracking/doc/html/overview.html delete mode 100644 RecoHIMuon/HiMuPropagator/doc/html/index.html delete mode 100644 RecoHIMuon/HiMuPropagator/doc/html/overview.html delete mode 100644 RecoHIMuon/HiMuSeed/doc/html/index.html delete mode 100644 RecoHIMuon/HiMuSeed/doc/html/overview.html delete mode 100644 RecoHIMuon/HiMuTracking/doc/html/index.html delete mode 100644 RecoHIMuon/HiMuTracking/doc/html/overview.html create mode 100644 RecoJets/Configuration/doc/RecoJets_AOD.doi create mode 100644 RecoJets/Configuration/doc/RecoJets_RECO.doi delete mode 100644 RecoJets/JetAnalyzers/BuildFile delete mode 100644 RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h delete mode 100755 RecoJets/JetAnalyzers/interface/CaloTowersExample.h delete mode 100755 RecoJets/JetAnalyzers/interface/DijetMass.h delete mode 100644 RecoJets/JetAnalyzers/interface/JetAnalysis.h delete mode 100644 RecoJets/JetAnalyzers/interface/JetAnalyzer.h delete mode 100755 RecoJets/JetAnalyzers/interface/JetPlotsExample.h delete mode 100755 RecoJets/JetAnalyzers/interface/JetToDigiDump.h delete mode 100644 RecoJets/JetAnalyzers/interface/JetUtil.h delete mode 100755 RecoJets/JetAnalyzers/interface/JetValidation.h delete mode 100644 RecoJets/JetAnalyzers/src/CaloTowersExample.cc delete mode 100644 RecoJets/JetAnalyzers/src/DijetMass.cc delete mode 100644 RecoJets/JetAnalyzers/src/JetAnalysis.cc delete mode 100644 RecoJets/JetAnalyzers/src/JetAnalyzer.cc delete mode 100644 RecoJets/JetAnalyzers/src/JetPlotsExample.cc delete mode 100644 RecoJets/JetAnalyzers/src/JetToDigiDump.cc delete mode 100644 RecoJets/JetAnalyzers/src/JetValidation.cc delete mode 100755 RecoJets/JetAnalyzers/src/SealModule.cc delete mode 100644 RecoJets/JetAnalyzers/test/DijetMassQstar.cint delete mode 100644 RecoJets/JetAnalyzers/test/DijetMassZprime.cint delete mode 100644 RecoJets/JetAssociationAlgorithms/doc/html/index.html delete mode 100644 RecoJets/JetAssociationAlgorithms/doc/html/overview.html delete mode 100644 RecoJets/JetAssociationProducers/doc/html/index.html delete mode 100644 RecoJets/JetAssociationProducers/doc/html/overview.html delete mode 100644 RecoJets/JetPlusTracks/doc/html/index.html delete mode 100644 RecoJets/JetPlusTracks/doc/html/overview.html delete mode 100644 RecoLocalCalo/CaloRecCandCreator/doc/html/index.html delete mode 100644 RecoLocalCalo/CaloRecCandCreator/doc/html/overview.html delete mode 100644 RecoLocalCalo/Castor/doc/html/index.html delete mode 100644 RecoLocalCalo/Castor/doc/html/overview.html delete mode 100644 RecoLocalCalo/CastorReco/doc/html/index.html delete mode 100644 RecoLocalCalo/CastorReco/doc/html/overview.html delete mode 100644 RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/index.html delete mode 100644 RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/overview.html delete mode 100644 RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/index.html delete mode 100644 RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/overview.html delete mode 100644 RecoLocalCalo/HcalLaserReco/doc/html/index.html delete mode 100644 RecoLocalCalo/HcalLaserReco/doc/html/overview.html delete mode 100644 RecoLocalMuon/CSCEfficiency/doc/html/index.html delete mode 100644 RecoLocalMuon/CSCEfficiency/doc/html/overview.html delete mode 100644 RecoLocalMuon/CSCRecHitD/doc/html/index.html delete mode 100644 RecoLocalMuon/CSCRecHitD/doc/html/overview.html delete mode 100644 RecoLocalMuon/CSCValidation/doc/html/index.html delete mode 100644 RecoLocalMuon/CSCValidation/doc/html/overview.html delete mode 100644 RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h delete mode 100644 RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h delete mode 100644 RecoLocalTracker/SiPixelRecHits/src/PixelCPETemplateReco.cc delete mode 100644 RecoLocalTracker/SiPixelRecHits/src/SiPixelTemplateReco.cc delete mode 100644 RecoLocalTracker/SubCollectionProducers/doc/html/index.html delete mode 100644 RecoLocalTracker/SubCollectionProducers/doc/html/overview.html delete mode 100644 RecoLuminosity/LumiDB/doc/html/index.html delete mode 100644 RecoLuminosity/LumiDB/doc/html/overview.html delete mode 100644 RecoLuminosity/LumiProducer/doc/html/index.html delete mode 100644 RecoLuminosity/LumiProducer/doc/html/overview.html delete mode 100644 RecoLuminosity/ROOTSchema/doc/html/index.html delete mode 100644 RecoLuminosity/ROOTSchema/doc/html/overview.html delete mode 100644 RecoLuminosity/TCPReceiver/doc/html/index.html delete mode 100644 RecoLuminosity/TCPReceiver/doc/html/overview.html delete mode 100644 RecoMuon/GlobalTrackingTools/doc/html/index.html delete mode 100644 RecoMuon/GlobalTrackingTools/doc/html/overview.html delete mode 100644 RecoMuon/L3TrackFinder/doc/html/index.html delete mode 100644 RecoMuon/L3TrackFinder/doc/html/overview.html delete mode 100644 RecoMuon/MuonIdentification/BuildFile delete mode 100644 RecoMuon/MuonIdentification/doc/html/index.html delete mode 100644 RecoMuon/MuonIdentification/doc/html/overview.html delete mode 100644 RecoMuon/MuonIdentification/interface/MuonIdProducer.h delete mode 100644 RecoMuon/MuonIdentification/src/MuonIdProducer.cc delete mode 100644 RecoMuon/MuonIdentification/test/TestMuonIdProducer.cxx delete mode 100644 RecoMuon/MuonIdentification/test/resolution_fit.cxx delete mode 100644 RecoMuon/MuonIdentification/test/rootlogon.C delete mode 100644 RecoMuon/MuonIsolationProducers/doc/html/index.html delete mode 100644 RecoMuon/MuonIsolationProducers/doc/html/overview.html delete mode 100644 RecoParticleFlow/Benchmark/doc/html/index.html delete mode 100644 RecoParticleFlow/Benchmark/doc/html/overview.html delete mode 100644 RecoParticleFlow/Configuration/doc/html/index.html delete mode 100644 RecoParticleFlow/Configuration/doc/html/overview.html delete mode 100644 RecoParticleFlow/PFBlockProducer/doc/html/index.html delete mode 100644 RecoParticleFlow/PFBlockProducer/doc/html/overview.html delete mode 100644 RecoParticleFlow/PFClusterShapeProducer/doc/html/index.html delete mode 100644 RecoParticleFlow/PFClusterShapeProducer/doc/html/overview.html delete mode 100644 RecoParticleFlow/PFClusterTools/doc/html/index.html delete mode 100644 RecoParticleFlow/PFClusterTools/doc/html/overview.html create mode 100644 RecoParticleFlow/PFProducer/interface/EFilter.h create mode 100644 RecoParticleFlow/PFProducer/src/EFilter.cc create mode 100644 RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h create mode 100644 RecoParticleFlow/PFRootEvent/src/ResidualFitter.cc create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/compareResMaps.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/effEflowIslandStyle.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/effEflowSeedsStyle.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/effIneff.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/effIneffStyle.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/impEflowIslandStyle.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/impEflowSeedsStyle.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/process.C create mode 100644 RecoParticleFlow/PFRootEvent/test/Macros/resMaps.C delete mode 100644 RecoParticleFlow/PFTracking/doc/html/index.html delete mode 100644 RecoParticleFlow/PFTracking/doc/html/overview.html delete mode 100644 RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h delete mode 100644 RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h delete mode 100644 RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h delete mode 100644 RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h delete mode 100644 RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGenerator.cc delete mode 100644 RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGeneratorFromLayerTriplet.cc delete mode 100644 RecoPixelVertexing/PixelTriplets/src/CosmicLayerTriplets.cc delete mode 100644 RecoRomanPot/Configuration/doc/html/index.html delete mode 100644 RecoRomanPot/Configuration/doc/html/overview.html delete mode 100644 RecoRomanPot/RecoFP420/doc/html/index.html delete mode 100644 RecoRomanPot/RecoFP420/doc/html/overview.html delete mode 100644 RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h delete mode 100644 RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h delete mode 100644 RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoAlgo.cc delete mode 100644 RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoProducer.cc delete mode 100644 RecoTBCalo/HcalPlotter/doc/html/index.html delete mode 100644 RecoTBCalo/HcalPlotter/doc/html/overview.html delete mode 100644 RecoTBCalo/ZDCTBAnalysis/doc/html/index.html delete mode 100644 RecoTBCalo/ZDCTBAnalysis/doc/html/overview.html delete mode 100644 RecoTauTag/ImpactParameter/BuildFile delete mode 100644 RecoTauTag/ImpactParameter/interface/ImpactParameter.h delete mode 100644 RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h delete mode 100644 RecoTauTag/ImpactParameter/src/ImpactParameter.cc delete mode 100644 RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc delete mode 100644 RecoTauTag/ImpactParameter/src/SealModule.cc delete mode 100644 RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc delete mode 100644 RecoTauTag/Pi0Tau/doc/html/index.html delete mode 100644 RecoTauTag/Pi0Tau/doc/html/overview.html delete mode 100644 RecoTauTag/RecoTau/doc/html/index.html delete mode 100644 RecoTauTag/RecoTau/doc/html/overview.html delete mode 100644 RecoTauTag/TauTagTools/doc/html/index.html delete mode 100644 RecoTauTag/TauTagTools/doc/html/overview.html delete mode 100644 RecoTracker/DeDx/doc/html/index.html delete mode 100644 RecoTracker/DeDx/doc/html/overview.html delete mode 100644 RecoTracker/DebugTools/doc/html/index.html delete mode 100644 RecoTracker/DebugTools/doc/html/overview.html delete mode 100644 RecoTracker/FinalTrackSelectors/doc/html/index.html delete mode 100644 RecoTracker/FinalTrackSelectors/doc/html/overview.html delete mode 100644 RecoTracker/IterativeTracking/doc/html/index.html delete mode 100644 RecoTracker/IterativeTracking/doc/html/overview.html delete mode 100644 RecoTracker/NuclearSeedGenerator/doc/html/index.html delete mode 100644 RecoTracker/NuclearSeedGenerator/doc/html/overview.html delete mode 100644 RecoTracker/RingESSource/doc/html/index.html delete mode 100644 RecoTracker/RingESSource/doc/html/overview.html delete mode 100644 RecoTracker/RingMakerESProducer/doc/html/index.html delete mode 100644 RecoTracker/RingMakerESProducer/doc/html/overview.html delete mode 100644 RecoTracker/RingRecord/doc/html/index.html delete mode 100644 RecoTracker/RingRecord/doc/html/overview.html delete mode 100644 RecoTracker/SiTrackerMRHTools/doc/html/index.html delete mode 100644 RecoTracker/SiTrackerMRHTools/doc/html/overview.html delete mode 100644 RecoTracker/SpecialSeedGenerators/doc/html/index.html delete mode 100644 RecoTracker/SpecialSeedGenerators/doc/html/overview.html delete mode 100644 RecoTracker/TkSeedingLayers/doc/html/index.html delete mode 100644 RecoTracker/TkSeedingLayers/doc/html/overview.html delete mode 100644 RecoTracker/TrackProducer/test/analyze.C delete mode 100644 RecoTracker/TrackProducer/test/analyze_HZZ.C delete mode 100644 RecoTracker/TrackProducer/test/analyze_HZZ_head.C delete mode 100644 RecoTracker/TrackProducer/test/analyze_head.C delete mode 100644 RecoVertex/AdaptiveVertexFinder/BuildFile delete mode 100644 RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h delete mode 100644 RecoVertex/AdaptiveVertexFinder/src/AdaptiveVertexReconstructor.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/BuildFile delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h delete mode 100644 RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveFitter.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveReconstructor.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableKalmanFitter.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableLinPtFinder.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableTrimmedKalmanFinder.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ConfigurableVertexReconstructor.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ReconstructorFromFitter.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/ReconstructorFromLinPtFinder.cc delete mode 100644 RecoVertex/ConfigurableVertexReco/src/VertexRecoManager.cc delete mode 100644 RecoVertex/GhostTrackFitter/doc/html/index.html delete mode 100644 RecoVertex/GhostTrackFitter/doc/html/overview.html delete mode 100644 RecoVertex/KinematicFit/BuildFile delete mode 100644 RecoVertex/KinematicFit/doc/html/index.html delete mode 100644 RecoVertex/KinematicFit/doc/html/overview.html delete mode 100644 RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/ChildUpdator.h delete mode 100644 RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h delete mode 100644 RecoVertex/KinematicFit/interface/FinalTreeBuilder.h delete mode 100644 RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/InputSort.h delete mode 100644 RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h delete mode 100644 RecoVertex/KinematicFit/interface/KinematicParticleFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h delete mode 100644 RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/MassKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/ParentParticleFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h delete mode 100644 RecoVertex/KinematicFit/interface/SimplePointingConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/SmartPointingConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFit/src/BackToBackKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/ConstrainedTreeBuilder.cc delete mode 100644 RecoVertex/KinematicFit/src/FinalTreeBuilder.cc delete mode 100644 RecoVertex/KinematicFit/src/FourMomentumKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/InputSort.cc delete mode 100644 RecoVertex/KinematicFit/src/KinematicConstrainedVertexFitter.cc delete mode 100644 RecoVertex/KinematicFit/src/KinematicConstrainedVertexUpdator.cc delete mode 100644 RecoVertex/KinematicFit/src/KinematicParticleFitter.cc delete mode 100644 RecoVertex/KinematicFit/src/KinematicParticleVertexFitter.cc delete mode 100644 RecoVertex/KinematicFit/src/LagrangeChildUpdator.cc delete mode 100644 RecoVertex/KinematicFit/src/LagrangeParentParticleFitter.cc delete mode 100644 RecoVertex/KinematicFit/src/MassKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/MomentumKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/PointingKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/SequentialKinematicVertexFitter.cc delete mode 100644 RecoVertex/KinematicFit/src/SimplePointingConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/SmartPointingConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/TwoTrackMassKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFit/src/VertexKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/BuildFile delete mode 100644 RecoVertex/KinematicFitPrimitives/doc/html/index.html delete mode 100644 RecoVertex/KinematicFitPrimitives/doc/html/overview.html delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicState.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicVertexAssociator.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicVertexDistance.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h delete mode 100644 RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicParameters.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicParametersError.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicParticle.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicParticleFactoryFromTransientTrack.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicPerigeeConversions.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicRefittedTrackState.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicState.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicTree.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicVertex.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/KinematicVertexFactory.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/MultipleKinematicConstraint.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackState.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackStateFactory.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/PerigeeKinematicState.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicParticle.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicStateBuilder.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/TrackKinematicStatePropagator.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticle.cc delete mode 100644 RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticleFactory.cc delete mode 100644 RecoVertex/NuclearInteractionProducer/doc/html/index.html delete mode 100644 RecoVertex/NuclearInteractionProducer/doc/html/overview.html delete mode 100644 RecoVertex/TertiaryTracksVertexFinder/doc/html/index.html delete mode 100644 RecoVertex/TertiaryTracksVertexFinder/doc/html/overview.html delete mode 100644 RecoVertex/TrimmedVertexFit/doc/html/index.html delete mode 100644 RecoVertex/TrimmedVertexFit/doc/html/overview.html delete mode 100644 RecoVertex/V0Producer/doc/html/index.html delete mode 100644 RecoVertex/V0Producer/doc/html/overview.html delete mode 100644 SLHCUpgradeSimulations/Geometry/doc/html/index.html delete mode 100644 SLHCUpgradeSimulations/Geometry/doc/html/overview.html delete mode 100644 SLHCUpgradeSimulations/L1CaloTrigger/doc/html/index.html delete mode 100644 SLHCUpgradeSimulations/L1CaloTrigger/doc/html/overview.html delete mode 100644 SLHCUpgradeSimulations/L1TrackTrigger/doc/html/index.html delete mode 100644 SLHCUpgradeSimulations/L1TrackTrigger/doc/html/overview.html delete mode 100644 SUSYBSMAnalysis/Configuration/doc/html/index.html delete mode 100644 SUSYBSMAnalysis/Configuration/doc/html/overview.html delete mode 100644 SUSYBSMAnalysis/HSCP/doc/html/index.html delete mode 100644 SUSYBSMAnalysis/HSCP/doc/html/overview.html delete mode 100644 SUSYBSMAnalysis/Skimming/doc/html/index.html delete mode 100644 SUSYBSMAnalysis/Skimming/doc/html/overview.html delete mode 100644 SimCalorimetry/CastorSim/doc/html/index.html delete mode 100644 SimCalorimetry/CastorSim/doc/html/overview.html delete mode 100644 SimCalorimetry/EcalElectronicsEmulation/doc/html/index.html delete mode 100644 SimCalorimetry/EcalElectronicsEmulation/doc/html/overview.html delete mode 100644 SimCalorimetry/HcalTrigPrimAlgos/doc/html/index.html delete mode 100644 SimCalorimetry/HcalTrigPrimAlgos/doc/html/overview.html delete mode 100644 SimCalorimetry/HcalTrigPrimProducers/doc/html/index.html delete mode 100644 SimCalorimetry/HcalTrigPrimProducers/doc/html/overview.html delete mode 100644 SimDataFormats/DigiSimLinks/doc/html/index.html delete mode 100644 SimDataFormats/DigiSimLinks/doc/html/overview.html delete mode 100644 SimDataFormats/GeneratorProducts/doc/html/index.html delete mode 100644 SimDataFormats/GeneratorProducts/doc/html/overview.html delete mode 100644 SimDataFormats/HiGenData/doc/html/index.html delete mode 100644 SimDataFormats/HiGenData/doc/html/overview.html delete mode 100644 SimDataFormats/JetMatching/doc/html/index.html delete mode 100644 SimDataFormats/JetMatching/doc/html/overview.html delete mode 100644 SimDataFormats/SLHC/doc/html/index.html delete mode 100644 SimDataFormats/SLHC/doc/html/overview.html delete mode 100644 SimDataFormats/ValidationFormats/doc/html/index.html delete mode 100644 SimDataFormats/ValidationFormats/doc/html/overview.html delete mode 100644 SimG4CMS/CherenkovAnalysis/doc/html/index.html delete mode 100644 SimG4CMS/CherenkovAnalysis/doc/html/overview.html delete mode 100644 SimG4CMS/Forward/src/classes.h delete mode 100644 SimG4CMS/Forward/src/classes_def.xml delete mode 100644 SimG4CMS/ShowerLibraryProducer/doc/html/index.html delete mode 100644 SimG4CMS/ShowerLibraryProducer/doc/html/overview.html delete mode 100644 SimG4Core/CheckSecondary/doc/html/index.html delete mode 100644 SimG4Core/CheckSecondary/doc/html/overview.html create mode 100644 SimG4Core/HelpfulWatchers/TagLog delete mode 100644 SimG4Core/PhysicsLists/doc/html/index.html delete mode 100644 SimG4Core/PhysicsLists/doc/html/overview.html delete mode 100644 SimG4Core/SaveSimTrackAction/doc/html/index.html delete mode 100644 SimG4Core/SaveSimTrackAction/doc/html/overview.html delete mode 100644 SimGeneral/Configuration/doc/html/index.html delete mode 100644 SimGeneral/Configuration/doc/html/overview.html delete mode 100644 SimGeneral/DataMixingModule/doc/html/index.html delete mode 100644 SimGeneral/DataMixingModule/doc/html/overview.html delete mode 100644 SimGeneral/GFlash/doc/html/index.html delete mode 100644 SimGeneral/GFlash/doc/html/overview.html create mode 100644 SimGeneral/NoiseGenerators/TagLog delete mode 100644 SimGeneral/TrackingAnalysis/src/classes.h delete mode 100644 SimGeneral/TrackingAnalysis/src/classes_def.xml delete mode 100644 SimMuon/MCTruth/doc/html/index.html delete mode 100644 SimMuon/MCTruth/doc/html/overview.html delete mode 100644 SimMuon/Neutron/BuildFile delete mode 100644 SimMuon/Neutron/interface/SubsystemNeutronReader.h delete mode 100644 SimMuon/Neutron/interface/SubsystemNeutronWriter.h delete mode 100644 SimMuon/Neutron/src/AsciiNeutronReader.cc delete mode 100755 SimMuon/Neutron/src/AsciiNeutronReader.h delete mode 100644 SimMuon/Neutron/src/AsciiNeutronWriter.cc delete mode 100755 SimMuon/Neutron/src/AsciiNeutronWriter.h delete mode 100644 SimMuon/Neutron/src/LinkDef.h delete mode 100644 SimMuon/Neutron/src/NeutronReader.h delete mode 100644 SimMuon/Neutron/src/NeutronWriter.h delete mode 100644 SimMuon/Neutron/src/RootChamberReader.cc delete mode 100644 SimMuon/Neutron/src/RootChamberReader.h delete mode 100644 SimMuon/Neutron/src/RootChamberWriter.cc delete mode 100644 SimMuon/Neutron/src/RootChamberWriter.h delete mode 100644 SimMuon/Neutron/src/RootNeutronReader.cc delete mode 100644 SimMuon/Neutron/src/RootNeutronReader.h delete mode 100644 SimMuon/Neutron/src/RootNeutronWriter.cc delete mode 100644 SimMuon/Neutron/src/RootNeutronWriter.h delete mode 100644 SimMuon/Neutron/src/RootSimHit.cc delete mode 100644 SimMuon/Neutron/src/RootSimHit.h delete mode 100644 SimMuon/Neutron/src/SubsystemNeutronReader.cc delete mode 100644 SimMuon/Neutron/src/SubsystemNeutronWriter.cc delete mode 100755 SimMuon/Neutron/test/AsciiNeutronTest.cpp delete mode 100644 SimMuon/Neutron/test/AsciiNeutronTest.ref delete mode 100644 SimMuon/Neutron/test/NeutronReaderTest.cpp delete mode 100755 SimMuon/Neutron/test/RootNeutronTest.cpp delete mode 100644 SimRomanPot/Configuration/doc/html/index.html delete mode 100644 SimRomanPot/Configuration/doc/html/overview.html delete mode 100644 SimRomanPot/SimFP420/doc/html/index.html delete mode 100644 SimRomanPot/SimFP420/doc/html/overview.html delete mode 100644 SimTracker/TrackHistory/doc/html/index.html delete mode 100644 SimTracker/TrackHistory/doc/html/overview.html delete mode 100644 SimTracker/TrackerFilters/doc/html/index.html delete mode 100644 SimTracker/TrackerFilters/doc/html/overview.html delete mode 100644 SimTracker/TrackerMaterialAnalysis/doc/html/index.html delete mode 100644 SimTracker/TrackerMaterialAnalysis/doc/html/overview.html delete mode 100644 SimTracker/VertexAssociation/doc/html/index.html delete mode 100644 SimTracker/VertexAssociation/doc/html/overview.html delete mode 100644 SimTracker/VertexAssociatorESProducer/doc/html/index.html delete mode 100644 SimTracker/VertexAssociatorESProducer/doc/html/overview.html delete mode 100644 SimTransport/HectorProducer/doc/html/index.html delete mode 100644 SimTransport/HectorProducer/doc/html/overview.html delete mode 100644 TauAnalysis/MCEmbeddingTools/doc/html/index.html delete mode 100644 TauAnalysis/MCEmbeddingTools/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/Configuration/doc/html/index.html delete mode 100644 TopQuarkAnalysis/Configuration/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/Examples/doc/html/index.html delete mode 100644 TopQuarkAnalysis/Examples/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopEventProducers/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopEventProducers/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopEventSelection/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopEventSelection/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopJetCombination/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopJetCombination/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopKinFitter/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopKinFitter/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopObjectProducers/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopObjectProducers/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopObjectResolutions/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopObjectResolutions/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopPairBSM/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopPairBSM/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopSkimming/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopSkimming/doc/html/overview.html delete mode 100644 TopQuarkAnalysis/TopTools/doc/html/index.html delete mode 100644 TopQuarkAnalysis/TopTools/doc/html/overview.html delete mode 100644 TrackPropagation/NavGeometry/BuildFile delete mode 100644 TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavCone.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavCylinder.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavPlane.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavSurface.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavVolume.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavVolume6Faces.h delete mode 100644 TrackPropagation/NavGeometry/interface/NavVolumeSide.h delete mode 100644 TrackPropagation/NavGeometry/interface/ShiftingMagneticFieldProvider.h delete mode 100644 TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h delete mode 100644 TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h delete mode 100644 TrackPropagation/NavGeometry/src/LinearEquation3.h delete mode 100644 TrackPropagation/NavGeometry/src/LinearSearchNavSurfaceImpl.cc delete mode 100644 TrackPropagation/NavGeometry/src/NavCone.cc delete mode 100644 TrackPropagation/NavGeometry/src/NavCylinder.cc delete mode 100644 TrackPropagation/NavGeometry/src/NavPlane.cc delete mode 100644 TrackPropagation/NavGeometry/src/NavSurfaceBuilder.cc delete mode 100644 TrackPropagation/NavGeometry/src/NavVolume6Faces.cc delete mode 100644 TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc delete mode 100644 TrackPropagation/NavGeometry/src/ThreePlaneCrossing.cc delete mode 100644 TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h delete mode 100644 TrackPropagation/NavGeometry/test/DoubleVolumeTest.cpp delete mode 100644 TrackPropagation/NavGeometry/test/PropagatorTestInTrackerVolume.cpp delete mode 100644 TrackPropagation/NavGeometry/test/SingleVolumeTest.cpp delete mode 100644 TrackPropagation/NavGeometry/test/plot.C delete mode 100644 TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.cc delete mode 100644 TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.cc delete mode 100644 TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.cc delete mode 100644 TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.cc delete mode 100644 TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h delete mode 100644 TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.cc delete mode 100644 TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h delete mode 100644 TrackPropagation/NavPropagator/BuildFile delete mode 100644 TrackPropagation/NavPropagator/interface/NavPropagator.h delete mode 100644 TrackPropagation/NavPropagator/src/NavPropagator.cc delete mode 100644 TrackPropagation/NavPropagator/test/TrackerToMuonTest.cc delete mode 100644 TrackPropagation/RungeKutta/BuildFile delete mode 100644 TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h delete mode 100644 TrackPropagation/RungeKutta/interface/CartesianState.h delete mode 100644 TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h delete mode 100644 TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h delete mode 100644 TrackPropagation/RungeKutta/interface/CurvilinearState.h delete mode 100644 TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h delete mode 100644 TrackPropagation/RungeKutta/interface/CylindricalState.h delete mode 100644 TrackPropagation/RungeKutta/interface/FrameChanger.h delete mode 100644 TrackPropagation/RungeKutta/interface/PathToPlane2Order.h delete mode 100644 TrackPropagation/RungeKutta/interface/RK4OneStep.h delete mode 100644 TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h delete mode 100644 TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h delete mode 100644 TrackPropagation/RungeKutta/interface/RK4PreciseStep.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKCartesianDistance.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKDerivative.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKDistance.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKPropagatorInR.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKPropagatorInS.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKSmallVector.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKSolver.h delete mode 100644 TrackPropagation/RungeKutta/interface/RKSolverTempl.h delete mode 100644 TrackPropagation/RungeKutta/interface/VectorDoublet.h delete mode 100644 TrackPropagation/RungeKutta/src/CartesianLorentzForce.cc delete mode 100644 TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc delete mode 100644 TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc delete mode 100644 TrackPropagation/RungeKutta/src/PathToPlane2Order.cc delete mode 100644 TrackPropagation/RungeKutta/src/RK4OneStep.cc delete mode 100644 TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc delete mode 100644 TrackPropagation/RungeKutta/src/RK4PreciseStep.cc delete mode 100644 TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc delete mode 100644 TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc delete mode 100644 TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc delete mode 100644 TrackPropagation/RungeKutta/src/RKPropagatorInR.cc delete mode 100644 TrackPropagation/RungeKutta/src/RKPropagatorInS.cc delete mode 100644 TrackPropagation/RungeKutta/src/RKPropagatorInZ.cc create mode 100644 TrackingTools/AnalyticalJacobians/TagLog delete mode 100644 TrackingTools/IPTools/doc/html/index.html delete mode 100644 TrackingTools/IPTools/doc/html/overview.html delete mode 100644 TrackingTools/RecoGeometry/doc/html/index.html delete mode 100644 TrackingTools/RecoGeometry/doc/html/overview.html delete mode 100644 TrackingTools/RoadSearchEventFilter/doc/html/index.html delete mode 100644 TrackingTools/RoadSearchEventFilter/doc/html/overview.html delete mode 100755 TrackingTools/TrackAssociator/tools/classdiagram delete mode 100644 TrackingTools/TrajectoryFiltering/doc/html/index.html delete mode 100644 TrackingTools/TrajectoryFiltering/doc/html/overview.html delete mode 100644 Utilities/General/interface/RedirectedSB.h create mode 100644 Utilities/Timing/TagLog delete mode 100644 Utilities/XrdAdaptor/doc/html/index.html delete mode 100644 Utilities/XrdAdaptor/doc/html/overview.html delete mode 100644 Validation/CSCRecHits/doc/html/index.html delete mode 100644 Validation/CSCRecHits/doc/html/overview.html delete mode 100644 Validation/Configuration/doc/html/index.html delete mode 100644 Validation/Configuration/doc/html/overview.html delete mode 100644 Validation/EcalTriggerPrimitives/doc/html/index.html delete mode 100644 Validation/EcalTriggerPrimitives/doc/html/overview.html delete mode 100644 Validation/Generator/doc/html/index.html delete mode 100644 Validation/Generator/doc/html/overview.html create mode 100755 Validation/Geometry/test/TrackerGeometryValidation.sh create mode 100644 Validation/Geometry/test/TrackerMaterialBudgetComparison.C delete mode 100644 Validation/GlobalRecHits/doc/html/index.html delete mode 100644 Validation/GlobalRecHits/doc/html/overview.html delete mode 100644 Validation/HcalDigis/src/HcalSubdetDigiMonitor.cc delete mode 100644 Validation/HcalDigis/src/HcalSubdetDigiMonitor.h delete mode 100644 Validation/HcalDigis/src/SealModule.cc delete mode 100644 Validation/MuonIdentification/doc/html/index.html delete mode 100644 Validation/MuonIdentification/doc/html/overview.html delete mode 100644 Validation/MuonIsolation/doc/html/index.html delete mode 100644 Validation/MuonIsolation/doc/html/overview.html delete mode 100644 Validation/MuonRPCGeometry/doc/html/index.html delete mode 100644 Validation/MuonRPCGeometry/doc/html/overview.html delete mode 100644 Validation/RPCRecHits/doc/html/index.html delete mode 100644 Validation/RPCRecHits/doc/html/overview.html delete mode 100644 Validation/RecoParticleFlow/doc/html/index.html delete mode 100644 Validation/RecoParticleFlow/doc/html/overview.html create mode 100755 Validation/RecoPixelVertexing/test/Validation.csh create mode 100644 Validation/RecoPixelVertexing/test/Validation.csh.oref delete mode 100644 Validation/TrackerConfiguration/doc/html/index.html delete mode 100644 Validation/TrackerConfiguration/doc/html/overview.html delete mode 100644 Validation/TrackingMCTruth/doc/html/index.html delete mode 100644 Validation/TrackingMCTruth/doc/html/overview.html diff --git a/Alignment/CocoaApplication/bin/cocoa.cpp b/Alignment/CocoaApplication/bin/cocoa.cpp index b06616074a4..27e4cddff56 100644 --- a/Alignment/CocoaApplication/bin/cocoa.cpp +++ b/Alignment/CocoaApplication/bin/cocoa.cpp @@ -6,7 +6,7 @@ #include "Alignment/CocoaModel/interface/Entry.h" #include "Alignment/CocoaUtilities/interface/ALIFileOut.h" //#include "Analysis/FittedEntriesRoot/interface/FERootDump.h" -#include "Alignment/CocoaToDDL/interface/CocoaToDDLMgr.h" +//#include "Alignment/CocoaToDDL/interface/CocoaToDDLMgr.h" #include <time.h> #include "CLHEP/Vector/Rotation.h" @@ -56,12 +56,10 @@ int main( int argc, char** argv ) if(ALIUtils::debug >= 0) std::cout << "TIME:ENDED_READING : " << now << " " << difftime(now, ALIUtils::time_now())/1.E6 << " " << ALIUtils::debug << std::endl; ALIUtils::set_time_now(now); - ALIstring xmlfname = Model::SDFName(); - //substract ".txt" - if( xmlfname.find(".txt") != -1 ) xmlfname = xmlfname.substr(0,xmlfname.find(".txt")); +/* ALIstring xmlfname = Model::SDFName(); xmlfname += ALIstring(".xml"); CocoaToDDLMgr::getInstance()->writeDDDFile( xmlfname ); - +*/ Fit::getInstance(); diff --git a/Alignment/CocoaApplication/bin/simple2D.meas b/Alignment/CocoaApplication/bin/simple2D.meas index 967e13bf4d4..565a7ff84b7 100644 --- a/Alignment/CocoaApplication/bin/simple2D.meas +++ b/Alignment/CocoaApplication/bin/simple2D.meas @@ -1,5 +1,5 @@ DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23426 0. // 0 V 1.23426 0. // 0 SENSOR2D s/sens2 @@ -8,7 +8,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0 chi2 0 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23417 0. // -8.76598e-05 V 1.23412 0. // -0.000140295 SENSOR2D s/sens2 @@ -17,7 +17,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.00166624 chi2 2.77636e-06 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23407 0. // -0.000191369 V 1.23407 0. // -0.000193394 SENSOR2D s/sens2 @@ -26,7 +26,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.00738393 chi2 5.45225e-05 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23292 0. // -0.00133889 V 1.23451 0. // 0.000253465 SENSOR2D s/sens2 @@ -35,7 +35,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.0204538 chi2 0.000418358 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23434 0. // 8.54525e-05 V 1.23269 0. // -0.00157015 SENSOR2D s/sens2 @@ -44,7 +44,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.0251462 chi2 0.000632331 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23774 0. // 0.00348257 V 1.2329 0. // -0.00135899 SENSOR2D s/sens2 @@ -53,7 +53,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.0717323 chi2 0.00514553 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23208 0. // -0.00218173 V 1.22262 0. // -0.0116399 SENSOR2D s/sens2 @@ -62,7 +62,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.131272 chi2 0.0172324 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.2418 0. // 0.00754262 V 1.23546 0. // 0.0012002 SENSOR2D s/sens2 @@ -71,7 +71,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.114169 chi2 0.0130345 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23351 0. // -0.00075084 V 1.23263 0. // -0.00162803 SENSOR2D s/sens2 @@ -80,7 +80,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.167298 chi2 0.0279887 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23936 0. // 0.00509941 V 1.24659 0. // 0.012333 SENSOR2D s/sens2 @@ -89,7 +89,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.144577 chi2 0.0209026 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.25123 0. // 0.0169691 V 1.24221 0. // 0.00795248 SENSOR2D s/sens2 @@ -98,7 +98,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.194273 chi2 0.0377419 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23412 0. // -0.000142297 V 1.2423 0. // 0.00803729 SENSOR2D s/sens2 @@ -107,7 +107,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.142875 chi2 0.0204133 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.25255 0. // 0.0182871 V 1.21894 0. // -0.0153161 SENSOR2D s/sens2 @@ -116,7 +116,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.283895 chi2 0.0805967 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.25096 0. // 0.016702 V 1.20034 0. // -0.0339199 SENSOR2D s/sens2 @@ -125,7 +125,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.538118 chi2 0.289571 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23201 0. // -0.00225271 V 1.24149 0. // 0.00722908 SENSOR2D s/sens2 @@ -134,7 +134,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.115526 chi2 0.0133463 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.19591 0. // -0.0383504 V 1.19036 0. // -0.0438991 SENSOR2D s/sens2 @@ -143,7 +143,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.635384 chi2 0.403712 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.22461 0. // -0.00964913 V 1.19902 0. // -0.0352387 SENSOR2D s/sens2 @@ -152,7 +152,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.415035 chi2 0.172254 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.26876 0. // 0.0344963 V 1.27519 0. // 0.040931 SENSOR2D s/sens2 @@ -161,7 +161,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.708006 chi2 0.501272 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.28298 0. // 0.0487216 V 1.23767 0. // 0.00341059 SENSOR2D s/sens2 @@ -170,7 +170,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.81201 chi2 0.65936 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.27749 0. // 0.0432347 V 1.27572 0. // 0.0414592 SENSOR2D s/sens2 @@ -179,7 +179,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.00981 chi2 1.01971 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.26547 0. // 0.0312062 V 1.2664 0. // 0.0321453 SENSOR2D s/sens2 @@ -188,7 +188,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.10355 chi2 1.21783 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.23383 0. // -0.000433638 V 1.17385 0. // -0.0604061 SENSOR2D s/sens2 @@ -197,7 +197,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.00029 chi2 1.00058 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.16428 0. // -0.0699789 V 1.28385 0. // 0.0495934 SENSOR2D s/sens2 @@ -206,7 +206,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.22707 chi2 1.50571 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.20907 0. // -0.0251891 V 1.25611 0. // 0.0218516 SENSOR2D s/sens2 @@ -215,7 +215,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.701016 chi2 0.491424 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.2785 0. // 0.0442446 V 1.32691 0. // 0.0926553 SENSOR2D s/sens2 @@ -224,7 +224,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.06555 chi2 1.13539 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.16153 0. // -0.0727308 V 1.26412 0. // 0.0298597 SENSOR2D s/sens2 @@ -233,7 +233,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.17629 chi2 1.38365 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.29506 0. // 0.0608024 V 1.18881 0. // -0.0454467 SENSOR2D s/sens2 @@ -242,7 +242,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.02258 chi2 1.04567 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.17834 0. // -0.0559215 V 1.19383 0. // -0.0404251 SENSOR2D s/sens2 @@ -251,7 +251,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.87073 chi2 0.758171 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.05424 0. // -0.180015 V 1.17945 0. // -0.0548067 SENSOR2D s/sens2 @@ -260,7 +260,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.19881 chi2 4.83475 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.25622 0. // 0.0219595 V 1.32425 0. // 0.0899894 SENSOR2D s/sens2 @@ -269,7 +269,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.20976 chi2 1.46352 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.04815 0. // -0.186106 V 1.40534 0. // 0.171078 SENSOR2D s/sens2 @@ -278,7 +278,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.60976 chi2 6.81086 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.38374 0. // 0.149477 V 1.37617 0. // 0.141912 SENSOR2D s/sens2 @@ -287,7 +287,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.63454 chi2 6.94079 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.31513 0. // 0.0808699 V 0.942127 0. // -0.292133 SENSOR2D s/sens2 @@ -296,7 +296,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.20154 chi2 10.2499 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.2624 0. // 0.0281442 V 1.03651 0. // -0.197747 SENSOR2D s/sens2 @@ -305,7 +305,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.22801 chi2 4.96403 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.17412 0. // -0.0601347 V 1.27774 0. // 0.0434814 SENSOR2D s/sens2 @@ -314,7 +314,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.64055 chi2 2.6914 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.14089 0. // -0.0933719 V 1.07299 0. // -0.161272 SENSOR2D s/sens2 @@ -323,7 +323,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.98558 chi2 3.94251 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.314 0. // 0.0797396 V 1.26919 0. // 0.0349288 SENSOR2D s/sens2 @@ -332,7 +332,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.18975 chi2 1.41551 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.25153 0. // 0.0172684 V 0.988171 0. // -0.246088 SENSOR2D s/sens2 @@ -341,7 +341,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.42471 chi2 11.7287 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.12941 0. // -0.104849 V 1.23027 0. // -0.00399401 SENSOR2D s/sens2 @@ -350,7 +350,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.32212 chi2 1.74801 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.32793 0. // 0.0936738 V 1.33154 0. // 0.0972824 SENSOR2D s/sens2 @@ -359,7 +359,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.36735 chi2 1.86965 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.26668 0. // 0.0324186 V 1.14724 0. // -0.0870196 SENSOR2D s/sens2 @@ -368,7 +368,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.1467 chi2 4.60832 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.07731 0. // -0.156953 V 1.40574 0. // 0.171483 SENSOR2D s/sens2 @@ -377,7 +377,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.38806 chi2 5.70281 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.09754 0. // -0.136724 V 0.945432 0. // -0.288828 SENSOR2D s/sens2 @@ -386,7 +386,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.67607 chi2 13.5135 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.40311 0. // 0.168848 V 1.4845 0. // 0.250237 SENSOR2D s/sens2 @@ -395,7 +395,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.44962 chi2 11.8999 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.48719 0. // 0.252932 V 1.34928 0. // 0.115024 SENSOR2D s/sens2 @@ -404,7 +404,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.28834 chi2 10.8132 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.33672 0. // 0.102465 V 1.25962 0. // 0.0253638 SENSOR2D s/sens2 @@ -413,7 +413,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 2.06001 chi2 4.24364 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.07495 0. // -0.159312 V 1.03882 0. // -0.195442 SENSOR2D s/sens2 @@ -422,7 +422,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 6.74189 chi2 45.4531 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.29943 0. // 0.0651753 V 1.19305 0. // -0.0412134 SENSOR2D s/sens2 @@ -431,7 +431,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.9619 chi2 35.5442 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.33543 0. // 0.101167 V 1.16819 0. // -0.0660657 SENSOR2D s/sens2 @@ -440,7 +440,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.40276 chi2 19.3843 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.29536 0. // 0.0610968 V 1.29893 0. // 0.0646694 SENSOR2D s/sens2 @@ -449,7 +449,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 0.921855 chi2 0.849817 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.54891 0. // 0.314655 V 0.940713 0. // -0.293546 SENSOR2D s/sens2 @@ -458,7 +458,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.83706 chi2 34.0713 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.900111 0. // -0.334149 V 1.21456 0. // -0.0196956 SENSOR2D s/sens2 @@ -467,7 +467,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.62283 chi2 21.3705 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.733932 0. // -0.500328 V 0.768825 0. // -0.465434 SENSOR2D s/sens2 @@ -476,7 +476,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 7.68993 chi2 59.1351 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.18852 0. // -0.045737 V 1.07486 0. // -0.159397 SENSOR2D s/sens2 @@ -485,7 +485,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 1.94036 chi2 3.765 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.17798 0. // -0.0562806 V 1.67911 0. // 0.444853 SENSOR2D s/sens2 @@ -494,7 +494,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 7.16306 chi2 51.3095 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.49167 0. // 0.257412 V 1.06936 0. // -0.164895 SENSOR2D s/sens2 @@ -503,7 +503,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.70127 chi2 22.1019 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.10038 0. // -0.13388 V 1.09157 0. // -0.142692 SENSOR2D s/sens2 @@ -512,7 +512,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 3.96201 chi2 15.6975 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.33472 0. // 0.100464 V 1.84137 0. // 0.607108 SENSOR2D s/sens2 @@ -521,7 +521,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 6.64258 chi2 44.1239 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.36028 0. // 0.126024 V 0.851812 0. // -0.382448 SENSOR2D s/sens2 @@ -530,7 +530,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.0659 chi2 16.5315 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.987027 0. // -0.247232 V 1.37659 0. // 0.142326 SENSOR2D s/sens2 @@ -539,7 +539,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.50176 chi2 30.2694 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.13346 0. // -0.100796 V 1.69014 0. // 0.455877 SENSOR2D s/sens2 @@ -548,7 +548,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 6.41344 chi2 41.1323 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.85367 0. // 0.619413 V 0.78905 0. // -0.445209 SENSOR2D s/sens2 @@ -557,7 +557,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 8.5309 chi2 72.7762 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.29413 0. // 0.0598724 V 1.08224 0. // -0.152019 SENSOR2D s/sens2 @@ -566,7 +566,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.22658 chi2 17.8639 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.14853 0. // -0.0857273 V 0.347823 0. // -0.886437 SENSOR2D s/sens2 @@ -575,7 +575,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 9.18314 chi2 84.3301 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.60745 0. // 0.373188 V 1.31503 0. // 0.0807663 SENSOR2D s/sens2 @@ -584,7 +584,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 7.67287 chi2 58.873 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.1498 0. // -0.0844638 V 1.1484 0. // -0.0858606 SENSOR2D s/sens2 @@ -593,7 +593,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.2336 chi2 17.9234 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.19356 0. // -0.0406982 V 1.55577 0. // 0.321506 SENSOR2D s/sens2 @@ -602,7 +602,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.39826 chi2 29.1412 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.56817 0. // 0.333911 V 1.79672 0. // 0.562462 SENSOR2D s/sens2 @@ -611,7 +611,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 9.32391 chi2 86.9352 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.391432 0. // -0.842828 V 0.881492 0. // -0.352768 SENSOR2D s/sens2 @@ -620,7 +620,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 10.8749 chi2 118.263 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.971596 0. // -0.262664 V 0.902899 0. // -0.33136 SENSOR2D s/sens2 @@ -629,7 +629,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 6.69574 chi2 44.8329 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.05315 0. // -0.181106 V 1.02288 0. // -0.211382 SENSOR2D s/sens2 @@ -638,7 +638,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.14447 chi2 26.4655 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.916615 0. // -0.317644 V 1.20182 0. // -0.0324377 SENSOR2D s/sens2 @@ -647,7 +647,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 10.3456 chi2 107.03 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.769518 0. // -0.464741 V 0.625156 0. // -0.609103 SENSOR2D s/sens2 @@ -656,7 +656,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 8.29009 chi2 68.7257 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.389233 0. // -0.845027 V 1.23563 0. // 0.00136675 SENSOR2D s/sens2 @@ -665,7 +665,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 8.94385 chi2 79.9925 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.56714 0. // 0.33288 V 0.364107 0. // -0.870153 SENSOR2D s/sens2 @@ -674,7 +674,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 10.39 chi2 107.951 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.60333 0. // 0.369066 V 0.611549 0. // -0.62271 SENSOR2D s/sens2 @@ -683,7 +683,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 11.19 chi2 125.215 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.911669 0. // -0.32259 V 1.21014 0. // -0.0241232 SENSOR2D s/sens2 @@ -692,7 +692,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 9.46858 chi2 89.6541 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.41801 0. // -0.816249 V 1.35118 0. // 0.116917 SENSOR2D s/sens2 @@ -701,7 +701,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 14.1114 chi2 199.13 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.74035 0. // 0.506089 V 1.62465 0. // 0.390393 SENSOR2D s/sens2 @@ -710,7 +710,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 7.44041 chi2 55.3597 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.78348 0. // 0.549217 V 1.44256 0. // 0.208302 SENSOR2D s/sens2 @@ -719,7 +719,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 11.55 chi2 133.403 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.09925 0. // -0.135007 V 1.78323 0. // 0.548974 SENSOR2D s/sens2 @@ -728,7 +728,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 10.3032 chi2 106.156 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 2.63542 0. // 1.40116 V -0.0865342 0. // -1.32079 SENSOR2D s/sens2 @@ -737,7 +737,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 19.3552 chi2 374.625 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.316346 0. // -0.917913 V 0.596605 0. // -0.637655 SENSOR2D s/sens2 @@ -746,7 +746,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 13.3129 chi2 177.233 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.50619 0. // 0.271926 V 0.643803 0. // -0.590457 SENSOR2D s/sens2 @@ -755,7 +755,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 10.0383 chi2 100.767 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.52823 0. // 0.293968 V 1.11097 0. // -0.123285 SENSOR2D s/sens2 @@ -764,7 +764,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 15.2486 chi2 232.52 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.51418 0. // 0.279921 V 1.07439 0. // -0.159872 SENSOR2D s/sens2 @@ -773,7 +773,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 5.90171 chi2 34.8301 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.739173 0. // -0.495086 V 1.80335 0. // 0.569086 SENSOR2D s/sens2 @@ -782,7 +782,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 8.46052 chi2 71.5805 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.19022 0. // -0.0440385 V 1.23592 0. // 0.00166146 SENSOR2D s/sens2 @@ -791,7 +791,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 4.54594 chi2 20.6656 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.266734 0. // -0.967526 V 0.349841 0. // -0.884418 SENSOR2D s/sens2 @@ -800,7 +800,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 15.1709 chi2 230.155 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 2.18226 0. // 0.947996 V 0.293977 0. // -0.940282 SENSOR2D s/sens2 @@ -809,7 +809,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 16.6821 chi2 278.294 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 2.58233 0. // 1.34807 V 2.09279 0. // 0.858529 SENSOR2D s/sens2 @@ -818,7 +818,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 19.0531 chi2 363.021 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 2.31275 0. // 1.07849 V 1.11336 0. // -0.120895 SENSOR2D s/sens2 @@ -827,7 +827,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 22.0635 chi2 486.798 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.17597 0. // -0.0582914 V 0.965773 0. // -0.268487 SENSOR2D s/sens2 @@ -836,7 +836,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 12.1603 chi2 147.873 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H -0.227094 0. // -1.46135 V 0.670096 0. // -0.564163 SENSOR2D s/sens2 @@ -845,7 +845,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 22.6947 chi2 515.047 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.14708 0. // -0.0871804 V 2.80248 0. // 1.56822 SENSOR2D s/sens2 @@ -854,7 +854,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 22.1242 chi2 489.48 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 3.62137 0. // 2.38711 V 0.499017 0. // -0.735242 SENSOR2D s/sens2 @@ -863,7 +863,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 26.5774 chi2 706.359 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H -0.0314051 0. // -1.26566 V 1.47909 0. // 0.244827 SENSOR2D s/sens2 @@ -872,7 +872,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 13.1042 chi2 171.72 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.67038 0. // 0.436122 V -0.406689 0. // -1.64095 SENSOR2D s/sens2 @@ -881,7 +881,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 18.2487 chi2 333.015 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 1.70348 0. // 0.46922 V 1.88903 0. // 0.654773 SENSOR2D s/sens2 @@ -890,7 +890,7 @@ DATE: 00/00/0000 00:00 //SET DONE: # SIGMA AWAY= 8.74222 chi2 76.4265 DATE: 00/00/0000 00:00 - SENSOR2D sens1 + SENSOR2D s/sens1 H 0.839392 0. // -0.394868 V 1.32702 0. // 0.0927588 SENSOR2D s/sens2 diff --git a/Alignment/CocoaApplication/bin/simple2D.txt b/Alignment/CocoaApplication/bin/simple2D.txt index ec3f3953484..7333b467344 100644 --- a/Alignment/CocoaApplication/bin/simple2D.txt +++ b/Alignment/CocoaApplication/bin/simple2D.txt @@ -37,7 +37,7 @@ output_angle_value_dimension 3//degrees output_angle_error_dimension 3//millirad -VisWriteVRML 1 +VisWriteVRML 0 VisWriteIguana 2 MaxNoFitIterations 5000 @@ -93,7 +93,7 @@ sensor2D sens2 MEASUREMENTS -SENSOR2D sens1 +SENSOR2D s/laser1 & s/sens1 H 1.2342595 error_prec_mes_ccd V 1.2342595 error_prec_mes_ccd diff --git a/Alignment/CocoaApplication/bin/simple2DWithMirror.meas b/Alignment/CocoaApplication/bin/simple2DWithMirror.meas deleted file mode 100644 index 8984b7a9739..00000000000 --- a/Alignment/CocoaApplication/bin/simple2DWithMirror.meas +++ /dev/null @@ -1,900 +0,0 @@ -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23426 0. // 0 - V 1.23426 0. // 0 - SENSOR2D OCMS/sens2 - H 2.46852 0. // 0 - V 2.46852 0. // 0 - //SET DONE: # SIGMA AWAY= 0 chi2 0 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23417 0. // -8.76598e-05 - V 1.23412 0. // -0.000140295 - SENSOR2D OCMS/sens2 - H 2.46851 0. // -8.89336e-06 - V 2.46854 0. // 1.7825e-05 - //SET DONE: # SIGMA AWAY= 0.00166624 chi2 2.77636e-06 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23407 0. // -0.000191369 - V 1.23407 0. // -0.000193394 - SENSOR2D OCMS/sens2 - H 2.46838 0. // -0.000136419 - V 2.46785 0. // -0.000672749 - //SET DONE: # SIGMA AWAY= 0.00738393 chi2 5.45225e-05 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23292 0. // -0.00133889 - V 1.23451 0. // 0.000253465 - SENSOR2D OCMS/sens2 - H 2.46993 0. // 0.00140691 - V 2.46911 0. // 0.000589323 - //SET DONE: # SIGMA AWAY= 0.0204538 chi2 0.000418358 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23434 0. // 8.54525e-05 - V 1.23269 0. // -0.00157015 - SENSOR2D OCMS/sens2 - H 2.46969 0. // 0.00116678 - V 2.4701 0. // 0.00157774 - //SET DONE: # SIGMA AWAY= 0.0251462 chi2 0.000632331 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23774 0. // 0.00348257 - V 1.2329 0. // -0.00135899 - SENSOR2D OCMS/sens2 - H 2.47463 0. // 0.00610669 - V 2.46808 0. // -0.000434117 - //SET DONE: # SIGMA AWAY= 0.0717323 chi2 0.00514553 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23208 0. // -0.00218173 - V 1.22262 0. // -0.0116399 - SENSOR2D OCMS/sens2 - H 2.46286 0. // -0.00566197 - V 2.46865 0. // 0.000132174 - //SET DONE: # SIGMA AWAY= 0.131272 chi2 0.0172324 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.2418 0. // 0.00754262 - V 1.23546 0. // 0.0012002 - SENSOR2D OCMS/sens2 - H 2.47686 0. // 0.00834211 - V 2.46696 0. // -0.00155661 - //SET DONE: # SIGMA AWAY= 0.114169 chi2 0.0130345 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23351 0. // -0.00075084 - V 1.23263 0. // -0.00162803 - SENSOR2D OCMS/sens2 - H 2.46482 0. // -0.00370223 - V 2.48474 0. // 0.0162162 - //SET DONE: # SIGMA AWAY= 0.167298 chi2 0.0279887 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23936 0. // 0.00509941 - V 1.24659 0. // 0.012333 - SENSOR2D OCMS/sens2 - H 2.46328 0. // -0.00523521 - V 2.47039 0. // 0.00187401 - //SET DONE: # SIGMA AWAY= 0.144577 chi2 0.0209026 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.25123 0. // 0.0169691 - V 1.24221 0. // 0.00795248 - SENSOR2D OCMS/sens2 - H 2.46863 0. // 0.000114845 - V 2.47364 0. // 0.00511986 - //SET DONE: # SIGMA AWAY= 0.194273 chi2 0.0377419 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23412 0. // -0.000142297 - V 1.2423 0. // 0.00803729 - SENSOR2D OCMS/sens2 - H 2.47791 0. // 0.00939219 - V 2.46136 0. // -0.00716251 - //SET DONE: # SIGMA AWAY= 0.142875 chi2 0.0204133 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.25255 0. // 0.0182871 - V 1.21894 0. // -0.0153161 - SENSOR2D OCMS/sens2 - H 2.46223 0. // -0.00628497 - V 2.45447 0. // -0.0140522 - //SET DONE: # SIGMA AWAY= 0.283895 chi2 0.0805967 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.25096 0. // 0.016702 - V 1.20034 0. // -0.0339199 - SENSOR2D OCMS/sens2 - H 2.48524 0. // 0.0167254 - V 2.50296 0. // 0.034445 - //SET DONE: # SIGMA AWAY= 0.538118 chi2 0.289571 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23201 0. // -0.00225271 - V 1.24149 0. // 0.00722908 - SENSOR2D OCMS/sens2 - H 2.46336 0. // -0.00515791 - V 2.47556 0. // 0.00703738 - //SET DONE: # SIGMA AWAY= 0.115526 chi2 0.0133463 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.19591 0. // -0.0383504 - V 1.19036 0. // -0.0438991 - SENSOR2D OCMS/sens2 - H 2.47948 0. // 0.0109602 - V 2.44573 0. // -0.0227841 - //SET DONE: # SIGMA AWAY= 0.635384 chi2 0.403712 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.22461 0. // -0.00964913 - V 1.19902 0. // -0.0352387 - SENSOR2D OCMS/sens2 - H 2.4598 0. // -0.00871855 - V 2.48617 0. // 0.0176539 - //SET DONE: # SIGMA AWAY= 0.415035 chi2 0.172254 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.26876 0. // 0.0344963 - V 1.27519 0. // 0.040931 - SENSOR2D OCMS/sens2 - H 2.51415 0. // 0.045628 - V 2.46043 0. // -0.00809119 - //SET DONE: # SIGMA AWAY= 0.708006 chi2 0.501272 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.28298 0. // 0.0487216 - V 1.23767 0. // 0.00341059 - SENSOR2D OCMS/sens2 - H 2.52378 0. // 0.0552593 - V 2.43454 0. // -0.0339791 - //SET DONE: # SIGMA AWAY= 0.81201 chi2 0.65936 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.27749 0. // 0.0432347 - V 1.27572 0. // 0.0414592 - SENSOR2D OCMS/sens2 - H 2.4797 0. // 0.0111842 - V 2.54904 0. // 0.0805227 - //SET DONE: # SIGMA AWAY= 1.00981 chi2 1.01971 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.26547 0. // 0.0312062 - V 1.2664 0. // 0.0321453 - SENSOR2D OCMS/sens2 - H 2.37272 0. // -0.0957995 - V 2.437 0. // -0.0315209 - //SET DONE: # SIGMA AWAY= 1.10355 chi2 1.21783 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.23383 0. // -0.000433638 - V 1.17385 0. // -0.0604061 - SENSOR2D OCMS/sens2 - H 2.40506 0. // -0.0634607 - V 2.42025 0. // -0.0482641 - //SET DONE: # SIGMA AWAY= 1.00029 chi2 1.00058 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.16428 0. // -0.0699789 - V 1.28385 0. // 0.0495934 - SENSOR2D OCMS/sens2 - H 2.55614 0. // 0.0876243 - V 2.46378 0. // -0.00474338 - //SET DONE: # SIGMA AWAY= 1.22707 chi2 1.50571 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.20907 0. // -0.0251891 - V 1.25611 0. // 0.0218516 - SENSOR2D OCMS/sens2 - H 2.52198 0. // 0.0534612 - V 2.43779 0. // -0.0307272 - //SET DONE: # SIGMA AWAY= 0.701016 chi2 0.491424 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.2785 0. // 0.0442446 - V 1.32691 0. // 0.0926553 - SENSOR2D OCMS/sens2 - H 2.44213 0. // -0.0263923 - V 2.47923 0. // 0.0107133 - //SET DONE: # SIGMA AWAY= 1.06555 chi2 1.13539 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.16153 0. // -0.0727308 - V 1.26412 0. // 0.0298597 - SENSOR2D OCMS/sens2 - H 2.55595 0. // 0.0874308 - V 2.47184 0. // 0.0033205 - //SET DONE: # SIGMA AWAY= 1.17629 chi2 1.38365 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.29506 0. // 0.0608024 - V 1.18881 0. // -0.0454467 - SENSOR2D OCMS/sens2 - H 2.40375 0. // -0.0647727 - V 2.49085 0. // 0.0223345 - //SET DONE: # SIGMA AWAY= 1.02258 chi2 1.04567 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.17834 0. // -0.0559215 - V 1.19383 0. // -0.0404251 - SENSOR2D OCMS/sens2 - H 2.45133 0. // -0.0171846 - V 2.51877 0. // 0.0502494 - //SET DONE: # SIGMA AWAY= 0.87073 chi2 0.758171 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.05424 0. // -0.180015 - V 1.17945 0. // -0.0548067 - SENSOR2D OCMS/sens2 - H 2.36127 0. // -0.107253 - V 2.43064 0. // -0.0378816 - //SET DONE: # SIGMA AWAY= 2.19881 chi2 4.83475 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.25622 0. // 0.0219595 - V 1.32425 0. // 0.0899894 - SENSOR2D OCMS/sens2 - H 2.45543 0. // -0.0130897 - V 2.39181 0. // -0.0767042 - //SET DONE: # SIGMA AWAY= 1.20976 chi2 1.46352 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.04815 0. // -0.186106 - V 1.40534 0. // 0.171078 - SENSOR2D OCMS/sens2 - H 2.50288 0. // 0.0343581 - V 2.52352 0. // 0.0550013 - //SET DONE: # SIGMA AWAY= 2.60976 chi2 6.81086 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.38374 0. // 0.149477 - V 1.37617 0. // 0.141912 - SENSOR2D OCMS/sens2 - H 2.62013 0. // 0.151609 - V 2.53129 0. // 0.0627729 - //SET DONE: # SIGMA AWAY= 2.63454 chi2 6.94079 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.31513 0. // 0.0808699 - V 0.942127 0. // -0.292133 - SENSOR2D OCMS/sens2 - H 2.57111 0. // 0.102595 - V 2.47809 0. // 0.0095693 - //SET DONE: # SIGMA AWAY= 3.20154 chi2 10.2499 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.2624 0. // 0.0281442 - V 1.03651 0. // -0.197747 - SENSOR2D OCMS/sens2 - H 2.56642 0. // 0.0979021 - V 2.48115 0. // 0.0126327 - //SET DONE: # SIGMA AWAY= 2.22801 chi2 4.96403 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.17412 0. // -0.0601347 - V 1.27774 0. // 0.0434814 - SENSOR2D OCMS/sens2 - H 2.40972 0. // -0.0587942 - V 2.33454 0. // -0.133979 - //SET DONE: # SIGMA AWAY= 1.64055 chi2 2.6914 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.14089 0. // -0.0933719 - V 1.07299 0. // -0.161272 - SENSOR2D OCMS/sens2 - H 2.51755 0. // 0.0490268 - V 2.42062 0. // -0.0479005 - //SET DONE: # SIGMA AWAY= 1.98558 chi2 3.94251 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.314 0. // 0.0797396 - V 1.26919 0. // 0.0349288 - SENSOR2D OCMS/sens2 - H 2.38747 0. // -0.0810524 - V 2.46584 0. // -0.00268306 - //SET DONE: # SIGMA AWAY= 1.18975 chi2 1.41551 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.25153 0. // 0.0172684 - V 0.988171 0. // -0.246088 - SENSOR2D OCMS/sens2 - H 2.30792 0. // -0.1606 - V 2.64355 0. // 0.175033 - //SET DONE: # SIGMA AWAY= 3.42471 chi2 11.7287 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.12941 0. // -0.104849 - V 1.23027 0. // -0.00399401 - SENSOR2D OCMS/sens2 - H 2.38992 0. // -0.0786005 - V 2.48563 0. // 0.0171075 - //SET DONE: # SIGMA AWAY= 1.32212 chi2 1.74801 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.32793 0. // 0.0936738 - V 1.33154 0. // 0.0972824 - SENSOR2D OCMS/sens2 - H 2.47392 0. // 0.00539969 - V 2.48922 0. // 0.0207051 - //SET DONE: # SIGMA AWAY= 1.36735 chi2 1.86965 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.26668 0. // 0.0324186 - V 1.14724 0. // -0.0870196 - SENSOR2D OCMS/sens2 - H 2.34645 0. // -0.122074 - V 2.61871 0. // 0.150193 - //SET DONE: # SIGMA AWAY= 2.1467 chi2 4.60832 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.07731 0. // -0.156953 - V 1.40574 0. // 0.171483 - SENSOR2D OCMS/sens2 - H 2.49214 0. // 0.0236176 - V 2.41923 0. // -0.0492898 - //SET DONE: # SIGMA AWAY= 2.38806 chi2 5.70281 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.09754 0. // -0.136724 - V 0.945432 0. // -0.288828 - SENSOR2D OCMS/sens2 - H 2.39731 0. // -0.0712097 - V 2.30134 0. // -0.16718 - //SET DONE: # SIGMA AWAY= 3.67607 chi2 13.5135 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.40311 0. // 0.168848 - V 1.4845 0. // 0.250237 - SENSOR2D OCMS/sens2 - H 2.36376 0. // -0.104764 - V 2.5985 0. // 0.129982 - //SET DONE: # SIGMA AWAY= 3.44962 chi2 11.8999 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.48719 0. // 0.252932 - V 1.34928 0. // 0.115024 - SENSOR2D OCMS/sens2 - H 2.60641 0. // 0.137888 - V 2.57767 0. // 0.109149 - //SET DONE: # SIGMA AWAY= 3.28834 chi2 10.8132 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.33672 0. // 0.102465 - V 1.25962 0. // 0.0253638 - SENSOR2D OCMS/sens2 - H 2.39019 0. // -0.0783305 - V 2.62713 0. // 0.158614 - //SET DONE: # SIGMA AWAY= 2.06001 chi2 4.24364 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.07495 0. // -0.159312 - V 1.03882 0. // -0.195442 - SENSOR2D OCMS/sens2 - H 2.55159 0. // 0.083074 - V 1.8488 0. // -0.619719 - //SET DONE: # SIGMA AWAY= 6.74189 chi2 45.4531 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.29943 0. // 0.0651753 - V 1.19305 0. // -0.0412134 - SENSOR2D OCMS/sens2 - H 2.33272 0. // -0.135802 - V 3.04389 0. // 0.575373 - //SET DONE: # SIGMA AWAY= 5.9619 chi2 35.5442 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.33543 0. // 0.101167 - V 1.16819 0. // -0.0660657 - SENSOR2D OCMS/sens2 - H 2.89101 0. // 0.422492 - V 2.49581 0. // 0.0272895 - //SET DONE: # SIGMA AWAY= 4.40276 chi2 19.3843 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.29536 0. // 0.0610968 - V 1.29893 0. // 0.0646694 - SENSOR2D OCMS/sens2 - H 2.45513 0. // -0.0133901 - V 2.44842 0. // -0.0200978 - //SET DONE: # SIGMA AWAY= 0.921855 chi2 0.849817 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.54891 0. // 0.314655 - V 0.940713 0. // -0.293546 - SENSOR2D OCMS/sens2 - H 2.86191 0. // 0.393386 - V 2.44053 0. // -0.0279909 - //SET DONE: # SIGMA AWAY= 5.83706 chi2 34.0713 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.900111 0. // -0.334149 - V 1.21456 0. // -0.0196956 - SENSOR2D OCMS/sens2 - H 2.77784 0. // 0.309319 - V 2.39116 0. // -0.0773556 - //SET DONE: # SIGMA AWAY= 4.62283 chi2 21.3705 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.733932 0. // -0.500328 - V 0.768825 0. // -0.465434 - SENSOR2D OCMS/sens2 - H 2.2291 0. // -0.239414 - V 2.72751 0. // 0.258988 - //SET DONE: # SIGMA AWAY= 7.68993 chi2 59.1351 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.18852 0. // -0.045737 - V 1.07486 0. // -0.159397 - SENSOR2D OCMS/sens2 - H 2.36826 0. // -0.100255 - V 2.45854 0. // -0.00998034 - //SET DONE: # SIGMA AWAY= 1.94036 chi2 3.765 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.17798 0. // -0.0562806 - V 1.67911 0. // 0.444853 - SENSOR2D OCMS/sens2 - H 1.93372 0. // -0.534798 - V 2.62984 0. // 0.161318 - //SET DONE: # SIGMA AWAY= 7.16306 chi2 51.3095 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.49167 0. // 0.257412 - V 1.06936 0. // -0.164895 - SENSOR2D OCMS/sens2 - H 2.56103 0. // 0.0925085 - V 2.8135 0. // 0.344979 - //SET DONE: # SIGMA AWAY= 4.70127 chi2 22.1019 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.10038 0. // -0.13388 - V 1.09157 0. // -0.142692 - SENSOR2D OCMS/sens2 - H 2.3306 0. // -0.137916 - V 2.15281 0. // -0.315705 - //SET DONE: # SIGMA AWAY= 3.96201 chi2 15.6975 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.33472 0. // 0.100464 - V 1.84137 0. // 0.607108 - SENSOR2D OCMS/sens2 - H 2.6655 0. // 0.196977 - V 2.62268 0. // 0.154163 - //SET DONE: # SIGMA AWAY= 6.64258 chi2 44.1239 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.36028 0. // 0.126024 - V 0.851812 0. // -0.382448 - SENSOR2D OCMS/sens2 - H 2.45077 0. // -0.0177507 - V 2.52192 0. // 0.0534003 - //SET DONE: # SIGMA AWAY= 4.0659 chi2 16.5315 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.987027 0. // -0.247232 - V 1.37659 0. // 0.142326 - SENSOR2D OCMS/sens2 - H 2.78359 0. // 0.315067 - V 2.11917 0. // -0.349351 - //SET DONE: # SIGMA AWAY= 5.50176 chi2 30.2694 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.13346 0. // -0.100796 - V 1.69014 0. // 0.455877 - SENSOR2D OCMS/sens2 - H 2.8911 0. // 0.422579 - V 2.347 0. // -0.121518 - //SET DONE: # SIGMA AWAY= 6.41344 chi2 41.1323 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.85367 0. // 0.619413 - V 0.78905 0. // -0.445209 - SENSOR2D OCMS/sens2 - H 2.21492 0. // -0.253602 - V 2.18292 0. // -0.285595 - //SET DONE: # SIGMA AWAY= 8.5309 chi2 72.7762 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.29413 0. // 0.0598724 - V 1.08224 0. // -0.152019 - SENSOR2D OCMS/sens2 - H 2.12707 0. // -0.341444 - V 2.28047 0. // -0.188044 - //SET DONE: # SIGMA AWAY= 4.22658 chi2 17.8639 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.14853 0. // -0.0857273 - V 0.347823 0. // -0.886437 - SENSOR2D OCMS/sens2 - H 2.26772 0. // -0.200802 - V 2.36922 0. // -0.0992967 - //SET DONE: # SIGMA AWAY= 9.18314 chi2 84.3301 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.60745 0. // 0.373188 - V 1.31503 0. // 0.0807663 - SENSOR2D OCMS/sens2 - H 3.04924 0. // 0.580719 - V 2.1434 0. // -0.325121 - //SET DONE: # SIGMA AWAY= 7.67287 chi2 58.873 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.1498 0. // -0.0844638 - V 1.1484 0. // -0.0858606 - SENSOR2D OCMS/sens2 - H 2.84964 0. // 0.381118 - V 2.60808 0. // 0.139561 - //SET DONE: # SIGMA AWAY= 4.2336 chi2 17.9234 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.19356 0. // -0.0406982 - V 1.55577 0. // 0.321506 - SENSOR2D OCMS/sens2 - H 2.06694 0. // -0.401582 - V 2.31002 0. // -0.158497 - //SET DONE: # SIGMA AWAY= 5.39826 chi2 29.1412 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.56817 0. // 0.333911 - V 1.79672 0. // 0.562462 - SENSOR2D OCMS/sens2 - H 2.66977 0. // 0.201249 - V 3.10176 0. // 0.633238 - //SET DONE: # SIGMA AWAY= 9.32391 chi2 86.9352 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.391432 0. // -0.842828 - V 0.881492 0. // -0.352768 - SENSOR2D OCMS/sens2 - H 1.99549 0. // -0.473033 - V 2.11629 0. // -0.352228 - //SET DONE: # SIGMA AWAY= 10.8749 chi2 118.263 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.971596 0. // -0.262664 - V 0.902899 0. // -0.33136 - SENSOR2D OCMS/sens2 - H 1.98754 0. // -0.480979 - V 2.27308 0. // -0.19544 - //SET DONE: # SIGMA AWAY= 6.69574 chi2 44.8329 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.05315 0. // -0.181106 - V 1.02288 0. // -0.211382 - SENSOR2D OCMS/sens2 - H 2.12018 0. // -0.348343 - V 2.72509 0. // 0.256575 - //SET DONE: # SIGMA AWAY= 5.14447 chi2 26.4655 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.916615 0. // -0.317644 - V 1.20182 0. // -0.0324377 - SENSOR2D OCMS/sens2 - H 2.49452 0. // 0.0259962 - V 3.45223 0. // 0.983706 - //SET DONE: # SIGMA AWAY= 10.3456 chi2 107.03 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.769518 0. // -0.464741 - V 0.625156 0. // -0.609103 - SENSOR2D OCMS/sens2 - H 2.30443 0. // -0.164086 - V 2.1977 0. // -0.270817 - //SET DONE: # SIGMA AWAY= 8.29009 chi2 68.7257 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.389233 0. // -0.845027 - V 1.23563 0. // 0.00136675 - SENSOR2D OCMS/sens2 - H 2.76145 0. // 0.292935 - V 2.47498 0. // 0.00646251 - //SET DONE: # SIGMA AWAY= 8.94385 chi2 79.9925 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.56714 0. // 0.33288 - V 0.364107 0. // -0.870153 - SENSOR2D OCMS/sens2 - H 2.82402 0. // 0.355506 - V 2.76033 0. // 0.291811 - //SET DONE: # SIGMA AWAY= 10.39 chi2 107.951 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.60333 0. // 0.369066 - V 0.611549 0. // -0.62271 - SENSOR2D OCMS/sens2 - H 1.69148 0. // -0.777041 - V 2.11584 0. // -0.35268 - //SET DONE: # SIGMA AWAY= 11.19 chi2 125.215 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.911669 0. // -0.32259 - V 1.21014 0. // -0.0241232 - SENSOR2D OCMS/sens2 - H 2.59748 0. // 0.128966 - V 3.34901 0. // 0.88049 - //SET DONE: # SIGMA AWAY= 9.46858 chi2 89.6541 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.41801 0. // -0.816249 - V 1.35118 0. // 0.116917 - SENSOR2D OCMS/sens2 - H 3.38805 0. // 0.919529 - V 3.15104 0. // 0.682524 - //SET DONE: # SIGMA AWAY= 14.1114 chi2 199.13 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.74035 0. // 0.506089 - V 1.62465 0. // 0.390393 - SENSOR2D OCMS/sens2 - H 2.13523 0. // -0.333285 - V 2.28417 0. // -0.184351 - //SET DONE: # SIGMA AWAY= 7.44041 chi2 55.3597 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.78348 0. // 0.549217 - V 1.44256 0. // 0.208302 - SENSOR2D OCMS/sens2 - H 3.40684 0. // 0.938322 - V 2.13904 0. // -0.329474 - //SET DONE: # SIGMA AWAY= 11.55 chi2 133.403 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.09925 0. // -0.135007 - V 1.78323 0. // 0.548974 - SENSOR2D OCMS/sens2 - H 3.26788 0. // 0.799365 - V 2.14761 0. // -0.320904 - //SET DONE: # SIGMA AWAY= 10.3032 chi2 106.156 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 2.63542 0. // 1.40116 - V -0.0865342 0. // -1.32079 - SENSOR2D OCMS/sens2 - H 2.47084 0. // 0.00231673 - V 2.66473 0. // 0.196209 - //SET DONE: # SIGMA AWAY= 19.3552 chi2 374.625 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.316346 0. // -0.917913 - V 0.596605 0. // -0.637655 - SENSOR2D OCMS/sens2 - H 1.74606 0. // -0.722455 - V 2.50348 0. // 0.0349563 - //SET DONE: # SIGMA AWAY= 13.3129 chi2 177.233 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.50619 0. // 0.271926 - V 0.643803 0. // -0.590457 - SENSOR2D OCMS/sens2 - H 2.68542 0. // 0.216902 - V 1.735 0. // -0.733514 - //SET DONE: # SIGMA AWAY= 10.0383 chi2 100.767 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.52823 0. // 0.293968 - V 1.11097 0. // -0.123285 - SENSOR2D OCMS/sens2 - H 2.69432 0. // 0.225805 - V 3.94249 0. // 1.47397 - //SET DONE: # SIGMA AWAY= 15.2486 chi2 232.52 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.51418 0. // 0.279921 - V 1.07439 0. // -0.159872 - SENSOR2D OCMS/sens2 - H 2.57949 0. // 0.110975 - V 2.95026 0. // 0.481738 - //SET DONE: # SIGMA AWAY= 5.90171 chi2 34.8301 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.739173 0. // -0.495086 - V 1.80335 0. // 0.569086 - SENSOR2D OCMS/sens2 - H 2.60296 0. // 0.134438 - V 2.10968 0. // -0.358834 - //SET DONE: # SIGMA AWAY= 8.46052 chi2 71.5805 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.19022 0. // -0.0440385 - V 1.23592 0. // 0.00166146 - SENSOR2D OCMS/sens2 - H 2.03519 0. // -0.433326 - V 2.59868 0. // 0.130163 - //SET DONE: # SIGMA AWAY= 4.54594 chi2 20.6656 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.266734 0. // -0.967526 - V 0.349841 0. // -0.884418 - SENSOR2D OCMS/sens2 - H 2.93831 0. // 0.469789 - V 1.8664 0. // -0.602117 - //SET DONE: # SIGMA AWAY= 15.1709 chi2 230.155 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 2.18226 0. // 0.947996 - V 0.293977 0. // -0.940282 - SENSOR2D OCMS/sens2 - H 3.30973 0. // 0.841208 - V 1.92771 0. // -0.540812 - //SET DONE: # SIGMA AWAY= 16.6821 chi2 278.294 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 2.58233 0. // 1.34807 - V 2.09279 0. // 0.858529 - SENSOR2D OCMS/sens2 - H 1.76363 0. // -0.704892 - V 1.70762 0. // -0.760899 - //SET DONE: # SIGMA AWAY= 19.0531 chi2 363.021 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 2.31275 0. // 1.07849 - V 1.11336 0. // -0.120895 - SENSOR2D OCMS/sens2 - H 0.741735 0. // -1.72678 - V 1.62684 0. // -0.841681 - //SET DONE: # SIGMA AWAY= 22.0635 chi2 486.798 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.17597 0. // -0.0582914 - V 0.965773 0. // -0.268487 - SENSOR2D OCMS/sens2 - H 1.45824 0. // -1.01028 - V 1.84998 0. // -0.61854 - //SET DONE: # SIGMA AWAY= 12.1603 chi2 147.873 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H -0.227094 0. // -1.46135 - V 0.670096 0. // -0.564163 - SENSOR2D OCMS/sens2 - H 2.41092 0. // -0.0575971 - V 4.10965 0. // 1.64113 - //SET DONE: # SIGMA AWAY= 22.6947 chi2 515.047 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.14708 0. // -0.0871804 - V 2.80248 0. // 1.56822 - SENSOR2D OCMS/sens2 - H 3.90775 0. // 1.43923 - V 1.87144 0. // -0.59708 - //SET DONE: # SIGMA AWAY= 22.1242 chi2 489.48 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 3.62137 0. // 2.38711 - V 0.499017 0. // -0.735242 - SENSOR2D OCMS/sens2 - H 3.16834 0. // 0.699819 - V 1.88974 0. // -0.578776 - //SET DONE: # SIGMA AWAY= 26.5774 chi2 706.359 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H -0.0314051 0. // -1.26566 - V 1.47909 0. // 0.244827 - SENSOR2D OCMS/sens2 - H 2.26632 0. // -0.2022 - V 2.34822 0. // -0.120298 - //SET DONE: # SIGMA AWAY= 13.1042 chi2 171.72 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.67038 0. // 0.436122 - V -0.406689 0. // -1.64095 - SENSOR2D OCMS/sens2 - H 2.56459 0. // 0.0960726 - V 1.8067 0. // -0.661823 - //SET DONE: # SIGMA AWAY= 18.2487 chi2 333.015 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 1.70348 0. // 0.46922 - V 1.88903 0. // 0.654773 - SENSOR2D OCMS/sens2 - H 2.64185 0. // 0.17333 - V 2.17641 0. // -0.292106 - //SET DONE: # SIGMA AWAY= 8.74222 chi2 76.4265 - -DATE: 00/00/0000 00:00 - SENSOR2D sens1 - H 0.839392 0. // -0.394868 - V 1.32702 0. // 0.0927588 - SENSOR2D OCMS/sens2 - H 2.91881 0. // 0.450291 - V 3.54412 0. // 1.0756 - //SET DONE: # SIGMA AWAY= 12.3459 chi2 152.42 - diff --git a/Alignment/CocoaApplication/bin/simple2DWithMirror.txt b/Alignment/CocoaApplication/bin/simple2DWithMirror.txt deleted file mode 100644 index f5ca9b89385..00000000000 --- a/Alignment/CocoaApplication/bin/simple2DWithMirror.txt +++ /dev/null @@ -1,131 +0,0 @@ -//#include simple2D.param - -laser_posY 0.0 -laser_angX 0. -sens1_posY 0. -sens2_posY 0. - -GLOBAL_OPTIONS - -//stopAfter1stIteration 1 - -calParamInyfMatrix 1 - -rotateAroundLocal 1 - -report_verbose 3 - -save_matrices 0 - -debug_verbose 5 - -calcul_type 0 - -length_value_dimension 1//millimeter - -length_error_dimension 2//micrometer - -angle_value_dimension 3//degrees - -angle_error_dimension 1//millirad - -output_length_value_dimension 1//millimeter - -output_length_error_dimension 1//micrometers - -output_angle_value_dimension 3//degrees - -output_angle_error_dimension 3//millirad - -VisWriteVRML 0 -VisWriteIguana 2 -MaxNoFitIterations 5000 - -VisOnly 0 - -FitQualityCut 0.001 -reportOutReadSigma 0 -reportOutReadQuality 0 -//#include report.outyf - -PARAMETERS - -error_prec_mes_ccd 100 - -sens_pos_err 10 -sens_ang_err 10 -mirr_pos_err 10 -mirr_ang_err 10 - -SYSTEM_TREE_DESCRIPTION - -object system laser mirror 2 sensor2D - -SYSTEM_TREE_DATA - -system OCMS -laser laser1 - centre - X 0. 10 fix - Y laser_posY 10 unk - Z 0. 10 fix - angles - X laser_angX 1 unk - Y 0. 10 fix - Z 45. 10 fix -mirror mirror - ENTRY { - length length 4. 0. fix - length width 4. 0. fix - nodim refra_ind 1.4 0 fix - length shiftTX 0.1 10. fix - angle deviTX 0.03 10. fix - } - centre - X 0 mirr_pos_err fix - Y sens2_posY mirr_pos_err cal - Z 200 mirr_pos_err fix - angles - X 0. mirr_ang_err fix - Y 45. mirr_ang_err fix - Z 0. mirr_ang_err fix -sensor2D sens1 - centre - X 0 sens_pos_err fix - Y sens1_posY sens_pos_err cal - Z 100 sens_pos_err fix - angles - X 0 sens_ang_err fix - Y 0 sens_ang_err fix - Z 0 sens_ang_err fix -sensor2D sens2 - centre - X 100 sens_pos_err fix - Y 0 sens_pos_err cal - Z 200 sens_pos_err fix - angles - X 0 sens_ang_err fix - Y 90. sens_ang_err fix - Z 0 sens_ang_err fix - - -MEASUREMENTS - -SENSOR2D sens1 -OCMS/laser1 & OCMS/sens1 -H simulated_value error_prec_mes_ccd -V simulated_value error_prec_mes_ccd -//H 1.2342595 error_prec_mes_ccd -//V 1.2342595 error_prec_mes_ccd - -SENSOR2D -OCMS/laser1 & OCMS/mirror:DD & OCMS/sens2 -//H 2.468519 error_prec_mes_ccd -//V 2.568519 error_prec_mes_ccd -H simulated_value error_prec_mes_ccd -V simulated_value error_prec_mes_ccd - - -measurements_from_file simple2DWithMirror.meas - - diff --git a/Alignment/CocoaApplication/interface/CocoaAnalyzer.h b/Alignment/CocoaApplication/interface/CocoaAnalyzer.h deleted file mode 100644 index 91759bafd6f..00000000000 --- a/Alignment/CocoaApplication/interface/CocoaAnalyzer.h +++ /dev/null @@ -1,89 +0,0 @@ -#ifndef CocoaAnalyser_HH -#define CocoaAnalyser_HH -//-*- C++ -*- -// -// Package: Alignment/CocoaApplication -// Class: CocoaAnalyzer -// -/* - - Description: test access to the OpticalAlignMeasurements via OpticalAlignMeasurementsGeneratedSource - This also should demonstrate access to a geometry via the XMLIdealGeometryESSource - for use in THE COCOA analyzer. - - Implementation: - Iterate over retrieved alignments. -*/ -// - -#include <stdexcept> -#include <string> -#include <iostream> -#include <map> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "DetectorDescription/Core/interface/DDSpecifics.h" - -class Event; -class EventSetup; -class Entry; -//#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "CondFormats/OptAlignObjects/interface/OAQuality.h" -#include "CondFormats/OptAlignObjects/interface/OpticalAlignments.h" -#include "CondFormats/OptAlignObjects/interface/OpticalAlignInfo.h" -#include "CondFormats/OptAlignObjects/interface/OpticalAlignMeasurements.h" -#include "CondFormats/OptAlignObjects/interface/OpticalAlignMeasurementInfo.h" - -#include "CondFormats/DataRecord/interface/OpticalAlignmentsRcd.h" - -class DDFilteredView; -class DDCompactView; -class DDSpecifics; -class OpticalObject; - -#include "Geometry/Records/interface/IdealGeometryRecord.h" - -using namespace std; - -class CocoaAnalyzer : public edm::EDAnalyzer -{ - public: - - explicit CocoaAnalyzer(edm::ParameterSet const& p); - explicit CocoaAnalyzer(int i) { } - virtual ~ CocoaAnalyzer() { } - - virtual void beginJob(const edm::EventSetup& c); - virtual void analyze(const edm::Event& e, const edm::EventSetup& c); - // see note on endJob() at the bottom of the file. - // virtual void endJob() ; - - private: - void ReadXMLFile( const edm::EventSetup& evts ); - std::vector<OpticalAlignInfo> ReadCalibrationDB( const edm::EventSetup& evts ); - - void CorrectOptAlignments( std::vector<OpticalAlignInfo>& oaListCalib ); - OpticalAlignInfo* FindOpticalAlignInfoXML( OpticalAlignInfo oaInfo ); - bool CorrectOaParam( OpticalAlignParam* oaParamXML, OpticalAlignParam oaParamDB ); - - void RunCocoa(); - - bool DumpCocoaResults(); - double GetEntryError( const Entry* entry ); - - OpticalAlignInfo GetOptAlignInfoFromOptO( OpticalObject* opto ); - double myFetchDbl(const DDsvalues_type& dvst, - const std::string& spName, - const size_t& vecInd ); - std::string myFetchString(const DDsvalues_type& dvst, - const std::string& spName, - const size_t& vecInd ); - - private: - OpticalAlignments oaList_; - OpticalAlignMeasurements measList_; - std::string theCocoaDaqRootFileName; -}; - -#endif diff --git a/Alignment/CocoaApplication/src/CocoaAnalyzer.cc b/Alignment/CocoaApplication/src/CocoaAnalyzer.cc deleted file mode 100644 index fd507a4156b..00000000000 --- a/Alignment/CocoaApplication/src/CocoaAnalyzer.cc +++ /dev/null @@ -1,733 +0,0 @@ -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBCommon/interface/Exception.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" - -#include "../interface/CocoaAnalyzer.h" - -#include "FWCore/Framework/interface/MakerMacros.h" -#include "DetectorDescription/Core/interface/DDFilteredView.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include <list> -#include "Alignment/CocoaUtilities/interface/ALIUtils.h" -#include <assert.h> -#include "Alignment/CocoaModel/interface/Model.h" -#include "Alignment/CocoaFit/interface/Fit.h" -#include "Alignment/CocoaModel/interface/Entry.h" -#include "Alignment/CocoaUtilities/interface/ALIFileOut.h" -#include "Alignment/CocoaModel/interface/CocoaDaqReaderRoot.h" -#include "Alignment/CocoaModel/interface/OpticalObject.h" -#include "DetectorDescription/Core/interface/DDCompactView.h" - -//---------------------------------------------------------------------- -CocoaAnalyzer::CocoaAnalyzer(edm::ParameterSet const& pset) -{ - theCocoaDaqRootFileName = pset.getParameter< std::string >("cocoaDaqRootFile"); -} - -//---------------------------------------------------------------------- -void CocoaAnalyzer::beginJob( const edm::EventSetup& evts ) -{ - ReadXMLFile( evts ); - - std::vector<OpticalAlignInfo> oaListCalib = ReadCalibrationDB( evts ); - - CorrectOptAlignments( oaListCalib ); - - new CocoaDaqReaderRoot( theCocoaDaqRootFileName ); - - /*- - int nEvents = daqReader->GetNEvents(); - for( int ii = 0; ii < nEvents; ii++) { - if( ! daqReader->ReadEvent( ii ) ) break; - } - */ - - RunCocoa(); - - // std::cout << "!!!! NOT DumpCocoaResults() " << std::endl; - - DumpCocoaResults(); -} - -//----------------------------------------------------------------------- -void CocoaAnalyzer::ReadXMLFile( const edm::EventSetup& evts ) -{ - - ALIUtils::setDebugVerbosity( 5 ); - - // STEP ONE: Initial COCOA objects will be built from a DDL geometry - // description. - - edm::ESHandle<DDCompactView> cpv; - evts.get<IdealGeometryRecord>().get(cpv); - - if(ALIUtils::debug >= 3) { - std::cout << " CocoaAnalyzer ROOT " << cpv->root() << std::endl; - } - - //Build OpticalAlignInfo "system" - const DDLogicalPart lv = cpv->root(); - - OpticalAlignInfo oaInfo; - oaInfo.ID_ = 0; - //--- substract file name to object name - oaInfo.name_ = lv.name(); - int icol = oaInfo.name_.find(":"); - oaInfo.name_ = oaInfo.name_.substr(icol+1,oaInfo.name_.length()); - oaInfo.parentName_ = ""; - oaInfo.x_.quality_ = 0; - oaInfo.x_.value_ = 0.; - oaInfo.x_.error_ = 0.; - oaInfo.x_.quality_ = 0; - oaInfo.y_.value_ = 0.; - oaInfo.y_.error_ = 0.; - oaInfo.y_.quality_ = 0; - oaInfo.z_.value_ = 0.; - oaInfo.z_.error_ = 0.; - oaInfo.z_.quality_ = 0; - oaInfo.angx_.value_ = 0.; - oaInfo.angx_.error_ = 0.; - oaInfo.angx_.quality_ = 0; - oaInfo.angy_.value_ = 0.; - oaInfo.angy_.error_ = 0.; - oaInfo.angy_.quality_ = 0; - oaInfo.angz_.value_ = 0.; - oaInfo.angz_.error_ = 0.; - oaInfo.angz_.quality_ = 0; - - oaInfo.type_ = "system"; - - oaList_.opticalAlignments_.push_back(oaInfo); - oaInfo.clear(); - - // Example of traversing the whole optical alignment geometry. - // At each node we get specpars as variables and use them in - // constructing COCOA objects. - // It stores these objects in a private data member, opt - std::string attribute = "COCOA"; - std::string value = "COCOA"; - DDValue val(attribute, value, 0.0); - - // get all parts labelled with COCOA using a SpecPar - DDSpecificsFilter filter; - filter.setCriteria(val, // name & value of a variable - DDSpecificsFilter::matches, - DDSpecificsFilter::AND, - true, // compare strings otherwise doubles - true // use merged-specifics or simple-specifics - ); - DDFilteredView fv(*cpv); - fv.addFilter(filter); - bool doCOCOA = fv.firstChild(); - - // Loop on parts - int nObjects=0; - OpticalAlignParam oaParam; - OpticalAlignMeasurementInfo oaMeas; - - while ( doCOCOA ){ - ++nObjects; - oaInfo.ID_ = nObjects; - const DDsvalues_type params(fv.mergedSpecifics()); - - const DDLogicalPart lv = fv.logicalPart(); - if(ALIUtils::debug >= 4) { - std::cout << " CocoaAnalyzer: reading object " << lv.name() << std::endl; - } - - std::vector<DDExpandedNode> history = fv.geoHistory(); - oaInfo.parentName_ = ""; - for(size_t ii = 0; ii < history.size()-1;ii++ ) { - if( ii != 0 ) oaInfo.parentName_ += "/"; - std::string name = history[ii].logicalPart().name(); - icol = name.find(":"); - name = name.substr(icol+1,name.length()); - oaInfo.parentName_ += name; - // oaInfo.parentName_ = (fv.geoHistory()[fv.geoHistory().size()-2]).logicalPart().name(); -// icol = oaInfo.parentName_.find(":"); - // oaInfo.parentName_ = oaInfo.parentName_.substr(icol+1,oaInfo.parentName_.length()); - } - - //--- build object name (= parent name + object name) - std::string name = history[ii].logicalPart().name(); - //--- substract file name to object name - int icol = name.find(":"); - name = name.substr(icol+1,name.length()); - oaInfo.name_ = oaInfo.parentName_ + "/" + name; - std::cout << " @@@@@@@@@@@@@@@@ NAme built " << oaInfo.name_ << " parent " << oaInfo.parentName_ << " short " << name << std::endl; - - //----- Read centre and angles - oaInfo.x_.quality_ = int (myFetchDbl(params, "centre_X_quality", 0)); - DDTranslation transl = (fv.translation()); - DDRotationMatrix rot = (fv.rotation()); - DDExpandedNode parent = fv.geoHistory()[ fv.geoHistory().size()-2 ]; - DDTranslation parentTransl = parent.absTranslation(); - DDRotationMatrix parentRot = parent.absRotation(); - transl = parentRot.inverse()*(transl - parentTransl ); - rot = parentRot.inverse()*rot; - rot = rot.inverse(); //DDL uses opposite convention than COCOA - if(ALIUtils::debug >= 4) { - ALIUtils::dumprm( rot, "local rotation "); - ALIUtils::dump3v( transl, "local translation"); - } - oaInfo.x_.name_ = "X"; - oaInfo.x_.dim_type_ = "centre"; - oaInfo.x_.value_ = transl.x(); - oaInfo.x_.error_ = myFetchDbl(params, "centre_X_sigma", 0); - oaInfo.x_.quality_ = int (myFetchDbl(params, "centre_X_quality", 0)); - - oaInfo.y_.name_ = "Y"; - oaInfo.y_.dim_type_ = "centre"; - oaInfo.y_.value_ = transl.y(); - oaInfo.y_.error_ = myFetchDbl(params, "centre_Y_sigma", 0); - oaInfo.y_.quality_ = int (myFetchDbl(params, "centre_Y_quality", 0)); - - oaInfo.z_.name_ = "Z"; - oaInfo.z_.dim_type_ = "centre"; - oaInfo.z_.value_ = transl.z(); - oaInfo.z_.error_ = myFetchDbl(params, "centre_Z_sigma", 0); - oaInfo.z_.quality_ = int (myFetchDbl(params, "centre_Z_quality", 0)); - - //---- DDD convention is to use the inverse matrix, COCOA is the direct one!!! - std::vector<double> angles = ALIUtils::GetRotationAnglesFromMatrix( rot, 0. ,0., 0. ); - - oaInfo.angx_.name_ = "X"; - oaInfo.angx_.dim_type_ = "angles"; - //- oaInfo.angx_.value_ = angles[0]; - oaInfo.angx_.value_ = myFetchDbl(params, "angles_X_value", 0); - oaInfo.angx_.error_ = myFetchDbl(params, "angles_X_sigma", 0); - oaInfo.angx_.quality_ = int (myFetchDbl(params, "angles_X_quality", 0)); - - oaInfo.angy_.name_ = "Y"; - oaInfo.angy_.dim_type_ = "angles"; - //- oaInfo.angy_.value_ = angles[1]; - oaInfo.angy_.value_ = myFetchDbl(params, "angles_Y_value", 0); - oaInfo.angy_.error_ = myFetchDbl(params, "angles_Y_sigma", 0); - oaInfo.angy_.quality_ = int (myFetchDbl(params, "angles_Y_quality", 0)); - - oaInfo.angz_.name_ = "Z"; - oaInfo.angz_.dim_type_ = "angles"; - // oaInfo.angz_.value_ = angles[2]; - oaInfo.angz_.value_ = myFetchDbl(params, "angles_Z_value", 0); - oaInfo.angz_.error_ = myFetchDbl(params, "angles_Z_sigma", 0); - oaInfo.angz_.quality_ = int (myFetchDbl(params, "angles_Z_quality", 0)); - - oaInfo.type_ = myFetchString(params, "cocoa_type", 0); - - if(ALIUtils::debug >= 4) { - std::cout << "CocoaAnalyzer OBJECT " << oaInfo.name_ << " pos/angle read " << std::endl; - } - - if( fabs( oaInfo.angx_.value_ - angles[0] ) > 1.E-9 || - fabs( oaInfo.angy_.value_ - angles[1] ) > 1.E-9 || - fabs( oaInfo.angz_.value_ - angles[2] ) > 1.E-9 ) { - std::cerr << " WRONG ANGLE IN OBJECT " << oaInfo.name_<< - oaInfo.angx_.value_ << " =? " << angles[0] << - oaInfo.angy_.value_ << " =? " << angles[1] << - oaInfo.angz_.value_ << " =? " << angles[2] << std::endl; - } - - //----- Read extra entries and measurements - const std::vector<const DDsvalues_type *> params2(fv.specifics()); - std::vector<const DDsvalues_type *>::const_iterator spit = params2.begin(); - std::vector<const DDsvalues_type *>::const_iterator endspit = params2.end(); - //--- extra entries variables - std::vector<std::string> names, dims; - std::vector<double> values, errors, quality; - //--- measurements variables - std::vector<std::string> measNames; - std::vector<std::string> measTypes; - std::map<std::string, std::vector<std::string> > measObjectNames; - std::map<std::string, std::vector<std::string> > measParamNames; - std::map<std::string, std::vector<double> > measParamValues; - std::map<std::string, std::vector<double> > measParamSigmas; - std::map<std::string, std::vector<double> > measIsSimulatedValue; - - for ( ; spit != endspit; ++spit ) { - DDsvalues_type::const_iterator sit = (**spit).begin(); - DDsvalues_type::const_iterator endsit = (**spit).end(); - for ( ; sit != endsit; ++sit ) { - if (sit->second.name() == "extra_entry") { - names = sit->second.strings(); - } else if (sit->second.name() == "dimType") { - dims = sit->second.strings(); - } else if (sit->second.name() == "value") { - values = sit->second.doubles(); - } else if (sit->second.name() == "sigma") { - errors = sit->second.doubles(); - } else if (sit->second.name() == "quality") { - quality = sit->second.doubles(); - - } else if (sit->second.name() == "meas_name") { - //- std::cout << " meas_name found " << std::endl; - measNames = sit->second.strings(); - } else if (sit->second.name() == "meas_type") { - //- std::cout << " meas_type found " << std::endl; - measTypes = sit->second.strings(); - } - - } - } - - //---- loop again to look for the measurement object names, that have the meas name in the SpecPar title - // <Parameter name="meas_object_name_SENSOR2D:OCMS/sens2" value="OCMS/laser1" eval="false" /> - // <Parameter name="meas_object_name_SENSOR2D:OCMS/sens2" value="OCMS/sens2" eval="false" /> - - std::vector<std::string>::iterator vsite; - for ( spit = params2.begin(); spit != params2.end(); ++spit ) { - //- std::cout << "loop vector DDsvalues " << std::endl; - DDsvalues_type::const_iterator sit = (**spit).begin(); - DDsvalues_type::const_iterator endsit = (**spit).end(); - for ( ; sit != endsit; ++sit ) { - for( vsite = measNames.begin(); vsite != measNames.end(); vsite++ ){ - //- std::cout << "looping measObjectNames " << *vsite << std::endl; - if (sit->second.name() == "meas_object_name_"+(*vsite)) { - measObjectNames[*vsite] = sit->second.strings(); - }else if (sit->second.name() == "meas_value_name_"+(*vsite)) { - measParamNames[*vsite] = sit->second.strings(); - }else if (sit->second.name() == "meas_value_"+(*vsite)) { - measParamValues[*vsite] = sit->second.doubles(); - }else if (sit->second.name() == "meas_sigma_"+(*vsite)) { - measParamSigmas[*vsite] = sit->second.doubles(); - }else if (sit->second.name() == "meas_is_simulated_value_"+(*vsite)) { - measIsSimulatedValue[*vsite] = sit->second.doubles(); // this is not in OptAlignParam info - std::cout << *vsite << " setting issimu " << measIsSimulatedValue[*vsite][0] << std::endl; - } - if(ALIUtils::debug >= 4) { - std::cout << "CocoaAnalyser: looped measObjectNames " << "meas_object_name_"+(*vsite) << " n obj " << measObjectNames[*vsite].size() << std::endl; - } - - } - - } - } - - if(ALIUtils::debug >= 4) { - std::cout << " CocoaAnalyzer: Fill extra entries with read parameters " << std::endl; - } - //--- Fill extra entries with read parameters - if ( names.size() == dims.size() && dims.size() == values.size() - && values.size() == errors.size() && errors.size() == quality.size() ) { - for ( size_t ind = 0; ind < names.size(); ++ind ) { - oaParam.value_ = values[ind]; - oaParam.error_ = errors[ind]; - oaParam.quality_ = int (quality[ind]); - oaParam.name_ = names[ind]; - oaParam.dim_type_ = dims[ind]; - oaInfo.extraEntries_.push_back (oaParam); - oaParam.clear(); - } - - //t std::cout << names.size() << " OBJECT " << oaInfo.name_ << " extra entries read " << oaInfo << std::endl; - - oaList_.opticalAlignments_.push_back(oaInfo); - } else { - std::cout << "WARNING FOR NOW: sizes of extra parameters (names, dimType, value, quality) do" - << " not match! Did not add " << nObjects << " item to OpticalAlignments." - << std::endl; - } - - if(ALIUtils::debug >= 4) { - std::cout << " CocoaAnalyzer: Fill measurements with read parameters " << std::endl; - } - //--- Fill measurements with read parameters - if ( measNames.size() == measTypes.size() ) { - for ( size_t ind = 0; ind < measNames.size(); ++ind ) { - oaMeas.ID_ = ind; - oaMeas.name_ = measNames[ind]; - oaMeas.type_ = measTypes[ind]; - oaMeas.measObjectNames_ = measObjectNames[oaMeas.name_]; - if( measParamNames.size() == measParamValues.size() && measParamValues.size() == measParamSigmas.size() ) { - for( size_t ind2 = 0; ind2 < measParamNames[oaMeas.name_].size(); ind2++ ){ - oaParam.name_ = measParamNames[oaMeas.name_][ind2]; - oaParam.value_ = measParamValues[oaMeas.name_][ind2]; - oaParam.error_ = measParamSigmas[oaMeas.name_][ind2]; - if( oaMeas.type_ == "SENSOR2D" || oaMeas.type_ == "COPS" || oaMeas.type_ == "DISTANCEMETER" || oaMeas.type_ == "DISTANCEMETER!DIM" || oaMeas.type_ == "DISTANCEMETER3DIM" ) { - oaParam.dim_type_ = "length"; - } else if( oaMeas.type_ == "TILTMETER" ) { - oaParam.dim_type_ = "angle"; - } else { - std::cerr << "CocoaAnalyzer::ReadXMLFile. Invalid measurement type: " << oaMeas.type_ << std::endl; - std::exception(); - } - - oaMeas.values_.push_back( oaParam ); - oaMeas.isSimulatedValue_.push_back( measIsSimulatedValue[oaMeas.name_][ind2] ); - std::cout << oaMeas.name_ << " copying issimu " << oaMeas.isSimulatedValue_[oaMeas.isSimulatedValue_.size()-1] << " = " << measIsSimulatedValue[oaMeas.name_][ind2] << std::endl; - //- std::cout << ind2 << " adding meas value " << oaParam << std::endl; - oaParam.clear(); - } - } else { - std::cout << "WARNING FOR NOW: sizes of measurement parameters (name, value, sigma) do" - << " not match! for measurement " << oaMeas.name_ << " !Did not fill parameters for this measurement " << std::endl; - } - measList_.oaMeasurements_.push_back (oaMeas); - if(ALIUtils::debug >= 5) { - std::cout << "CocoaAnalyser: MEASUREMENT " << oaMeas.name_ << " extra entries read " << oaMeas << std::endl; - } - oaMeas.clear(); - } - - } else { - std::cout << "WARNING FOR NOW: sizes of measurements (names, types do" - << " not match! Did not add " << nObjects << " item to XXXMeasurements" - << std::endl; - } - -// std::cout << "sizes are values=" << values.size(); -// std::cout << " sigma(errors)=" << errors.size(); -// std::cout << " quality=" << quality.size(); -// std::cout << " names=" << names.size(); -// std::cout << " dimType=" << dims.size() << std::endl; - oaInfo.clear(); - doCOCOA = fv.next(); // go to next part - } // while (doCOCOA) - if(ALIUtils::debug >= 3) { - std::cout << "Finished making " << nObjects+1 << " OpticalAlignInfo objects" << " and " << measList_.oaMeasurements_.size() << " OpticalAlignMeasurementInfo objects " << std::endl; - } - if(ALIUtils::debug >= 5) { - std::cout << " @@@@@@ OpticalAlignments " << oaList_ << std::endl; - std::cout << " @@@@@@ OpticalMeasurements " << measList_ << std::endl; - } - -} - -//------------------------------------------------------------------------ -std::vector<OpticalAlignInfo> CocoaAnalyzer::ReadCalibrationDB( const edm::EventSetup& evts ) -{ - using namespace edm::eventsetup; - edm::ESHandle<OpticalAlignments> pObjs; - evts.get<OpticalAlignmentsRcd>().get(pObjs); - const OpticalAlignments* dbObj = pObjs.product(); - std::vector<OpticalAlignInfo>::const_iterator it; - for( it=dbObj->opticalAlignments_.begin();it!=dbObj->opticalAlignments_.end(); ++it ){ - std::cout<<"@@@@@ OpticalAlignInfo READ "<< *it << std::endl; - } - - return dbObj->opticalAlignments_; -} - - -//------------------------------------------------------------------------ -void CocoaAnalyzer::CorrectOptAlignments( std::vector<OpticalAlignInfo>& oaListCalib ) -{ - std::vector<OpticalAlignInfo>::const_iterator it; - for( it=oaListCalib.begin();it!=oaListCalib.end(); ++it ){ - OpticalAlignInfo oaInfoDB = *it; - OpticalAlignInfo* oaInfoXML = FindOpticalAlignInfoXML( oaInfoDB ); - std::cout << " oaInfoXML found " << *oaInfoXML << std::endl; - if( oaInfoXML == 0 ) { - std::cerr << "@@@@@ WARNING CocoaAnalyzer::CorrectOptAlignments: OpticalAlignInfo read from DB is not present in XML "<< *it << std::endl; - } else { - //------ Correct info - std::cout << " correcting info " << std::endl; - CorrectOaParam( &oaInfoXML->x_, oaInfoDB.x_ ); - CorrectOaParam( &oaInfoXML->y_, oaInfoDB.y_ ); - CorrectOaParam( &oaInfoXML->z_, oaInfoDB.z_ ); - CorrectOaParam( &oaInfoXML->angx_, oaInfoDB.angx_ ); - CorrectOaParam( &oaInfoXML->angy_, oaInfoDB.angy_ ); - CorrectOaParam( &oaInfoXML->angz_, oaInfoDB.angz_ ); - std::vector<OpticalAlignParam>::iterator itoap1, itoap2; - std::vector<OpticalAlignParam> extraEntDB = oaInfoDB.extraEntries_; - std::vector<OpticalAlignParam>* extraEntXML = &(oaInfoXML->extraEntries_); - for( itoap1 = extraEntDB.begin(); itoap1 != extraEntDB.end(); itoap1++ ){ - bool pFound = false; - //----- Look fot the extra parameter in XML oaInfo that has the same name - std::string oaName = (*itoap1).name_.substr( 1, (*itoap1).name_.size()-2 ); - for( itoap2 = extraEntXML->begin(); itoap2 != extraEntXML->end(); itoap2++ ){ - if( oaName == (*itoap2).name_ ) { - CorrectOaParam( &(*itoap2), *itoap1 ); - pFound = true; - break; - } - } - if( !pFound ) { - std::cerr << "@@@@@ WARNING CocoaAnalyzer::CorrectOptAlignments: extra enty read from DB is not present in XML "<< *itoap1 << " in object " << *it << std::endl; - } - - } - std::cout << " oaInfoXML corrected " << *oaInfoXML << std::endl; - std::cout << " all oaInfo " << oaList_ << std::endl; - - } - } - -} - - -//------------------------------------------------------------------------ -OpticalAlignInfo* CocoaAnalyzer::FindOpticalAlignInfoXML( OpticalAlignInfo oaInfo ) -{ - OpticalAlignInfo* oaInfoXML = 0; - std::vector<OpticalAlignInfo>::iterator it; - for( it=oaList_.opticalAlignments_.begin();it!=oaList_.opticalAlignments_.end(); ++it ){ - std::string oaName = oaInfo.name_.substr( 1, oaInfo.name_.size()-2 ); - std::cout << "findoaixml " << (*it).name_ << " =? " << oaName << std::endl; - if( (*it).name_ == oaName ) { - oaInfoXML = &(*it); - break; - } - } - - return oaInfoXML; -} - - -//------------------------------------------------------------------------ -bool CocoaAnalyzer::CorrectOaParam( OpticalAlignParam* oaParamXML, OpticalAlignParam oaParamDB ) -{ - std::cout << " CorrectOaParam " << std::endl; - std::cout << " CorrectOaParam al " << oaParamDB.value_ << std::endl; - if( oaParamDB.value_ == -9.999E9 ) return false; - - oaParamXML->value_ = oaParamDB.value_; - - return true; - -} - - -//-#include "Alignment/CocoaUtilities/interface/GlobalOptionMgr.h" -//-#include "Alignment/CocoaUtilities/interface/ALIFileIn.h" - -//------------------------------------------------------------------------ -void CocoaAnalyzer::RunCocoa() -{ - //-ALIFileIn fin; - //- GlobalOptionMgr::getInstance()->setGlobalOption("debug_verbose",5, fin ); - - //---------- Build the Model out of the system description text file - Model& model = Model::getInstance(); - - model.BuildSystemDescriptionFromOA( oaList_ ); - - if(ALIUtils::debug >= 3) { - std::cout << "RunCocoa: geometry built " << std::endl; - } - - model.BuildMeasurementsFromOA( measList_ ); - - if(ALIUtils::debug >= 3) { - std::cout << "RunCocoa: measurements built " << std::endl; - } - - Fit::getInstance(); - - Fit::startFit(); - - if(ALIUtils::debug >= 0) std::cout << "............ program ended OK" << std::endl; - if( ALIUtils::report >=1 ) { - ALIFileOut& fileout = ALIFileOut::getInstance( Model::ReportFName() ); - fileout << "............ program ended OK" << std::endl; - } - -} // end of ::beginJob - - -//----------------------------------------------------------------------- -void CocoaAnalyzer::analyze(const edm::Event& e, const edm::EventSetup& context) -{ - return; - - - using namespace edm::eventsetup; - std::cout <<" I AM IN RUN NUMBER "<<e.id().run() <<std::endl; - std::cout <<" ---EVENT NUMBER "<<e.id().event() <<std::endl; - - // just a quick dump of the private OpticalAlignments object - std::cout << oaList_ << std::endl; - - // STEP 2: - // Get calibrated OpticalAlignments. In this case I'm using - // some sqlite database examples that are generated using - // testOptAlignWriter.cc - // from CondFormats/OptAlignObjects/test/ - -// edm::ESHandle<OpticalAlignments> oaESHandle; -// context.get<OpticalAlignmentsRcd>().get(oaESHandle); - -// // This assumes they ALL come in together. This may not be -// // the "real" case. One could envision different objects coming -// // in and we would get by label each one (type). - -// std::cout << "========== eventSetup data changes with IOV =========" << std::endl; -// std::cout << *oaESHandle << std::endl; -// //============== COCOA WORK! -// // calibrated values should be used to "correct" the ones read in during beginJob -// //============== - -// // -// // to see how to iterate over the OpticalAlignments, please -// // refer to the << operator of OpticalAlignments, OpticalAlignInfo -// // and OpticalAlignParam. -// // const OpticalAlignments* myoa=oa.product(); - -// // STEP 3: -// // This retrieves the Measurements -// // for each event, a new set of measurements is available. - edm::Handle<OpticalAlignMeasurements> measHandle; - e.getByLabel("OptAlignGeneratedSource", measHandle); - - - std::cout << "========== event data product changes with every event =========" << std::endl; - std::cout << *measHandle << std::endl; - - //============== COCOA WORK! - // Each set of optical alignment measurements can be used - // in whatever type of analysis COCOA does. - //============== - -} //end of ::analyze() - -// STEP 4: one could use ::endJob() to write out the OpticalAlignments -// generated by the analysis. Example code of writing is in -// CondFormats/Alignment/test/testOptAlignWriter.cc - - -//----------------------------------------------------------------------- -double CocoaAnalyzer:: myFetchDbl(const DDsvalues_type& dvst, - const std::string& spName, - const size_t& vecInd ) { - DDValue val(spName, 0.0); - if (DDfetch(&dvst,val)) { - if ( val.doubles().size() > vecInd ) { - // std::cout << "about to return: " << val.doubles()[vecInd] << std::endl; - return val.doubles()[vecInd]; - } else { - std::cout << "WARNING: OUT OF BOUNDS RETURNING 0 for index " << vecInd << " of SpecPar " << spName << std::endl; - } - } - return 0.0; -} - -//----------------------------------------------------------------------- -std::string CocoaAnalyzer:: myFetchString(const DDsvalues_type& dvst, - const std::string& spName, - const size_t& vecInd ) { - DDValue val(spName, 0.0); - if (DDfetch(&dvst,val)) { - if ( val.strings().size() > vecInd ) { - // std::cout << "about to return: " << val.doubles()[vecInd] << std::endl; - return val.strings()[vecInd]; - } else { - std::cout << "WARNING: OUT OF BOUNDS RETURNING 0 for index " << vecInd << " of SpecPar " << spName << std::endl; - } - } - return ""; -} - - - -//----------------------------------------------------------------------- -bool CocoaAnalyzer::DumpCocoaResults() -{ - - OpticalAlignments* myobj=new OpticalAlignments; - - static std::vector< OpticalObject* > optolist = Model::OptOList(); - static std::vector< OpticalObject* >::const_iterator ite; - for(ite = optolist.begin(); ite != optolist.end(); ite++ ){ - if( (*ite)->type() == "system" ) continue; - OpticalAlignInfo data = GetOptAlignInfoFromOptO( *ite ); - myobj->opticalAlignments_.push_back(data); - std::cout << "@@@@ OPTALIGNINFO WRITTEN TO DB " - << data - << std::endl; } - - edm::Service<cond::service::PoolDBOutputService> mydbservice; - if( mydbservice.isAvailable() ){ - // try{ - mydbservice->newValidityForNewPayload<OpticalAlignments>(myobj,mydbservice->endOfTime()); - /*? compilation error?? - }catch(const cond::Exception& er){ - std::cout<<er.what()<<std::endl; - }catch(const std::exception& er){ - std::cout<<"caught std::exception "<<er.what()<<std::endl; - }catch(...){ - std::cout<<"Funny error"<<std::endl; - } - */ - } - - //? gives unreadable error??? std::cout << "@@@@ OPTICALALIGNMENTS WRITTEN TO DB " << *myobj << std::endl; - - return TRUE; -} - - -//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -OpticalAlignInfo CocoaAnalyzer::GetOptAlignInfoFromOptO( OpticalObject* opto ) -{ - std::cout << " CocoaAnalyzer::GetOptAlignInfoFromOptO " << opto->name() << std::endl; - OpticalAlignInfo data; - data.ID_=opto->cmsSwID(); - data.type_=opto->type(); - data.name_=opto->name(); - - //----- Centre in local coordinates - Hep3Vector centreLocal = opto->centreGlob() - opto->parent()->centreGlob(); - CLHEP::HepRotation parentRmGlobInv = inverseOf( opto->parent()->rmGlob() ); - centreLocal = parentRmGlobInv * centreLocal; - - const std::vector< Entry* > theCoordinateEntryVector = opto->CoordinateEntryList(); - std::cout << " CocoaAnalyzer::GetOptAlignInfoFromOptO starting coord " <<std::endl; - - data.x_.value_= centreLocal.x() / 100.; // in cm - std::cout << " matrix " << Fit::GetAtWAMatrix() << std::endl; - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[0]->fitPos() << std::endl; - data.x_.error_= GetEntryError( theCoordinateEntryVector[0] ) / 100.; // in cm - - data.y_.value_= centreLocal.y() / 100.; // in cm - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[1]->fitPos() << std::endl; - data.y_.error_= GetEntryError( theCoordinateEntryVector[1] ) / 100.; // in cm - - data.z_.value_= centreLocal.z() / 100.; // in cm - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << " " << theCoordinateEntryVector[2]->fitPos() << std::endl; - data.z_.error_= GetEntryError( theCoordinateEntryVector[2] ) / 100.; // in cm - - //----- angles in local coordinates - std::vector<double> anglocal = opto->GetLocalRotationAngles( theCoordinateEntryVector ); - - data.angx_.value_= anglocal[0] *180./M_PI; // in deg - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[3]->fitPos() << std::endl; - data.angx_.error_= GetEntryError( theCoordinateEntryVector[3] ) * 180./M_PI; // in deg; - - data.angy_.value_= anglocal[1] * 180./M_PI; // in deg - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[4]->fitPos() << std::endl; - data.angy_.error_= GetEntryError( theCoordinateEntryVector[4] ) * 180./M_PI; // in deg;; - - data.angz_.value_= anglocal[2] *180./M_PI; // in deg - std::cout << " matrix " << Fit::GetAtWAMatrix()->Mat() << theCoordinateEntryVector[5]->fitPos() << std::endl; - data.angz_.error_= GetEntryError( theCoordinateEntryVector[5] ) * 180./M_PI; // in deg; - - - const std::vector< Entry* > theExtraEntryVector = opto->ExtraEntryList(); std::cout << " CocoaAnalyzer::GetOptAlignInfoFromOptO starting entry " << std::endl; - - std::vector< Entry* >::const_iterator ite; - for( ite = theExtraEntryVector.begin(); ite != theExtraEntryVector.end(); ite++ ) { - OpticalAlignParam extraEntry; - extraEntry.name_ = (*ite)->name(); - extraEntry.dim_type_ = (*ite)->type(); - extraEntry.value_ = (*ite)->value(); - extraEntry.error_ = (*ite)->sigma(); - extraEntry.quality_ = (*ite)->quality(); - data.extraEntries_.push_back( extraEntry ); - std::cout << " CocoaAnalyzer::GetOptAlignInfoFromOptO done extra entry " << extraEntry.name_ << std::endl; - - } - - return data; -} - - -double CocoaAnalyzer::GetEntryError( const Entry* entry ) -{ - if( entry->quality() > 0 ) { - return sqrt(Fit::GetAtWAMatrix()->Mat()->me[entry->fitPos()][entry->fitPos()]) / 100.; - } else { //entry not fitted, return original error - return entry->sigma(); - } -} - diff --git a/Alignment/CocoaApplication/src/SealModule.cc b/Alignment/CocoaApplication/src/SealModule.cc deleted file mode 100644 index a0ee2f64a14..00000000000 --- a/Alignment/CocoaApplication/src/SealModule.cc +++ /dev/null @@ -1,4 +0,0 @@ -#include "FWCore/Framework/interface/MakerMacros.h" -#include "../interface/CocoaAnalyzer.h" - -DEFINE_FWK_MODULE(CocoaAnalyzer) diff --git a/Alignment/CocoaApplication/test/configuration.xml b/Alignment/CocoaApplication/test/configuration.xml deleted file mode 100644 index 57b62be86ea..00000000000 --- a/Alignment/CocoaApplication/test/configuration.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0"?> -<Configuration xmlns="." xmlns:xsi="." xsi:schemaLocation= "." name="CMSConfiguration" version="0"> - <Include> - <File name="Alignment/CocoaApplication/test/table2DWithMirror.xml" url="."/> - </Include> - <Root fileName="table2DWithMirror.xml" logicalPartName="OCMS"/> -</Configuration> - diff --git a/Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h b/Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h index bfe98b2b614..4a5a73a0b8f 100644 --- a/Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h +++ b/Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h @@ -18,7 +18,7 @@ class CocoaMaterialElementary public: //---------- Constructors / Destructor - CocoaMaterialElementary( ALIstring name, float density, ALIstring symbol, ALIdouble A, ALIint Z ); + CocoaMaterialElementary( ALIstring name, float density, ALIstring symbol, ALIint A, ALIint Z ); ~CocoaMaterialElementary(){ }; ALIstring getName() const { @@ -27,7 +27,7 @@ public: return theDensity; } ALIstring getSymbol() const { return theSymbol; } - ALIdouble getA() const { + ALIint getA() const { return theA; } ALIint getZ() const { return theZ; } @@ -39,7 +39,7 @@ private: ALIstring theName; float theDensity; ALIstring theSymbol; - ALIdouble theA; + ALIint theA; ALIint theZ; }; diff --git a/Alignment/CocoaDDLObjects/src/CocoaMaterialElementary.cc b/Alignment/CocoaDDLObjects/src/CocoaMaterialElementary.cc index b09148f9d0b..03ee3d2bb7b 100644 --- a/Alignment/CocoaDDLObjects/src/CocoaMaterialElementary.cc +++ b/Alignment/CocoaDDLObjects/src/CocoaMaterialElementary.cc @@ -6,18 +6,17 @@ // Pedro Arce #include <map> #include <fstream> -#include "CLHEP/Units/SystemOfUnits.h" #include "Alignment/CocoaDDLObjects/interface/CocoaMaterialElementary.h" -CocoaMaterialElementary::CocoaMaterialElementary( ALIstring name, float density, ALIstring symbol, ALIdouble A, ALIint Z ) +CocoaMaterialElementary::CocoaMaterialElementary( ALIstring name, float density, ALIstring symbol, ALIint A, ALIint Z ) { theName = name; theDensity = density; theSymbol = symbol; - theA = A*(g/mole); + theA = A; theZ = Z; } diff --git a/Alignment/CocoaFit/src/Fit.cc b/Alignment/CocoaFit/src/Fit.cc index dae98a88d96..607a1dd33a7 100644 --- a/Alignment/CocoaFit/src/Fit.cc +++ b/Alignment/CocoaFit/src/Fit.cc @@ -1151,12 +1151,6 @@ void Fit::dumpFittedValues( ALIFileOut& fileout, ALIbool printErrors ) dumpEntryCorrelations( fileout, nEntUnk ); - ALIdouble go; - GlobalOptionMgr* gomgr = GlobalOptionMgr::getInstance(); - gomgr->getGlobalOptionValue("dumpOptOGlobalInReport", go ); - - if( go ) OpticalObjectMgr::getInstance()->dumpOptOsGlobal(fileout); - } @@ -1269,7 +1263,7 @@ void Fit::dumpEntryCorrelations( ALIFileOut& fileout, const int nEntUnk ) } } //------- Dump optical object list - if( ALIUtils::debug >= 2) OpticalObjectMgr::getInstance()->dumpCentreOptOs(); + if( ALIUtils::debug >= 2) OpticalObjectMgr::getInstance()->dumpOptOs(); } diff --git a/Alignment/CocoaModel/interface/OpticalObjectMgr.h b/Alignment/CocoaModel/interface/OpticalObjectMgr.h index 6ae5a41cdb5..86a85e2b703 100644 --- a/Alignment/CocoaModel/interface/OpticalObjectMgr.h +++ b/Alignment/CocoaModel/interface/OpticalObjectMgr.h @@ -36,8 +36,7 @@ class OpticalObjectMgr // find a list of OpticalObject's by name std::vector<OpticalObject*> findOptOs( const ALIstring& name, bool exists = 0 ) const; - void dumpCentreOptOs( std::ostream& out= std::cout ) const; - void dumpOptOsGlobal( std::ostream& out= std::cout ) const; + void dumpOptOs( std::ostream& out= std::cout ) const; uint32_t buildCmsSwID(); diff --git a/Alignment/CocoaModel/src/OpticalObjectMgr.cc b/Alignment/CocoaModel/src/OpticalObjectMgr.cc index e7b1852f867..195fde8fcd2 100644 --- a/Alignment/CocoaModel/src/OpticalObjectMgr.cc +++ b/Alignment/CocoaModel/src/OpticalObjectMgr.cc @@ -66,36 +66,20 @@ std::vector<OpticalObject*> OpticalObjectMgr::findOptOs( const ALIstring& name, } - -//----------------------------------------------------------------------- -void OpticalObjectMgr::dumpCentreOptOs( std::ostream& out ) const -{ - out << "OPTICALOBJECT list size " << theOptODict.size() << std::endl; - std::vector< OpticalObject* >::const_iterator vocite; - for( vocite = Model::OptOList().begin(); vocite != Model::OptOList().end(); vocite++ ) { - ALIstring name = (*vocite)->name(); - ALIUtils::dump3v( (*vocite)->centreGlobal(), (name + " CENTRE GLOBAL: ").c_str(), out ); - if( (*vocite)->parent() != 0 ) ALIUtils::dump3v( (*vocite)->centreLocal(), (name + " CENTRE LOCAL: ").c_str(), out ); //not for the 'system' - } - -} - //----------------------------------------------------------------------- -void OpticalObjectMgr::dumpOptOsGlobal( std::ostream& out ) const +void OpticalObjectMgr::dumpOptOs( std::ostream& out ) const { - out << "OPTICALOBJECT list size " << theOptODict.size() << std::endl; + std::cout << "OPTICALOBJECT list size " << theOptODict.size() << std::endl; std::vector< OpticalObject* >::const_iterator vocite; for( vocite = Model::OptOList().begin(); vocite != Model::OptOList().end(); vocite++ ) { ALIstring name = (*vocite)->name(); - ALIUtils::dump3v( (*vocite)->centreGlobal(), (name + " CENTRE GLOBAL: ").c_str(), out ); - ALIUtils::dumprm( (*vocite)->rmGlob(), (name + " ROT_MATRIX GLOBAL: ").c_str(), out ); - + ALIUtils::dump3v( (*vocite)->centreGlobal(), (name + " CENTRE GLOBAL: ").c_str() ); + if( (*vocite)->parent() != 0 ) ALIUtils::dump3v( (*vocite)->centreLocal(), (name + " CENTRE LOCAL: ").c_str() ); //not for the 'system' } } - //----------------------------------------------------------------------- uint32_t OpticalObjectMgr::buildCmsSwID() { diff --git a/Alignment/CocoaUtilities/interface/ALIUtils.h b/Alignment/CocoaUtilities/interface/ALIUtils.h index dd310afceb1..828a99e2b85 100644 --- a/Alignment/CocoaUtilities/interface/ALIUtils.h +++ b/Alignment/CocoaUtilities/interface/ALIUtils.h @@ -27,7 +27,7 @@ public: ~ALIUtils(){}; static int IsNumber( const ALIstring& str); - static void dump3v( const Hep3Vector& vec, const std::string& msg, std::ostream& out = std::cout ); + static void dump3v( const Hep3Vector& vec, const std::string& msg); static void dumprm( const HepRotation& rm, const std::string& msg, std::ostream& out = std::cout ); // public static DATA MEMBERS @@ -108,13 +108,12 @@ public: static void setMaximumDeviationDerivative( ALIdouble val ) { maximum_deviation_derivative = val; } - static std::vector<double> GetRotationAnglesFromMatrix( const CLHEP::HepRotation& rmLocal, double origAngleX, double origAngleY, double origAngleZ ); - std::vector<double> GetRotationAnglesFromMatrix( const CLHEP::HepRotation& rmLocal ); + static std::vector<double> GetRotationAnglesFromMatrix( CLHEP::HepRotation& rmLocal, double origAngleX, double origAngleY, double origAngleZ ); static double diff2pi( double ang1, double ang2 ); static bool eq2ang( double ang1, double ang2 ); static double approxTo0( double val ); static double addPii( double val ); - static int checkMatrixEquations( double angleX, double angleY, double angleZ, const CLHEP::HepRotation* rot); + static int checkMatrixEquations( double angleX, double angleY, double angleZ, CLHEP::HepRotation* rot); private: diff --git a/Alignment/CocoaUtilities/src/ALIUtils.cc b/Alignment/CocoaUtilities/src/ALIUtils.cc index b63177588d8..c504c36c175 100644 --- a/Alignment/CocoaUtilities/src/ALIUtils.cc +++ b/Alignment/CocoaUtilities/src/ALIUtils.cc @@ -15,14 +15,14 @@ ALIint ALIUtils::debug = -1; ALIint ALIUtils::report = 1; -ALIdouble ALIUtils::_LengthValueDimensionFactor = 1.E-3; //! COCOA internal units are meters, DDD milimeters -ALIdouble ALIUtils::_LengthSigmaDimensionFactor = 1.E-3; -ALIdouble ALIUtils::_AngleValueDimensionFactor = 1.; -ALIdouble ALIUtils::_AngleSigmaDimensionFactor = 1.; -ALIdouble ALIUtils::_OutputLengthValueDimensionFactor = 1.E-3; -ALIdouble ALIUtils::_OutputLengthSigmaDimensionFactor = 1.E-3; -ALIdouble ALIUtils::_OutputAngleValueDimensionFactor = M_PI/180.; -ALIdouble ALIUtils::_OutputAngleSigmaDimensionFactor = M_PI/180.; +ALIdouble ALIUtils::_LengthValueDimensionFactor; +ALIdouble ALIUtils::_LengthSigmaDimensionFactor; +ALIdouble ALIUtils::_AngleValueDimensionFactor; +ALIdouble ALIUtils::_AngleSigmaDimensionFactor; +ALIdouble ALIUtils::_OutputLengthValueDimensionFactor; +ALIdouble ALIUtils::_OutputLengthSigmaDimensionFactor; +ALIdouble ALIUtils::_OutputAngleValueDimensionFactor; +ALIdouble ALIUtils::_OutputAngleSigmaDimensionFactor; time_t ALIUtils::_time_now; ALIdouble ALIUtils::deg = 0.017453293; ALIbool ALIUtils::firstTime; @@ -59,11 +59,11 @@ int ALIUtils::IsNumber( const ALIstring& str) //@@ Dump a Hep3DVector with the chosen precision //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #include "CLHEP/Units/SystemOfUnits.h" -void ALIUtils::dump3v( const Hep3Vector& vec, const std::string& msg, std::ostream& out) +void ALIUtils::dump3v( const Hep3Vector& vec, const std::string& msg) { // double phicyl = atan( vec.y()/vec.x() ); - out << msg << std::setprecision(8) << vec; - out << std::endl; + std::cout << msg << std::setprecision(8) << vec; + std::cout << std::endl; // std::cout << " " << vec.theta()/deg << " " << vec.phi()/deg << " " << vec.perp() << " " << phicyl/deg << std::endl; // setw(10); // std::cout << msg << " x=" << std::setprecision(8) << vec.x() << " y=" << setprecision(8) <<vec.y() << " z=" << std::setprecision(8) << vec.z() << std::endl; @@ -589,7 +589,7 @@ std::string ALIUtils::changeName( const std::string& oldName, const std::string& //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotation& rotm, double origAngleX, double origAngleY, double origAngleZ ) +std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( CLHEP::HepRotation& rmLocal, double origAngleX, double origAngleY, double origAngleZ ) { double pii = acos(0.)*2; std::vector<double> newang(3); @@ -602,29 +602,27 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat } //- std::cout << name () << " vdbf " << angleX << " " << angleY << " " << angleZ << std::endl; - double rotzx = approxTo0( rotm.zx() ); - double rotzy = approxTo0( rotm.zy() ); - double rotzz = approxTo0( rotm.zz() ); - double rotyx = approxTo0( rotm.yx() ); - double rotxx = approxTo0( rotm.xx() ); + double rotzx = approxTo0( rmLocal.zx() ); + double rotzy = approxTo0( rmLocal.zy() ); + double rotzz = approxTo0( rmLocal.zz() ); + double rotyx = approxTo0( rmLocal.yx() ); + double rotxx = approxTo0( rmLocal.xx() ); if( rotzy == 0. && rotzz == 0. ) { //check that entry is z angle newang[0] = angleX; //beware of aa <==> pii - aa - if( approxTo0( rotzx + 1. ) == 0. ) { // angy = 90 - double aa = asin( rotm.xy() ); - // Two angles gave same sin (aa & pii-aa), check which it could be - if( diff2pi( angleZ, - aa + newang[0] ) < diff2pi( angleZ, - (pii - aa) + newang[0] ) ) { + if( eq2ang( rmLocal.zx(), -1. ) ) { + double aa = asin( rmLocal.xy() ); + if( diff2pi( angleZ, - aa + newang[0] ) < diff2pi( angleZ, - pii + aa + newang[0] ) ) { newang[2] = -aa + newang[0]; if( ALIUtils::debug >= 5 ) std::cout << " newang[0] = -aa + newang[0] " << std::endl; - } else { - newang[2] = - (pii - aa) + newang[0]; - if( ALIUtils::debug >= 5 ) std::cout << " newang[0] = - (pii - aa) + newang[0] " << newang[0] << " " << aa << " " << newang[2] << std::endl; + } else { + newang[2] = -pii + aa + newang[0]; + if( ALIUtils::debug >= 5 ) std::cout << " newang[0] = -pii + aa + newang[0] " << newang[0] << " " << aa << " " << newang[2] << std::endl; } - } else { // angy = 270 - double aa = asin( -rotm.xy() ); - // Two angles gave same sin (aa & pii-aa), check which it could be - if( diff2pi( angleZ, aa - newang[0] ) < diff2pi( angleZ, pii - aa - newang[0] ) ) { + } else { + double aa = asin( -rmLocal.xy() ); + if( diff2pi( angleZ, aa - newang[0] ) < diff2pi( angleZ, pii - aa - newang[0] ) ) { newang[2] = aa - newang[0]; if( ALIUtils::debug >= 5 ) std::cout << " newang[0] = aa - newang[2] " << std::endl; } else { @@ -637,60 +635,42 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat newang[2] = atan( rotyx / rotxx ); } if( rotzx < -1. ) { - //- std::cerr << " rotzx too small " << rotzx << " = " << rotm.zx() << " " << rotzx-rotm.zx() << std::endl; + //- std::cerr << " rotzx too small " << rotzx << " = " << rmLocal.zx() << " " << rotzx-rmLocal.zx() << std::endl; rotzx = -1.; } else if( rotzx > 1. ) { - //- std::cerr << " rotzx too big " << rotzx << " = " << rotm.zx() << " " << rotzx-rotm.zx() << std::endl; + //- std::cerr << " rotzx too big " << rotzx << " = " << rmLocal.zx() << " " << rotzx-rmLocal.zx() << std::endl; rotzx = 1.; } newang[1] = -asin( rotzx ); if( ALIUtils::debug >= 5 ) std::cout << "First calculation of angles: " << std::endl - << " newang[0] " << newang[0] << " rotzy " << rotzy << " rotzz " << rotzz << std::endl - << " newang[1] " << newang[1] << " rotzx " << rotzx << std::endl - << " newang[2] " << newang[2] << " rotyx " << rotyx << " rotxx " << rotxx << std::endl; + << " newang[0] " << newang[0] << " " << rotzy << " " << rotzz << std::endl + << " newang[1] " << newang[1] << " " << rotzx << std::endl + << " newang[2] " << newang[2] << " " << rotyx << " " << rotxx << std::endl; - // newang[2] = acos( rotm.xx() / cos( newang[1] ) ); + // newang[2] = acos( rmLocal.xx() / cos( newang[1] ) ); //----- CHECK if the angles are OK (there are several symmetries) //--- Check if the predictions with the angles obtained match the values of the rotation matrix (they may differ for exampole by a sign or more in complicated formulas) - double sx = sin(newang[0]); - double cx = cos(newang[0]); - double sy = sin(newang[1]); - double cy = cos(newang[1]); - double sz = sin(newang[2]); - double cz = cos(newang[2]); - - double rotnewxx = cy*cz; - double rotnewxy = sx*sy*cz-cx*sz; - double rotnewxz = cx*sy*cz+sx*sz; - double rotnewyx = cy*sz; - double rotnewyy = sx*sy*sz+cx*cz; - double rotnewyz = cx*sy*sz-sx*cz; - double rotnewzx = -sy; - double rotnewzy = sx*cy; - double rotnewzz = cx*cy; - - bool eqxx = eq2ang( rotnewxx, rotm.xx() ); - bool eqxy = eq2ang( rotnewxy, rotm.xy() ); - bool eqxz = eq2ang( rotnewxz, rotm.xz() ); - bool eqyx = eq2ang( rotnewyx, rotm.yx() ); - bool eqyy = eq2ang( rotnewyy, rotm.yy() ); - bool eqyz = eq2ang( rotnewyz, rotm.yz() ); - bool eqzx = eq2ang( rotnewzx, rotm.zx() ); - bool eqzy = eq2ang( rotnewzy, rotm.zy() ); - bool eqzz = eq2ang( rotnewzz, rotm.zz() ); + double rotnewxx = cos( newang[1] ) * cos( newang[2] ); + double rotnewzz = cos( newang[0] ) * cos( newang[1] ); + double rotnewxy = sin( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - cos( newang[0] )* sin( newang[2] ); + double rotnewxz = cos( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) + sin( newang[0] )* sin( newang[2] ); + double rotnewyy = sin( newang[0] ) * sin( newang[1] ) * sin( newang[2] ) + cos( newang[0] )* cos( newang[2] ); + double rotnewyz = cos( newang[0] ) * sin( newang[1] ) * sin( newang[2] ) - sin( newang[0] )* cos( newang[2] ); + + bool eqxx = eq2ang( rotnewxx, rmLocal.xx() ); + bool eqzz = eq2ang( rotnewzz, rmLocal.zz() ); + bool eqxy = eq2ang( rotnewxy, rmLocal.xy() ); + bool eqxz = eq2ang( rotnewxz, rmLocal.xz() ); + bool eqyy = eq2ang( rotnewyy, rmLocal.yy() ); + bool eqyz = eq2ang( rotnewyz, rmLocal.yz() ); //--- Check if one of the tree angles should be changed if( ALIUtils::debug >= 5 ) { - std::cout << " pred rm.xx " << rotnewxx << " =? " << rotm.xx() << " eqxx " << eqxx << std::endl - << " pred rm.xy " << rotnewxy << " =? " << rotm.xy() << " eqxy " << eqxy << std::endl - << " pred rm.xz " << rotnewxz << " =? " << rotm.xz() << " eqxz " << eqxz << std::endl - << " pred rm.yx " << rotnewyx << " =? " << rotm.yx() << " eqyx " << eqyx << std::endl - << " pred rm.yy " << rotnewyy << " =? " << rotm.yy() << " eqyy " << eqyy << std::endl - << " pred rm.yz " << rotnewyz << " =? " << rotm.yz() << " eqyz " << eqyz << std::endl - << " pred rm.zx " << rotnewzx << " =? " << rotm.zx() << " eqzx " << eqzx << std::endl - << " pred rm.zy " << rotnewzy << " =? " << rotm.zy() << " eqzy " << eqzy << std::endl - << " pred rm.zz " << rotnewzz << " =? " << rotm.zz() << " eqzz " << eqzz << std::endl; - //- std::cout << " rotnewxx " << rotnewxx << " = " << rotm.xx() << " " << fabs( rotnewxx - rotm.xx() ) << " " <<(fabs( rotnewxx - rotm.xx() ) < 0.0001) << std::endl; + std::cout << " pred rm.xx " << rotnewxx << " =? " << rmLocal.xx() + << " pred rm.zz " << rotnewzz << " =? " << rmLocal.zz() + << std::endl; + std::cout << " eqxx " << eqxx << " eqzz " << eqzz << std::endl; + //- std::cout << " rotnewxx " << rotnewxx << " = " << rmLocal.xx() << " " << fabs( rotnewxx - rmLocal.xx() ) << " " <<(fabs( rotnewxx - rmLocal.xx() ) < 0.0001) << std::endl; } if( eqxx & !eqzz ) { @@ -705,6 +685,15 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat } //--- Check if the 3 angles should be changed (previous check is invariant to the 3 changing) + if( ALIUtils::debug >= 5 ) { + std::cout << " pred rm.xy " << rotnewxy << " =? " << rmLocal.xy() + << " pred rm.xz " << rotnewxz << " =? " << rmLocal.xz() + << " pred rm.yy " << rotnewyy << " =? " << rmLocal.yy() + << " pred rm.yz " << rotnewyz << " =? " << rmLocal.yz() + << std::endl; + std::cout << " eqxy " << eqxy << " eqxz " << eqxz << " eqyy " << eqyy << " eqyz " << eqyz << std::endl; + } + if( !eqxy || !eqxz || !eqyy || !eqyz ) { // check also cases where one of the above 'eq' is OK because it is = 0 if( ALIUtils::debug >= 5 ) std::cout << " change the 3 newang " << std::endl; @@ -713,8 +702,8 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat newang[2] = addPii( newang[2] ); double rotnewxy = -sin( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - cos( newang[0] )* sin( newang[2] ); double rotnewxz = -cos( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - sin( newang[0] )* sin( newang[2] ); - if( ALIUtils::debug >= 5 ) std::cout << " rotnewxy " << rotnewxy << " = " << rotm.xy() - << " rotnewxz " << rotnewxz << " = " << rotm.xz() << std::endl; + if( ALIUtils::debug >= 5 ) std::cout << " rotnewxy " << rotnewxy << " = " << rmLocal.xy() + << " rotnewxz " << rotnewxz << " = " << rmLocal.xz() << std::endl; } if( diff2pi(angleX, newang[0] ) + diff2pi(angleY, newang[1] ) +diff2pi(angleZ, newang[2] ) > diff2pi(angleX, pii+newang[0] ) + diff2pi(angleY, pii-newang[1] ) + diff2pi(angleZ, pii+newang[2] ) ){ @@ -725,159 +714,18 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat newang[2] = addPii( newang[2] ); double rotnewxy = -sin( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - cos( newang[0] )* sin( newang[2] ); double rotnewxz = -cos( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - sin( newang[0] )* sin( newang[2] ); - if( ALIUtils::debug >= 5 ) std::cout << " rotnewxy " << rotnewxy << " = " << rotm.xy() - << " rotnewxz " << rotnewxz << " = " << rotm.xz() << std::endl; - } - - for (int ii=0; ii<3; ii++) { - newang[ii] = approxTo0( newang[ii] ); - } - // double rotnewyx = cos( newang[1] ) * sin( newang[2] ); - - if( checkMatrixEquations( newang[0], newang[1], newang[2], &rotm ) != 0 ){ - std::cerr << " wrong rotation matrix " << newang[0] << " " << newang[1] << " " << newang[2] << std::endl; - ALIUtils::dumprm( rotm, " matrix is " ); - } - if( ALIUtils::debug >= 5 ) { - std::cout << "Final angles: newang[0] " << newang[0] << " newang[1] " << newang[1] << " newang[2] " << newang[2] << std::endl; - CLHEP::HepRotation rot; - rot.rotateX( newang[0] ); - ALIUtils::dumprm( rot, " new rot after X "); - rot.rotateY( newang[1] ); - ALIUtils::dumprm( rot, " new rot after Y "); - rot.rotateZ( newang[2] ); - ALIUtils::dumprm( rot, " new rot "); - ALIUtils::dumprm( rotm, " rotm " ); - //- ALIUtils::dumprm( theRmGlobOriginal, " theRmGlobOriginal " ); - } - - //- std::cout << " before return newang[0] " << newang[0] << " newang[1] " << newang[1] << " newang[2] " << newang[2] << std::endl; - return newang; - -} - - - -//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotation& rotm ) -{ - double pii = acos(0.)*2; - std::vector<double> newang(3); - //- double angleX = origAngleX; - //- double angleY = origAngleY; - //- double angleZ = origAngleZ; - double rotzx = approxTo0( rotm.zx() ); - double rotzy = approxTo0( rotm.zy() ); - double rotzz = approxTo0( rotm.zz() ); - double rotyx = approxTo0( rotm.yx() ); - double rotxx = approxTo0( rotm.xx() ); - double rotxy = approxTo0( rotm.xy() ); - if( rotzy == 0. && rotzz == 0. ) { - //check that entry is z angle - double xmz; - if( approxTo0( rotzx + 1. ) == 0. ) { // angy = 90 - xmz = asin( rotxy ); // angx - angz - } else { // angy = 270 - xmz = asin( -rotxy ); // angx - angz - } - // std::cout << " angy = 90 xmz= " << xmz << std::endl; - //!!! Any value of angx would give the same matrix if angx-angz is kept constant - newang[0] = 0.; - newang[2] = xmz; - if( ALIUtils::debug >= 0 ) std::cerr << "!!! WARNING ALIUtils::GetRotationAnglesFromMatrix: when angle Y is 90/-90, any value of angle X would give the same matrix if angle_X-angle_Z is kept constant; angle_X = 0. has been chosen " << std::endl; - } else { - newang[0] = atan( rotzy / rotzz ); - newang[2] = atan( rotyx / rotxx ); - } - if( rotzx < -1. ) { - //- std::cerr << " rotzx too small " << rotzx << " = " << rotm.zx() << " " << rotzx-rotm.zx() << std::endl; - rotzx = -1.; - } else if( rotzx > 1. ) { - //- std::cerr << " rotzx too big " << rotzx << " = " << rotm.zx() << " " << rotzx-rotm.zx() << std::endl; - rotzx = 1.; + if( ALIUtils::debug >= 5 ) std::cout << " rotnewxy " << rotnewxy << " = " << rmLocal.xy() + << " rotnewxz " << rotnewxz << " = " << rmLocal.xz() << std::endl; } - newang[1] = -asin( rotzx ); - if( ALIUtils::debug >= 5 ) std::cout << "First calculation of angles: " << std::endl - << " newang[0] " << newang[0] << " rotzy " << rotzy << " rotzz " << rotzz << std::endl - << " newang[1] " << newang[1] << " rotzx " << rotzx << std::endl - << " newang[2] " << newang[2] << " rotyx " << rotyx << " rotxx " << rotxx << std::endl; - // newang[2] = acos( rotm.xx() / cos( newang[1] ) ); - //----- CHECK if the angles are OK (there are several symmetries) - //--- Check if the predictions with the angles obtained match the values of the rotation matrix (they may differ for exampole by a sign or more in complicated formulas) - double sx = sin(newang[0]); - double cx = cos(newang[0]); - double sy = sin(newang[1]); - double cy = cos(newang[1]); - double sz = sin(newang[2]); - double cz = cos(newang[2]); - - double rotnewxx = cy*cz; - double rotnewxy = sx*sy*cz-cx*sz; - double rotnewxz = cx*sy*cz+sx*sz; - double rotnewyx = cy*sz; - double rotnewyy = sx*sy*sz+cx*cz; - double rotnewyz = cx*sy*sz-sx*cz; - double rotnewzx = -sy; - double rotnewzy = sx*cy; - double rotnewzz = cx*cy; - - bool eqxx = eq2ang( rotnewxx, rotm.xx() ); - bool eqxy = eq2ang( rotnewxy, rotm.xy() ); - bool eqxz = eq2ang( rotnewxz, rotm.xz() ); - bool eqyx = eq2ang( rotnewyx, rotm.yx() ); - bool eqyy = eq2ang( rotnewyy, rotm.yy() ); - bool eqyz = eq2ang( rotnewyz, rotm.yz() ); - bool eqzx = eq2ang( rotnewzx, rotm.zx() ); - bool eqzy = eq2ang( rotnewzy, rotm.zy() ); - bool eqzz = eq2ang( rotnewzz, rotm.zz() ); - - //--- Check if one of the tree angles should be changed - if( ALIUtils::debug >= 5 ) { - std::cout << " pred rm.xx " << rotnewxx << " =? " << rotm.xx() << " eqxx " << eqxx << std::endl - << " pred rm.xy " << rotnewxy << " =? " << rotm.xy() << " eqxy " << eqxy << std::endl - << " pred rm.xz " << rotnewxz << " =? " << rotm.xz() << " eqxz " << eqxz << std::endl - << " pred rm.yx " << rotnewyx << " =? " << rotm.yx() << " eqyx " << eqyx << std::endl - << " pred rm.yy " << rotnewyy << " =? " << rotm.yy() << " eqyy " << eqyy << std::endl - << " pred rm.yz " << rotnewyz << " =? " << rotm.yz() << " eqyz " << eqyz << std::endl - << " pred rm.zx " << rotnewzx << " =? " << rotm.zx() << " eqzx " << eqzx << std::endl - << " pred rm.zy " << rotnewzy << " =? " << rotm.zy() << " eqzy " << eqzy << std::endl - << " pred rm.zz " << rotnewzz << " =? " << rotm.zz() << " eqzz " << eqzz << std::endl; - //- std::cout << " rotnewxx " << rotnewxx << " = " << rotm.xx() << " " << fabs( rotnewxx - rotm.xx() ) << " " <<(fabs( rotnewxx - rotm.xx() ) < 0.0001) << std::endl; - } - - if( eqxx & !eqzz ) { - newang[0] = pii + newang[0]; - if( ALIUtils::debug >= 5 ) std::cout << " change newang[0] " << newang[0] << std::endl; - } else if( !eqxx & !eqzz ) { - newang[1] = pii - newang[1]; - if( ALIUtils::debug >= 5 ) std::cout << " change newang[1] " << newang[1] << std::endl; - } else if( !eqxx & eqzz ) { - newang[2] = pii + newang[2]; - if( ALIUtils::debug >= 5 ) std::cout << " change newang[2] " << newang[2] << std::endl; - } - - //--- Check if the 3 angles should be changed (previous check is invariant to the 3 changing) - if( !eqxy || !eqxz || !eqyy || !eqyz ) { - // check also cases where one of the above 'eq' is OK because it is = 0 - if( ALIUtils::debug >= 5 ) std::cout << " change the 3 newang " << std::endl; - newang[0] = addPii( newang[0] ); - newang[1] = pii - newang[1]; - newang[2] = addPii( newang[2] ); - double rotnewxy = -sin( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - cos( newang[0] )* sin( newang[2] ); - double rotnewxz = -cos( newang[0] ) * sin( newang[1] ) * cos( newang[2] ) - sin( newang[0] )* sin( newang[2] ); - if( ALIUtils::debug >= 5 ) std::cout << " rotnewxy " << rotnewxy << " = " << rotm.xy() - << " rotnewxz " << rotnewxz << " = " << rotm.xz() << std::endl; - } - for (int ii=0; ii<3; ii++) { newang[ii] = approxTo0( newang[ii] ); } // double rotnewyx = cos( newang[1] ) * sin( newang[2] ); - if( checkMatrixEquations( newang[0], newang[1], newang[2], &rotm ) != 0 ){ + if( checkMatrixEquations( newang[0], newang[1], newang[2], &rmLocal ) != 0 ){ std::cerr << " wrong rotation matrix " << newang[0] << " " << newang[1] << " " << newang[2] << std::endl; - ALIUtils::dumprm( rotm, " matrix is " ); + ALIUtils::dumprm( rmLocal, " matrix is " ); } if( ALIUtils::debug >= 5 ) { std::cout << "Final angles: newang[0] " << newang[0] << " newang[1] " << newang[1] << " newang[2] " << newang[2] << std::endl; @@ -888,7 +736,7 @@ std::vector<double> ALIUtils::GetRotationAnglesFromMatrix( const CLHEP::HepRotat ALIUtils::dumprm( rot, " new rot after Y "); rot.rotateZ( newang[2] ); ALIUtils::dumprm( rot, " new rot "); - ALIUtils::dumprm( rotm, " rotm " ); + ALIUtils::dumprm( rmLocal, " rmLocal " ); //- ALIUtils::dumprm( theRmGlobOriginal, " theRmGlobOriginal " ); } @@ -915,7 +763,7 @@ bool ALIUtils::eq2ang( double ang1, double ang2 ) double pii = acos(0.)*2; double diff = diff2pi( ang1, ang2 ); if( diff > 0.00001 ) { - if( approxTo0( fabs( diff - 2*pii ) ) == 0. ) { + if( fabs( diff - 2*pii ) > 0.00001 ) { //- std::cout << " diff " << diff << " " << ang1 << " " << ang2 << std::endl; beq = false; } @@ -949,10 +797,9 @@ double ALIUtils::addPii( double val ) } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -int ALIUtils::checkMatrixEquations( double angleX, double angleY, double angleZ, const CLHEP::HepRotation* rotorig) +int ALIUtils::checkMatrixEquations( double angleX, double angleY, double angleZ, CLHEP::HepRotation* rot) { - if( ALIUtils::debug >= 5 ) std::cout << " checkMatrixEquations " << angleX << " " << angleY << " " << angleZ << std::endl; - CLHEP::HepRotation* rot = const_cast<CLHEP::HepRotation*>(rotorig); + //- std::cout << " cme " << angleX << " " << angleY << " " << angleZ << std::endl; if( rot == 0 ) { rot = new CLHEP::HepRotation(); rot->rotateX( angleX ); diff --git a/Alignment/CocoaUtilities/src/GlobalOptionMgr.cc b/Alignment/CocoaUtilities/src/GlobalOptionMgr.cc index ea7f0000978..1faa0e319e3 100644 --- a/Alignment/CocoaUtilities/src/GlobalOptionMgr.cc +++ b/Alignment/CocoaUtilities/src/GlobalOptionMgr.cc @@ -38,10 +38,10 @@ void GlobalOptionMgr::setDefaultGlobalOptions() theGlobalOptions[ ALIstring("length_error_dimension") ] = 0; theGlobalOptions[ ALIstring("angle_value_dimension") ] = 0; theGlobalOptions[ ALIstring("angle_error_dimension") ] = 0; - theGlobalOptions[ ALIstring("output_length_value_dimension") ] = 1; - theGlobalOptions[ ALIstring("output_length_error_dimension") ] = 1; - theGlobalOptions[ ALIstring("output_angle_value_dimension") ] = 3; - theGlobalOptions[ ALIstring("output_angle_error_dimension") ] = 3; + theGlobalOptions[ ALIstring("output_length_value_dimension") ] = 0; + theGlobalOptions[ ALIstring("output_length_error_dimension") ] = 0; + theGlobalOptions[ ALIstring("output_angle_value_dimension") ] = 0; + theGlobalOptions[ ALIstring("output_angle_error_dimension") ] = 0; theGlobalOptions[ ALIstring("check_extra_entries") ] = 0; theGlobalOptions[ ALIstring("cms_link") ] = 0; theGlobalOptions[ ALIstring("cms_link_halfplanes") ] = 0; @@ -77,8 +77,7 @@ void GlobalOptionMgr::setDefaultGlobalOptions() theGlobalOptions[ ALIstring("MaxDeviDerivative") ] = 1.E-6; theGlobalOptions[ ALIstring("stopAfter1stIteration") ] = 0; - theGlobalOptions[ ALIstring("calParamInyfMatrix") ] = 1; - theGlobalOptions[ ALIstring("dumpOptOGlobalInReport") ] = 0; + theGlobalOptions[ ALIstring("calParamInyfMatrix") ] = 0; } //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ diff --git a/Alignment/CommonAlignmentAlgorithm/BuildFile b/Alignment/CommonAlignmentAlgorithm/BuildFile index cc2967ce7df..d0fe573ebbb 100644 --- a/Alignment/CommonAlignmentAlgorithm/BuildFile +++ b/Alignment/CommonAlignmentAlgorithm/BuildFile @@ -11,7 +11,6 @@ <use name=TrackingTools/AnalyticalJacobians> <use name=Geometry/CommonDetAlgo> <use name=Geometry/Surface> -<use name=Geometry/Vector> <use name=Geometry/CommonDetUnit> <use name=DataFormats/TrajectoryState> @@ -29,7 +28,6 @@ <use name=TrackingTools/AnalyticalJacobians> <use name=Geometry/CommonDetAlgo> <use name=Geometry/Surface> - <use name=Geometry/Vector> <use name=Geometry/CommonDetUnit> <use name=DataFormats/TrajectoryState> # added since were in upper part... ??? diff --git a/Alignment/HIPAlignmentAlgorithm/doc/html/index.html b/Alignment/HIPAlignmentAlgorithm/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/HIPAlignmentAlgorithm/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/HIPAlignmentAlgorithm/doc/html/overview.html b/Alignment/HIPAlignmentAlgorithm/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/HIPAlignmentAlgorithm/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/LaserAlignment/doc/html/index.html b/Alignment/LaserAlignment/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/LaserAlignment/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/LaserAlignment/doc/html/overview.html b/Alignment/LaserAlignment/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/LaserAlignment/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/LaserAlignmentSimulation/doc/html/index.html b/Alignment/LaserAlignmentSimulation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/LaserAlignmentSimulation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/LaserAlignmentSimulation/doc/html/overview.html b/Alignment/LaserAlignmentSimulation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/LaserAlignmentSimulation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/LaserDQM/doc/html/index.html b/Alignment/LaserDQM/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/LaserDQM/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/LaserDQM/doc/html/overview.html b/Alignment/LaserDQM/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/LaserDQM/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h b/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h index b7c29535267..3399b649f19 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h +++ b/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h @@ -7,9 +7,9 @@ /// /// \author : Gero Flucke /// date : October 2006 -/// $Revision: 1.1 $ -/// $Date: 2006/10/20 13:44:13 $ -/// (last update by $Author: flucke $) +/// $Revision$ +/// $Date$ +/// (last update by $Author$) #include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentAlgorithmBase.h" @@ -75,8 +75,8 @@ class MillePedeAlignmentAlgorithm : public AlignmentAlgorithmBase bool is2D(const TransientTrackingRecHit::ConstRecHitPointer &recHit) const; const MagneticField* getMagneticField(const edm::EventSetup& setup); //const; - void recursiveFillLabelHist(Alignable *ali) const; // temporary? - bool readFromPede(const std::string &pedeOutFile); + void recursiveFillLabelHist(const Alignable *ali) const; // temporary + edm::ParameterSet theConfig; AlignmentParameterStore *theAlignmentParameterStore; @@ -85,6 +85,7 @@ class MillePedeAlignmentAlgorithm : public AlignmentAlgorithmBase MillePedeMonitor *theMonitor; Mille *theMille; PedeSteerer *thePedeSteer; + int theMinNumHits; std::vector<float> theFloatBuffer; diff --git a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h b/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h deleted file mode 100644 index 42fd7bed49c..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef MILLEPEDEVARIABLES_H -#define MILLEPEDEVARIABLES_H - -/** - * \class MillePedeVariables - * - * container for millepede specific variables attached to AlignmentParameters - * - * \author : Gero Flucke - * date : November 2006 - * $Revision: 1.2 $ - * $Date: 2006/11/07 10:45:09 $ - * (last update by $Author: flucke $) - */ - -#include "Alignment/CommonAlignment/interface/AlignmentUserVariables.h" - -#include <vector> - -class MillePedeVariables : public AlignmentUserVariables { - public: - - /** constructor */ - explicit MillePedeVariables(unsigned int nParams); - /** destructor */ - virtual ~MillePedeVariables() {} - /** clone method (using copy constructor) */ - virtual MillePedeVariables* clone() const { return new MillePedeVariables(*this);} - - /// set default values for all data concerning nParam (false if nParam out of range) - bool setAllDefault(unsigned int nParam); - /// number of parameters - unsigned int size() const {return myIsValid.size();} - - /// get valid flag array - const std::vector<bool>& isValid() const { return myIsValid;} - /// get valid flag array for changing it - std::vector<bool>& isValid() { return myIsValid;} - - /// get array of differences to start value - const std::vector<float>& diffBefore() const {return myDiffBefore;} - /// get array of differences to start value for changing it - std::vector<float>& diffBefore() {return myDiffBefore;} - - /// get global correlation array - const std::vector<float>& globalCor() const {return myGlobalCor;} - /// get global correlation array for changing it - std::vector<float>& globalCor() {return myGlobalCor;} - - /// get array of presigmas (<= 0: means fixed) - const std::vector<float>& preSigma() const {return myPreSigma;} - /// get array of presigmas (<= 0: means fixed) for changing it - std::vector<float>& preSigma() {return myPreSigma;} - - /// true if parameter is fixed - bool isFixed(unsigned int nParam) const; - - private: - std::vector<bool> myIsValid; - std::vector<float> myDiffBefore; - std::vector<float> myGlobalCor; - std::vector<float> myPreSigma; /// <= 0 means fixed -}; - -#endif diff --git a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h b/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h deleted file mode 100644 index d865727669a..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef MILLEPEDEVARIABLESIOROOT_H -#define MILLEPEDEVARIABLESIOROOT_H - -/// \class MillePedeVariablesIORoot -/// -/// ROOT based IO of MillePedeVariables -/// -/// \author : Gero Flucke -/// date : November 2006 -/// $Revision: 1.1 $ -/// $Date: 2006/10/20 13:44:13 $ -/// (last update by $Author: flucke $) - - -#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentIORootBase.h" -#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentUserVariablesIO.h" - -#include <vector> - -// ROOT types: -#include "Rtypes.h" - -class Alignable; -class AlignmentUserVariables; - - -//__________________________________________________________________________________________________ - -class MillePedeVariablesIORoot : public AlignmentIORootBase, public AlignmentUserVariablesIO -{ - public: - MillePedeVariablesIORoot(); - virtual ~MillePedeVariablesIORoot() {} - - /** write user variables */ - void writeMillePedeVariables(const std::vector<Alignable*> &alivec, const char *filename, - int iter, bool validCheck, int &ierr); - - /** read user variables (not that their memory is owned by this class!) */ - std::vector<AlignmentUserVariables*> readMillePedeVariables - (const std::vector<Alignable*> &alivec, const char *filename, int iter, int &ierr); - - protected: - - /** write MillePedeVariables attached to AlignmentParameters of one Alignable */ - virtual int writeOne(Alignable *ali); // inherited from AlignmentUserVariablesIO - - /** read MillePedeVariables belonging to one Alignable */ - virtual AlignmentUserVariables* readOne(Alignable *ali, int &ierr); - // previous inherited from AlignmentUserVariablesIO - - /** open IO */ // inherited from AlignmentUserVariablesIO - virtual int open(const char *filename, int iteration, bool writemode) - { return this->openRoot(filename, iteration, writemode);} - - /** close IO */ - virtual int close() {return this->closeRoot();} // inherited from AlignmentUserVariablesIO - - /// create root branches - virtual void createBranches(); // inherited from AlignmentIORootBase - /// set root branche addresses - virtual void setBranchAddresses(); // inherited from AlignmentIORootBase - - private: - // variables for ROOT tree - enum {kMaxNumPar = 10}; // far above rigid body limit (RigidBodyAlignmentParameters::N_PARAM) - - unsigned int myId; - int myObjId; - - unsigned int myNumPar; - Byte_t myIsValid[kMaxNumPar]; - Float_t myDiffBefore[kMaxNumPar]; - Float_t myGlobalCor[kMaxNumPar]; - Float_t myPreSigma[kMaxNumPar]; - -}; - -#endif diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeAlignmentAlgorithm.cc b/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeAlignmentAlgorithm.cc index d764f44979a..9476bceece3 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeAlignmentAlgorithm.cc +++ b/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeAlignmentAlgorithm.cc @@ -3,8 +3,8 @@ * * \author : Gero Flucke * date : October 2006 - * $Revision: 1.3 $ - * $Date: 2006/11/14 08:47:53 $ + * $Revision: 1.1 $ + * $Date: 2006/10/20 13:57:03 $ * (last update by $Author: flucke $) */ @@ -23,12 +23,8 @@ #include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeAlignmentAlgorithm.h" #include "Mille.h" // 'unpublished' interface located in src #include "PedeSteerer.h" // dito -#include "PedeReader.h" // dito #include "Alignment/CommonAlignmentAlgorithm/interface/ReferenceTrajectory.h" -#include "Alignment/CommonAlignmentAlgorithm/interface/AlignmentIORoot.h" -#include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h" - #include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" // Algebraic matrices #include <Geometry/CommonDetUnit/interface/GeomDetUnit.h> #include <Geometry/CommonDetUnit/interface/GeomDetType.h> @@ -78,71 +74,20 @@ void MillePedeAlignmentAlgorithm::initialize(const edm::EventSetup &setup, // get alignables theAlignables = theAlignmentParameterStore->alignables(); - std::string dir(theConfig.getUntrackedParameter<std::string>("fileDir")); - if (!dir.empty()) dir += '/'; - - thePedeSteer = new PedeSteerer(tracker, theAlignmentParameterStore, - theConfig.getParameter<edm::ParameterSet>("pedeSteerer"), - dir.c_str()); - - AlignmentIORoot aliIO; - const std::string file(dir + theConfig.getParameter<std::string>("treeFile")); - // pedeOut defines whether alignment should be read in from pede output or produced from tracks - const std::string pedeOut(theConfig.getUntrackedParameter<std::string>("pedeOut")); - if (pedeOut.empty()) { - theMille = new Mille((dir + theConfig.getParameter<std::string>("binaryFile")).c_str()); - const std::string monitorFile(theConfig.getUntrackedParameter<std::string>("monitorFile")); - if (!monitorFile.empty()) theMonitor = new MillePedeMonitor((dir+monitorFile).c_str()); - - const int loop = 0; - int ioerr = 0; - aliIO.writeAlignableOriginalPositions(theAlignables, file.c_str(), loop, false, ioerr); - if (ioerr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "problem " << ioerr - << " in writeAlignableOriginalPositions"; -// // get misalignment parameters and write to root file -// aliIO.writeAlignmentParameters(theAlignables, file.c_str(), loop, false, ioerr); -// if (ioerr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" -// << "problem " << ioerr << " writeAlignmentParameters"; - aliIO.writeAlignableAbsolutePositions(theAlignables, file.c_str(), loop, false, ioerr); - if (ioerr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "problem " << ioerr - << " in writeAlignableAbsolutePositions, " << loop; - - } else { - // FIXME: initialise everything despite of reading in from pede for pede internal iterations? - if (this->readFromPede(dir + pedeOut)) { - edm::LogInfo("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "read successfully from " << dir + pedeOut; - // FIXME: problem if read in does not correspond to store - // or if scenario is non-zero (then there might be some doubling for fixed parameters) -// theAlignmentParameterStore->applyParameters(); - const int loop = 1; - int ierr = 0; - MillePedeVariablesIORoot millePedeIO; - millePedeIO.writeMillePedeVariables(theAlignables, file.c_str(), loop, false, ierr); - if (ierr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "error " << ierr << " writing MillePedeVariables"; - // get aligned positions and write to root file - aliIO.writeAlignableAbsolutePositions(theAlignables, file.c_str(), loop, false, ierr); - if (ierr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "problem " << ierr - << " in writeAlignableAbsolutePositions, " << loop; - aliIO.writeAlignmentParameters(theAlignables, file.c_str(), loop, false, ierr); - if (ierr) edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "problem " << ierr << " writeAlignmentParameters"; - } else { - edm::LogError("Alignment") << "@SUB=MillePedeAlignmentAlgorithm::initialize" - << "problems reading from " << dir + pedeOut; - } + theMille = new Mille(theConfig.getParameter<std::string>("binaryFile").c_str()); + const std::string monitorFile(theConfig.getUntrackedParameter<std::string>("monitorFile")); + if (!monitorFile.empty()) { + theMonitor = new MillePedeMonitor(monitorFile.c_str()); } - + thePedeSteer = new PedeSteerer(tracker, theAlignmentParameterStore, + theConfig.getParameter<edm::ParameterSet>("pedeSteerer")); } // Call at end of job --------------------------------------------------------- //____________________________________________________ void MillePedeAlignmentAlgorithm::terminate() { + // FIXME: should we delete here or in destructor? delete theAlignableNavigator; theAlignableNavigator = 0; @@ -257,7 +202,7 @@ int MillePedeAlignmentAlgorithm::globalDerivatives(const ConstRecHitPointer &rec } // get relevant Alignable - Alignable *ali = theAlignmentParameterStore->alignableFromAlignableDet(alidet); + const Alignable *ali = theAlignmentParameterStore->alignableFromAlignableDet(alidet); if (!ali) { // FIXME: if not selected to be aligned? need regardAllHits, cf. below? // happens e.g. for pixel alignables if pixel not foreseen to be aligned const GlobalPoint posDet(alidet->globalPosition()); @@ -348,7 +293,7 @@ MillePedeAlignmentAlgorithm::getMagneticField(const edm::EventSetup &setup) //co //____________________________________________________ -void MillePedeAlignmentAlgorithm::recursiveFillLabelHist(Alignable *ali) const +void MillePedeAlignmentAlgorithm::recursiveFillLabelHist(const Alignable *ali) const { while (ali) { @@ -357,21 +302,3 @@ void MillePedeAlignmentAlgorithm::recursiveFillLabelHist(Alignable *ali) const ali = ali->mother(); } } - -//__________________________________________________________________________________________________ -bool MillePedeAlignmentAlgorithm::readFromPede(const std::string &pedeOutName) -{ - - PedeReader reader(pedeOutName.c_str(), *thePedeSteer); - std::vector<Alignable*> alis; - bool okRead = reader.read(alis); - - if (!okRead || alis.size() != theAlignables.size()) { - edm::LogWarning("Alignment") << "@SUB=readFromPede" - << "read " << alis.size() << " alignables, while " - << theAlignables.size() << " in store, read " - << (okRead ? "OK" : "not OK"); - } - - return okRead; -} diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariables.cc b/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariables.cc deleted file mode 100644 index 323a321f98a..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariables.cc +++ /dev/null @@ -1,42 +0,0 @@ -/** - * \file MillePedeVariables.cc - * - * - * \author : Gero Flucke - * date : November 2006 - * $Revision: 1.2 $ - * $Date: 2006/11/07 10:45:09 $ - * (last update by $Author: flucke $) - */ - -#include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h" - -//__________________________________________________________________________________________________ -MillePedeVariables::MillePedeVariables(unsigned int nParams) - : myIsValid(nParams), myDiffBefore(nParams), myGlobalCor(nParams), myPreSigma(nParams) -{ - for (unsigned int i = 0; i < nParams; ++i) { - this->setAllDefault(i); - } -} - -//__________________________________________________________________________________________________ -bool MillePedeVariables::setAllDefault(unsigned int nParam) -{ - if (nParam >= this->size()) return false; - - myIsValid[nParam] = true; - myDiffBefore[nParam] = -999999.; - myGlobalCor[nParam] = -1.; - myPreSigma[nParam] = -1.; - - return true; -} - -//__________________________________________________________________________________________________ -bool MillePedeVariables::isFixed(unsigned int nParam) const -{ - if (nParam >= this->size()) return false; - - return (this->preSigma()[nParam] < 0.); -} diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariablesIORoot.cc b/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariablesIORoot.cc deleted file mode 100644 index 2701fd8bddb..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/src/MillePedeVariablesIORoot.cc +++ /dev/null @@ -1,163 +0,0 @@ -/** - * \file MillePedeVariablesIORoot.cc - * - * \author : Gero Flucke - * date : November 2006 - * $Revision: 1.2 $ - * $Date: 2006/11/07 10:45:09 $ - * (last update by $Author: flucke $) - */ - -// this class's header -#include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariablesIORoot.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include "Alignment/TrackerAlignment/interface/TrackerAlignableId.h" -#include "Alignment/CommonAlignment/interface/Alignable.h" -#include "Alignment/CommonAlignment/interface/AlignmentParameters.h" -#include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h" - - -// ------------------------------------------------------------------------------------------------- -MillePedeVariablesIORoot::MillePedeVariablesIORoot() -{ - treename = "MillePedeUser"; - treetxt = "MillePede User Variables"; -} - -// ------------------------------------------------------------------------------------------------- -void MillePedeVariablesIORoot::writeMillePedeVariables -(const std::vector<Alignable*> &alivec, const char *filename, int iter, bool validCheck, int &ierr) -{ - ierr = 0; - - int iret = this->open(filename, iter, true); - if (iret != 0) { - ierr = -1; - } else { - iret = this->write(alivec, validCheck); - tree->BuildIndex("Id", "ObjId"); - if (iret != 0) { - ierr = -2; - } else { - iret = this->close(); - if (iret != 0) { - ierr = -3; - } - } - } - - return; -} - -// ------------------------------------------------------------------------------------------------- -std::vector<AlignmentUserVariables*> MillePedeVariablesIORoot::readMillePedeVariables -(const std::vector<Alignable*> &alivec, const char *filename, int iter, int &ierr) -{ - std::vector<AlignmentUserVariables*> result; - ierr = 0; - int iret = this->open(filename, iter, false); - if (iret != 0) { - ierr = -1; - } else { - result = this->read(alivec, iret); - if (iret != 0) { - ierr = -2; - } else { - iret = this->close(); - if (iret != 0) { - ierr = -3; - } - } - } - - return result; -} - -// ------------------------------------------------------------------------------------------------- -int MillePedeVariablesIORoot::writeOne(Alignable* ali) -{ - if (!ali || !ali->alignmentParameters() - || !dynamic_cast<MillePedeVariables*>(ali->alignmentParameters()->userVariables())) { - edm::LogError("Alignment") << "@SUB=MillePedeVariablesIORoot::writeOne" - << "no MillePedeVariables found!"; - return -1; - } - - const MillePedeVariables *mpVar = - dynamic_cast<MillePedeVariables*>(ali->alignmentParameters()->userVariables()); - myNumPar = mpVar->size(); - if (myNumPar >= kMaxNumPar) { - edm::LogError("Alignment") << "@SUB=MillePedeVariablesIORoot::writeOne" - << "ignoring parameters " << kMaxNumPar << " to " << myNumPar-1; - myNumPar = kMaxNumPar; - } - - for (unsigned int iPar = 0; iPar < myNumPar; ++iPar) { - myIsValid[iPar] = mpVar->isValid()[iPar]; - myDiffBefore[iPar] = mpVar->diffBefore()[iPar]; - myGlobalCor[iPar] = mpVar->globalCor()[iPar]; - myPreSigma[iPar] = mpVar->preSigma()[iPar]; - } - - const TrackerAlignableId ID; - const TrackerAlignableId::UniqueId detType = ID.alignableUniqueId(ali); - myId = detType.first; - myObjId = detType.second; - - tree->Fill(); - - return 0; -} - -// ------------------------------------------------------------------------------------------------- -AlignmentUserVariables* MillePedeVariablesIORoot::readOne(Alignable *ali, int &ierr) -{ - ierr = 0; - - const TrackerAlignableId ID; - const TrackerAlignableId::UniqueId detType = ID.alignableUniqueId(ali); - - if (tree->GetEntryWithIndex(detType.first, detType.second) < 0) { - edm::LogError("Alignment") << "@SUB=MillePedeVariablesIORoot::readOne" - << "no index for detType = (" << detType.first << "/" - << detType.second << ") found!"; - ierr = 1; - return 0; - } - - MillePedeVariables *mpVar = new MillePedeVariables(myNumPar); - for (unsigned int iPar = 0; iPar < myNumPar; ++iPar) { - mpVar->isValid()[iPar] = myIsValid[iPar]; - mpVar->diffBefore()[iPar] = myDiffBefore[iPar]; - mpVar->globalCor()[iPar] = myGlobalCor[iPar]; - mpVar->preSigma()[iPar] = myPreSigma[iPar]; - } - - return mpVar; -} - -// ------------------------------------------------------------------------------------------------- -void MillePedeVariablesIORoot::createBranches() -{ - tree->Branch("Id", &myId, "Id/i"); - tree->Branch("ObjId", &myObjId, "ObjId/I"); - tree->Branch("NumPar", &myNumPar, "NumPar/i"); - tree->Branch("IsValid", myIsValid, "IsValid[NumPar]/b"); - tree->Branch("DiffBefore", myDiffBefore,"DiffBefore[NumPar]/F"); - tree->Branch("GlobalCor", myGlobalCor, "GlobalCor[NumPar]/F"); - tree->Branch("PreSigma", myPreSigma, "PreSigma[NumPar]/F"); -} - -// ------------------------------------------------------------------------------------------------- -void MillePedeVariablesIORoot::setBranchAddresses() -{ - tree->SetBranchAddress("Id", &myId); - tree->SetBranchAddress("ObjId", &myObjId); - tree->SetBranchAddress("NumPar", &myNumPar); - tree->SetBranchAddress("IsValid", myIsValid); - tree->SetBranchAddress("DiffBefore", myDiffBefore); - tree->SetBranchAddress("GlobalCor", myGlobalCor); - tree->SetBranchAddress("PreSigma", myPreSigma); -} diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.cc b/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.cc deleted file mode 100644 index 793ee12caed..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.cc +++ /dev/null @@ -1,195 +0,0 @@ -/** - * \file PedeReader.cc - * - * \author : Gero Flucke - * date : November 2006 - * $Revision: 1.2 $ - * $Date: 2006/11/07 10:45:09 $ - * (last update by $Author: flucke $) - */ - -#include "PedeReader.h" -#include "PedeSteerer.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include "Alignment/CommonAlignment/interface/Alignable.h" -#include "Alignment/CommonAlignment/interface/AlignableDet.h" -#include "Alignment/CommonAlignment/interface/AlignmentParameters.h" - -#include "Alignment/CommonAlignmentParametrization/interface/RigidBodyAlignmentParameters.h" -#include "Alignment/CommonAlignmentParametrization/interface/CompositeRigidBodyAlignmentParameters.h" - -#include "Alignment/MillePedeAlignmentAlgorithm/interface/MillePedeVariables.h" - -#include <map> - - -const unsigned int PedeReader::myMaxNumValPerParam = 5; - -//__________________________________________________________________________________________________ -PedeReader::PedeReader(const char *pedeResultFile, const PedeSteerer &steerer) - : myPedeResult(pedeResultFile, std::ios::in), mySteerer(steerer) -{ - if (!myPedeResult.is_open()) { - edm::LogError("Alignmnet") << "Problem opening pede output file " << pedeResultFile; - } - -} - -//__________________________________________________________________________________________________ -bool PedeReader::read(std::vector<Alignable*> &alignables) -{ - alignables.clear(); - myPedeResult.seekg(0, std::ios::beg); // back to start - bool isAllOk = true; - - std::map<Alignable*,Alignable*> uniqueList; - - // loop on lines of text file - unsigned int nParam = 0; - while (myPedeResult.good() && !myPedeResult.eof()) { - // read label - unsigned int paramLabel = 0; - if (!this->readIfSameLine<unsigned int>(myPedeResult, paramLabel)) continue; // empty line? - - // read up to maximal number of pede result per parameter - float buffer[myMaxNumValPerParam] = {0.}; - unsigned int bufferPos = 0; - for ( ; bufferPos < myMaxNumValPerParam; ++bufferPos) { - if (!this->readIfSameLine<float>(myPedeResult, buffer[bufferPos])) break; - } - - Alignable *alignable = this->setParameter(paramLabel, bufferPos, buffer); - if (!alignable) { - isAllOk = false; // or error? - continue; - } - uniqueList[alignable] = alignable; - ++nParam; - } - - // add Alignables to output - for ( std::map<Alignable*,Alignable*>::const_iterator iAli = uniqueList.begin(); - iAli != uniqueList.end(); ++iAli) { - alignables.push_back((*iAli).first); - } - - edm::LogInfo("Alignment") << "@SUB=PedeReader::read" << nParam << " parameters for " - << alignables.size() << " alignables"; - - return isAllOk; -} - - -//__________________________________________________________________________________________________ -template<class T> -bool PedeReader::readIfSameLine(std::ifstream &aStream, T &outValue) const -{ - - while (true) { - const int aChar = aStream.get(); - if (!aStream.good()) return false; - - switch(aChar) { - case ' ': - case '\t': - continue; // to next character - case '\n': - return false; // end of line - default: - aStream.unget(); - aStream >> outValue; - if (aStream.fail()) return false; // NOT if (!aStream.good()) - else return true; - } // switch - } // while - - edm::LogError("Alignment") << "@SUB=PedeReader::readIfSameLine" << "Should never come here!"; - return false; -} - -#include <iostream> - -//__________________________________________________________________________________________________ -Alignable* PedeReader::setParameter(unsigned int paramLabel, - unsigned int bufLength, float *buf) const -{ - Alignable *alignable = mySteerer.alignableFromLabel(paramLabel); - if (alignable) { - AlignmentParameters *params = this->checkAliParams(alignable); - MillePedeVariables *userParams = // static cast ensured by previous checkAliParams - static_cast<MillePedeVariables*>(params->userVariables()); - - AlgebraicVector parVec(params->parameters()); - AlgebraicSymMatrix covMat(params->covariance()); - const unsigned int paramNum = mySteerer.paramNumFromLabel(paramLabel); - userParams->setAllDefault(paramNum); - - switch (bufLength) { - case 5: - userParams->globalCor()[paramNum] = buf[4]; - // no break - case 4: - covMat[paramNum][paramNum] = buf[3]*buf[3]; - // no break - case 3: - userParams->diffBefore()[paramNum] = buf[2]; - // no break - case 2: - parVec[paramNum] = buf[0]; - userParams->preSigma()[paramNum] = buf[1]; // probably means fixed - if (!userParams->isFixed(paramNum) && bufLength == 2) { - edm::LogError("Alignment") << "@SUB=PedeReader::setParameter" - << "Param " << paramLabel << " (from " - << typeid(*alignable).name() << ") without result!"; - userParams->isValid()[paramNum] = false; - } - break; - case 0: - case 1: - default: - edm::LogError("Alignment") << "@SUB=PedeReader::setParameter" - << "expect 2 to 5 values, got " << bufLength - << " for label " << paramLabel; - break; - } - alignable->setAlignmentParameters(params->clone(parVec, covMat));//transferred mem. responsib. - } - return alignable; -} - -//__________________________________________________________________________________________________ -AlignmentParameters* PedeReader::checkAliParams(Alignable *alignable) const -{ - // first check that we have parameters - AlignmentParameters *params = alignable->alignmentParameters(); - if (!params) { - const AlgebraicVector par(RigidBodyAlignmentParameters::N_PARAM, 0); - const AlgebraicSymMatrix cov(RigidBodyAlignmentParameters::N_PARAM, 0); - - bool isHigherLevel = false; - AlignableDet *alidet = dynamic_cast<AlignableDet*>(alignable); - if (alidet != 0) { // alignable Det - params = new RigidBodyAlignmentParameters(alignable, par, cov); - } else { // higher level object - params = new CompositeRigidBodyAlignmentParameters(alignable, par, cov); - isHigherLevel = true; - } - edm::LogInfo("Alignment") << "@SUB=PedeReader::checkAliParams" - << "build " << (isHigherLevel ? "Composite" : "" ) - << "RigidBodyAlignmentParameters for alignable with label " - << mySteerer.alignableLabel(alignable); - alignable->setAlignmentParameters(params); // transferred memory responsibility - } - - // now check that we have user parameters of correct type: - if (!dynamic_cast<MillePedeVariables*>(params->userVariables())) { - edm::LogInfo("Alignment") << "@SUB=PedeReader::checkAliParams" - << "add user variables for alignable with label " - << mySteerer.alignableLabel(alignable); - params->setUserVariables(new MillePedeVariables(params->size())); - } - - return params; -} diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.h b/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.h deleted file mode 100644 index b788d148e9d..00000000000 --- a/Alignment/MillePedeAlignmentAlgorithm/src/PedeReader.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef MILLEPEDEPEDEREADER_H -#define MILLEPEDEPEDEREADER_H - -/** - * \class PedeReader - * - * read in result from pede text file - * - * \author : Gero Flucke - * date : November 2006 - * $Revision: 1.2 $ - * $Date: 2006/11/07 10:45:09 $ - * (last update by $Author: flucke $) - */ - -#include <fstream> -#include <vector> - -class PedeSteerer; -class Alignable; -class AlignmentParameters; - -/*************************************** -****************************************/ -class PedeReader -{ - public: - PedeReader(const char *pedeResultFile, const PedeSteerer &steerer); - /// non virtual destructor: do not inherit from this class - ~PedeReader() {} - bool read(std::vector<Alignable*> &alignables); - /// true if 'outValue' could be read via operator >> from the current line (!) of aStream, - /// false otherwise - template<class T> - bool readIfSameLine(std::ifstream &aStream, T &outValue) const; - - Alignable* setParameter(unsigned int paramLabel, unsigned int bufLength, float *buf) const; - /// returns parameters of alignable (creates - including MillePedeUser - if not yet existing) - AlignmentParameters* checkAliParams(Alignable *alignable) const; - private: - // PedeReader() {} // no default ctr. - - std::ifstream myPedeResult; - const PedeSteerer &mySteerer; - - static const unsigned int myMaxNumValPerParam; -}; - -#endif diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.cc b/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.cc index aa8c68d9776..3529d018218 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.cc +++ b/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.cc @@ -3,8 +3,8 @@ * * \author : Gero Flucke * date : October 2006 - * $Revision: 1.4 $ - * $Date: 2006/11/14 08:29:05 $ + * $Revision: 1.2 $ + * $Date: 2006/11/07 10:43:23 $ * (last update by $Author: flucke $) */ @@ -26,17 +26,14 @@ #include <algorithm> const unsigned int PedeSteerer::theMaxNumParam = RigidBodyAlignmentParameters::N_PARAM; -const unsigned int PedeSteerer::theMinLabel = 1; // must be > 0 //___________________________________________________________________________ PedeSteerer::PedeSteerer(AlignableTracker *alignableTracker, AlignmentParameterStore *store, - const edm::ParameterSet &config, const char *fileDir) + const edm::ParameterSet &config) : + mySteerFile(config.getParameter<std::string>("steerFile").c_str(), std::ios::out) { // opens steerFileName as text output file - std::string dir(fileDir); - if (!dir.empty()) dir += '/'; - mySteerFile.open((dir + config.getParameter<std::string>("steerFile")).c_str(), std::ios::out); if (!mySteerFile.is_open()) { edm::LogError("Alignment") << "@SUB=PedeSteerer::PedeSteerer" @@ -61,7 +58,8 @@ PedeSteerer::~PedeSteerer() //___________________________________________________________________________ /// Return 32-bit unique label for alignable, 0 indicates failure. /// So far works only within the tracker. -unsigned int PedeSteerer::alignableLabel(Alignable *alignable) const +// uint32_t +unsigned int PedeSteerer::alignableLabel(const Alignable *alignable) const { if (!alignable) return 0; @@ -145,40 +143,6 @@ unsigned int PedeSteerer::parameterLabel(unsigned int aliLabel, unsigned int par */ } -//___________________________________________________________________________ -unsigned int PedeSteerer::paramNumFromLabel(unsigned int paramLabel) const -{ - if (paramLabel < theMinLabel) { - edm::LogError("LogicError") << "@SUB=PedeSteerer::paramNumFromLabel" - << "label " << paramLabel << " should be >= " << theMinLabel; - return 0; - } - return (paramLabel - theMinLabel) % theMaxNumParam; -} - -//___________________________________________________________________________ -unsigned int PedeSteerer::alignableLabelFromLabel(unsigned int paramLabel) const -{ - return paramLabel - this->paramNumFromLabel(paramLabel); -} - -//___________________________________________________________________________ -Alignable* PedeSteerer::alignableFromLabel(unsigned int label) const -{ - const unsigned int aliLabel = this->alignableLabelFromLabel(label); - if (aliLabel < theMinLabel) return 0; // error already given - - if (myIdToAlignableMap.empty()) const_cast<PedeSteerer*>(this)->buildReverseMap(); - IdToAlignableMap::const_iterator position = myIdToAlignableMap.find(aliLabel); - if (position != myIdToAlignableMap.end()) { - return position->second; - } else { - edm::LogError("LogicError") << "@SUB=PedeSteerer::alignableFromLabel" - << "alignable label " << aliLabel << " not in map"; - return 0; - } -} - //_________________________________________________________________________ unsigned int PedeSteerer::buildMap(Alignable *highestLevelAli) { @@ -190,7 +154,7 @@ unsigned int PedeSteerer::buildMap(Alignable *highestLevelAli) allComps.push_back(highestLevelAli); highestLevelAli->recursiveComponents(allComps); - unsigned int id = theMinLabel; + unsigned int id = 1; for (std::vector<Alignable*>::const_iterator iter = allComps.begin(); iter != allComps.end(); ++iter) { myAlignableToIdMap.insert(AlignableToIdPair(*iter, id)); @@ -200,23 +164,6 @@ unsigned int PedeSteerer::buildMap(Alignable *highestLevelAli) return allComps.size(); } - -//_________________________________________________________________________ -unsigned int PedeSteerer::buildReverseMap() -{ - - myIdToAlignableMap.clear(); // just in case of re-use... - - for (AlignableToIdMap::iterator it = myAlignableToIdMap.begin(); - it != myAlignableToIdMap.end(); ++it) { - const unsigned int key = (*it).second; - Alignable *ali = (*it).first; - myIdToAlignableMap[key] = ali; - } - - return myIdToAlignableMap.size(); -} - //_________________________________________________________________________ unsigned int PedeSteerer::fixParameters(AlignmentParameterStore *store, AlignableTracker *alignableTracker, diff --git a/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.h b/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.h index 8e9303f04cd..844a6450223 100644 --- a/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.h +++ b/Alignment/MillePedeAlignmentAlgorithm/src/PedeSteerer.h @@ -8,8 +8,8 @@ * * \author : Gero Flucke * date : October 2006 - * $Date: 2006/11/14 08:29:05 $ - * $Revision: 1.3 $ + * $Date: 2006/10/20 13:57:03 $ + * $Revision: 1.1 $ * (last update by $Author: flucke $) */ @@ -30,41 +30,28 @@ class PedeSteerer { public: PedeSteerer(AlignableTracker *tracker, AlignmentParameterStore *store, - const edm::ParameterSet &config, const char *fileDir = 0); + const edm::ParameterSet &config); /** non-virtual destructor: do not inherit from this class */ ~PedeSteerer(); /// uniqueId of Alignable, 0 if alignable not known /// between this ID and the next there is enough 'space' to add parameter /// numbers 0...nPar-1 to make unique IDs for the labels of active parameters - unsigned int alignableLabel(Alignable *alignable) const; + unsigned int alignableLabel(const Alignable *alignable) const; unsigned int parameterLabel(unsigned int aliLabel, unsigned int parNum) const; - - /// parameter number, 0 <= .. < theMaxNumParam, belonging to unique parameter label - unsigned int paramNumFromLabel(unsigned int paramLabel) const; - /// alignable label from parameter label (works also for alignable label...) - unsigned int alignableLabelFromLabel(unsigned int label) const; - /// alignable from alignable or parameter label - Alignable* alignableFromLabel(unsigned int label) const; private: - typedef std::map <Alignable*, unsigned int> AlignableToIdMap; - typedef std::pair<Alignable*, unsigned int> AlignableToIdPair; - - typedef std::map <unsigned int, Alignable*> IdToAlignableMap; - typedef std::pair<unsigned int, Alignable*> IdToAlignablePair; + typedef std::map <const Alignable*, unsigned int> AlignableToIdMap; + typedef std::pair<const Alignable*, unsigned int> AlignableToIdPair; unsigned int buildMap(Alignable *highestLevelAli); - unsigned int buildReverseMap(); unsigned int fixParameters(AlignmentParameterStore *store, AlignableTracker *alignableTracker, const edm::ParameterSet &config); std::ofstream mySteerFile; // text file - AlignableToIdMap myAlignableToIdMap; /// providing unique ID for alignable with space for params - IdToAlignableMap myIdToAlignableMap; /// reverse map + AlignableToIdMap myAlignableToIdMap; static const unsigned int theMaxNumParam; - static const unsigned int theMinLabel; }; #endif diff --git a/Alignment/MuonAlignmentAlgorithms/doc/html/index.html b/Alignment/MuonAlignmentAlgorithms/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/MuonAlignmentAlgorithms/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/MuonAlignmentAlgorithms/doc/html/overview.html b/Alignment/MuonAlignmentAlgorithms/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/MuonAlignmentAlgorithms/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/OfflineValidation/doc/html/index.html b/Alignment/OfflineValidation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/OfflineValidation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/OfflineValidation/doc/html/overview.html b/Alignment/OfflineValidation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/OfflineValidation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h b/Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h deleted file mode 100644 index ec448e749fc..00000000000 --- a/Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef OptAlignDBAnalyzer_H -#define OptAlignDBAnalyzer_H - -//#include <stdexcept> -#include <string> -#include <iostream> -#include <vector> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -using namespace std; - -class OptAlignDBAnalyzer : public edm::EDAnalyzer -{ - public: - explicit OptAlignDBAnalyzer(edm::ParameterSet const& p) - { } - virtual ~OptAlignDBAnalyzer() {} - virtual void analyze(const edm::Event& e, const edm::EventSetup& c); - private: -}; - -#endif - diff --git a/Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h b/Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h deleted file mode 100644 index d8090e461ae..00000000000 --- a/Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef OptAlignDataConverter_h -#define OptAlignDataConverter_h -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "CondTools/Utilities/interface/CSVFieldMap.h" -#include <string> -#include <vector> -namespace edm{ - class ParameterSet; - class Event; - class EventSetup; -} -class OptAlignDataConverter : public edm::EDAnalyzer { - public: - explicit OptAlignDataConverter(const edm::ParameterSet& iConfig ); - ~OptAlignDataConverter(){} - virtual void analyze( const edm::Event&, const edm::EventSetup& ){} - virtual void endJob(); - private: - CSVFieldMap m_fieldMap; - std::string m_inFileName; -}; -#endif diff --git a/Alignment/OptAlignCSV2DB/interface/OpticalAlignInfoRcd.h b/Alignment/OptAlignCSV2DB/interface/OpticalAlignInfoRcd.h deleted file mode 100644 index 6fb9c9e380b..00000000000 --- a/Alignment/OptAlignCSV2DB/interface/OpticalAlignInfoRcd.h +++ /dev/null @@ -1,11 +0,0 @@ -#ifndef OpticalAlignInfoRcd_H -#define OpticalAlignInfoRcd_H - -#include "FWCore/Framework/interface/EventSetupRecordImplementation.h" -/* #include "FWCore/ParameterSet/interface/ParameterSet.h" */ - -class OpticalAlignInfoRcd : public edm::eventsetup::EventSetupRecordImplementation<OpticalAlignInfoRcd> { - -}; - -#endif diff --git a/Alignment/OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc b/Alignment/OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc deleted file mode 100644 index 146899ad3c6..00000000000 --- a/Alignment/OptAlignCSV2DB/src/OptAlignDBAnalyzer.cc +++ /dev/null @@ -1,23 +0,0 @@ - -#include "../interface/OptAlignDBAnalyzer.h" - -#include <string> -#include <iostream> -#include <vector> - -#include "CondFormats/OptAlignObjects/interface/OpticalAlignments.h" -#include "CondFormats/DataRecord/interface/OpticalAlignmentsRcd.h" - -void OptAlignDBAnalyzer::analyze(const edm::Event& e, const edm::EventSetup& context) -{ - using namespace edm::eventsetup; - edm::ESHandle<OpticalAlignments> pObjs; - context.get<OpticalAlignmentsRcd>().get(pObjs); - const OpticalAlignments* myobj=pObjs.product(); - std::vector<OpticalAlignInfo>::const_iterator it; - for( it=myobj->opticalAlignments_.begin();it!=myobj->opticalAlignments_.end(); ++it ){ - std::cout<<"@@@@@ OpticalAlignInfo READ "<< *it << std::endl; - } -} - - diff --git a/Alignment/OptAlignCSV2DB/src/OptAlignDataConverter.cc b/Alignment/OptAlignCSV2DB/src/OptAlignDataConverter.cc deleted file mode 100644 index ed7895e3ecf..00000000000 --- a/Alignment/OptAlignCSV2DB/src/OptAlignDataConverter.cc +++ /dev/null @@ -1,166 +0,0 @@ -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBCommon/interface/Exception.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "CondTools/Utilities/interface/CSVDataLineParser.h" -#include "CondTools/Utilities/interface/CSVHeaderLineParser.h" -#include "CondTools/Utilities/interface/CSVBlankLineParser.h" -#include "../interface/OptAlignDataConverter.h" -#include "CondFormats/OptAlignObjects/interface/OpticalAlignments.h" - -#include <fstream> -#include <iostream> - -OptAlignDataConverter::OptAlignDataConverter(const edm::ParameterSet& iConfig):m_inFileName( iConfig.getUntrackedParameter< std::string >("inputFile") ){} - -void OptAlignDataConverter::endJob() -{ - std::ifstream myfile(m_inFileName.c_str()); - if ( !myfile.is_open() ) throw cms::Exception("unable to open file"); - OpticalAlignments* myobj=new OpticalAlignments; - std::vector<std::string> fieldNames,fieldTypes; - CSVHeaderLineParser headerParser; - CSVDataLineParser dataParser; - int counter=0; - while (! myfile.eof() ){ - std::string line; - std::getline (myfile,line); - std::cout << " line read " << line << std::endl; - - CSVBlankLineParser blank; - if(blank.isBlank(line)){ - continue; - } - if(counter<2){//two lines of header - if(counter==0) { - if(!headerParser.parse(line)) { - throw cms::Exception("unable to parse header: ")<<line; - } - fieldNames=headerParser.result(); - } - if(counter==1) { - if(!headerParser.parse(line)) { - } - fieldTypes=headerParser.result(); - int idx=0; - for(std::vector<std::string>::iterator it=fieldTypes.begin(); it!=fieldTypes.end(); ++it, ++idx){ - std::cout<<fieldNames[idx]<<":"<<*it<<std::endl; - m_fieldMap.push_back(fieldNames[idx],*it); - } - } - ++counter; - continue; - } - if(!dataParser.parse(line)) { - throw cms::Exception("unable to parse data :")<<line; - } - std::vector<boost::any> result=dataParser.result(); - OpticalAlignInfo* oaInfo = new OpticalAlignInfo; - std::string theLastExtraEntryName; - OpticalAlignParam* theLastExtraEntry = 0; - std::vector<OpticalAlignParam*> theExtraEntries; - - int idx=0; - for(std::vector<boost::any>::iterator it=result.begin(); it!=result.end(); ++it, ++idx){ - std::string fieldName=m_fieldMap.fieldName(idx); - // std::cout << " idx " << idx << " = " << fieldName << std::endl; - if(fieldName=="ID"){ - //std::cout<<"fieldName "<<fieldName<<" field type "<<m_fieldMap.fieldTypeName(idx)<<std::endl; - if( m_fieldMap.fieldType(idx)!= typeid(int) ) throw cond::Exception("unexpected type"); - oaInfo->ID_=boost::any_cast<int>(*it); - } else if(fieldName=="type"){ - //std::cout<<"fieldName "<<fieldName<<" field type "<<m_fieldMap.fieldTypeName(idx)<<std::endl; - if( m_fieldMap.fieldType(idx)!= typeid(std::string) ) throw cond::Exception("unexpected type"); - oaInfo->type_=boost::any_cast<std::string>(*it); - } - if(fieldName=="name"){ - //std::cout<<"fieldName "<<fieldName<<" field type "<<m_fieldMap.fieldTypeName(idx)<<std::endl; - if( m_fieldMap.fieldType(idx)!= typeid(std::string) ) throw cond::Exception("unexpected type"); - oaInfo->name_=boost::any_cast<std::string>(*it); - } - if(fieldName=="centre_X"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->x_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="centre_Y"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->y_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="centre_Z"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->z_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="centre_sigma_X" || fieldName=="centre_error_X"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->x_.error_=boost::any_cast<double>(*it); - } else if(fieldName=="centre_sigma_Y" || fieldName=="centre_error_Y"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->y_.error_=boost::any_cast<double>(*it); - } else if(fieldName=="centre_sigma_Z" || fieldName=="centre_error_Z"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->z_.error_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_X"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angx_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_Y"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angy_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_Z"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angz_.value_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_sigma_X" || fieldName=="angles_error_X"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angx_.error_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_sigma_Y" || fieldName=="angles_error_Y"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angy_.error_=boost::any_cast<double>(*it); - } else if(fieldName=="angles_sigma_Z" || fieldName=="angles_error_Z"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - oaInfo->angz_.error_=boost::any_cast<double>(*it); - } else if( fieldName.substr(0,5) == "param" && fieldName.substr(fieldName.length()-4,4) == "name"){ - if( m_fieldMap.fieldType(idx) != typeid(std::string) ) throw cond::Exception("unexpected type"); - std::string name = boost::any_cast<std::string>(*it); - theLastExtraEntry = new OpticalAlignParam; - theExtraEntries.push_back( theLastExtraEntry ); - theLastExtraEntry->name_ = name; - if( name != "None" ){ - theLastExtraEntryName = name; - } - } else if( fieldName.substr(0,5) == "param" && fieldName.substr(fieldName.length()-5,5) == "value"){ - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - if( boost::any_cast<double>(*it) != -9.999E9 ){ - if( theLastExtraEntryName == "None" ) throw cond::Exception("unexpected type: setting a value != -9.999E9 for a parameter that is 'None' "); - theLastExtraEntry->value_ = boost::any_cast<double>(*it); - } - } else if( fieldName.substr(0,5) == "param" && ( fieldName.substr(fieldName.length()-5,5) == "sigma" || fieldName.substr(fieldName.length()-5,5) == "error") ) { - if( m_fieldMap.fieldType(idx) != typeid(float) ) throw cond::Exception("unexpected type"); - if( boost::any_cast<double>(*it) != -9.999E9 ){ - if( theLastExtraEntryName == "None" ) throw cond::Exception("unexpected type: setting an error != -9.999E9 for a parameter that is 'None' "); - theLastExtraEntry->error_ = boost::any_cast<double>(*it); - } - } // end loop to one oaInfo - } - - for( size_t kk = 0; kk < theExtraEntries.size(); kk++) { - oaInfo->extraEntries_.push_back( *(theExtraEntries[kk]) ); - delete theExtraEntries[kk]; - } - - myobj->opticalAlignments_.push_back(*oaInfo); - std::cout << " OptAlignInfo read " << *oaInfo << std::endl; - - delete oaInfo; - ++counter; - } - myfile.close(); - edm::Service<cond::service::PoolDBOutputService> mydbservice; - if( mydbservice.isAvailable() ){ - try{ - mydbservice->newValidityForNewPayload<OpticalAlignments>(myobj,mydbservice->endOfTime()); - }catch(const cond::Exception& er){ - std::cout<<er.what()<<std::endl; - }catch(const std::exception& er){ - std::cout<<"caught std::exception "<<er.what()<<std::endl; - }catch(...){ - std::cout<<"Funny error"<<std::endl; - } - } - std::cout << "@@@@ OPTICALALIGNMENTS WRITTEN TO DB " << *myobj << std::endl; -} diff --git a/Alignment/OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc b/Alignment/OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc deleted file mode 100644 index 13fb710a81c..00000000000 --- a/Alignment/OptAlignCSV2DB/src/OpticalAlignInfoRcd.cc +++ /dev/null @@ -1,6 +0,0 @@ -#include "../interface/OpticalAlignInfoRcd.h" -#include "FWCore/Framework/interface/eventsetuprecord_registration_macro.h" -// #include "FWCore/Modules/src/SealModule.cc" -// #include "FWCore/Framework/interface/SourceFactory.h" - -EVENTSETUP_RECORD_REG(OpticalAlignInfoRcd); diff --git a/Alignment/OptAlignCSV2DB/src/SealModule.cc b/Alignment/OptAlignCSV2DB/src/SealModule.cc deleted file mode 100644 index 90e1f3aa324..00000000000 --- a/Alignment/OptAlignCSV2DB/src/SealModule.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "FWCore/Framework/interface/MakerMacros.h" -#include "Alignment/OptAlignCSV2DB/interface/OptAlignDataConverter.h" -#include "Alignment/OptAlignCSV2DB/interface/OptAlignDBAnalyzer.h" -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(OptAlignDataConverter) - -DEFINE_ANOTHER_FWK_MODULE(OptAlignDBAnalyzer) diff --git a/Alignment/OptAlignCSV2DB/test/opt_align_simple2DWithMirror.csv b/Alignment/OptAlignCSV2DB/test/opt_align_simple2DWithMirror.csv deleted file mode 100644 index d4f17be5f8e..00000000000 --- a/Alignment/OptAlignCSV2DB/test/opt_align_simple2DWithMirror.csv +++ /dev/null @@ -1,4 +0,0 @@ -ID,type,name,centre_X,centre_Y,centre_Z,angles_X,angles_Y,angles_Z,param1_name,param1_value,param2_name,param2_value,param3_name,param3_value,param4_name,param4_value,param5_name,param5_value,param6_name,param6_value,param7_name,param7_value,param8_name,param8_value,param9_name,param9_value,param10_name,param10_value,param11_name,param11_value,param12_name,param12_value -INT,CHAR,CHAR,FLOAT,FLOAT,FLOAT,FLOAT,FLOAT,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT,CHAR,FLOAT -60111,"mirror","OCMS/table/mirror",-9.999E9,0.01,-9.999E9,0.,-9.999E9,0.01,"shiftTX",0.11,"deviTX",0.04,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9 -60112,"sensor2D","OCMS/table/sens1",-9.999E9,0.01,90.,0.,-9.999E9,0.01,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9,"None",-9.999E9 diff --git a/Alignment/ReferenceTrajectories/doc/html/index.html b/Alignment/ReferenceTrajectories/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/ReferenceTrajectories/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/ReferenceTrajectories/doc/html/overview.html b/Alignment/ReferenceTrajectories/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/ReferenceTrajectories/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/SurveyAnalysis/doc/html/index.html b/Alignment/SurveyAnalysis/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/SurveyAnalysis/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/SurveyAnalysis/doc/html/overview.html b/Alignment/SurveyAnalysis/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/SurveyAnalysis/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/TrackHitFilter/doc/html/index.html b/Alignment/TrackHitFilter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/TrackHitFilter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/TrackHitFilter/doc/html/overview.html b/Alignment/TrackHitFilter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/TrackHitFilter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Alignment/TwoBodyDecay/doc/html/index.html b/Alignment/TwoBodyDecay/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Alignment/TwoBodyDecay/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Alignment/TwoBodyDecay/doc/html/overview.html b/Alignment/TwoBodyDecay/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Alignment/TwoBodyDecay/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/index.html b/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/overview.html b/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisAlgos/SiStripClusterInfoProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisAlgos/TrackInfoProducer/doc/html/index.html b/AnalysisAlgos/TrackInfoProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisAlgos/TrackInfoProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisAlgos/TrackInfoProducer/doc/html/overview.html b/AnalysisAlgos/TrackInfoProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisAlgos/TrackInfoProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/EWK/doc/html/index.html b/AnalysisDataFormats/EWK/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/EWK/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/EWK/doc/html/overview.html b/AnalysisDataFormats/EWK/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/EWK/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/Egamma/doc/html/index.html b/AnalysisDataFormats/Egamma/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/Egamma/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/Egamma/doc/html/overview.html b/AnalysisDataFormats/Egamma/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/Egamma/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/SUSYBSMObjects/doc/html/index.html b/AnalysisDataFormats/SUSYBSMObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/SUSYBSMObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/SUSYBSMObjects/doc/html/overview.html b/AnalysisDataFormats/SUSYBSMObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/SUSYBSMObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/SiStripClusterInfo/doc/html/index.html b/AnalysisDataFormats/SiStripClusterInfo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/SiStripClusterInfo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/SiStripClusterInfo/doc/html/overview.html b/AnalysisDataFormats/SiStripClusterInfo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/SiStripClusterInfo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/TopObjects/doc/html/index.html b/AnalysisDataFormats/TopObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/TopObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/TopObjects/doc/html/overview.html b/AnalysisDataFormats/TopObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/TopObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisDataFormats/TrackInfo/doc/html/index.html b/AnalysisDataFormats/TrackInfo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/AnalysisDataFormats/TrackInfo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/AnalysisDataFormats/TrackInfo/doc/html/overview.html b/AnalysisDataFormats/TrackInfo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/AnalysisDataFormats/TrackInfo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/AnalysisExamples/SiStripDetectorPerformance/BuildFile b/AnalysisExamples/SiStripDetectorPerformance/BuildFile deleted file mode 100644 index 11c0b0cb7e5..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/BuildFile +++ /dev/null @@ -1,52 +0,0 @@ -<flags SEAL_PLUGIN_NAME="AnalysisExamplesSiStripDetectorPerformance"> - -<use name=FWCore/Framework> -<use name=FWCore/ParameterSet> - -<use name=DataFormats/Common> -<use name=DataFormats/SiStripDigi> -<use name=DataFormats/SiStripCluster> -<use name=DataFormats/SiStripDetId> -<use name=DataFormats/TrackReco> -<use name=DataFormats/TrackerRecHit2D> - -<use name=RecoTracker/TkSeedGenerator> -<use name=TrackingTools/TrackFitters> -<use name=TrackingTools/TransientTrack> - -<use name=CalibTracker/SiStripConnectivity> - -<use name=CommonTools/SiStripZeroSuppression> - -<use name=clhep> -<use name=boost> -<use name=root> - - -<export> - <lib name=AnalysisExamplesSiStripDetectorPerformance> - - <use name=FWCore/Framework> - <use name=FWCore/ParameterSet> - - <use name=DataFormats/Common> - <use name=DataFormats/SiStripDigi> - <use name=DataFormats/SiStripCluster> - <use name=DataFormats/SiStripDetId> - <use name=DataFormats/TrackReco> - <use name=DataFormats/TrackerRecHit2D> - - <use name=RecoTracker/TkSeedGenerator> - <use name=TrackingTools/TrackFitters> - <use name=TrackingTools/TransientTrack> - -<use name=CalibTracker/SiStripConnectivity> - - <use name=CommonTools/SiStripZeroSuppression> - - <use name=clhep> - <use name=boost> - <use name=root> -</export> - - diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h b/AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h deleted file mode 100644 index 98ff0d881e7..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h +++ /dev/null @@ -1,127 +0,0 @@ -// created by Livio Fano' -#ifndef AnalysisExamples_SiStripDetectorPerformance_AnalyzeTracksClusters_h -#define AnalysisExamples_SiStripDetectorPerformance_AnalyzeTracksClusters_h -#include "AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include <TROOT.h> -#include <TTree.h> -#include <TFile.h> -#include <TH1F.h> -#include <TProfile.h> - -class TTree; - - -class AnalyzeTracksClusters : public edm::EDAnalyzer -{ - public: - - explicit AnalyzeTracksClusters(const edm::ParameterSet& conf); - - virtual ~AnalyzeTracksClusters(); - - virtual void beginJob(const edm::EventSetup& c); - virtual void endJob(); - virtual void analyze(const edm::Event& e, const edm::EventSetup& c); - void FillHisto(unsigned int, double, double, double, double); - std::vector<short> toycluster(int); - std::vector<short> smear(std::vector<short>); - private: - edm::ParameterSet conf_; - // DeDx* myDeDx; - TrackLocalAngle *anglefinder_; - const TrackerGeometry * tracker; - const MagneticField * magfield; - - int itk; - int nev; - // tree (track properties): - double mean; - double mean01; - double mean02; - double mean03; - double mean05; - double median; - double harm1; - double harm2; - double harm12; - double harm13; - double p; - double pt; - double eta; - double phi; - double dp; - double dp2; - double dr; - int n; - int pid; - - - // histos (rechit properties): - TFile* hFile; - TTree * nt; - - - int DTtrig; - int NoDTtrig; - int DTOnlytrig; - int CSCtrig; - int othertrig; - - int Ntk; - float p_tk[100]; - float pt_tk[100]; - float eta_tk[100]; - float phi_tk[100]; - int nhits_tk[100]; - int TrigBits[6]; - - int Subid[10000000]; - int Layer[10000000]; - float Clu_ch[10000000]; - float Clu_ang[10000000]; - float Clu_size[10000000]; - float Clu_bar[10000000]; - int Clu_1strip[10000000]; - int Clu_rawid[10000000]; - int Nclu; - int Nclu_matched; - - int Subid_all[10000000]; - int Layer_all[10000000]; - float Clu_ch_all[10000000]; - float Clu_ang_all[10000000]; - float Clu_size_all[10000000]; - float Clu_bar_all[10000000]; - int Clu_1strip_all[10000000]; - int Clu_rawid_all[10000000]; - - int Nclu_all; - int Nclu_all_matched; - int Nclu_st; - int Nclu_rphi; - - -}; - - -#endif diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h b/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h deleted file mode 100644 index efd420ef62e..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h +++ /dev/null @@ -1,133 +0,0 @@ -#ifndef ClusterAnalysis_h -#define ClusterAnalysis_h - -#include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h" -#include "Geometry/CommonTopologies/interface/StripTopology.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -//needed for the geometry: -#include "DataFormats/DetId/interface/DetId.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" - -//Data Formats -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/SiStripDigi/interface/SiStripDigi.h" -#include "DataFormats/SiStripCluster/interface/SiStripCluster.h" -#include "DataFormats/SiStripCluster/interface/SiStripClusterInfo.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/LTCDigi/interface/LTCDigi.h" - -//Services -#include "CommonTools/SiStripZeroSuppression/interface/SiStripPedestalsService.h" -#include "CommonTools/SiStripZeroSuppression/interface/SiStripNoiseService.h" - -#include "CalibTracker/Records/interface/SiStripDetCablingRcd.h" -#include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h" - -#include "FWCore/ParameterSet/interface/InputTag.h" - -#include "TROOT.h" -#include "TFile.h" -#include "TTree.h" -#include "TBranch.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TString.h" -#include "TObjArray.h" -#include "TCanvas.h" -#include "TPostScript.h" - -#include "vector" -#include <memory> -#include <string> -#include <iostream> - -//#include "ClusterTree.h" - -namespace cms{ - class ClusterAnalysis : public edm::EDAnalyzer - { - public: - - ClusterAnalysis(const edm::ParameterSet& conf); - - ~ClusterAnalysis(); - - void beginJob( const edm::EventSetup& es ); - - void endJob(); - - void analyze(const edm::Event& e, const edm::EventSetup& c); - - private: - void book(); - void AllClusters(); - void trackStudy(); - bool clusterInfos(const SiStripClusterInfo* cluster, const uint32_t& detid,TString flag); - const SiStripClusterInfo* MatchClusterInfo(const SiStripCluster* cluster, const uint32_t& detid); - std::pair<std::string,uint32_t> GetSubDetAndLayer(const uint32_t& detid); - - private: - - edm::ParameterSet conf_; - const StripTopology* topol; - edm::ESHandle<TrackerGeometry> tkgeom; - edm::ESHandle<SiStripDetCabling> SiStripDetCabling_; - - edm::Handle< edm::DetSetVector<SiStripClusterInfo> > dsv_SiStripClusterInfo; - edm::Handle< edm::DetSetVector<SiStripCluster> > dsv_SiStripCluster; - edm::Handle<reco::TrackCollection> trackCollection; - edm::Handle<LTCDigiCollection> ltcdigis; - edm::Handle<uint16_t> filterWord; - - std::vector<const SiStripCluster*> vPSiStripCluster; - - std::map<std::pair<std::string,uint32_t>,bool> DetectedLayers; - - std::string filename_; - std::string psfilename_; - int32_t psfiletype_; - - TFile* fFile; - TObjArray* Hlist; - - int runNb; - int eventNb; - - SiStripNoiseService SiStripNoiseService_; - SiStripPedestalsService SiStripPedestalsService_; - edm::InputTag Filter_src_; - edm::InputTag Track_src_; - edm::InputTag ClusterInfo_src_; - edm::InputTag Cluster_src_; - - std::vector<uint32_t> ModulesToBeExcluded_; - - bool not_the_first_event; - - bool tracksCollection_in_EventTree; - bool ltcdigisCollection_in_EventTree; - - int countOn, countOff, countAll, NClus[4][3]; - - }; -} -#endif diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h b/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h deleted file mode 100644 index 25e4f5f2bfc..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef ClusterAnalysisFilter_H -#define ClusterAnalysisFilter_H - -#include "FWCore/Framework/interface/EDFilter.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" - -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/SiStripDigi/interface/SiStripDigi.h" -#include "DataFormats/SiStripCluster/interface/SiStripCluster.h" -#include "DataFormats/SiStripCluster/interface/SiStripClusterInfo.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/LTCDigi/interface/LTCDigi.h" - -namespace cms -{ - class ClusterAnalysisFilter : public edm::EDFilter { - public: - ClusterAnalysisFilter(const edm::ParameterSet& conf); - ~ClusterAnalysisFilter() {} - - bool filter(edm::Event & e, edm::EventSetup const& es); - - private: - - bool TrackNumberSelector(); - bool ClusterNumberSelector(); - bool TriggerSelector(); - bool ClusterInModuleSelector (); - - edm::ParameterSet conf_; - - edm::InputTag Track_src_; - edm::InputTag ClusterInfo_src_; - edm::InputTag Cluster_src_; - - edm::Handle< edm::DetSetVector<SiStripClusterInfo> > dsv_SiStripClusterInfo; - edm::Handle< edm::DetSetVector<SiStripCluster> > dsv_SiStripCluster; - edm::Handle<reco::TrackCollection> trackCollection; - edm::Handle<LTCDigiCollection> ltcdigis; - }; -} -#endif diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h b/AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h deleted file mode 100644 index 4fd2c59a199..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h +++ /dev/null @@ -1,287 +0,0 @@ -#ifndef AnalysisExamples_SiStripDetectorPerformance_MTCCNtupleMaker_h -#define AnalysisExamples_SiStripDetectorPerformance_MTCCNtupleMaker_h - -#include <map> - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/DetId/interface/DetId.h" -//#include "CommonTools/SiStripZeroSuppression/interface/SiStripNoiseService.h" - -#include "AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h" - -#include <TROOT.h> -#include <TTree.h> -#include <TFile.h> -#include <TH1F.h> -#include <TF1.h> -#include <TProfile.h> -#include <TFolder.h> -#include <TDirectory.h> -#include <TAxis.h> -#include <TMath.h> - - -class MTCCNtupleMaker : public edm::EDAnalyzer -{ - public: - - explicit MTCCNtupleMaker(const edm::ParameterSet& conf); - - virtual ~MTCCNtupleMaker(); - - virtual void beginJob(const edm::EventSetup& c); - - virtual void endJob(); - - virtual void analyze(const edm::Event& e, const edm::EventSetup& c); - - void findtrackangle(const TrajectorySeed& seed, - const TrackingRecHitCollection &hits, - const edm::Event& e, - const edm::EventSetup& es); - - TrajectoryStateOnSurface startingTSOS(const TrajectorySeed& seed)const; - - const char* makename(DetId detid); - - const char* makedescription(DetId detid); - - private: - - const TrackerGeometry::DetIdContainer& Id; - - typedef std::map <int, TProfile*> histomap; - typedef StripSubdetector::SubDetector SiSubDet; - typedef std::map<SiSubDet, std::vector<TH1D *> > DetPlots; - - histomap histos; - DetPlots oDetPlots; - std::vector<TH1D *> oGlobalPlots; - - typedef struct {double chi2; int ndf; double p0; double p1; double p2; double errp0; double errp1; double errp2; double min;} histofit ; - typedef std::map <int, histofit*> fitmap; - fitmap fits; - - typedef std::vector<std::pair<const TrackingRecHit *,float> > hitanglevector; - typedef std::map <const reco::Track *, hitanglevector> trackhitmap; - typedef std::map <const reco::Track *, TrackLocalAngleNew::HitLclDirAssociation> trklcldirmap; - typedef std::map <const reco::Track *, TrackLocalAngleNew::HitGlbDirAssociation> trkglbdirmap; - typedef std::vector<SiStripDigi> DigisVector; - - double getClusterEta( const std::vector<uint16_t> &roSTRIP_AMPLITUDES, - const int &rnFIRST_STRIP, - const DigisVector &roDIGIS) const; - - edm::ParameterSet conf_; - std::string filename_; - //SiStripNoiseService m_oSiStripNoiseService; - - std::vector<DetId> Detvector; - - TrackLocalAngleNew *anglefinder_; - - int mtcctibcorr, mtcctobcorr; - - int monodscounter; - int monosscounter; - int stereocounter; - - int run; - int event; - int size; - int module; - int string; - int rod; - int extint; - int bwfw; - int wheel; - int type; - int layer; - int sign; - int charge; - int hitspertrack; - - float clusterpos; - float clustereta; - float clusterchg; - float clusterchgl; - float clusterchgr; - float clusternoise; - float clustermaxchg; - float clusterbarycenter; - float clusterseednoise; - - float angle; - float stereocorrection; - float localmagfield; - int monostereo; - float momentum, pt; - float eta; - float phi; - float normchi2; - float chi2; - float ndof; - bool bTrack; - bool bTriggerDT; - bool bTriggerCSC; - bool bTriggerRBC1; - bool bTriggerRBC2; - bool bTriggerRPC; - float dLclX; - float dLclY; - float dLclZ; - float dGlbX; - float dGlbY; - float dGlbZ; - - int eventcounter, trackcounter, hitcounter; - LocalVector localmagdir; - - TF1* fitfunc; - TFile* hFile; - TTree* MTCCNtupleMakerTree; - TTree *poTrackTree; - - TH1F *poClusterChargeTH1F; - TH1F *hphi, *hnhit; - TH1F *htaTIBL1mono; - TH1F *htaTIBL1stereo; - TH1F *htaTIBL2mono; - TH1F *htaTIBL2stereo; - TH1F *htaTIBL3; - TH1F *htaTIBL4; - TH1F *htaTOBL1mono; - TH1F *htaTOBL1stereo; - TH1F *htaTOBL2mono; - TH1F *htaTOBL2stereo; - TH1F *htaTOBL3; - TH1F *htaTOBL4; - TH1F *htaTOBL5; - TH1F *htaTOBL6; - TProfile *hwvst; - - bool seed_plus; - PropagatorWithMaterial *thePropagator; - PropagatorWithMaterial *thePropagatorOp; - KFUpdator *theUpdator; - Chi2MeasurementEstimator *theEstimator; - - const TransientTrackingRecHitBuilder *RHBuilder; - const KFTrajectorySmoother * theSmoother; - const KFTrajectoryFitter * theFitter; - const TrackerGeometry * tracker; - const MagneticField * magfield; - TrajectoryStateTransform tsTransform; - - //Directory hierarchy - - TDirectory *histograms; - TDirectory *summary; - - //TIB-TID-TOB-TEC - - TDirectory *TIB; - TDirectory *TOB; - TDirectory *TID; - TDirectory *TEC; - - //Forward-Backward - - TDirectory *TIBfw; - TDirectory *TIDfw; - TDirectory *TOBfw; - TDirectory *TECfw; - - TDirectory *TIBbw; - TDirectory *TIDbw; - TDirectory *TOBbw; - TDirectory *TECbw; - - //TIB directories - - TDirectory *TIBfw1; - TDirectory *TIBfw2; - TDirectory *TIBfw3; - TDirectory *TIBfw4; - - TDirectory *TIBbw1; - TDirectory *TIBbw2; - TDirectory *TIBbw3; - TDirectory *TIBbw4; - - //TID directories - - TDirectory *TIDfw1; - TDirectory *TIDfw2; - TDirectory *TIDfw3; - - TDirectory *TIDbw1; - TDirectory *TIDbw2; - TDirectory *TIDbw3; - - //TOB directories - - TDirectory *TOBfw1; - TDirectory *TOBfw2; - TDirectory *TOBfw3; - TDirectory *TOBfw4; - TDirectory *TOBfw5; - TDirectory *TOBfw6; - - TDirectory *TOBbw1; - TDirectory *TOBbw2; - TDirectory *TOBbw3; - TDirectory *TOBbw4; - TDirectory *TOBbw5; - TDirectory *TOBbw6; - - //TEC directories - - TDirectory *TECfw1; - TDirectory *TECfw2; - TDirectory *TECfw3; - TDirectory *TECfw4; - TDirectory *TECfw5; - TDirectory *TECfw6; - TDirectory *TECfw7; - TDirectory *TECfw8; - TDirectory *TECfw9; - - TDirectory *TECbw1; - TDirectory *TECbw2; - TDirectory *TECbw3; - TDirectory *TECbw4; - TDirectory *TECbw5; - TDirectory *TECbw6; - TDirectory *TECbw7; - TDirectory *TECbw8; - TDirectory *TECbw9; - -}; - - -#endif // AnalysisExamples_SiStripDetectorPerformance_MTCCNtupleMaker_h diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h b/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h deleted file mode 100644 index a2c60e8557d..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef AnalysisExamples_SiStripDetectorPerformance_TrackLocalAngle_h -#define AnalysisExamples_SiStripDetectorPerformance_TrackLocalAngle_h - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/TrackReco/interface/Track.h" - -class TrackLocalAngle -{ - public: - - - explicit TrackLocalAngle(const edm::ParameterSet& conf); - - virtual ~TrackLocalAngle(); - void init(const edm::Event& e,const edm::EventSetup& c); - - std::vector<std::pair<const TrackingRecHit *,float> > findtrackangle(const reco::Track & theT); - std::vector<std::pair<const TrackingRecHit*,float> > findtrackangle(const TrajectorySeed& seed, const reco::Track & theT); - std::vector<std::pair<const TrackingRecHit *,float> > buildTrack(TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed); - TrajectoryStateOnSurface startingTSOS(const TrajectorySeed& seed)const; - - private: - edm::ParameterSet conf_; - - bool seed_plus; - const Propagator *thePropagator; - const Propagator *thePropagatorOp; - KFUpdator *theUpdator; - Chi2MeasurementEstimator *theEstimator; - const TransientTrackingRecHitBuilder *RHBuilder; - // const KFTrajectorySmoother * theSmoother; - const TrajectoryFitter * theFitter; - const TrackerGeometry * tracker; - const MagneticField * magfield; - TrajectoryStateTransform tsTransform; - // TransientTrackingRecHit::RecHitContainer hits; - double cosineangle(LocalVector trackdirection); // [added by Andrea] -}; - - -#endif diff --git a/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h b/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h deleted file mode 100644 index bd83ef072d4..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef AnalysisExamples_SiStripDetectorPerformance_TrackLocalAngleNew_h -#define AnalysisExamples_SiStripDetectorPerformance_TrackLocalAngleNew_h - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" - #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/TrackReco/interface/Track.h" - -class TrackLocalAngleNew -{ - public: - typedef std::vector<std::pair<const TrackingRecHit *, float> > HitAngleAssociation; - typedef std::vector<std::pair<const TrackingRecHit *, LocalVector > > HitLclDirAssociation; - typedef std::vector<std::pair<const TrackingRecHit *, GlobalVector> > HitGlbDirAssociation; - - // typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer; - //typedef TransientTrackingRecHit::RecHitPointer RecHitPointer; - //typedef ConstReferenceCountingPointer<TransientTrackingRecHit> ConstRecHitPointer; - - explicit TrackLocalAngleNew(const edm::ParameterSet& conf); - - virtual ~TrackLocalAngleNew(); - void init(const edm::Event& e,const edm::EventSetup& c); - - std::vector<std::pair<const TrackingRecHit*,float> > findtrackangle(const TrajectorySeed& seed, - const reco::Track & theT); - - std::vector<std::pair<const TrackingRecHit *,float> > findtrackangle(const reco::Track & theT); - std::vector<std::pair<const TrackingRecHit *,float> > buildTrack(TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed); - TrajectoryStateOnSurface startingTSOS(const TrajectorySeed& seed)const; - - inline HitAngleAssociation getXZHitAngle() const throw() { - return oXZHitAngle; } - inline HitAngleAssociation getYZHitAngle() const throw() { - return oYZHitAngle; } - - inline HitLclDirAssociation getLocalDir() const throw() { - return oLocalDir; } - inline HitGlbDirAssociation getGlobalDir() const throw() { - return oGlobalDir; } - - private: - edm::ParameterSet conf_; - - bool seed_plus; - const Propagator *thePropagator; - const Propagator *thePropagatorOp; - KFUpdator *theUpdator; - Chi2MeasurementEstimator *theEstimator; - const TransientTrackingRecHitBuilder *RHBuilder; - // const KFTrajectorySmoother * theSmoother; - const TrajectoryFitter * theFitter; - const TrackerGeometry * tracker; - const MagneticField * magfield; - TrajectoryStateTransform tsTransform; - // TransientTrackingRecHit::RecHitContainer hits; - - HitAngleAssociation oXZHitAngle; - HitAngleAssociation oYZHitAngle; - - HitLclDirAssociation oLocalDir; - HitGlbDirAssociation oGlobalDir; -}; - - -#endif // AnalysisExamples_SiStripDetectorPerformance_TrackLocalAngleNew_h diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/AnalyzeTracksClusters.cc b/AnalysisExamples/SiStripDetectorPerformance/src/AnalyzeTracksClusters.cc deleted file mode 100644 index ba184909a5d..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/AnalyzeTracksClusters.cc +++ /dev/null @@ -1,331 +0,0 @@ -// created by Livio Fano' -#include <memory> -#include <string> -#include <iostream> -#include <TMath.h> -#include "AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "Geometry/TrackerGeometryBuilder/interface/StripGeomDetUnit.h" -#include "TRandom.h" -#include "AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h" -//add trigger info -#include "DataFormats/LTCDigi/interface/LTCDigi.h" - - - -using namespace std; -AnalyzeTracksClusters::AnalyzeTracksClusters(edm::ParameterSet const& conf) : - conf_(conf) -{ - anglefinder_=new TrackLocalAngle(conf); -} - -AnalyzeTracksClusters::~AnalyzeTracksClusters() -{ -} - -void AnalyzeTracksClusters::beginJob(const edm::EventSetup& conf){ - - hFile = new TFile ( "trackcluster.root", "RECREATE" ); - nt = new TTree("nt","a Tree"); - - nt->Branch("Ntk",&Ntk,"Ntk/I"); - nt->Branch("p_tk",p_tk,"p_tk[Ntk]/F"); - nt->Branch("pt_tk",pt_tk,"pt_tk[Ntk]/F"); - nt->Branch("eta_tk",eta_tk,"eta_tk[Ntk]/F"); - nt->Branch("phi_tk",phi_tk,"phi_tk[Ntk]/F"); - nt->Branch("nhits_tk",nhits_tk,"nhits_tk[Ntk]/I"); - nt->Branch("Nclu",&Nclu,"Nclu/I"); - nt->Branch("Nclu_matched",&Nclu_matched,"Nclu_Matched/I"); - nt->Branch("Subid",Subid,"Subid[Nclu]/I"); - nt->Branch("Layer",Layer,"Layer[Nclu]/I"); - nt->Branch("Clu_ch",Clu_ch,"Clu_ch[Nclu]/F"); - nt->Branch("Clu_ang",Clu_ang,"Clu_ang[Nclu]/F"); - nt->Branch("Clu_size",Clu_size,"Clu_size[Nclu]/F"); - nt->Branch("Clu_bar",Clu_bar,"Clu_bar[Nclu]/F"); - nt->Branch("Clu_1strip",Clu_1strip,"Clu_1strip[Nclu]/I"); - nt->Branch("Clu_rawid",Clu_rawid,"Clu_rawid[Nclu]/I"); - nt->Branch("Nclu_all",&Nclu_all,"Nclu_all/I"); - // nt->Branch("Nclu_all_matched",&Nclu_all_matched,"Nclu_all_matched/I"); - // nt->Branch("Nclu_all_st",&Nclu_all_st,"Nclu_all_st/I"); - // nt->Branch("Nclu_all_rphi",&Nclu_all_rphi,"Nclu_all_rphi/I"); - nt->Branch("Subid_all",Subid_all,"Subid_all[Nclu_all]/I"); - nt->Branch("Layer_all",Layer_all,"Layer_all[Nclu_all]/I"); - nt->Branch("Clu_ch_all",Clu_ch_all,"Clu_ch_all[Nclu_all]/F"); - nt->Branch("Clu_ang_all",Clu_ang_all,"Clu_ang_all[Nclu_all]/F"); - nt->Branch("Clu_size_all",Clu_size_all,"Clu_size_all[Nclu_all]/F"); - nt->Branch("Clu_bar_all",Clu_bar_all,"Clu_bar_all[Nclu_all]/F"); - nt->Branch("Clu_1strip_all",Clu_1strip_all,"Clu_1strip_all[Nclu_all]/I"); - nt->Branch("Clu_rawid_all",Clu_rawid_all,"Clu_rawid_all[Nclu_all]/I"); - //nt->Branch("TrigBits",TrigBits,"TrigBits[6]/I"); - nt->Branch("nev",&nev,"nev/I"); - nt->Branch("DTtrig",&DTtrig,"DTtrig/I"); - nt->Branch("NoDTtrig",&NoDTtrig,"NoDTtrig/I"); - nt->Branch("DTOnlytrig",&DTOnlytrig,"DTOnlytrig/I"); - nt->Branch("CSCtrig",&CSCtrig,"CSCtrig/I"); - nt->Branch("Othertrig",&othertrig,"Othertrig/I"); - itk=0; - - nev=0; - -} - -void AnalyzeTracksClusters::endJob(){ - std::cout << "****************************************" << std::endl; - std::cout << nev << " events processed" << std::endl; - std::cout << itk << " tracks processed" << std::endl; - nt->Write(); - hFile->Write(); - hFile->Close(); -} - -void AnalyzeTracksClusters::analyze(const edm::Event& e, const edm::EventSetup& es) -{ - - nev++; -// get LTDC info ---------------------------------------------- - - edm::Handle<LTCDigiCollection> ltcdigis; - e.getByType(ltcdigis); - - - DTtrig=0; - NoDTtrig=0; - DTOnlytrig=0; - CSCtrig=0; - othertrig=0; - - - for(int i=0;i<6;i++) TrigBits[i]=0; - - - // cout<<"[LTCDigiCollection]: size "<<ltcdigis->size()<<endl; - for (std::vector<LTCDigi>::const_iterator ltc_it = - ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){ - for (int i = 0; i < 6; i++){ - if((*ltc_it).HasTriggered(i)) TrigBits[i]++; //save the trig bit info - // cout<<"[LTCDigi]: bit "<<i <<" has Trigger? "<<(*ltc_it).HasTriggered(i)<<endl; - } - if ((*ltc_it).HasTriggered(0)) { - DTtrig = 1; - } - if ((*ltc_it).HasTriggered(1)) { - CSCtrig = 1; - } - if (!(*ltc_it).HasTriggered(0)){ - NoDTtrig = 1; - } - for (int i = 1; i < 6; i++){ - othertrig += int((*ltc_it).HasTriggered(i)); - } - if ((*ltc_it).HasTriggered(0) && othertrig == 0){ - DTOnlytrig = 1; - } - } - - - edm::Handle<reco::TrackCollection> trackCollection; - edm::Handle<TrajectorySeedCollection> seedcoll; - if(!(conf_.getParameter<bool>("MTCCtrack"))){ - edm::LogInfo("AnalyzeTracksClusters")<<"Analyze standard tracks "; - std::string src=conf_.getParameter<std::string>( "src" ); - e.getByLabel(src, trackCollection); - } else { - edm::LogInfo("AnalyzeTracksClusters")<<"Analyze MTCC tracks "; - e.getByType(seedcoll); - LogDebug("AnalyzeTracksClusters::analyze")<<"Getting used rechit"; - e.getByType(trackCollection); - } - - const reco::TrackCollection *tracks=trackCollection.product(); - anglefinder_->init(e,es); - reco::TrackCollection::const_iterator tciter; - - Ntk=0; - - if(tracks->size()>0){ - - for(tciter=tracks->begin();tciter!=tracks->end();tciter++) - { - itk++; - p_tk[Ntk]=tciter->outerP(); - pt_tk[Ntk]=tciter->outerPt(); - eta_tk[Ntk]=tciter->outerEta(); - phi_tk[Ntk]=tciter->outerPhi(); - nhits_tk[Ntk]=tciter->found(); - - TrajectorySeed seed = *(*seedcoll).begin(); - - std::vector<std::pair<const TrackingRecHit *,float> > hitangle; - - hitangle=anglefinder_->findtrackangle(seed,*tciter); - - std::vector<std::pair<const TrackingRecHit *,float> >::iterator iter; - - int temp=0; - - - // Loop on hits - - Nclu=0; - Nclu_matched=0; - - for(iter=hitangle.begin();iter!=hitangle.end();iter++) - { - - const TrackingRecHit* lo_hit; - lo_hit = iter->first; - temp++; - DetId detid = lo_hit->geographicalId(); - Subid[Nclu]=detid.subdetId(); - Clu_rawid[Nclu]=detid.rawId(); - - int l=0; - switch(detid.subdetId()) - { - case 3: - l = TIBDetId(detid).layer(); - break; - case 5: - l = TOBDetId(detid).layer(); - break; - case 6: - l = TECDetId(detid).wheel(); - break; - default: - cout << "WARNING!!! this detid does not belong to tracker" << endl; - } - Layer[Nclu]=l; - - float angle=iter->second; - Clu_ang[Nclu]=angle; - - //check if it is a simple SiStripRecHit2D - if(const SiStripRecHit2D * singlehit = dynamic_cast<const SiStripRecHit2D *>(lo_hit)) - { - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > - cluster=singlehit->cluster(); - const std::vector<uint16_t> amplitudes=cluster->amplitudes(); - Clu_size[Nclu]=amplitudes.size(); - double cluscharge=0; - for(size_t ia=0; ia<amplitudes.size();ia++) - { - cluscharge+=amplitudes[ia]; ; - } - float barycenter=cluster->barycenter(); - int posi=cluster->firstStrip(); - Clu_bar[Nclu]=barycenter; - Clu_1strip[Nclu]=posi; - // cout << " carica(ADC) "<< cluscharge << endl; - Clu_ch[Nclu]=cluscharge; - Nclu++; - } - //check if it is a matched SiStripMatchedRecHit2D - if(dynamic_cast<const SiStripMatchedRecHit2D *>(lo_hit)) - { - Nclu_matched++; - } - }// loop on hits - Ntk++; - } // end of loop on tracks - - - - } - - - - else edm::LogInfo("AnalyzeTracksClusters")<<"No track found in the event"; - - - // Get all the clusters in the event - - using namespace edm; - edm::Handle< edm::DetSetVector<SiStripCluster> > input; - e.getByLabel("siStripClusters",input); - edm::DetSetVector<SiStripCluster>::const_iterator DSViter=input->begin(); - Nclu_all=0; - // Nclu_all_matched=0; - // Nclu_all_st=0; - // Nclu_all_rphi=0; - - edm::ESHandle<TrackerGeometry> tkgeom; - es.get<TrackerDigiGeometryRecord>().get( tkgeom ); - - for (; DSViter!=input->end();DSViter++) - { - float clusiz =0; - - for(edm::DetSet<SiStripCluster>::const_iterator ic = DSViter->data.begin(); ic!=DSViter->data.end(); ic++) - { - uint32_t detid = DSViter->id; - // const StripGeomDetUnit*_StripGeomDetUnit = dynamic_cast<const StripGeomDetUnit*>(tkgeom->idToDetUnit(DetId(detid))); - unsigned int subid=DetId(detid).subdetId(); - int l=0; - switch(subid) - { - case 3: - l = TIBDetId(detid).layer(); - break; - case 5: - l = TOBDetId(detid).layer(); - break; - case 6: - l = TECDetId(detid).wheel(); - break; - default: - cout << "WARNING!!! this detid does not belong to tracker" << endl; - } - Layer_all[Nclu_all]=l; - Subid_all[Nclu_all]= DetId(detid).subdetId(); - - Clu_rawid_all[Nclu_all]=DetId(detid).rawId(); - clusiz = ic->amplitudes().size(); - float barycenter=ic->barycenter(); - float Signal=0; - int posi=ic->firstStrip(); - - const std::vector<uint16_t> amplitudes=ic->amplitudes(); - for(size_t i=0; i<amplitudes.size();i++) - { - if (amplitudes[i]>0) - { - Signal+=amplitudes[i]; - } - - } - - Clu_ch_all[Nclu_all]= Signal; - Clu_size_all[Nclu_all]= clusiz; - Clu_bar_all[Nclu_all]=barycenter; - Clu_1strip_all[Nclu_all]=posi; - - Nclu_all++; - - } - } - - - nt->Fill(); - -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysis.cc b/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysis.cc deleted file mode 100644 index 57dbafb729a..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysis.cc +++ /dev/null @@ -1,820 +0,0 @@ -/* -* $Date: 2006/11/13 21:13:33 $ -* $Revision: 1.3 $ -* -* \author: D. Giordano, domenico.giordano@cern.ch -*/ - -#include "AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "sstream" - -static const uint16_t _NUM_SISTRIP_SUBDET_ = 4; -static TString SubDet[_NUM_SISTRIP_SUBDET_]={"_TIB","_TOB","_TID","_TEC"}; -static TString flags[3] = {"_onTrack","_offTrack","_All"}; - -namespace cms{ - ClusterAnalysis::ClusterAnalysis(edm::ParameterSet const& conf): - conf_(conf), - filename_(conf.getParameter<std::string>("fileName")), - psfilename_(conf.getParameter<std::string>("psfileName")), - psfiletype_(conf.getParameter<int32_t>("psfiletype")), - SiStripNoiseService_(conf), - SiStripPedestalsService_(conf), - Filter_src_( conf.getParameter<edm::InputTag>( "Filter_src" ) ), - Track_src_( conf.getParameter<edm::InputTag>( "Track_src" ) ), - ClusterInfo_src_( conf.getParameter<edm::InputTag>( "ClusterInfo_src" ) ), - Cluster_src_( conf.getParameter<edm::InputTag>( "Cluster_src" ) ), - ModulesToBeExcluded_(conf.getParameter< std::vector<uint32_t> >("ModulesToBeExcluded")), - tracksCollection_in_EventTree(true), - ltcdigisCollection_in_EventTree(true) - {}; - - ClusterAnalysis::~ClusterAnalysis(){}; - - void ClusterAnalysis::beginJob( const edm::EventSetup& es ) { - - //get geom - es.get<TrackerDigiGeometryRecord>().get( tkgeom ); - edm::LogInfo("ClusterAnalysis") << "[ClusterAnalysis::beginJob] There are "<<tkgeom->detUnits().size() <<" detectors instantiated in the geometry" << std::endl; - - es.get<SiStripDetCablingRcd>().get( SiStripDetCabling_ ); - - book(); - } - - void ClusterAnalysis::book() { - - TString name; - - fFile = new TFile(filename_.c_str(),"RECREATE"); - fFile->mkdir("BadStrips"); - fFile->mkdir("ClusterNoise"); - fFile->mkdir("ClusterSignal"); - fFile->mkdir("ClusterStoN"); - fFile->mkdir("ClusterEta"); - fFile->mkdir("ClusterWidth"); - fFile->mkdir("ClusterPos"); - fFile->mkdir("Tracks"); - fFile->mkdir("Trigger"); - fFile->mkdir("Layer"); - fFile->cd(); - - edm::ParameterSet Parameters; - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - // get list of active detectors from SiStripDetCabling - - std::vector<uint32_t> vdetId_; - SiStripDetCabling_->addActiveDetectorsRawIds(vdetId_); - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - - //Create histograms - Hlist = new TObjArray(); - - fFile->cd();fFile->cd("Trigger"); - - Hlist->Add(new TH1F("FilterBits","FilterBits",10,-0.5,9.5)); - - Parameters = conf_.getParameter<edm::ParameterSet>("TH1TriggerBits"); - Hlist->Add(new TH1F("TriggerBits","TriggerBits", - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - - fFile->cd();fFile->cd("Tracks"); - Parameters = conf_.getParameter<edm::ParameterSet>("TH1nTracks"); - Hlist->Add(new TH1F("nTracks","nTracks", - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - Parameters = conf_.getParameter<edm::ParameterSet>("TH1nRecHits"); - Hlist->Add(new TH1F("nRecHits","nRecHits", - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - // Loop on onTrack, offTrack, All - for (int j=0;j<3;j++){ - //Number of Cluster - name="nClusters"+flags[j]; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1nClusters"); - fFile->cd();fFile->cd("Tracks"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - for (int i=0;i<_NUM_SISTRIP_SUBDET_;i++){ - - //Number of Cluster on each det - name="nClusters"+SubDet[i]+flags[j]; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1nClusters"); - fFile->cd();fFile->cd("Tracks"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - } - } - - // Loop on onTrack, offTrack, All - for (int j=0;j<3;j++){ - //Histos for detector type - for (int i=0;i<_NUM_SISTRIP_SUBDET_;i++){ - - TString appString=SubDet[i]+flags[j]; - - //Cluster Noise - name="cNoise"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterNoise"); - fFile->cd();fFile->cd("ClusterNoise"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Signal - name="cSignal"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterSignal"); - fFile->cd();fFile->cd("ClusterSignal"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster StoN - name="cStoN"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoN"); - fFile->cd();fFile->cd("ClusterStoN"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Width - name="cWidth"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterWidth"); - fFile->cd();fFile->cd("ClusterWidth"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Position - name="cPos"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterPos"); - fFile->cd();fFile->cd("ClusterPos"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Charge Division (only for study on Raw Data Runs) - name="cEta"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterEta"); - fFile->cd();fFile->cd("ClusterEta"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - name="cEta_scatter"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH2ClusterEta"); - fFile->cd();fFile->cd("ClusterEta"); - Hlist->Add(new TH2F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax"), - Parameters.getParameter<int32_t>("Nbiny"), - Parameters.getParameter<double>("ymin"), - Parameters.getParameter<double>("ymax") - ) - ); - - - - // sprintf(name,"BadStrips_Cumulative_%s_%s",SubDet[i].c_str(),flags[j].c_str()); - // Parameters = conf_.getParameter<edm::ParameterSet>("TH1BadStrips"); - // fFile->cd();fFile->cd("BadStrips"); - // _TH1F_BadStrips_v.push_back(new TH1F(name,name, - // Parameters.getParameter<int32_t>("Nbinx"), - // Parameters.getParameter<double>("xmin"), - // Parameters.getParameter<double>("xmax") - // ) - // ); - - } //end loop on det type - }//end loop on onTrack,offTrack,all - - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - //Detector Detail Plots - - //Histos for each detector - for (std::vector<uint32_t>::const_iterator detid_iter=vdetId_.begin();detid_iter!=vdetId_.end();detid_iter++){ - - uint32_t detid = *detid_iter; - - if (detid < 1){ - edm::LogError("ClusterAnalysis")<< "[" <<__PRETTY_FUNCTION__ << "] invalid detid " << detid<< std::endl; - continue; - } - const StripGeomDetUnit* _StripGeomDetUnit = dynamic_cast<const StripGeomDetUnit*>(tkgeom->idToDetUnit(DetId(detid))); - if (_StripGeomDetUnit==0){ - edm::LogError("SiStripCondObjDisplay")<< "[SiStripCondObjDisplay::beginJob] the detID " << detid << " doesn't seem to belong to Tracker" << std::endl; - continue; - } - - - //&&&&&&&&&&&&&&&&& - // Insert here code to instantiate histos per detector - //eg - - unsigned int nstrips = _StripGeomDetUnit->specificTopology().nstrips(); - - //std::cout << "Confronto " << _StripGeomDetUnit->specificType().subDetector() << " " << DetId(detid).subdetId() << std::endl; - - edm::LogError("ClusterAnalysis") << " Detid " << detid << " SubDet " << GetSubDetAndLayer(detid).first << " Layer " << GetSubDetAndLayer(detid).second << std::endl; - if (DetectedLayers.find(GetSubDetAndLayer(detid)) == DetectedLayers.end()){ - DetectedLayers[GetSubDetAndLayer(detid)]=true; - } - // sprintf(name,"Pedestals_%s_%d",_StripGeomDetUnit->type().name().c_str(),detid); - // fFile->cd();fFile->cd("Pedestals"); - // _TH1F_PedestalsProfile_m[detid] = new TH1F(name,name,nstrips,-0.5,nstrips-0.5); - - char cdetid[128]; - sprintf(cdetid,"%d",detid); - - fFile->cd(); - fFile->mkdir(cdetid); - fFile->cd(cdetid); - char aname[128]; - sprintf(aname,"%s_%d",_StripGeomDetUnit->type().name().c_str(),detid); - char SubStr[128]; - // char * ptr = strchr(aname,":"); - sprintf(SubStr,"%s",strstr(aname,":")); - //TString appString=TString(_StripGeomDetUnit->type().name()).ReplaceAll("FieldParameters:","_")+"_"+cdetid; - //TString appString=TString(aname);//+"_"+cdetid; - TString appString=TString(SubStr);//+"_"+cdetid; - - //Cluster Noise - name="cNoise"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterNoise"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Signal - name="cSignal"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterSignal"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster StoN - name="cStoN"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoN"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Width - name="cWidth"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterWidth"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Position - name="cPos"+appString; - Hlist->Add(new TH1F(name,name,nstrips,-0.5,nstrips-.5)); - - //&&&&&&&&&&&&&&&&& - }//end loop on detector - - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - //Layer Detail Plots - - for (std::map<std::pair<std::string,uint32_t>,bool>::const_iterator iter=DetectedLayers.begin(); iter!=DetectedLayers.end();iter++){ - - char cApp[64]; - sprintf(cApp,"_Layer_%d",iter->first.second); - TString appString=TString(iter->first.first)+cApp; - - fFile->cd(); fFile->cd("Layer"); - - //Cluster Noise - name="cNoise"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterNoise"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Signal - name="cSignal"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterSignal"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster StoN - name="cStoN"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoN"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Width - name="cWidth"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterWidth"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - - //Cluster Position - name="cPos"+appString; - Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterPos"); - Hlist->Add(new TH1F(name,name, - Parameters.getParameter<int32_t>("Nbinx"), - Parameters.getParameter<double>("xmin"), - Parameters.getParameter<double>("xmax") - ) - ); - } - } - - //------------------------------------------------------------------------------------------ - - void ClusterAnalysis::endJob() { - edm::LogInfo("ClusterAnalysis") << "[ClusterAnalysis::endJob] >>> saving histograms" << std::endl; - - fFile->cd(); - - - edm::LogInfo("ClusterAnalysis") << "... And now write on ps file " << psfiletype_ << std::endl; - TPostScript ps(psfilename_.c_str(),psfiletype_); - TCanvas Canvas("c","c");//("c","c",600,300); - for (int ih=0; ih<Hlist->GetEntries();ih++){ - edm::LogInfo("ClusterAnalysis") << "Histos " << ih << " name " << (*Hlist)[ih]->GetName() << " title " << (*Hlist)[ih]->GetTitle() << std::endl; - if (dynamic_cast<TH1F*>((*Hlist)[ih]) !=NULL) - if (dynamic_cast<TH1F*>((*Hlist)[ih])->GetEntries() != 0) - (*Hlist)[ih]->Draw(); - Canvas.Update(); - ps.NewPage(); - } - ps.Close(); - - fFile->ls(); - fFile->Write(); - fFile->Close(); - - } - - //------------------------------------------------------------------------------------------ - - void ClusterAnalysis::analyze(const edm::Event& e, const edm::EventSetup& es) { - edm::LogInfo("ClusterAnalysis") << "[ClusterAnalysis::analyse] " << "Run " << e.id().run() << " Event " << e.id().event() << std::endl; - - runNb = e.id().run(); - eventNb = e.id().event(); - edm::LogInfo("ClusterAnalysis") << "Processing run " << runNb << " event " << eventNb << std::endl; - - SiStripNoiseService_.setESObjects(es); - SiStripPedestalsService_.setESObjects(es); - - //Get input - e.getByLabel( ClusterInfo_src_, dsv_SiStripClusterInfo); - e.getByLabel( Cluster_src_, dsv_SiStripCluster); - - e.getByLabel( Filter_src_, filterWord); - - try{ - e.getByType(ltcdigis); - } catch ( cms::Exception& er ) { - LogTrace("ClusterAnalysis")<<"caught std::exception "<<er.what()<<std::endl; - ltcdigisCollection_in_EventTree=false; - }catch ( ... ) { - LogTrace("ClusterAnalysis")<< " funny error " <<std::endl; - ltcdigisCollection_in_EventTree=false; - } - - try{ - e.getByLabel(Track_src_, trackCollection); - } catch ( cms::Exception& er ) { - LogTrace("ClusterAnalysis")<<"caught std::exception "<<er.what()<<std::endl; - tracksCollection_in_EventTree=false; - } catch ( ... ) { - LogTrace("ClusterAnalysis")<<" funny error " <<std::endl; - tracksCollection_in_EventTree=false; - } - - vPSiStripCluster.clear(); - countOn=0; - countOff=0; - countAll=0; - - - - //Filter bit word - TH1F * HFilt = (TH1F*) Hlist->FindObject("FilterBits"); - for (int i=0;i<10;i++){ - if( *(filterWord.product()) >> i & 0x1u ) - HFilt->Fill(i); - } - - //Trigger bits - if (ltcdigisCollection_in_EventTree){ - TH1F * Htrig = (TH1F*) Hlist->FindObject("TriggerBits"); - for (std::vector<LTCDigi>::const_iterator ltc_it = - ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){ - for (int i=0;i<6;i++) - if ((*ltc_it).HasTriggered(i)) - Htrig->Fill(i); - } - } - - - //Perform track study - if (tracksCollection_in_EventTree) - trackStudy(); - - std::stringstream ss; - ss << "\nList of SiStripClusterPointer\n"; - for (std::vector<const SiStripCluster*>::iterator iter=vPSiStripCluster.begin();iter!=vPSiStripCluster.end();iter++) - ss << *iter << "\n"; - LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"] \n vPSiStripCluster.size()=" << vPSiStripCluster.size()<< ss.str() << std::endl; - - - //Perform Cluster Study (irrespectively to tracks) - AllClusters(); - - if (countAll != countOn+countOff) - edm::LogWarning("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"] Counts (on, off, all) do not match" << countOn << " " << countOff << " " << countAll; - - for (int j=0;j<3;j++){ - int nTot=0; - for (int i=0;i<4;i++){ - ((TH1F*) Hlist->FindObject("nClusters"+SubDet[i]+flags[j])) - ->Fill(NClus[i][j]); - nTot+=NClus[i][j]; - NClus[i][j]=0; - } - ((TH1F*) Hlist->FindObject("nClusters"+flags[j]))->Fill(nTot); - } - } - - //------------------------------------------------------------------------ - - void ClusterAnalysis::trackStudy(){ - LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"]" << std::endl; - const reco::TrackCollection tC = *(trackCollection.product()); - - int nTracks=tC.size(); - - edm::LogInfo("ClusterAnalysis") << "Reconstructed "<< nTracks << " tracks" << std::endl ; - ((TH1F*) Hlist->FindObject("nTracks"))->Fill(nTracks); - - int i=1; - for (reco::TrackCollection::const_iterator track=tC.begin(); track!=tC.end(); track++){ - LogTrace("ClusterAnalysis") - << "Track number "<< i - << "\n\tmomentum: " << track->momentum() - << "\n\tPT: " << track->pt() - << "\n\tvertex: " << track->vertex() - << "\n\timpact parameter: " << track->d0() - << "\n\tcharge: " << track->charge() - << "\n\tnormalizedChi2: " << track->normalizedChi2() - <<"\n\tFrom EXTRA : " - <<"\n\t\touter PT "<< track->outerPt()<<std::endl; - i++; - - // - // try and access Hits - // - - int recHitsSize=track->recHitsSize(); - edm::LogInfo("ClusterAnalysis") <<"\t\tNumber of RecHits "<<recHitsSize<<std::endl; - ((TH1F*) Hlist->FindObject("nRecHits"))->Fill(recHitsSize); - - for (trackingRecHit_iterator it = track->recHitsBegin(); it != track->recHitsEnd(); it++){ - const TrackingRecHit* trh = &(**it); - const uint32_t& detid = trh->geographicalId().rawId(); - - if (find(ModulesToBeExcluded_.begin(),ModulesToBeExcluded_.end(),detid)!=ModulesToBeExcluded_.end()) - continue; - - if (trh->isValid()){ - LogTrace("ClusterAnalysis") - <<"\n\t\tRecHit on det "<<trh->geographicalId().rawId() - <<"\n\t\tRecHit in LP "<<trh->localPosition() - <<"\n\t\tRecHit in GP "<<tkgeom->idToDet(trh->geographicalId())->surface().toGlobal(trh->localPosition()) <<std::endl; - - //Get SiStripCluster from SiStripRecHit - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>(trh); - //const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > clust=hit.cluster(); - if ( hit != NULL ){ - LogTrace("ClusterAnalysis") << "GOOD hit" << std::endl; - const SiStripCluster* SiStripCluster_ = &*(hit->cluster()); - - const SiStripClusterInfo* SiStripClusterInfo_ = MatchClusterInfo(SiStripCluster_,detid); - if ( clusterInfos(SiStripClusterInfo_,detid,"_onTrack") ){ - vPSiStripCluster.push_back(SiStripCluster_); - countOn++; - } - }else{ - LogTrace("ClusterAnalysis") << "NULL hit" << std::endl; - } - - }else{ - LogTrace("ClusterAnalysis") <<"\t\t Invalid Hit On "<<detid<<std::endl; - } - } - } - } - - //------------------------------------------------------------------------ - - void ClusterAnalysis::AllClusters(){ - LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"]" << std::endl; - - //Loop on Dets - edm::DetSetVector<SiStripCluster>::const_iterator DSViter=dsv_SiStripCluster->begin(); - for (; DSViter!=dsv_SiStripCluster->end();DSViter++){ - uint32_t detid=DSViter->id; - - if (find(ModulesToBeExcluded_.begin(),ModulesToBeExcluded_.end(),detid)!=ModulesToBeExcluded_.end()) - continue; - - //Loop on Clusters - LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"] \n on detid "<< detid << " N Cluster= " << DSViter->data.size() <<std::endl; - - edm::DetSet<SiStripCluster>::const_iterator ClusIter = DSViter->data.begin(); - for(; ClusIter!=DSViter->data.end(); ClusIter++) { - - const SiStripClusterInfo* SiStripClusterInfo_=MatchClusterInfo(&*ClusIter,detid); - if ( clusterInfos(SiStripClusterInfo_, detid,"_All") ){ - countAll++; - - //LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"] ClusIter " << &*ClusIter << - // "\t " << std::find(vPSiStripCluster.begin(),vPSiStripCluster.end(),&*ClusIter)-vPSiStripCluster.begin() << std::endl; - - if (std::find(vPSiStripCluster.begin(),vPSiStripCluster.end(),&*ClusIter) == vPSiStripCluster.end()){ - if ( clusterInfos(SiStripClusterInfo_,detid,"_offTrack") ) - countOff++; - } - } - } - } - } - - //------------------------------------------------------------------------ - - const SiStripClusterInfo* ClusterAnalysis::MatchClusterInfo(const SiStripCluster* cluster, const uint32_t& detid){ - LogTrace("ClusterAnalysis") << "\n["<<__PRETTY_FUNCTION__<<"]" << std::endl; - edm::DetSetVector<SiStripClusterInfo>::const_iterator DSViter = dsv_SiStripClusterInfo->find(detid); - edm::DetSet<SiStripClusterInfo>::const_iterator ClusIter = DSViter->data.begin(); - for(; ClusIter!=DSViter->data.end(); ClusIter++) { - if ( - (ClusIter->firstStrip() == cluster->firstStrip()) - && - (ClusIter->stripAmplitudes().size() == cluster->amplitudes().size()) - ) - return &(*ClusIter); - } - return 0; - } - - //------------------------------------------------------------------------ - - bool ClusterAnalysis::clusterInfos(const SiStripClusterInfo* cluster, const uint32_t& detid,TString flag){ - - const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("ClusterConditions"); - if ( ps.getParameter<bool>("On") - && - ( - cluster->charge()/cluster->noise() < ps.getParameter<double>("minStoN") - || - cluster->charge()/cluster->noise() > ps.getParameter<double>("maxStoN") - || - cluster->width() < ps.getParameter<double>("minWidth") - || - cluster->width() > ps.getParameter<double>("maxWidth") - ) - ) - return false; - - const StripGeomDetUnit*_StripGeomDetUnit = dynamic_cast<const StripGeomDetUnit*>(tkgeom->idToDetUnit(DetId(detid))); - - //GeomDetEnumerators::SubDetector SubDet_enum=_StripGeomDetUnit->specificType().subDetector(); - int SubDet_enum=_StripGeomDetUnit->specificType().subDetector() -2; - - //char cdetid[128]; - //sprintf(cdetid,"_%d",detid); - - int iflag; - if (flag=="_onTrack") - iflag=0; - else if (flag=="_offTrack") - iflag=1; - else - iflag=2; - - NClus[SubDet_enum][iflag]++; - - LogTrace("ClusterAnalysis") - << "\n["<<__PRETTY_FUNCTION__<<"]" - << "\n\t\tcluster detid " << cluster->geographicalId() - << "\n\t\tcluster first strip " << cluster->firstStrip() - << "\n\t\tcluster charge " << cluster->charge() - << "\n\t\tcluster noise " << cluster->noise() - << "\n\t\tcluster position " << cluster->position() - << "\n\t\tcluster width " << cluster->width() - << "\n\t\tcluster maxCharge " << cluster->maxCharge() - << "\n\t\tcluster maxPos " << cluster->maxPos() - << "\n\t\tcluster chargeL " << cluster->chargeL() - << "\n\t\tcluster chargeR " << cluster->chargeR() - << std::endl; - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - //Cumulative Plots - - TString appString=SubDet[SubDet_enum]+flag; - - ((TH1F*) Hlist->FindObject("cSignal"+appString)) - ->Fill(cluster->charge()); - - ((TH1F*) Hlist->FindObject("cNoise"+appString)) - ->Fill(cluster->noise()); - - if (cluster->noise()){ - ((TH1F*) Hlist->FindObject("cStoN"+appString)) - ->Fill(cluster->charge()/cluster->noise()); - } - - ((TH1F*) Hlist->FindObject("cWidth" +appString)) - ->Fill(cluster->width()); - - ((TH1F*) Hlist->FindObject("cPos" +appString)) - ->Fill(cluster->position()); - - if (cluster->rawdigiAmplitudesL().size()!=0 && cluster->rawdigiAmplitudesR().size()!=0){ - - float Ql=0; - float Qr=0; - - for (std::vector<uint16_t>::const_iterator it=cluster->rawdigiAmplitudesL().begin(); it !=cluster->rawdigiAmplitudesL().begin(); it ++) - { Ql += (*it);} - - for (std::vector<uint16_t>::const_iterator it=cluster->rawdigiAmplitudesR().begin(); it !=cluster->rawdigiAmplitudesR().begin(); it ++) - { Qr += (*it);} - - ((TH1F*) Hlist->FindObject("cEta" +appString)) - ->Fill(Ql/(Qr+cluster->maxCharge())); - - ((TH2F*) Hlist->FindObject("cEta_scatter" +appString)) - ->Fill((Ql-Qr)/(cluster->maxCharge()+Ql+Qr),(Ql+Qr)/(cluster->maxCharge()+Ql+Qr)); - } - - if(flag=="_All"){ - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - //Detector Detail Plots - char aname[128]; - sprintf(aname,"%s_%d",_StripGeomDetUnit->type().name().c_str(),detid); - TString appString=TString(strstr(aname,":")); - //appString=TString(_StripGeomDetUnit->type().name()).ReplaceAll("FieldParameters:","_")+cdetid; - - ((TH1F*) Hlist->FindObject("cSignal"+appString)) - ->Fill(cluster->charge()); - - ((TH1F*) Hlist->FindObject("cNoise"+appString)) - ->Fill(cluster->noise()); - - if (cluster->noise()){ - ((TH1F*) Hlist->FindObject("cStoN"+appString)) - ->Fill(cluster->charge()/cluster->noise()); - } - - ((TH1F*) Hlist->FindObject("cWidth" +appString)) - ->Fill(cluster->width()); - - ((TH1F*) Hlist->FindObject("cPos" +appString)) - ->Fill(cluster->position()); - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - // Layer Detail Plots - - char cApp[64]; - sprintf(cApp,"_Layer_%d",GetSubDetAndLayer(detid).second); - appString=TString(GetSubDetAndLayer(detid).first)+cApp; - - - ((TH1F*) Hlist->FindObject("cSignal"+appString)) - ->Fill(cluster->charge()); - - ((TH1F*) Hlist->FindObject("cNoise"+appString)) - ->Fill(cluster->noise()); - - if (cluster->noise()){ - ((TH1F*) Hlist->FindObject("cStoN"+appString)) - ->Fill(cluster->charge()/cluster->noise()); - } - - ((TH1F*) Hlist->FindObject("cWidth" +appString)) - ->Fill(cluster->width()); - - ((TH1F*) Hlist->FindObject("cPos" +appString)) - ->Fill(cluster->position()); - } - return true; - } - - //-------------------------------------------------------------------------------- - std::pair<std::string,uint32_t> ClusterAnalysis::GetSubDetAndLayer(const uint32_t& detid){ - - std::string cSubDet; - uint32_t layer=0; - - const StripGeomDetUnit* _StripGeomDetUnit = dynamic_cast<const StripGeomDetUnit*>(tkgeom->idToDetUnit(DetId(detid))); - - switch(_StripGeomDetUnit->specificType().subDetector()) - { - case GeomDetEnumerators::TIB: - cSubDet="TIB"; - layer=TIBDetId(detid).layer(); - break; - case GeomDetEnumerators::TOB: - cSubDet="TOB"; - layer=TOBDetId(detid).layer(); - break; - case GeomDetEnumerators::TID: - cSubDet="TID"; - layer=TIDDetId(detid).wheel(); - break; - case GeomDetEnumerators::TEC: - cSubDet="TEC"; - layer=TECDetId(detid).wheel(); - break; - default: - edm::LogWarning("ClusterAnalysis") << "WARNING!!! this detid does not belong to tracker" << std::endl; - } - - return std::make_pair(cSubDet,layer); - } - -} - - diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysisFilter.cc b/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysisFilter.cc deleted file mode 100644 index 019b89a93ac..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/ClusterAnalysisFilter.cc +++ /dev/null @@ -1,152 +0,0 @@ -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - - -#include "AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h" - -namespace cms -{ - ClusterAnalysisFilter::ClusterAnalysisFilter(const edm::ParameterSet& conf) : - conf_(conf), - Track_src_( conf.getParameter<edm::InputTag>( "Track_src" ) ), - ClusterInfo_src_( conf.getParameter<edm::InputTag>( "ClusterInfo_src" ) ), - Cluster_src_( conf.getParameter<edm::InputTag>( "Cluster_src" ) ) - { - produces <uint16_t>(); - } - - bool ClusterAnalysisFilter::filter(edm::Event & e, edm::EventSetup const& c) { - - //Get input - e.getByLabel( ClusterInfo_src_, dsv_SiStripClusterInfo); - e.getByLabel( Cluster_src_, dsv_SiStripCluster); - - bool TrackNumberSelector_Decision_; - try{ - e.getByLabel( Track_src_, trackCollection); - TrackNumberSelector_Decision_ =TrackNumberSelector(); - } catch ( ... ) { - TrackNumberSelector_Decision_ = true; - } - - bool TriggerSelector_Decision_; - try{ - e.getByType(ltcdigis); - TriggerSelector_Decision_=TriggerSelector(); - } catch ( ... ) { - TriggerSelector_Decision_=true; - } - - bool ClusterNumberSelector_Decision_=ClusterNumberSelector(); - bool ClusterInModuleSelector_Decision_=ClusterInModuleSelector(); - - bool decision = - ( ! conf_.getParameter<edm::ParameterSet>("TrackNumberSelector").getParameter<bool>("On") || TrackNumberSelector_Decision_ ) - && - ( ! conf_.getParameter<edm::ParameterSet>("ClusterNumberSelector").getParameter<bool>("On") || ClusterNumberSelector_Decision_ ) - && - ( ! conf_.getParameter<edm::ParameterSet>("TriggerSelector").getParameter<bool>("On") || TriggerSelector_Decision_ ) - && - ( ! conf_.getParameter<edm::ParameterSet>("ClusterInModuleSelector").getParameter<bool>("On") || ClusterInModuleSelector_Decision_ ) - //&& SomeThingElse - ; - - uint16_t decisionWord = - ( TrackNumberSelector_Decision_ & 0x1) - | - ((ClusterNumberSelector_Decision_ << 1) & 0x2) - | - ((TriggerSelector_Decision_ << 2) & 0x4) - | - ((ClusterInModuleSelector_Decision_ << 3) & 0x8) - // | ( SomeThingElse < nbits) - ; - - std::auto_ptr< uint16_t > odecisionWord( new uint16_t(decisionWord) ); - e.put(odecisionWord); - - return decision; - } - - bool ClusterAnalysisFilter::TrackNumberSelector(){ - - const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("TrackNumberSelector"); - - int32_t min=ps.getParameter<int32_t>("minNTracks"); - int32_t max=ps.getParameter<int32_t>("maxNTracks"); - - return ( (int32_t) trackCollection.product()->size() >= min && (int32_t) trackCollection.product()->size() < max) ; - } - - bool ClusterAnalysisFilter::ClusterNumberSelector(){ - - const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("ClusterNumberSelector"); - - int32_t min=ps.getParameter<int32_t>("minNClus"); - int32_t max=ps.getParameter<int32_t>("maxNClus"); - - int count=0; - edm::DetSetVector<SiStripCluster>::const_iterator DSViter=dsv_SiStripCluster->begin(); - for (; DSViter!=dsv_SiStripCluster->end();DSViter++){ - count+=DSViter->data.size(); - } - return (count >= min && count < max) ; - } - - - bool ClusterAnalysisFilter::TriggerSelector(){ - - const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("TriggerSelector"); - - bool word=false; - for (std::vector<LTCDigi>::const_iterator ltc_it = - ltcdigis->begin(); ltc_it != ltcdigis->end(); ltc_it++){ - word = - (*ltc_it).externTriggerMask() & - ( - ps.getParameter<bool>("DT") & 0x1u - | - ( ps.getParameter<bool>("CSC") & 0x1u ) << 1 - | - ( ps.getParameter<bool>("RBC1") & 0x1u ) << 2 - | - ( ps.getParameter<bool>("RBC2") & 0x1u ) << 3 - | - ( ps.getParameter<bool>("RPCTB") & 0x1u ) << 4 - ) - ; - - LogTrace("ClusterAnalysisFilter") - << "Filter " - << "Mask " << ((*ltc_it).externTriggerMask() & 0x1Fu) - << " DT " << (ps.getParameter<bool>("DT") & 0x1u) - << " CSC " << (( ps.getParameter<bool>("CSC") & 0x1u ) << 1 ) - << " RBC1 " << (( ps.getParameter<bool>("RBC1") & 0x1u ) << 2 ) - << " RBC2 " << (( ps.getParameter<bool>("RBC2") & 0x1u ) << 3 ) - << " RPCTB " << (( ps.getParameter<bool>("RPCTB") & 0x1u ) << 4 ) - << " word " << word - << std::endl; - } - return word; - } - - - bool ClusterAnalysisFilter::ClusterInModuleSelector (){ - - const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("ClusterInModuleSelector"); - - std::vector<uint32_t> ModulesToBeExcluded_=ps.getParameter< std::vector<uint32_t> >("ModulesToBeExcluded"); - - bool word=true; - for (std::vector<uint32_t>::const_iterator iter=ModulesToBeExcluded_.begin(); iter!=ModulesToBeExcluded_.end();iter++) - { - edm::DetSetVector<SiStripCluster>::const_iterator DSViter = dsv_SiStripCluster->find(*iter); - if ( DSViter != dsv_SiStripCluster->end() && DSViter->data.size() != 0){ - word=false; - break; - } - } - return word; - } - -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/MTCCNtupleMaker.cc b/AnalysisExamples/SiStripDetectorPerformance/src/MTCCNtupleMaker.cc deleted file mode 100644 index b799c5de2c8..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/MTCCNtupleMaker.cc +++ /dev/null @@ -1,2081 +0,0 @@ -#include <memory> -#include <string> -#include <iostream> -#include <fstream> - -#include "AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h" - -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/TrackReco/interface/TrackExtraFwd.h" -#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h" -#include "DataFormats/SiStripCluster/interface/SiStripClusterInfo.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "DataFormats/LTCDigi/interface/LTCDigi.h" -#include "Geometry/CommonTopologies/interface/StripTopology.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "MagneticField/Engine/interface/MagneticField.h" - - -using namespace std; - - //Constructor - -MTCCNtupleMaker::MTCCNtupleMaker(edm::ParameterSet const& conf) : - conf_(conf), - filename_(conf.getParameter<std::string>("fileName")), - bTriggerDT( false), - bTriggerCSC( false), - bTriggerRBC1( false), - bTriggerRBC2( false), - bTriggerRPC( false) - //m_oSiStripNoiseService( conf_) -{ - anglefinder_=new TrackLocalAngleNew(conf); -} - - //BeginJob - -void MTCCNtupleMaker::beginJob(const edm::EventSetup& c){ - - hFile = new TFile (filename_.c_str(), "RECREATE" ); - - TAxis *xaxis, *yaxis; - - hphi = new TH1F("hphi","Phi distribution",20,-3.14,3.14); - hnhit = new TH1F("hnhit","Number of Hits per Track ",18,2,20); - - hwvst = new TProfile("WidthvsTrackProjection","Cluster width vs track projection ",120,-60.,60.); - fitfunc = new TF1("fitfunc","[1]*((x-[0])^2)+[2]",-30,30); - - MTCCNtupleMakerTree = new TTree("MTCCNtupleMakerTree","SiStrip LorentzAngle tree"); - MTCCNtupleMakerTree->Branch("run", &run, "run/I"); - MTCCNtupleMakerTree->Branch( "eventcounter", &eventcounter, "eventcounter/I"); - MTCCNtupleMakerTree->Branch("event", &event, "event/I"); - MTCCNtupleMakerTree->Branch("module", &module, "module/I"); - MTCCNtupleMakerTree->Branch("type", &type, "type/I"); - MTCCNtupleMakerTree->Branch("layer", &layer, "layer/I"); - MTCCNtupleMakerTree->Branch("string", &string, "string/I"); - MTCCNtupleMakerTree->Branch("rod", &rod, "rod/I"); - MTCCNtupleMakerTree->Branch("extint", &extint, "extint/I"); - MTCCNtupleMakerTree->Branch("size", &size, "size/I"); - MTCCNtupleMakerTree->Branch("angle", &angle, "angle/F"); - MTCCNtupleMakerTree->Branch("sign", &sign, "sign/I"); - MTCCNtupleMakerTree->Branch("bwfw", &bwfw, "bwfw/I"); - MTCCNtupleMakerTree->Branch("wheel", &wheel, "wheel/I"); - MTCCNtupleMakerTree->Branch("monostereo", &monostereo, "monostereo/I"); - MTCCNtupleMakerTree->Branch("stereocorrection", &stereocorrection, "stereocorrection/F"); - MTCCNtupleMakerTree->Branch("localmagfield", &localmagfield, "localmagfield/F"); - MTCCNtupleMakerTree->Branch("momentum", &momentum, "momentum/F"); - MTCCNtupleMakerTree->Branch("pt", &pt, "pt/F"); - MTCCNtupleMakerTree->Branch("charge", &charge, "charge/I"); - MTCCNtupleMakerTree->Branch("eta", &eta, "eta/F"); - MTCCNtupleMakerTree->Branch("phi", &phi, "phi/F"); - MTCCNtupleMakerTree->Branch("hitspertrack", &hitspertrack, "hitspertrack/I"); - MTCCNtupleMakerTree->Branch( "normchi2", &normchi2, "normchi2/F"); - MTCCNtupleMakerTree->Branch( "chi2", &chi2, "chi2/F"); - MTCCNtupleMakerTree->Branch( "ndof", &ndof, "ndof/F"); - MTCCNtupleMakerTree->Branch( "bTrack", &bTrack, "bTrack/O"); - MTCCNtupleMakerTree->Branch( "clusterpos", &clusterpos, "clusterpos/F"); - MTCCNtupleMakerTree->Branch( "clustereta", &clustereta, "clustereta/F"); - MTCCNtupleMakerTree->Branch( "clusterchg", &clusterchg, "clusterchg/F"); - MTCCNtupleMakerTree->Branch( "clusterchgl", &clusterchgl, "clusterchgl/F"); - MTCCNtupleMakerTree->Branch( "clusterchgr", &clusterchgr, "clusterchgr/F"); - MTCCNtupleMakerTree->Branch( "clusternoise", &clusternoise, "clusternoise/F"); - MTCCNtupleMakerTree->Branch( "clusterbarycenter", &clusterbarycenter, "clusterbarycenter/F"); - MTCCNtupleMakerTree->Branch( "clustermaxchg", &clustermaxchg, "clustermaxchg/F"); - MTCCNtupleMakerTree->Branch( "clusterseednoise", &clusterseednoise, "clusterseednoise/F"); - // Trigger Bits - MTCCNtupleMakerTree->Branch( "bTriggerDT", &bTriggerDT, "bTriggerDT/O"); - MTCCNtupleMakerTree->Branch( "bTriggerCSC", &bTriggerCSC, "bTriggerCSC/O"); - MTCCNtupleMakerTree->Branch( "bTriggerRBC1", &bTriggerRBC1, "bTriggerRBC1/O"); - MTCCNtupleMakerTree->Branch( "bTriggerRBC2", &bTriggerRBC2, "bTriggerRBC2/O"); - MTCCNtupleMakerTree->Branch( "bTriggerRPC", &bTriggerRPC, "bTriggerRPC/O"); - MTCCNtupleMakerTree->Branch( "dLclX", &dLclX, "dLclX/F"); - MTCCNtupleMakerTree->Branch( "dLclY", &dLclY, "dLclY/F"); - MTCCNtupleMakerTree->Branch( "dLclZ", &dLclZ, "dLclZ/F"); - MTCCNtupleMakerTree->Branch( "dGlbX", &dGlbX, "dGlbX/F"); - MTCCNtupleMakerTree->Branch( "dGlbY", &dGlbY, "dGlbY/F"); - MTCCNtupleMakerTree->Branch( "dGlbZ", &dGlbZ, "dGlbZ/F"); - - poTrackTree = new TTree( "TrackTree", "This is a Track specific variables tree"); - poTrackTree->Branch( "run", &run, "run/I"); - poTrackTree->Branch( "pt", &pt, "pt/F"); - poTrackTree->Branch( "eta", &eta, "eta/F"); - poTrackTree->Branch( "phi", &phi, "phi/F"); - poTrackTree->Branch( "ndof", &ndof, "ndof/F"); - poTrackTree->Branch( "chi2", &chi2, "chi2/F"); - poTrackTree->Branch( "event", &event, "event/I"); - poTrackTree->Branch( "charge", &charge, "charge/I"); - poTrackTree->Branch( "momentum", &momentum, "momentum/F"); - poTrackTree->Branch( "eventcounter", &eventcounter, "eventcounter/I"); - poTrackTree->Branch( "hitspertrack", &hitspertrack, "hitspertrack/I"); - // Trigger Bits - poTrackTree->Branch( "bTriggerDT", &bTriggerDT, "bTriggerDT/O"); - poTrackTree->Branch( "bTriggerCSC", &bTriggerCSC, "bTriggerCSC/O"); - poTrackTree->Branch( "bTriggerRBC1", &bTriggerRBC1, "bTriggerRBC1/O"); - poTrackTree->Branch( "bTriggerRBC2", &bTriggerRBC2, "bTriggerRBC2/O"); - poTrackTree->Branch( "bTriggerRPC", &bTriggerRPC, "bTriggerRPC/O"); - - eventcounter = 0; - trackcounter = 0; - hitcounter = 0; - - mtcctibcorr = 0; - mtcctobcorr = 0; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - mtcctibcorr = 1; - mtcctobcorr = 2; - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL1mono = new TH1F("TIBL1angle_mono","Track angle (TIB L1) MONO",120,-60.,60.); - xaxis = htaTIBL1mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL1stereo = new TH1F("TIBL1angle_stereo","Track angle (TIB L1) STEREO",120,-60.,60.); - xaxis = htaTIBL1stereo->GetXaxis(); - xaxis->SetTitle("degree"); - } - - htaTIBL2mono = new TH1F("TIBL2angle_mono","Track angle (TIB L2) MONO",120,-60.,60.); - xaxis = htaTIBL2mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL2stereo = new TH1F("TIBL2angle_stereo","Track angle (TIB L2) STEREO",120,-60.,60.); - xaxis = htaTIBL2stereo->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL3 = new TH1F("TIBL3angle","Track angle (TIB L3)",120,-60.,60.); - xaxis = htaTIBL3->GetXaxis(); - xaxis->SetTitle("degree"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL4 = new TH1F("TIBL4angle","Track angle (TIB L4)",120,-60.,60.); - xaxis = htaTIBL4->GetXaxis(); - xaxis->SetTitle("degree"); - - htaTOBL1mono = new TH1F("TOBL1angle_mono","Track angle (TOB L1) MONO",120,-60.,60.); - xaxis = htaTOBL1mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL1stereo = new TH1F("TOBL1angle_stereo","Track angle (TOB L1) STEREO",120,-60.,60.); - xaxis = htaTOBL1stereo->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL2mono = new TH1F("TOBL2angle_mono","Track angle (TOB L2) MONO",120,-60.,60.); - xaxis = htaTOBL2mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL2stereo = new TH1F("TOBL2angle_stereo","Track angle (TOB L2) STEREO",120,-60.,60.); - xaxis = htaTOBL2stereo->GetXaxis(); - xaxis->SetTitle("degree"); - } - - htaTOBL3 = new TH1F("TOBL3","Track angle (TOB L3)",120,-60.,60.); - xaxis = htaTOBL3->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL4 = new TH1F("TOBL4","Track angle (TOB L4)",120,-60.,60.); - xaxis = htaTOBL4->GetXaxis(); - xaxis->SetTitle("degree"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTOBL5 = new TH1F("TOBL5","Track angle (TOB L5)",120,-60.,60.); - xaxis = htaTOBL5->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL6 = new TH1F("TOBL6","Track angle (TOB L6)",120,-60.,60.); - xaxis = htaTOBL6->GetXaxis(); - xaxis->SetTitle("degree"); - } - - edm::ESHandle<MagneticField> esmagfield; - c.get<IdealMagneticFieldRecord>().get(esmagfield); - magfield=&(*esmagfield); - - edm::ESHandle<TrackerGeometry> estracker; - c.get<TrackerDigiGeometryRecord>().get(estracker); - tracker=&(*estracker); - - //Get Ids; - - const TrackerGeometry::DetIdContainer& Id = estracker->detIds(); - - TrackerGeometry::DetIdContainer::iterator Iditer; - - monodscounter=0; - monosscounter=0; - stereocounter=0; - -for(Iditer=Id.begin();Iditer!=Id.end();Iditer++){ - - if((Iditer->subdetId() != PixelSubdetector::PixelBarrel) && (Iditer->subdetId() != PixelSubdetector::PixelEndcap)){ - - StripSubdetector subid(*Iditer); - - //Mono single sided detectors - - if(subid.glued() == 0){ - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - if(subid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(*Iditer); - if(TIBid.layer()!=1){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - if(subid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(*Iditer); - if((TIBid.layer()!=1) && (TIBid.layer()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - if(subid.subdetId() == int (StripSubdetector::TOB)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - if(subid.subdetId() == int (StripSubdetector::TOB)){ - TOBDetId TOBid=TOBDetId(*Iditer); - if((TOBid.layer()!=1) && (TOBid.layer()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(subid.subdetId() == int (StripSubdetector::TID)){ - TIDDetId TIDid=TIDDetId(*Iditer); - if((TIDid.ring()!=1) && (TIDid.ring()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - if(subid.subdetId() == int (StripSubdetector::TEC)){ - TECDetId TECid=TECDetId(*Iditer); - if((TECid.ring()!=1) && (TECid.ring()!=2) && (TECid.ring()!=5)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - } - - //Mono double sided detectors - - if((subid.glued() != 0) && (subid.stereo() == 0)){ - monodscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - - //Stereo detectors - - if((subid.glued() != 0) && (subid.stereo() == 1)){ - stereocounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - } - - //Summary histograms - - histos[1] = new TProfile("TIBL2_widthvsangle", "Cluster width vs track angle: TIB layer 2",30,-30.,30.); - xaxis = histos[1]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[1]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[2] = new TProfile("TIBL2_widthvsangle_int", "Cluster width vs track angle: TIB layer 2 INT",30,-30.,30.); - xaxis = histos[2]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[2]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[3] = new TProfile("TIBL2_widthvsangle_ext", "Cluster width vs track angle: TIB layer 2 EXT",30,-30.,30.); - xaxis = histos[3]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[3]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[4] = new TProfile("TIBL3_widthvsangle", "Cluster width vs track angle: TIB layer 3",30,-30.,30.); - xaxis = histos[4]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[4]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[5] = new TProfile("TIBL3_widthvsangle_int", "Cluster width vs track angle: TIB layer 3 INT",30,-30.,30.); - xaxis = histos[5]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[5]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[6] = new TProfile("TIBL3_widthvsangle_ext", "Cluster width vs track angle: TIB layer 3 EXT",30,-30.,30.); - xaxis = histos[6]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[6]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - histos[7] = new TProfile("TOBL3_widthvsangle", "Cluster width vs track angle: TOB layer 3",30,-30.,30.); - xaxis = histos[7]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[7]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[8] = new TProfile("TOBL4_widthvsangle", "Cluster width vs track angle: TOB layer 4",30,-30.,30.); - xaxis = histos[8]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[8]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - histos[9] = new TProfile("TIBL1_widthvsangle", "Cluster width vs track angle: TIB layer 1",30,-30.,30.); - xaxis = histos[9]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[9]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[10] = new TProfile("TIBL1_widthvsangle_int", "Cluster width vs track angle: TIB layer 1 INT",30,-30.,30.); - xaxis = histos[10]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[10]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[11] = new TProfile("TIBL1_widthvsangle_ext", "Cluster width vs track angle: TIB layer 1 EXT",30,-30.,30.); - xaxis = histos[11]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[11]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[12] = new TProfile("TIBL4_widthvsangle", "Cluster width vs track angle: TIB layer 4",30,-30.,30.); - xaxis = histos[12]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[12]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[13] = new TProfile("TIBL4_widthvsangle_int", "Cluster width vs track angle: TIB layer 4 INT",30,-30.,30.); - xaxis = histos[13]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[13]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[14] = new TProfile("TIBL4_widthvsangle_ext", "Cluster width vs track angle: TIB layer 4 EXT",30,-30.,30.); - xaxis = histos[14]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[14]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - histos[15] = new TProfile("TOBL1_widthvsangle", "Cluster width vs track angle: TOB layer 1",30,-30.,30.); - xaxis = histos[15]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[15]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[16] = new TProfile("TOBL2_widthvsangle", "Cluster width vs track angle: TOB layer 2",30,-30.,30.); - xaxis = histos[16]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[16]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[17] = new TProfile("TOBL5_widthvsangle", "Cluster width vs track angle: TOB layer 5",30,-30.,30.); - xaxis = histos[17]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[17]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[18] = new TProfile("TOBL6_widthvsangle", "Cluster width vs track angle: TOB layer 6",30,-30.,30.); - xaxis = histos[18]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[18]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - - - histos[19] = new TProfile("Charge_vs_Angle", "Cluster charge vs track angle: TOB layer 6",30,-30.,30.); - xaxis = histos[19]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[19]->GetYaxis(); - yaxis->SetTitle("charge"); - - poClusterChargeTH1F = new TH1F( "Cluster_Charge", "Cluster Charge",600,0.,300.); - xaxis = poClusterChargeTH1F->GetXaxis(); - xaxis->SetTitle("Charge"); - - { - TH1D *poNewPlot; - // Global - poNewPlot = new TH1D( "NumberOfTrackClusterDivTotNumOfClusters", "Number of Track Clusters / Total number of Clusters",150,0.,1.5); - poNewPlot->GetXaxis()->SetTitle( "TrackClusters / AllClusters"); - oGlobalPlots.push_back( poNewPlot); - - // TIB - poNewPlot = new TH1D( "NumberOfClustersInTIBL2", "TIB L2: Number of clusters per layer",10,0.,10.); - poNewPlot->GetXaxis()->SetTitle( "Clusters"); - oDetPlots[StripSubdetector::TIB].push_back( poNewPlot); - - poNewPlot = new TH1D( "NumberOfClustersInTIBL3", "TIB L3: Number of clusters per layer",10,0.,10.); - poNewPlot->GetXaxis()->SetTitle( "Clusters"); - oDetPlots[StripSubdetector::TIB].push_back( poNewPlot); - - // TOB - poNewPlot = new TH1D( "NumberOfClustersInTOBL3", "TOB L3: Number of clusters per layer",10,0.,10.); - poNewPlot->GetXaxis()->SetTitle( "Clusters"); - oDetPlots[StripSubdetector::TOB].push_back( poNewPlot); - - poNewPlot = new TH1D( "NumberOfClustersInTOBL4", "TOB L4: Number of clusters per layer",10,0.,10.); - poNewPlot->GetXaxis()->SetTitle( "Clusters"); - oDetPlots[StripSubdetector::TOB].push_back( poNewPlot); - } - - - //Directory hierarchy - histograms = new TDirectory("Histograms", "Histograms", ""); - summary = new TDirectory("Summary", "Summary", ""); - - //TIB-TID-TOB-TEC - TIB = histograms->mkdir("TIB"); - TOB = histograms->mkdir("TOB"); - TID = histograms->mkdir("TID"); - TEC = histograms->mkdir("TEC"); - - //Forward-Backward - - TIBfw = TIB->mkdir("TIB forward"); - TIDfw = TID->mkdir("TID forward"); - TOBfw = TOB->mkdir("TOB forward"); - TECfw = TEC->mkdir("TEC forward"); - - TIBbw = TIB->mkdir("TIB backward"); - TIDbw = TID->mkdir("TID backward"); - TOBbw = TOB->mkdir("TOB backward"); - TECbw = TEC->mkdir("TEC backward"); - - //TIB directories - - TIBfw1 = TIBfw->mkdir("TIB forward layer 1"); - TIBfw2 = TIBfw->mkdir("TIB forward layer 2"); - TIBfw3 = TIBfw->mkdir("TIB forward layer 3"); - TIBfw4 = TIBfw->mkdir("TIB forward layer 4"); - - TIBbw1 = TIBbw->mkdir("TIB backward layer 1"); - TIBbw2 = TIBbw->mkdir("TIB backward layer 2"); - TIBbw3 = TIBbw->mkdir("TIB backward layer 3"); - TIBbw4 = TIBbw->mkdir("TIB backward layer 4"); - - //TID directories - - TIDfw1 = TIDfw->mkdir("TID forward wheel 1"); - TIDfw2 = TIDfw->mkdir("TID forward wheel 2"); - TIDfw3 = TIDfw->mkdir("TID forward wheel 3"); - - TIDbw1 = TIDbw->mkdir("TID backward wheel 1"); - TIDbw2 = TIDbw->mkdir("TID backward wheel 2"); - TIDbw3 = TIDbw->mkdir("TID backward wheel 3"); - - //TOB directories - - TOBfw1 = TOBfw->mkdir("TOB forward layer 1"); - TOBfw2 = TOBfw->mkdir("TOB forward layer 2"); - TOBfw3 = TOBfw->mkdir("TOB forward layer 3"); - TOBfw4 = TOBfw->mkdir("TOB forward layer 4"); - TOBfw5 = TOBfw->mkdir("TOB forward layer 5"); - TOBfw6 = TOBfw->mkdir("TOB forward layer 6"); - - TOBbw1 = TOBbw->mkdir("TOB backward layer 1"); - TOBbw2 = TOBbw->mkdir("TOB backward layer 2"); - TOBbw3 = TOBbw->mkdir("TOB backward layer 3"); - TOBbw4 = TOBbw->mkdir("TOB backward layer 4"); - TOBbw5 = TOBbw->mkdir("TOB backward layer 5"); - TOBbw6 = TOBbw->mkdir("TOB backward layer 6"); - - //TEC directories - - TECfw1 = TECfw->mkdir("TEC forward wheel 1"); - TECfw2 = TECfw->mkdir("TEC forward wheel 2"); - TECfw3 = TECfw->mkdir("TEC forward wheel 3"); - TECfw4 = TECfw->mkdir("TEC forward wheel 4"); - TECfw5 = TECfw->mkdir("TEC forward wheel 5"); - TECfw6 = TECfw->mkdir("TEC forward wheel 6"); - TECfw7 = TECfw->mkdir("TEC forward wheel 7"); - TECfw8 = TECfw->mkdir("TEC forward wheel 8"); - TECfw9 = TECfw->mkdir("TEC forward wheel 9"); - - TECbw1 = TECbw->mkdir("TEC backward layer 1"); - TECbw2 = TECbw->mkdir("TEC backward layer 2"); - TECbw3 = TECbw->mkdir("TEC backward layer 3"); - TECbw4 = TECbw->mkdir("TEC backward layer 4"); - TECbw5 = TECbw->mkdir("TEC backward layer 5"); - TECbw6 = TECbw->mkdir("TEC backward layer 6"); - TECbw7 = TECbw->mkdir("TEC backward layer 7"); - TECbw8 = TECbw->mkdir("TEC backward layer 8"); - TECbw9 = TECbw->mkdir("TEC backward layer 9"); - - -} - -// Virtual destructor needed. - -MTCCNtupleMaker::~MTCCNtupleMaker() { - // delete poTrackTree; -} - -// Analyzer: Functions that gets called by framework every event - -void MTCCNtupleMaker::analyze(const edm::Event& e, const edm::EventSetup& es) -{ - //m_oSiStripNoiseService.setESObjects( es); - - run = e.id().run(); - event = e.id().event(); - - eventcounter+=1; - - using namespace edm; - - // Step A: Get Inputs - - anglefinder_->init(e,es); - - trackhitmap trackhits; - trackhitmap trackhitsXZ; - trackhitmap trackhitsYZ; - - trklcldirmap oLclDirs; - trkglbdirmap oGlbDirs; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - //LogDebug("MTCCNtupleMaker::analyze")<<"MTCC - Getting tracks"; - - edm::Handle<reco::TrackCollection> trackCollection; - e.getByLabel( conf_.getParameter<std::string>( "TracksLabel"), trackCollection); - //e.getByType(trackCollection); - - // Extract Trigger Bits - edm::Handle<LTCDigiCollection> oLTCDigis; - e.getByType( oLTCDigis); - - // Now loop over all 6 triggers and save their values in corresponding - // boolean variables :) - if( 1 > oLTCDigis->size()) { - LogDebug( "MTCCNtupleMaker::analyze") - << "[warning] More than one LTCDigis object stored in LTCDigiCollection"; - } - - for( LTCDigiCollection::const_iterator oITER = oLTCDigis->begin(); - oITER != oLTCDigis->end(); - ++oITER) { - - bTriggerDT |= oITER->HasTriggered( 0); - bTriggerCSC |= oITER->HasTriggered( 1); - bTriggerRBC1 |= oITER->HasTriggered( 2); - bTriggerRBC2 |= oITER->HasTriggered( 3); - bTriggerRPC |= oITER->HasTriggered( 4); - } - - const reco::TrackCollection *tracks=trackCollection.product(); - - //LogDebug("MTCCNtupleMaker::analyze")<<"MTCC - Getting seed"; - - edm::Handle<TrajectorySeedCollection> seedcoll; - e.getByLabel( conf_.getParameter<std::string>( "SeedsLabel"), seedcoll); - //e.getByType(seedcoll); - - //LogDebug("MTCCNtupleMaker::analyze")<<"MTCC - Getting used rechit"; - - if((*seedcoll).size()>0){ - if (tracks->size()>0){ - - trackcounter+=tracks->size(); - - reco::TrackCollection::const_iterator ibeg=trackCollection.product()->begin(); - - hphi->Fill((*ibeg).outerPhi()); - hnhit->Fill((*ibeg).recHitsSize()); - - std::vector<std::pair<const TrackingRecHit *,float> > tmphitangle=anglefinder_->findtrackangle((*(*seedcoll).begin()),tracks->front()); - std::vector<std::pair<const TrackingRecHit *,float> >::iterator tmpiter; - - trackhits[&(*ibeg)] = tmphitangle; - trackhitsXZ[&(*ibeg)] = anglefinder_->getXZHitAngle(); - trackhitsYZ[&(*ibeg)] = anglefinder_->getYZHitAngle(); - oLclDirs[&(*ibeg)] = anglefinder_->getLocalDir(); - oGlbDirs[&(*ibeg)] = anglefinder_->getGlobalDir(); - - for(tmpiter=tmphitangle.begin();tmpiter!=tmphitangle.end();tmpiter++){ - hitcounter+=1; - } - - } - } - } - else{ //MTCCtrack FALSE - - //LogDebug("MTCCNtupleMaker::analyze")<<"Getting tracks"; - - std::string src=conf_.getParameter<std::string>( "src" ); - - edm::Handle<reco::TrackCollection> trackCollection; - e.getByLabel(src, trackCollection); - - const reco::TrackCollection *tracks=trackCollection.product(); - reco::TrackCollection::const_iterator tciter; - - if(tracks->size()>0){ - - trackcounter+=tracks->size(); - - for(tciter=tracks->begin();tciter!=tracks->end();tciter++){ - - std::vector<std::pair<const TrackingRecHit *,float> > tmphitangle=anglefinder_->findtrackangle(*tciter); - std::vector<std::pair<const TrackingRecHit *,float> >::iterator tmpiter; - - hphi->Fill((*tciter).outerPhi()); - hnhit->Fill((*tciter).recHitsSize()); - - trackhits[&(*tciter)] = tmphitangle; - trackhitsXZ[&(*tciter)] = anglefinder_->getXZHitAngle(); - trackhitsYZ[&(*tciter)] = anglefinder_->getYZHitAngle(); - oLclDirs[&(*tciter)] = anglefinder_->getLocalDir(); - oGlbDirs[&(*tciter)] = anglefinder_->getGlobalDir(); - - for(tmpiter=tmphitangle.begin();tmpiter!=tmphitangle.end();tmpiter++){ - hitcounter+=1; - } - } - } - } - - // Get SiStripClusterInfos - edm::Handle<edm::DetSetVector<SiStripClusterInfo> > oDSVClusterInfos; - e.getByLabel( "siStripClusterInfoProducer", oDSVClusterInfos); - - // Get Trigger Bits - edm::Handle<std::vector<LTCDigi> > oLTCDigis; - e.getByType( oLTCDigis); - - // Get SiStripDigis - edm::Handle<edm::DetSetVector<SiStripDigi> > oDSVDigis; - e.getByLabel( "SiStripDigis", "ZeroSuppressed", oDSVDigis); - - std::map<uint32_t, int> oProcessedClusters; - - int nTrackClusters = 0; - - if(trackhits.size()!=0){ - - trackhitmap::iterator mapiter; - - for(mapiter = trackhits.begin(); mapiter != trackhits.end(); mapiter++){ - - momentum=-99; - pt=-99; - charge=-99; - - momentum = (*mapiter).first->p(); - pt = (*mapiter).first->pt(); - eta = mapiter->first->eta(); - phi = mapiter->first->phi(); - chi2 = mapiter->first->chi2(); - ndof = mapiter->first->ndof(); - normchi2 = mapiter->first->normalizedChi2(); - hitspertrack = mapiter->first->recHitsSize(); - charge = (*mapiter).first->charge(); - - poTrackTree->Fill(); - - std::vector<std::pair<const TrackingRecHit *,float> > hitangle = (*mapiter).second; - std::vector<std::pair<const TrackingRecHit *,float> >::iterator hitsiter; - - - if(hitangle.size()!=0){ - // create reference to YZAngles - TrackLocalAngleNew::HitAngleAssociation &roHitAngleAssocXZ = trackhitsXZ[mapiter->first]; - TrackLocalAngleNew::HitAngleAssociation &roHitAngleAssocYZ = trackhitsYZ[mapiter->first]; - TrackLocalAngleNew::HitLclDirAssociation &roLclDirAssoc = oLclDirs[mapiter->first]; - TrackLocalAngleNew::HitGlbDirAssociation &roGlbDirAssoc = oGlbDirs[mapiter->first]; - - - int nHitNum = 0; - for(hitsiter=hitangle.begin();hitsiter!=hitangle.end();hitsiter++){ - - TrackLocalAngleNew::HitAngleAssociation::reference hitsrefXZ = roHitAngleAssocXZ[nHitNum]; - TrackLocalAngleNew::HitAngleAssociation::reference hitsrefYZ = roHitAngleAssocYZ[nHitNum]; - TrackLocalAngleNew::HitLclDirAssociation::reference roLclDir = roLclDirAssoc[nHitNum]; - TrackLocalAngleNew::HitGlbDirAssociation::reference roGlbDir = roGlbDirAssoc[nHitNum]; - ++nHitNum; - - module=-99; - type=-99; - layer=-99; - wheel=-99; - string=-99; - size=-99; - extint=-99; - bwfw=-99; - rod=-99; - angle=-9999; - stereocorrection=-9999; - localmagfield=-99; - sign = -99; - monostereo=-99; - clusternoise=-99; - clusterbarycenter=-99; - clusterseednoise=-99; - - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>(hitsiter->first); - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > cluster=hit->cluster(); - - std::vector<SiStripDigi> oDigis = - oDSVDigis->operator[]( cluster->geographicalId()).data; - - size=(cluster->amplitudes()).size(); - - clustereta = getClusterEta( cluster->amplitudes(), - cluster->firstStrip(), - oDigis); - - std::vector<SiStripClusterInfo> oClusterInfos = - oDSVClusterInfos->operator[]( cluster->geographicalId()).data; - - for( std::vector<SiStripClusterInfo>::iterator oIter = - oClusterInfos.begin(); - oIter != oClusterInfos.end(); - ++oIter) { - - if( oIter->firstStrip() == cluster->firstStrip()) { - // ClusterInfo matched given cluster - clusterpos = oIter->position(); - clusterchg = oIter->charge(); - clusterchgl = oIter->chargeL(); - clusterchgr = oIter->chargeR(); - clusternoise = oIter->noise(); - clusterbarycenter = cluster->barycenter(); - clusterseednoise = oIter->stripNoises().operator[]( ( int) cluster->barycenter() - cluster->firstStrip()); - clustermaxchg = oIter->maxCharge(); - bTrack = true; - - poClusterChargeTH1F->Fill( clusterchg); - - // Mark Current ClusterInfo as processed - // [Note: One Module might hold several clusters (!)] - oProcessedClusters[cluster->geographicalId()] = oIter->firstStrip(); - - break; - } else { - // ClusterInfo was found but didn't match given cluster - } - } - - - StripSubdetector detid=(StripSubdetector)hit->geographicalId(); - - type = detid.subdetId(); - - module = (hit->geographicalId()).rawId(); - - angle=hitsiter->second; - float angleXZ=hitsrefXZ.second; - float angleYZ=hitsrefYZ.second; - - monostereo=detid.stereo(); - - //Local Magnetic Field - - const GeomDet *geomdet = tracker->idToDet(hit->geographicalId()); - LocalPoint localp(0,0,0); - const GlobalPoint globalp = (geomdet->surface()).toGlobal(localp); - GlobalVector globalmagdir = magfield->inTesla(globalp); - localmagdir = (geomdet->surface()).toLocal(globalmagdir); - localmagfield = localmagdir.mag(); - - if(localmagfield != 0.){ - - //Sign correction for TIB and TOB - - if((detid.subdetId() == int (StripSubdetector::TIB)) || (detid.subdetId() == int (StripSubdetector::TOB))){ - - LocalVector ylocal(0,1,0); - - float normprojection = (localmagdir * ylocal)/(localmagfield); - - if(normprojection>0){sign = 1;} - if(normprojection<0){sign = -1;} - - //Stereocorrection applied in TrackLocalAngleNew - - if((detid.stereo()==1) && (normprojection == 0.)){ - LogDebug("MTCCNtupleMaker::analyze")<<"Error: TIB|TOB YBprojection = 0"; - } - - if((detid.stereo()==1) && (normprojection != 0.)){ - stereocorrection = 1/normprojection; - stereocorrection*=sign; - - float tg = tan((angle*TMath::Pi())/180); - tg*=stereocorrection; - angle = atan(tg)*180/TMath::Pi(); - - tg = tan( angleXZ); - tg*=stereocorrection; - angleXZ = atan( tg); - - tg = tan( angleYZ); - tg*=stereocorrection; - angleYZ = atan( tg); - - } - - angle *= sign; - angleXZ *= sign; - angleYZ *= sign; - - } - } - - dLclX = roLclDir.second.x(); - dLclY = roLclDir.second.y(); - dLclZ = roLclDir.second.z(); - dGlbX = roGlbDir.second.x(); - dGlbY = roGlbDir.second.y(); - dGlbZ = roGlbDir.second.z(); - - //Filling histograms - - histos[module]->Fill(angle,size); - - LogDebug("MTCCNtupleMaker::analyze")<<"Module histogram filled"; - - //Summary histograms - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(hit->geographicalId()); - - extint = TIBid.string()[1]; - string = TIBid.string()[2]; - bwfw= TIBid.string()[0]; - layer = TIBid.layer() + mtcctibcorr; - - if(layer == 1){ - histos[9]->Fill(angle,size); - if(TIBid.stereo()==0){ - htaTIBL1mono->Fill(angle);} - if(TIBid.stereo()==1){ - htaTIBL1stereo->Fill(angle);} - - if(TIBid.string()[1]==0){//int - histos[10]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[11]->Fill(angle,size); - } - } - - if(layer == 2){ - histos[1]->Fill(angle,size); - if(TIBid.stereo()==0){ - htaTIBL2mono->Fill(angle);} - if(TIBid.stereo()==1){ - htaTIBL2stereo->Fill(angle);} - - if(TIBid.string()[1]==0){//int - histos[2]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[3]->Fill(angle,size); - } - } - - if(layer == 3){ - histos[4]->Fill(angle,size); - htaTIBL3->Fill(angle); - if(TIBid.string()[1]==0){//int - histos[5]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[6]->Fill(angle,size); - } - } - - if(layer == 4){ - histos[12]->Fill(angle,size); - htaTIBL4->Fill(angle); - if(TIBid.string()[1]==0){//int - histos[13]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[14]->Fill(angle,size); - } - } - - } - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - TOBDetId TOBid=TOBDetId(hit->geographicalId()); - - layer = TOBid.layer() + mtcctobcorr; - rod = TOBid.rod()[1]; - bwfw = TOBid.rod()[0]; - - if(layer == 1){ - histos[15]->Fill(angle,size); - if(TOBid.stereo()==0){//mono - htaTOBL1mono->Fill(angle); - } - if(TOBid.stereo()==1){//stereo - htaTOBL1stereo->Fill(angle); - } - } - - if(layer == 2){ - histos[16]->Fill(angle,size); - if(TOBid.stereo()==0){//mono - htaTOBL2mono->Fill(angle); - } - if(TOBid.stereo()==1){//stereo - htaTOBL2stereo->Fill(angle); - } - } - - if(layer == 3){ - histos[7]->Fill(angle,size); - htaTOBL3->Fill(angle);} - - if(layer == 4){ - histos[8]->Fill(angle,size); - htaTOBL4->Fill(angle);} - - if(layer == 5){ - histos[17]->Fill(angle,size); - htaTOBL5->Fill(angle);} - - if(layer == 6){ - histos[18]->Fill(angle,size); - htaTOBL6->Fill(angle);} - - } - - if(detid.subdetId() == int (StripSubdetector::TID)){ - TIDDetId TIDid=TIDDetId(hit->geographicalId()); - bwfw = TIDid.module()[0]; - wheel = TIDid.wheel(); - } - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - TECDetId TECid=TECDetId(hit->geographicalId()); - bwfw = TECid.petal()[0]; - wheel = TECid.wheel(); - } - - const GeomDetUnit * stripdet=(const GeomDetUnit*)tracker->idToDetUnit(detid); - - const StripTopology& topol=(StripTopology&)stripdet->topology(); - - float thickness=stripdet->specificSurface().bounds().thickness(); - - float proj=tan(angle)*thickness/topol.pitch(); - - //Filling WidthvsTrackProjection histogram - - hwvst->Fill(proj,size); - - //Filling Tree - - MTCCNtupleMakerTree->Fill(); - - LogDebug("MTCCNtupleMaker::analyze")<<"Tree Filled"; - - } - nTrackClusters += hitangle.size(); - } - - } - } - - std::map<SiSubDet, std::map<unsigned char, int> > oClustersPerLayer; - int nTotClusters = nTrackClusters; - - // Now work out all Cluster that were left unprocessed thus do not belong to - // tracks - - // Loop over modules - for( edm::DetSetVector<SiStripClusterInfo>::const_iterator oDSVIter = oDSVClusterInfos->begin(); - oDSVIter != oDSVClusterInfos->end(); - ++oDSVIter) { - - StripSubdetector oStripSubdet( oDSVIter->id); - unsigned char ucLayer; - switch( oStripSubdet.subdetId()) { - case StripSubdetector::TIB: - { - TIBDetId oTIBDetId( oStripSubdet); - - ucLayer = oTIBDetId.layer() + mtcctibcorr; - break; - } - case StripSubdetector::TID: - break; - case StripSubdetector::TOB: - { - TOBDetId oTOBDetId( oStripSubdet); - - ucLayer = oTOBDetId.layer() + mtcctobcorr; - break; - } - case StripSubdetector::TEC: - break; - } - oClustersPerLayer[SiSubDet( oStripSubdet.subdetId())][ucLayer] += oDSVIter->data.size(); - - if( oProcessedClusters.end() == - oProcessedClusters.find( oDSVIter->id)) { - - // Extract ClusterInfos collection for given module - std::vector<SiStripClusterInfo> oClusterInfos = oDSVIter->data; - std::vector<SiStripDigi> oDigis = - oDSVDigis->operator[]( oDSVIter->id).data; - - nTotClusters += oClusterInfos.size(); - - // Loop over ClusterInfos collection - for( std::vector<SiStripClusterInfo>::iterator oIter = - oClusterInfos.begin(); - oIter != oClusterInfos.end(); - ++oIter) { - - // Check if given ClusterInfo was already processed - if( oProcessedClusters[oDSVIter->id] != - oIter->firstStrip()) { - - // Set default values to the rest of the variables - pt = -99; - eta = -99; - phi = -99; - charge = -99; - momentum = -99; - normchi2 = -99; - hitspertrack = -99; - dLclX = -99; - dLclY = -99; - dLclZ = -99; - dGlbX = -99; - dGlbY = -99; - dGlbZ = -99; - - rod = -99; // Only for TOB - sign = -99; // Not needed - wheel = -99; // Only for TID, TEC - angle = -9999; // Only for track - layer = -99; // There is no layer for TID and TEC - string = -99; // String exists only for TIB - extint = -99; // Olny for TIB - localmagfield = -99; // Not needed - stereocorrection = -9999; // Only for track - clusterbarycenter = -99; - clusterseednoise = -99; - - StripSubdetector oStripSubdet( oIter->geographicalId()); - type = oStripSubdet.subdetId(); - module = oStripSubdet.rawId(); - monostereo = oStripSubdet.stereo(); - - switch( type) { - case StripSubdetector::TIB: - { - TIBDetId oTIBDetId( oStripSubdet); - - bwfw = oTIBDetId.string()[0]; - layer = oTIBDetId.layer() + mtcctibcorr; - extint = oTIBDetId.string()[1]; - string = oTIBDetId.string()[2]; - break; - } - case StripSubdetector::TID: - { - TIDDetId oTIDDetId( oStripSubdet); - - bwfw = oTIDDetId.module()[0]; - wheel = oTIDDetId.wheel(); - break; - } - case StripSubdetector::TOB: - { - TOBDetId oTOBDetId( oStripSubdet); - - rod = oTOBDetId.rod()[1]; - bwfw = oTOBDetId.rod()[0]; - layer = oTOBDetId.layer() + mtcctobcorr; - break; - } - case StripSubdetector::TEC: - { - TECDetId oTECDetId( oStripSubdet); - - bwfw = oTECDetId.petal()[0]; - wheel = oTECDetId.wheel(); - break; - } - } - - size = oIter->width(); // cluster width - - // ClusterInfo was not processed yet - clusterpos = oIter->position(); - clusterchg = oIter->charge(); - clusterchgl = oIter->chargeL(); - clusterchgr = oIter->chargeR(); - clusternoise = oIter->noise(); - clustermaxchg = oIter->maxCharge(); - clustereta = getClusterEta( oIter->stripAmplitudes(), - oIter->firstStrip(), - oDigis); - - bTrack = false; - - MTCCNtupleMakerTree->Fill(); - } - } - } - } - - oGlobalPlots[0]->Fill( ( 1.0 * nTrackClusters) / nTotClusters); - - if( 0 < oClustersPerLayer[StripSubdetector::TIB][2]) - oDetPlots[StripSubdetector::TIB][0]->Fill( oClustersPerLayer[StripSubdetector::TIB][2]); - - if( 0 < oClustersPerLayer[StripSubdetector::TIB][3]) - oDetPlots[StripSubdetector::TIB][1]->Fill( oClustersPerLayer[StripSubdetector::TIB][3]); - - if( 0 < oClustersPerLayer[StripSubdetector::TOB][3]) - oDetPlots[StripSubdetector::TOB][0]->Fill( oClustersPerLayer[StripSubdetector::TOB][3]); - - if( 0 < oClustersPerLayer[StripSubdetector::TOB][4]) - oDetPlots[StripSubdetector::TOB][1]->Fill( oClustersPerLayer[StripSubdetector::TOB][4]); -} - -//Makename function - -const char* MTCCNtupleMaker::makename(DetId detid){ - - std::string name; - - stringstream idnum; - stringstream layernum; - stringstream wheelnum; - stringstream stringnum; - stringstream rodnum; - stringstream ringnum; - stringstream petalnum; - - idnum << detid.rawId(); - - StripSubdetector DetId(detid.rawId()); - - //TIB - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - name="TIB"; - - TIBDetId TIBid=TIBDetId(DetId); - - if(TIBid.string()[0] == 0){ - name+="bw";} - if(TIBid.string()[0] == 1){ - name+="fw";} - - name+="L"; - int layer = TIBid.layer() + mtcctibcorr; - layernum << layer; - name+=layernum.str(); - - if(TIBid.string()[1] == 0){ - name+="int";} - if(TIBid.string()[1] == 1){ - name+="ext";} - - name+="string"; - int string = TIBid.string()[2]; - stringnum << string; - name+=stringnum.str(); - - if(TIBid.stereo() == 0){ - name+="mono";} - if(TIBid.stereo() == 1){ - name+="stereo";} - } - - //TID - - if(detid.subdetId() == int (StripSubdetector::TID)){ - name="TID"; - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - name+="bw";} - if(TIDid.module()[0] == 1){ - name+="fw";} - - name+="W"; - int wheel = TIDid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TIDid.side() == 1){ - name+="neg";} - if(TIDid.side() == 2){ - name+="pos";} - - name+="ring"; - int ring = TIDid.ring(); - ringnum << ring; - name+=ringnum.str(); - - if(TIDid.stereo() == 0){ - name+="mono";} - if(TIDid.stereo() == 1){ - name+="stereo";} - } - - //TOB - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - name="TOB"; - - TOBDetId TOBid=TOBDetId(DetId); - - if(TOBid.rod()[0] == 0){ - name+="bw";} - if(TOBid.rod()[0] == 1){ - name+="fw";} - - name+="L"; - int layer = TOBid.layer() + mtcctobcorr; - layernum << layer; - name+=layernum.str(); - - name+="rod"; - int rod = TOBid.rod()[1]; - rodnum << rod; - name+=rodnum.str(); - - if(TOBid.stereo() == 0){ - name+="mono";} - if(TOBid.stereo() == 1){ - name+="stereo";} - } - - //TEC - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - name="TEC"; - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - name+="bw";} - if(TECid.petal()[0] == 1){ - name+="fw";} - - name+="W"; - int wheel = TECid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TECid.side() == 1){ - name+="neg";} - if(TECid.side() == 2){ - name+="pos";} - - name+="ring"; - int ring = TECid.ring(); - ringnum << ring; - name+=ringnum.str(); - - name+="petal"; - int petal = TECid.petal()[1]; - petalnum << petal; - name+=petalnum.str(); - - if(TECid.stereo() == 0){ - name+="mono";} - if(TECid.stereo() == 1){ - name+="stereo";} - } - - name+="_"; - - name+=idnum.str(); - - return name.c_str(); - -} - -//Makedescription function - -const char* MTCCNtupleMaker::makedescription(DetId detid){ - - std::string name; - - name="Cluster width vs track angle ("; - - stringstream idnum; - stringstream layernum; - stringstream wheelnum; - stringstream stringnum; - stringstream rodnum; - stringstream ringnum; - stringstream petalnum; - - idnum << detid.rawId(); - - StripSubdetector DetId(detid.rawId()); - - //TIB - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - name+="TIB "; - - TIBDetId TIBid=TIBDetId(DetId); - - if(TIBid.string()[0] == 0){ - name+="backward, ";} - if(TIBid.string()[0] == 1){ - name+="forward, ";} - - name+="Layer n."; - int layer = TIBid.layer() + mtcctibcorr; - layernum << layer; - name+=layernum.str(); - - if(TIBid.string()[1] == 0){ - name+=", internal ";} - if(TIBid.string()[1] == 1){ - name+=", external ";} - - name+="string n."; - int string = TIBid.string()[2]; - stringnum << string; - name+=stringnum.str(); - - if(TIBid.stereo() == 0){ - name+=", mono,";} - if(TIBid.stereo() == 1){ - name+=", stereo,";} - - } - - //TID - - if(detid.subdetId() == int (StripSubdetector::TID)){ - name+="TID "; - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - name+="bacward, ";} - if(TIDid.module()[0] == 1){ - name+="forward, ";} - - name+="Wheel n."; - int wheel = TIDid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TIDid.side() == 1){ - name+=", negative ";} - if(TIDid.side() == 2){ - name+=", positive ";} - - name+="ring n."; - int ring = TIDid.ring(); - ringnum << ring; - name+=ringnum.str(); - - if(TIDid.stereo() == 0){ - name+=", mono";} - if(TIDid.stereo() == 1){ - name+=", stereo";} - - } - - //TOB - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - name+="TOB "; - - TOBDetId TOBid=TOBDetId(DetId); - - if(TOBid.rod()[0] == 0){ - name+="backward, ";} - if(TOBid.rod()[0] == 1){ - name+="forward, ";} - - name+="Layer n."; - int layer = TOBid.layer() + mtcctobcorr; - layernum << layer; - name+=layernum.str(); - - name+=", rod n."; - int rod = TOBid.rod()[1]; - rodnum << rod; - name+=rodnum.str(); - - if(TOBid.stereo() == 0){ - name+=", mono,";} - if(TOBid.stereo() == 1){ - name+=", stereo,";} - } - - //TEC - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - name+="TEC "; - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - name+="backward, ";} - if(TECid.petal()[0] == 1){ - name+="forward, ";} - - name+="Wheel n."; - int wheel = TECid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TECid.side() == 1){ - name+=", negative ";} - if(TECid.side() == 2){ - name+=", positive ";} - - name+="ring n."; - int ring = TECid.ring(); - ringnum << ring; - name+=ringnum.str(); - - name+=", petal n."; - int petal = TECid.petal()[1]; - petalnum << petal; - name+=petalnum.str(); - - if(TECid.stereo() == 0){ - name+=", mono";} - if(TECid.stereo() == 1){ - name+=", stereo";} - - } - - name+=" IdNumber = "; - - name+=idnum.str(); - - name+=")"; - - return name.c_str(); - -} - - //EndJob - -void MTCCNtupleMaker::endJob(){ - - - std::vector<DetId>::iterator Iditer; - - //Histograms fit - - int histonum = Detvector.size(); - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - fitfunc->SetParameters(0, 0, 1); - histos[Iditer->rawId()]->Fit("fitfunc","E","",-20, 20); - - TF1 *fitfunction = histos[Iditer->rawId()]->GetFunction("fitfunc"); - - fits[Iditer->rawId()] = new histofit; - - fits[Iditer->rawId()]->chi2 = fitfunction->GetChisquare(); - fits[Iditer->rawId()]->ndf = fitfunction->GetNDF(); - fits[Iditer->rawId()]->p0 = fitfunction->GetParameter(0); - fits[Iditer->rawId()]->p1 = fitfunction->GetParameter(1); - fits[Iditer->rawId()]->p2 = fitfunction->GetParameter(2); - fits[Iditer->rawId()]->errp0 = fitfunction->GetParError(0); - fits[Iditer->rawId()]->errp1 = fitfunction->GetParError(1); - fits[Iditer->rawId()]->errp2 = fitfunction->GetParError(2); - fits[Iditer->rawId()]->min = fitfunction->Eval(fits[Iditer->rawId()]->p0); - - } - - int n; - int nmax = 19; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - nmax=9;} - - for(n=1; n<nmax; n++){ - - fitfunc->SetParameters(0, 0, 1); - histos[n]->Fit("fitfunc","E","",-20, 20); - - TF1 *fitfunction = histos[n]->GetFunction("fitfunc"); - - fits[n] = new histofit; - - fits[n]->chi2 = fitfunction->GetChisquare(); - fits[n]->ndf = fitfunction->GetNDF(); - fits[n]->p0 = fitfunction->GetParameter(0); - fits[n]->p1 = fitfunction->GetParameter(1); - fits[n]->p2 = fitfunction->GetParameter(2); - fits[n]->errp0 = fitfunction->GetParError(0); - fits[n]->errp1 = fitfunction->GetParError(1); - fits[n]->errp2 = fitfunction->GetParError(2); - fits[n]->min = fitfunction->Eval(fits[n]->p0); - - } - - //File with fit parameters - - ofstream fit; - fit.open("fit.txt"); - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - fit<<endl<<">>> MTCCtrack = TRUE"<<endl<<endl; - }else{ - fit<<endl<<">>> MTCCtrack = FALSE"<<endl<<endl; - } - fit<<">>> TOTAL EVENT = "<<eventcounter<<endl; - fit<<">>> NUMBER OF RECHITS = "<<hitcounter<<endl; - fit<<">>> NUMBER OF TRACKS = "<<trackcounter<<endl<<endl; - fit<<">>> NUMBER OF DETECTOR HISTOGRAMS = "<<histonum<<endl; - fit<<">>> NUMBER OF MONO SINGLE SIDED DETECTORS = "<<monosscounter<<endl; - fit<<">>> NUMBER OF MONO DOUBLE SIDED DETECTORS = "<<monodscounter<<endl; - fit<<">>> NUMBER OF STEREO DETECTORS = "<<stereocounter<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[9]->chi2)/(fits[9]->ndf)<<endl; - fit<<"NdF = "<<fits[9]->ndf<<endl; - fit<<"p0 = "<<fits[9]->p0<<" err p0 = "<<fits[9]->errp0<<endl; - fit<<"p1 = "<<fits[9]->p1<<" err p1 = "<<fits[9]->errp1<<endl; - fit<<"p2 = "<<fits[9]->p2<<" err p2 = "<<fits[9]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[9]->p0<<" +- "<<fits[9]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[9]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[10]->chi2)/(fits[10]->ndf)<<endl; - fit<<"NdF = "<<fits[10]->ndf<<endl; - fit<<"p0 = "<<fits[10]->p0<<" err p0 = "<<fits[10]->errp0<<endl; - fit<<"p1 = "<<fits[10]->p1<<" err p1 = "<<fits[10]->errp1<<endl; - fit<<"p2 = "<<fits[10]->p2<<" err p2 = "<<fits[10]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[10]->p0<<" +- "<<fits[10]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[10]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[11]->chi2)/(fits[11]->ndf)<<endl; - fit<<"NdF = "<<fits[11]->ndf<<endl; - fit<<"p0 = "<<fits[11]->p0<<" err p0 = "<<fits[11]->errp0<<endl; - fit<<"p1 = "<<fits[11]->p1<<" err p1 = "<<fits[11]->errp1<<endl; - fit<<"p2 = "<<fits[11]->p2<<" err p2 = "<<fits[11]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[11]->p0<<" +- "<<fits[11]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[11]->min<<endl<<endl; - } - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[1]->chi2)/(fits[1]->ndf)<<endl; - fit<<"NdF = "<<fits[1]->ndf<<endl; - fit<<"p0 = "<<fits[1]->p0<<" err p0 = "<<fits[1]->errp0<<endl; - fit<<"p1 = "<<fits[1]->p1<<" err p1 = "<<fits[1]->errp1<<endl; - fit<<"p2 = "<<fits[1]->p2<<" err p2 = "<<fits[1]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[1]->p0<<" +- "<<fits[1]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[1]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[2]->chi2)/(fits[2]->ndf)<<endl; - fit<<"NdF = "<<fits[2]->ndf<<endl; - fit<<"p0 = "<<fits[2]->p0<<" err p0 = "<<fits[2]->errp0<<endl; - fit<<"p1 = "<<fits[2]->p1<<" err p1 = "<<fits[2]->errp1<<endl; - fit<<"p2 = "<<fits[2]->p2<<" err p2 = "<<fits[2]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[2]->p0<<" +- "<<fits[2]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[2]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[3]->chi2)/(fits[3]->ndf)<<endl; - fit<<"NdF = "<<fits[3]->ndf<<endl; - fit<<"p0 = "<<fits[3]->p0<<" err p0 = "<<fits[3]->errp0<<endl; - fit<<"p1 = "<<fits[3]->p1<<" err p1 = "<<fits[3]->errp1<<endl; - fit<<"p2 = "<<fits[3]->p2<<" err p2 = "<<fits[3]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[3]->p0<<" +- "<<fits[3]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[3]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[4]->chi2)/(fits[4]->ndf)<<endl; - fit<<"NdF = "<<fits[4]->ndf<<endl; - fit<<"p0 = "<<fits[4]->p0<<" err p0 = "<<fits[4]->errp0<<endl; - fit<<"p1 = "<<fits[4]->p1<<" err p1 = "<<fits[4]->errp1<<endl; - fit<<"p2 = "<<fits[4]->p2<<" err p2 = "<<fits[4]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[4]->p0<<" +- "<<fits[4]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[4]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[5]->chi2)/(fits[5]->ndf)<<endl; - fit<<"NdF = "<<fits[5]->ndf<<endl; - fit<<"p0 = "<<fits[5]->p0<<" err p0 = "<<fits[5]->errp0<<endl; - fit<<"p1 = "<<fits[5]->p1<<" err p1 = "<<fits[5]->errp1<<endl; - fit<<"p2 = "<<fits[5]->p2<<" err p2 = "<<fits[5]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[5]->p0<<" +- "<<fits[5]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[5]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[6]->chi2)/(fits[6]->ndf)<<endl; - fit<<"NdF = "<<fits[6]->ndf<<endl; - fit<<"p0 = "<<fits[6]->p0<<" err p0 = "<<fits[6]->errp0<<endl; - fit<<"p1 = "<<fits[6]->p1<<" err p1 = "<<fits[6]->errp1<<endl; - fit<<"p2 = "<<fits[6]->p2<<" err p2 = "<<fits[6]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[6]->p0<<" +- "<<fits[6]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[6]->min<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[12]->chi2)/(fits[12]->ndf)<<endl; - fit<<"NdF = "<<fits[12]->ndf<<endl; - fit<<"p0 = "<<fits[12]->p0<<" err p0 = "<<fits[12]->errp0<<endl; - fit<<"p1 = "<<fits[12]->p1<<" err p1 = "<<fits[12]->errp1<<endl; - fit<<"p2 = "<<fits[12]->p2<<" err p2 = "<<fits[12]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[12]->p0<<" +- "<<fits[12]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[12]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[13]->chi2)/(fits[13]->ndf)<<endl; - fit<<"NdF = "<<fits[13]->ndf<<endl; - fit<<"p0 = "<<fits[13]->p0<<" err p0 = "<<fits[13]->errp0<<endl; - fit<<"p1 = "<<fits[13]->p1<<" err p1 = "<<fits[13]->errp1<<endl; - fit<<"p2 = "<<fits[13]->p2<<" err p2 = "<<fits[13]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[13]->p0<<" +- "<<fits[13]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[13]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[14]->chi2)/(fits[14]->ndf)<<endl; - fit<<"NdF = "<<fits[14]->ndf<<endl; - fit<<"p0 = "<<fits[14]->p0<<" err p0 = "<<fits[14]->errp0<<endl; - fit<<"p1 = "<<fits[14]->p1<<" err p1 = "<<fits[14]->errp1<<endl; - fit<<"p2 = "<<fits[14]->p2<<" err p2 = "<<fits[14]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[14]->p0<<" +- "<<fits[14]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[14]->min<<endl<<endl; - - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 1 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[15]->chi2)/(fits[15]->ndf)<<endl; - fit<<"NdF = "<<fits[15]->ndf<<endl; - fit<<"p0 = "<<fits[15]->p0<<" err p0 = "<<fits[15]->errp0<<endl; - fit<<"p1 = "<<fits[15]->p1<<" err p1 = "<<fits[15]->errp1<<endl; - fit<<"p2 = "<<fits[15]->p2<<" err p2 = "<<fits[15]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[15]->p0<<" +- "<<fits[15]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[15]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 2 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[16]->chi2)/(fits[16]->ndf)<<endl; - fit<<"NdF = "<<fits[16]->ndf<<endl; - fit<<"p0 = "<<fits[16]->p0<<" err p0 = "<<fits[16]->errp0<<endl; - fit<<"p1 = "<<fits[16]->p1<<" err p1 = "<<fits[16]->errp1<<endl; - fit<<"p2 = "<<fits[16]->p2<<" err p2 = "<<fits[16]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[16]->p0<<" +- "<<fits[16]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[16]->min<<endl<<endl; - } - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 3 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[7]->chi2)/(fits[7]->ndf)<<endl; - fit<<"NdF = "<<fits[7]->ndf<<endl; - fit<<"p0 = "<<fits[7]->p0<<" err p0 = "<<fits[7]->errp0<<endl; - fit<<"p1 = "<<fits[7]->p1<<" err p1 = "<<fits[7]->errp1<<endl; - fit<<"p2 = "<<fits[7]->p2<<" err p2 = "<<fits[7]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[7]->p0<<" +- "<<fits[7]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[7]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 4 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[8]->chi2)/(fits[8]->ndf)<<endl; - fit<<"NdF = "<<fits[8]->ndf<<endl; - fit<<"p0 = "<<fits[8]->p0<<" err p0 = "<<fits[8]->errp0<<endl; - fit<<"p1 = "<<fits[8]->p1<<" err p1 = "<<fits[8]->errp1<<endl; - fit<<"p2 = "<<fits[8]->p2<<" err p2 = "<<fits[8]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[8]->p0<<" +- "<<fits[8]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[8]->min<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 5 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[17]->chi2)/(fits[17]->ndf)<<endl; - fit<<"NdF = "<<fits[17]->ndf<<endl; - fit<<"p0 = "<<fits[17]->p0<<" err p0 = "<<fits[17]->errp0<<endl; - fit<<"p1 = "<<fits[17]->p1<<" err p1 = "<<fits[17]->errp1<<endl; - fit<<"p2 = "<<fits[17]->p2<<" err p2 = "<<fits[17]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[17]->p0<<" +- "<<fits[17]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[17]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 6 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[18]->chi2)/(fits[18]->ndf)<<endl; - fit<<"NdF = "<<fits[18]->ndf<<endl; - fit<<"p0 = "<<fits[18]->p0<<" err p0 = "<<fits[18]->errp0<<endl; - fit<<"p1 = "<<fits[18]->p1<<" err p1 = "<<fits[18]->errp1<<endl; - fit<<"p2 = "<<fits[18]->p2<<" err p2 = "<<fits[18]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[18]->p0<<" +- "<<fits[18]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[18]->min<<endl<<endl; - } - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - fit<<endl<<"-------------------------- MODULE HISTOGRAM FIT ------------------------"<<endl<<endl; - fit<<makedescription(*Iditer)<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[Iditer->rawId()]->chi2)/(fits[Iditer->rawId()]->ndf)<<endl; - fit<<"NdF = "<<fits[Iditer->rawId()]->ndf<<endl; - fit<<"p0 = "<<fits[Iditer->rawId()]->p0<<" err p0 = "<<fits[Iditer->rawId()]->errp0<<endl; - fit<<"p1 = "<<fits[Iditer->rawId()]->p1<<" err p1 = "<<fits[Iditer->rawId()]->errp1<<endl; - fit<<"p2 = "<<fits[Iditer->rawId()]->p2<<" err p2 = "<<fits[Iditer->rawId()]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[Iditer->rawId()]->p0<<" +- "<<fits[Iditer->rawId()]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[Iditer->rawId()]->min<<endl<<endl; - - } - - fit.close(); - - //Set directories - - for(n=1;n<nmax;n++){ - histos[n]->SetDirectory(summary);} - - histos[19]->SetDirectory( summary); - - poClusterChargeTH1F->SetDirectory( summary); - hphi->SetDirectory(summary); - hnhit->SetDirectory(summary); - - oGlobalPlots[0]->SetDirectory( summary); - for( std::vector<TH1D *>::iterator oIter = oDetPlots[StripSubdetector::TIB].begin(); - oIter != oDetPlots[StripSubdetector::TIB].end(); - ++oIter) { - ( *oIter)->SetDirectory( summary); - } - - for( std::vector<TH1D *>::iterator oIter = oDetPlots[StripSubdetector::TOB].begin(); - oIter != oDetPlots[StripSubdetector::TOB].end(); - ++oIter) { - ( *oIter)->SetDirectory( summary); - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL1mono->SetDirectory(summary); - htaTIBL1stereo->SetDirectory(summary); - } - - htaTIBL2mono->SetDirectory(summary); - htaTIBL2stereo->SetDirectory(summary); - htaTIBL3->SetDirectory(summary); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL4->SetDirectory(summary); - htaTOBL1mono->SetDirectory(summary); - htaTOBL1stereo->SetDirectory(summary); - htaTOBL2mono->SetDirectory(summary); - htaTOBL2stereo->SetDirectory(summary); - } - - htaTOBL3->SetDirectory(summary); - htaTOBL4->SetDirectory(summary); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTOBL5->SetDirectory(summary); - htaTOBL6->SetDirectory(summary); - } - - hwvst->SetDirectory(summary); - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - StripSubdetector DetId(Iditer->rawId()); - - if(Iditer->subdetId() == int (StripSubdetector::TIB)){ - - TIBDetId TIBid=TIBDetId(DetId); - - int correctedlayer = TIBid.layer() + mtcctibcorr; - - if(TIBid.string()[0] == 0){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TIBbw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TIBbw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TIBbw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TIBbw4);} - } - if(TIBid.string()[0] == 1){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TIBfw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TIBfw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TIBfw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TIBfw4);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TID)){ - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - if(TIDid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TIDbw1);} - if(TIDid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TIDbw2);} - if(TIDid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TIDbw3);} - } - if(TIDid.module()[0] == 1){ - if(TIDid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TIDfw1);} - if(TIDid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TIDfw2);} - if(TIDid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TIDfw3);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TOB)){ - - TOBDetId TOBid=TOBDetId(DetId); - - int correctedlayer = TOBid.layer() + mtcctobcorr; - - if(TOBid.rod()[0] == 0){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TOBbw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TOBbw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TOBbw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TOBbw4);} - if(correctedlayer == 5){ - histos[Iditer->rawId()]->SetDirectory(TOBbw5);} - if(correctedlayer == 6){ - histos[Iditer->rawId()]->SetDirectory(TOBbw6);} - } - if(TOBid.rod()[0] == 1){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TOBfw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TOBfw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TOBfw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TOBfw4);} - if(correctedlayer == 5){ - histos[Iditer->rawId()]->SetDirectory(TOBfw5);} - if(correctedlayer == 6){ - histos[Iditer->rawId()]->SetDirectory(TOBfw6);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TEC)){ - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - if(TECid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TECbw1);} - if(TECid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TECbw2);} - if(TECid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TECbw3);} - if(TECid.wheel() == 4){ - histos[Iditer->rawId()]->SetDirectory(TECbw4);} - if(TECid.wheel() == 5){ - histos[Iditer->rawId()]->SetDirectory(TECbw5);} - if(TECid.wheel() == 6){ - histos[Iditer->rawId()]->SetDirectory(TECbw6);} - if(TECid.wheel() == 7){ - histos[Iditer->rawId()]->SetDirectory(TECbw7);} - if(TECid.wheel() == 8){ - histos[Iditer->rawId()]->SetDirectory(TECbw8);} - if(TECid.wheel() == 9){ - histos[Iditer->rawId()]->SetDirectory(TECbw9);} - } - if(TECid.petal()[0] == 1){ - if(TECid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TECfw1);} - if(TECid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TECfw2);} - if(TECid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TECfw3);} - if(TECid.wheel() == 4){ - histos[Iditer->rawId()]->SetDirectory(TECfw4);} - if(TECid.wheel() == 5){ - histos[Iditer->rawId()]->SetDirectory(TECfw5);} - if(TECid.wheel() == 6){ - histos[Iditer->rawId()]->SetDirectory(TECfw6);} - if(TECid.wheel() == 7){ - histos[Iditer->rawId()]->SetDirectory(TECfw7);} - if(TECid.wheel() == 8){ - histos[Iditer->rawId()]->SetDirectory(TECfw8);} - if(TECid.wheel() == 9){ - histos[Iditer->rawId()]->SetDirectory(TECfw9);} - } - } - - } - - hFile->Write(); - hFile->Close(); - -} - -// ClusterEta = SignalL / ( SignalL + SignalR) -// where: -// SignalL and SignalR are two strips with the highest amplitudes. -// SignalL - is the strip with the smaller strip number -// SignalR - with the highest strip number accordingly -// @arguments -// roSTRIP_AMPLITUDES vector of strips ADC counts in cluster -// rnFIRST_STRIP cluster first strip shift whithin module -// roDIGIS vector of digis within current module -// @return -// int ClusterEta or 0 on error -double - MTCCNtupleMaker::getClusterEta( const std::vector<uint16_t> &roSTRIP_AMPLITUDES, - const int &rnFIRST_STRIP, - const DigisVector &roDIGIS) const { - double dClusterEta = 0; - - // Check if cluster is not empty: otherwise exception will be thrown on - // ClusterEta calculation due to try to execute `0 / 0` - - // Cluster eta calculation - int anMaxSignal[2][2]; - - // Null array before using it - for( int i = 0; 2 > i; ++i) { - for( int j = 0; 2 > j; ++j) { - anMaxSignal[i][j] = 0; - } - } - - // Find two strips with highest amplitudes - // i is a relative stip number: relative to a cluster - for( int i = 0, nSize = roSTRIP_AMPLITUDES.size(); nSize > i; ++i) { - int nCurCharge = roSTRIP_AMPLITUDES[i]; - - if( nCurCharge > anMaxSignal[1][1]) { - anMaxSignal[0][0] = anMaxSignal[1][0]; - anMaxSignal[0][1] = anMaxSignal[1][1]; - // Convert to global strip number within module - anMaxSignal[1][0] = i + rnFIRST_STRIP; - anMaxSignal[1][1] = nCurCharge; - } else if( nCurCharge > anMaxSignal[0][1]) { - // Convert to global strip number within module - anMaxSignal[0][0] = i + rnFIRST_STRIP; - anMaxSignal[0][1] = nCurCharge; - } - } - - if( ( anMaxSignal[1][1] + anMaxSignal[0][1]) != 0) { - if( anMaxSignal[0][0] > anMaxSignal[1][0]) { - // anMaxSignal[1] is Left one - dClusterEta = ( 1.0 * anMaxSignal[1][1]) / ( anMaxSignal[1][1] + - anMaxSignal[0][1]); - } else if( 0 == anMaxSignal[0][0] && - 0 == anMaxSignal[0][1]) { - - // One Strip cluster: check for Digis - DigisVector::const_iterator oITER = roDIGIS.begin(); - for( ; - oITER != roDIGIS.end() && oITER->strip() != anMaxSignal[1][0]; - ++oITER) {} - - // Check if previous neighbouring strip exists - if( oITER != roDIGIS.begin() && - ( oITER->strip() - 1) == ( oITER - 1)->strip()) { - // There is previous strip specified :) - double dADCPrevStrip = ( oITER - 1)->adc(); - dClusterEta = ( 1.0 * dADCPrevStrip) / ( dADCPrevStrip + - anMaxSignal[1][1]); - } else if( oITER != roDIGIS.end() && - oITER != ( roDIGIS.end() - 1) && - ( oITER->strip() + 1) == ( oITER + 1)->strip()) { - // well, there is no previous strip. How about next one? It is - // specified :) - dClusterEta = ( 1.0 * anMaxSignal[1][1]) / ( ( oITER + 1)->adc() + - anMaxSignal[1][1]); - } else { - // There is no even next strip specified... Ouch, this is real single - // strip cluster without any neighbouring Digis specified :( It is - // obvious why ClusterEta should be ZERO :) - // [Hint: take a look at the case [0][0] < [1][0] ] - dClusterEta = 0; - } - } else { - // anMaxSignal[0] is Left one - dClusterEta = ( 1.0 * anMaxSignal[0][1]) / ( anMaxSignal[1][1] + - anMaxSignal[0][1]); - } - } - - return dClusterEta; -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/SealModules.cc b/AnalysisExamples/SiStripDetectorPerformance/src/SealModules.cc deleted file mode 100644 index 805264a3891..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/SealModules.cc +++ /dev/null @@ -1,15 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "AnalysisExamples/SiStripDetectorPerformance/interface/AnalyzeTracksClusters.h" -#include "AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysis.h" -#include "AnalysisExamples/SiStripDetectorPerformance/interface/ClusterAnalysisFilter.h" -#include "AnalysisExamples/SiStripDetectorPerformance/interface/MTCCNtupleMaker.h" - -using cms::ClusterAnalysis; -using cms::ClusterAnalysisFilter; - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(AnalyzeTracksClusters); -DEFINE_ANOTHER_FWK_MODULE(ClusterAnalysis); -DEFINE_ANOTHER_FWK_MODULE(ClusterAnalysisFilter); -DEFINE_ANOTHER_FWK_MODULE(MTCCNtupleMaker); diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngle.cc b/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngle.cc deleted file mode 100644 index dfe619f8044..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngle.cc +++ /dev/null @@ -1,344 +0,0 @@ -#include <memory> -#include <string> -#include <iostream> -#include <TMath.h> -#include "AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngle.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "TrackingTools/Records/interface/TrackingComponentsRecord.h" -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "TrackingTools/TrackFitters/interface/KFFittingSmoother.h" - -using namespace std; -TrackLocalAngle::TrackLocalAngle(edm::ParameterSet const& conf) : - conf_(conf) -{ -} -void TrackLocalAngle::init(const edm::Event& e, const edm::EventSetup& es){ - - // - // get geometry - // - edm::ESHandle<TrackerGeometry> estracker; - es.get<TrackerDigiGeometryRecord>().get(estracker); - tracker=&(* estracker); - // - // get magnetic field - // - edm::ESHandle<MagneticField> esmagfield; - es.get<IdealMagneticFieldRecord>().get(esmagfield); - magfield=&(*esmagfield); - - // - // get the fitter - // - if(!(conf_.getParameter<bool>("MTCCtrack"))){ - edm::ESHandle<TrajectoryFitter> fitter; - LogDebug("TrackLocalAngle") << "get the fitter from the ES" << "\n"; - std::string fitterName = conf_.getParameter<std::string>("Fitter"); - es.get<TrackingComponentsRecord>().get(fitterName,fitter); - theFitter=&(*fitter); - - // - // get also the propagator - // - edm::ESHandle<Propagator> propagator; - LogDebug("TrackLocalAngle") << "get also the propagator" << "\n"; - std::string propagatorName = conf_.getParameter<std::string>("Propagator"); - es.get<TrackingComponentsRecord>().get(propagatorName,propagator); - thePropagator=&(*propagator); - } - // - // get the builder - // - edm::ESHandle<TransientTrackingRecHitBuilder> builder; - LogDebug("TrackLocalAngle") << "get also the TransientTrackingRecHitBuilder" << "\n"; - std::string builderName = conf_.getParameter<std::string>("TTRHBuilder"); - es.get<TransientRecHitRecord>().get(builderName,builder); - RHBuilder=&(*builder); -} - -// Virtual destructor needed. -TrackLocalAngle::~TrackLocalAngle() { -} - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngle::findtrackangle(const reco::Track& theT) -{ - // int cont = 0; - //convert the TrackingRecHit vector to a TransientTrackingRecHit vector - //meanwhile computes the number of degrees of freedom - LogDebug("TrackLocalAngle") << "Start\n"; - - - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - tmp.push_back(RHBuilder->build(&**i )); - } - - cout << "almeno qui ci arrivi ? " << endl; - - LogDebug("TrackLocalAngle") << "Transient rechit filled" << "\n"; - - //SORT RECHITS ALONGMOMENTUM - const TransientTrackingRecHit::ConstRecHitPointer *firstHit=0; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.begin(); it!=tmp.end();it++){ - if ((**it).isValid()) { - firstHit = &(*it); - break; - } - } - const TransientTrackingRecHit::ConstRecHitPointer *lastHit=0; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1; it!=tmp.begin()-1;it--){ - if ((**it).isValid()) { - lastHit= &(*it); - break; - } - } - if ((*firstHit)->globalPosition().mag2() > ((*lastHit)->globalPosition().mag2()) ){ - //FIXME temporary should use reverse - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - } else hits=tmp; - - reco::TransientTrack theTT(theT, thePropagator->magneticField() ); - - // TrajectoryStateOnSurface theTSOS=theTT.impactPointState(); - // theTSOS.rescaleError(100); - - TrajectoryStateOnSurface firstState=thePropagator->propagate(theTT.impactPointState(), hits.front()->det()->surface()); - AlgebraicSymMatrix C(5,1); - C *= 100.; - TrajectoryStateOnSurface theTSOS( firstState.localParameters(), LocalTrajectoryError(C), - firstState.surface(), - thePropagator->magneticField()); - - LogDebug("TrackLocalAngle") << "Initial TSOS\n" << theTSOS << "\n"; - - const TrajectorySeed * seed = new TrajectorySeed();//empty seed: not needed - //buildTrack - return buildTrack(hits, theTSOS, *seed); - // return buildTrack(theTSOS, *seed); -} - -std::vector< std::pair<const TrackingRecHit*,float> > TrackLocalAngle::buildTrack( - TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed) -{ - //variable declarations - std::vector<Trajectory> trajVec; - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - Trajectory * theTraj; - - //perform the fit: the result's size is 1 if it succeded, 0 if fails - trajVec = theFitter->fit(seed, hits, theTSOS); - - LogDebug("TrackProducer") <<" FITTER FOUND "<< trajVec.size() << " TRAJECTORIES" <<"\n"; - - if (trajVec.size() != 0){ - - theTraj = new Trajectory( trajVec.front() ); - - LogDebug("TrackLocalAngle") <<"track done"; - std::vector<TrajectoryMeasurement> TMeas=theTraj->measurements(); - - std::vector<TrajectoryMeasurement>::iterator itm; - int i=0; - LogDebug("TrackLocalAngle::findtrackangle")<<"Loop on rechit and TSOS"; - for (itm=TMeas.begin();itm!=TMeas.end();itm++){ - //std::cout<<"hit: "<<i++<<std::endl; - TrajectoryStateOnSurface tsos=itm->updatedState(); - const TransientTrackingRecHit::ConstRecHitPointer thit=itm->recHit(); - const SiPixelRecHit* pixelhit=dynamic_cast<const SiPixelRecHit*>((*thit).hit()); // [added by Andrea] - const SiStripMatchedRecHit2D* matchedhit=dynamic_cast<const SiStripMatchedRecHit2D*>((*thit).hit()); - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>((*thit).hit()); - LocalVector trackdirection=tsos.localDirection(); - if(matchedhit){//if matched hit... - - GluedGeomDet * gdet=(GluedGeomDet *)tracker->idToDet(matchedhit->geographicalId()); - - GlobalVector gtrkdir=gdet->toGlobal(trackdirection); - std::cout<<"Track direction trasformed in global direction"<<std::endl; - - //cluster and trackdirection on mono det - - // THIS THE POINTER TO THE MONO HIT OF A MATCHED HIT - const SiStripRecHit2D *monohit=matchedhit->monoHit(); - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > monocluster=monohit->cluster(); - const GeomDetUnit * monodet=gdet->monoDet(); - - LocalVector monotkdir=monodet->toLocal(gtrkdir); - //size=(monocluster->amplitudes()).size(); - if(monotkdir.z()!=0){ - - // THE LOCAL ANGLE (MONO) - // float angle = atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi(); - float angle=acos(cosineangle(monotkdir)); // [modified by Andrea] - // - hitangleassociation.push_back(make_pair(monohit, angle)); - // std::cout<<"Angle="<<atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi()<<std::endl; - - - //cluster and trackdirection on stereo det - - // THIS THE POINTER TO THE STEREO HIT OF A MATCHED HIT - const SiStripRecHit2D *stereohit=matchedhit->stereoHit(); - - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > stereocluster=stereohit->cluster(); - const GeomDetUnit * stereodet=gdet->stereoDet(); - LocalVector stereotkdir=stereodet->toLocal(gtrkdir); - //size=(stereocluster->amplitudes()).size(); - if(stereotkdir.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - // float angle = atan(stereotkdir.x()/stereotkdir.z())*180/TMath::Pi(); - float angle=acos(cosineangle(stereotkdir)); // [modified by Andrea] - hitangleassociation.push_back(make_pair(stereohit, angle)); - - } - } - } - else if(hit){ - // hit= POINTER TO THE RECHIT - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > cluster=hit->cluster(); - //size=(cluster->amplitudes()).size(); - - - if(trackdirection.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - // float angle = atan(trackdirection.x()/trackdirection.z())*180/TMath::Pi(); - float angle=acos(cosineangle(trackdirection)); // [modified by Andrea] - hitangleassociation.push_back(make_pair(hit, angle)); - } - } - else if(pixelhit){ // [added by Andrea] - const edm::Ref<edm::DetSetVector<SiPixelCluster>, SiPixelCluster, edm::refhelper::FindForDetSetVector<SiPixelCluster> > cluster=pixelhit->cluster(); - float angle=acos(cosineangle(trackdirection)); - // cout << "angle = " << angle << endl; - hitangleassociation.push_back(make_pair(pixelhit, angle)); - } - - LogDebug("TrackLocalAngle")<<"I found "<<i<<" hits."; - } - } - return hitangleassociation; -} - - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngle::findtrackangle(const TrajectorySeed& seed, - - const reco::Track& theT){ - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - - - seed_plus=(seed.direction()==alongMomentum); - - - - //services - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Start find track angle"; - if (seed_plus) { - thePropagator= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) );} - else { - thePropagator= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - } - - - - - - theUpdator= new KFUpdator(); - theEstimator= new Chi2MeasurementEstimator(30); - - - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Now construct the KF fitters"; - - - - - const KFTrajectoryFitter theKFFitter= KFTrajectoryFitter(*thePropagator, - *theUpdator, - *theEstimator) ; - const KFTrajectorySmoother theKFSmoother= KFTrajectorySmoother(*thePropagatorOp, - *theUpdator, - *theEstimator); - - - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Contructing Trajectory State of seeds"; - theFitter = new KFFittingSmoother(theKFFitter,theKFSmoother); - // TrajectoryStateOnSurface startingState=startingTSOS(seed); - const TrajectoryStateOnSurface startingState=startingTSOS(seed); - - - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - - - - tmp.push_back(RHBuilder->build(&**i )); - // } - } - - - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - - - return buildTrack(hits, startingState, seed); -} - - -TrajectoryStateOnSurface TrackLocalAngle::startingTSOS(const TrajectorySeed& seed)const -{ - PTrajectoryStateOnDet pState( seed.startingState()); - const GeomDet* gdet = (&(*tracker))->idToDet(DetId(pState.detId())); - TrajectoryStateOnSurface State= tsTransform.transientState( pState, &(gdet->surface()), - &(*magfield)); - return State; - -} - - -double TrackLocalAngle::cosineangle(LocalVector trackdirection) // [added by Andrea] -{ - // z: along module thickness, x: along shortest module dimension, y: along longest module direction - double cosineangle=0.; - cosineangle = trackdirection.z()/trackdirection.mag(); - return cosineangle; -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngleNew.cc b/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngleNew.cc deleted file mode 100644 index ae0f5a7c40a..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/src/TrackLocalAngleNew.cc +++ /dev/null @@ -1,320 +0,0 @@ - -#include <memory> -#include <string> -#include <iostream> -#include <TMath.h> - -#include "AnalysisExamples/SiStripDetectorPerformance/interface/TrackLocalAngleNew.h" - -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "TrackingTools/Records/interface/TrackingComponentsRecord.h" -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "TrackingTools/TrackFitters/interface/KFFittingSmoother.h" - -using namespace std; -TrackLocalAngleNew::TrackLocalAngleNew(edm::ParameterSet const& conf) : - conf_(conf) -{ -} -void TrackLocalAngleNew::init(const edm::Event& e, const edm::EventSetup& es){ - - // - // get geometry - // - edm::ESHandle<TrackerGeometry> estracker; - es.get<TrackerDigiGeometryRecord>().get(estracker); - tracker=&(* estracker); - // - // get magnetic field - // - edm::ESHandle<MagneticField> esmagfield; - es.get<IdealMagneticFieldRecord>().get(esmagfield); - magfield=&(*esmagfield); - - // - // get the fitter - // - if(!(conf_.getParameter<bool>("MTCCtrack"))){ - edm::ESHandle<TrajectoryFitter> fitter; - LogDebug("TrackLocalAngleNew") << "get the fitter from the ES" << "\n"; - std::string fitterName = conf_.getParameter<std::string>("Fitter"); - es.get<TrackingComponentsRecord>().get(fitterName,fitter); - theFitter=&(*fitter); - - // - // get also the propagator - // - edm::ESHandle<Propagator> propagator; - LogDebug("TrackLocalAngleNew") << "get also the propagator" << "\n"; - std::string propagatorName = conf_.getParameter<std::string>("Propagator"); - es.get<TrackingComponentsRecord>().get(propagatorName,propagator); - thePropagator=&(*propagator); - } - // - // get the builder - // - edm::ESHandle<TransientTrackingRecHitBuilder> builder; - LogDebug("TrackLocalAngleNew") << "get also the TransientTrackingRecHitBuilder" << "\n"; - std::string builderName = conf_.getParameter<std::string>("TTRHBuilder"); - es.get<TransientRecHitRecord>().get(builderName,builder); - RHBuilder=&(*builder); - - // Clean up Angles vectors - oXZHitAngle.clear(); - oYZHitAngle.clear(); - - oLocalDir.clear(); - oGlobalDir.clear(); -} - -// Virtual destructor needed. -TrackLocalAngleNew::~TrackLocalAngleNew() { -} - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngleNew::findtrackangle(const reco::Track& theT) -{ - // int cont = 0; - //convert the TrackingRecHit vector to a TransientTrackingRecHit vector - //meanwhile computes the number of degrees of freedom - LogDebug("TrackLocalAngleNew") << "Start\n"; - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - tmp.push_back(RHBuilder->build(&**i )); - } - LogDebug("TrackLocalAngleNew") << "Transient rechit filled" << "\n"; - - //SORT RECHITS ALONGMOMENTUM - const TransientTrackingRecHit::ConstRecHitPointer *firstHit; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.begin(); it!=tmp.end();it++){ - if ((**it).isValid()) { - firstHit = &(*it); - break; - } - } - const TransientTrackingRecHit::ConstRecHitPointer *lastHit; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1; it!=tmp.begin()-1;it--){ - if ((**it).isValid()) { - lastHit= &(*it); - break; - } - } - if ((*firstHit)->globalPosition().mag2() > ((*lastHit)->globalPosition().mag2()) ){ - //FIXME temporary should use reverse - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - } else hits=tmp; - - reco::TransientTrack theTT(theT, thePropagator->magneticField() ); - - // TrajectoryStateOnSurface theTSOS=theTT.impactPointState(); - // theTSOS.rescaleError(100); - - TrajectoryStateOnSurface firstState=thePropagator->propagate(theTT.impactPointState(), hits.front()->det()->surface()); - AlgebraicSymMatrix C(5,1); - C *= 100.; - TrajectoryStateOnSurface theTSOS( firstState.localParameters(), LocalTrajectoryError(C), - firstState.surface(), - thePropagator->magneticField()); - - LogDebug("TrackLocalAngleNew") << "Initial TSOS\n" << theTSOS << "\n"; - - const TrajectorySeed * seed = new TrajectorySeed();//empty seed: not needed - //buildTrack - return buildTrack(hits, theTSOS, *seed); - // return buildTrack(theTSOS, *seed); -} - -std::vector< std::pair<const TrackingRecHit*,float> > TrackLocalAngleNew::buildTrack( - TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed) -{ - //variable declarations - std::vector<Trajectory> trajVec; - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - Trajectory * theTraj; - - //perform the fit: the result's size is 1 if it succeded, 0 if fails - trajVec = theFitter->fit(seed, hits, theTSOS); - - LogDebug("TrackProducer") <<" FITTER FOUND "<< trajVec.size() << " TRAJECTORIES" <<"\n"; - - if (trajVec.size() != 0){ - - theTraj = new Trajectory( trajVec.front() ); - - LogDebug("TrackLocalAngleNew") <<"track done"; - std::vector<TrajectoryMeasurement> TMeas=theTraj->measurements(); - - std::vector<TrajectoryMeasurement>::iterator itm; - int i=0; - LogDebug("TrackLocalAngleNew::findtrackangle")<<"Loop on rechit and TSOS"; - for (itm=TMeas.begin();itm!=TMeas.end();itm++){ - //std::cout<<"hit: "<<i++<<std::endl; - TrajectoryStateOnSurface tsos=itm->updatedState(); - const TransientTrackingRecHit::ConstRecHitPointer thit=itm->recHit(); - const SiStripMatchedRecHit2D* matchedhit=dynamic_cast<const SiStripMatchedRecHit2D*>((*thit).hit()); - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>((*thit).hit()); - LocalVector trackdirection=tsos.localDirection(); - if(matchedhit){//if matched hit... - - GluedGeomDet * gdet=(GluedGeomDet *)tracker->idToDet(matchedhit->geographicalId()); - - GlobalVector gtrkdir=gdet->toGlobal(trackdirection); - std::cout<<"Track direction trasformed in global direction"<<std::endl; - - //cluster and trackdirection on mono det - - // THIS THE POINTER TO THE MONO HIT OF A MATCHED HIT - const SiStripRecHit2D *monohit=matchedhit->monoHit(); - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > monocluster=monohit->cluster(); - const GeomDetUnit * monodet=gdet->monoDet(); - - LocalVector monotkdir=monodet->toLocal(gtrkdir); - //size=(monocluster->amplitudes()).size(); - if(monotkdir.z()!=0){ - - // THE LOCAL ANGLE (MONO) - float angle = atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi(); - // - hitangleassociation.push_back(make_pair(monohit, angle)); - oXZHitAngle.push_back( make_pair( monohit, atan( monotkdir.x() / monotkdir.z()))); - oYZHitAngle.push_back( make_pair( monohit, atan( monotkdir.y() / monotkdir.z()))); - oLocalDir.push_back( make_pair( monohit, monotkdir)); - oGlobalDir.push_back( make_pair( monohit, gtrkdir)); - // std::cout<<"Angle="<<atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi()<<std::endl; - - - - //cluster and trackdirection on stereo det - - // THIS THE POINTER TO THE STEREO HIT OF A MATCHED HIT - const SiStripRecHit2D *stereohit=matchedhit->stereoHit(); - - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > stereocluster=stereohit->cluster(); - const GeomDetUnit * stereodet=gdet->stereoDet(); - LocalVector stereotkdir=stereodet->toLocal(gtrkdir); - //size=(stereocluster->amplitudes()).size(); - if(stereotkdir.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - float angle = atan(stereotkdir.x()/stereotkdir.z())*180/TMath::Pi(); - hitangleassociation.push_back(make_pair(stereohit, angle)); - oXZHitAngle.push_back( make_pair( stereohit, atan( stereotkdir.x() / stereotkdir.z()))); - oYZHitAngle.push_back( make_pair( stereohit, atan( stereotkdir.y() / stereotkdir.z()))); - oLocalDir.push_back( make_pair( stereohit, stereotkdir)); - oGlobalDir.push_back( make_pair( stereohit, gtrkdir)); - } - } - } - else if(hit){ - // hit= POINTER TO THE RECHIT - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > cluster=hit->cluster(); - //size=(cluster->amplitudes()).size(); - - - if(trackdirection.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - float angle = atan(trackdirection.x()/trackdirection.z())*180/TMath::Pi(); - hitangleassociation.push_back(make_pair(hit, angle)); - oXZHitAngle.push_back( make_pair( hit, atan( trackdirection.x() / trackdirection.z()))); - oYZHitAngle.push_back( make_pair( hit, atan( trackdirection.y() / trackdirection.z()))); - oLocalDir.push_back( make_pair( hit, trackdirection)); - oGlobalDir.push_back( make_pair( hit, tsos.globalDirection())); - } - } - LogDebug("TrackLocalAngleNew")<<"I found "<<i<<" hits."; - } - } - return hitangleassociation; -} - - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngleNew::findtrackangle(const TrajectorySeed& seed, - const reco::Track& theT){ - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - seed_plus=(seed.direction()==alongMomentum); - //services - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Start find track angle"; - if (seed_plus) { - thePropagator= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) );} - else { - thePropagator= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - } - - theUpdator= new KFUpdator(); - theEstimator= new Chi2MeasurementEstimator(30); - - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Now construct the KF fitters"; - - const KFTrajectoryFitter theKFFitter= KFTrajectoryFitter(*thePropagator, - *theUpdator, - *theEstimator) ; - const KFTrajectorySmoother theKFSmoother= KFTrajectorySmoother(*thePropagatorOp, - *theUpdator, - *theEstimator); - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Contructing Trajectory State of seeds"; - theFitter = new KFFittingSmoother(theKFFitter,theKFSmoother); - const TrajectoryStateOnSurface startingState=startingTSOS(seed); - - - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - tmp.push_back(RHBuilder->build(&**i )); - // } - } - - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - - return buildTrack(hits, startingState, seed); -} - - -TrajectoryStateOnSurface TrackLocalAngleNew::startingTSOS(const TrajectorySeed& seed)const -{ - PTrajectoryStateOnDet pState( seed.startingState()); - const GeomDet* gdet = (&(*tracker))->idToDet(DetId(pState.detId())); - TrajectoryStateOnSurface State= tsTransform.transientState( pState, &(gdet->surface()), - &(*magfield)); - return State; - -} - - diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/ClusterAnalysis.sh b/AnalysisExamples/SiStripDetectorPerformance/test/ClusterAnalysis.sh deleted file mode 100755 index f77f9206931..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/ClusterAnalysis.sh +++ /dev/null @@ -1,157 +0,0 @@ -#!/bin/sh -#Author domenico.giordano@cern.ch - -function usage(){ - echo -e "\n[usage] ClusterAnalysis.sh [options]" - echo -e " -help this message" - echo -e " -InputFilePath=<path>" - echo -e " -TestArea=<path>" - echo -e " -Flag=<a flag>" - echo -e " -CondDb=<sqlite>, <devdb10>, <orcon>, <orcoff> (default is orcoff)" - echo -e " -sqliteDb=<dbfile> (needed for CondDb=sqlite - default is /tmp/$USER/dummy_<runNb>.db)" - echo -e " -sqliteCatalog=<dbcatalog> (needed for CondDb=sqlite - default is /tmp/$USER/dummy_<runNb>.db )" - echo -e " -castor=<file name, or regular-expression> (to get input files from castor)" - echo -e " -geometry=<TAC>, <MTCC> (default is MTCC)" - - echo -e "\nEXAMPLES:" - echo -e "\n\tSingle Local File access" - echo -e "\n\t\t./ClusterAnalysis.sh -CondDb=orcoff -geometry=MTCC -InputFilePath=/data/giordano/ClusterAnalysis/data/2501/reco_full_2501.root -Flag=Run2501" - - echo -e "\n\tMultiple Local Files access" - echo -e "\n\t\t./ClusterAnalysis.sh -CondDb=orcoff -geometry=MTCC -InputFilePath=/data/giordano/ClusterAnalysis/data/25[0-4]\*/\*full\* -Flag=Runs2501-2549" - - echo -e "\n\tSingle Castor File access" - echo -e "\n\t\t./ClusterAnalysis.sh -CondDb=orcoff -geometry=MTCC -InputFilePath=/castor/cern.ch/cms/testbeam/tkmtcc/P5_data/tracker_reprocessing/pass2 -castor=2501_reco_full.root -Flag=Run2501" - - echo -e "\n\tMultiple Castor Files access (using regular expressions)" - echo -e "\n\t\t./ClusterAnalysis.sh -CondDb=orcoff -geometry=MTCC -InputFilePath=/castor/cern.ch/cms/testbeam/tkmtcc/P5_data/tracker_reprocessing/pass2 -castor='26\(\(3[7-9]\)\|\(4[0-2]\)\)_reco_full.root' -Flag=Runs2637-2642" - - echo -e "\n\t\t./ClusterAnalysis.sh -CondDb=orcoff -geometry=MTCC -InputFilePath=/castor/cern.ch/cms/testbeam/tkmtcc/P5_data/tracker_reprocessing/pass2_with_alignment -castor='26\(\(3[7-9]\)\|\(4[0-2]\)\)_reco_full.root' -Flag=Runs2637-2642_Align" - - echo - exit -} - - -function getLocalRunList(){ -#Create input file list - - inputfilenames="" - for file in `ls ${InputFilePath}` - do - [ ! -e $file ] && continue - inputfilenames="${inputfilenames},\"file:$file\"" - done - - inputfilenames=`echo $inputfilenames | sed -e "s@,@@"` - echo $inputfilenames -} - -function getCastorRunList(){ -#Create input file list - inputfilenames="" - for file in `nsls ${InputFilePath} | grep -E $castor 2> /dev/null` - do - inputfilenames="${inputfilenames},\"castor:${InputFilePath}/$file\"" - done - - inputfilenames=`echo $inputfilenames | sed -e "s@,@@"` - echo $inputfilenames -} - -function getRunList(){ - - if [ "$castor" != "0" ]; then - getCastorRunList - else - getLocalRunList - fi -} - -function getParameter(){ - what=$1 - shift - where=$@ - if [ `echo $where | grep -c "\-$what="` = 1 ]; then - eval $what=`echo $where | awk -F"${what}=" '{print $2}' | awk '{print $1}'` - elif [ `echo $where | grep -c "\-$what"` = 1 ]; then - eval $what=1 - eval $what=\$$# - else - let c=$#-1 - shift $c - eval $what=$1 - fi -} - -################# -## MAIN -################# - -[ `echo $@ | grep -c "\-help"` = 1 ] && usage; - -test_area=/tmp/$USER/ClusterAnalysis - -getParameter InputFilePath $@ . -getParameter TestArea $@ ${test_area} -getParameter Flag $@ "" -getParameter CondDb $@ orcoff -getParameter sqliteDb $@ ${TestArea}/dummy_${run}.db -getParameter sqliteCatalog $@ ${TestArea}/dummy_${run}.xml -getParameter castor $@ 0 -getParameter geometry $@ MTCC - -[ ! -e ${TestArea} ] && mkdir -p ${TestArea} - -if [ "$CondDb" == "sqlite" ] && [ "$sqliteDb" != "" ] && [ "$sqliteCatalog" != "" ]; - then - DBfile="sqlite_file:${sqliteDb}" - DBcatalog="file:${sqliteCatalog}" -elif [ "$CondDb" == "devdb10" ]; then - DBfile="oracle://devdb10/CMS_COND_STRIP" - DBcatalog="relationalcatalog_oracle://devdb10/CMS_COND_GENERAL" -elif [ "$CondDb" == "orcon" ]; then - DBfile="oracle://orcon/CMS_COND_STRIP" - DBcatalog="relationalcatalog_oracle://orcon/CMS_COND_GENERAL" -elif [ "$CondDb" == "orcoff" ]; then - DBfile="oracle://cms_orcoff_int2r/CMS_COND_STRIP" - DBcatalog="relationalcatalog_oracle://cms_orcoff_int2r/CMS_COND_GENERAL" -else - echo -e "\nERROR: Wrong options" - usage -fi - -echo -e "\n -InputFilePath=$InputFilePath" -echo -e " -TestArea=$TestArea" -echo -e " -Flag=$Flag" -echo -e " -geometry=$geometry" -echo -e " -castor=$castor" -echo -e " -CondDb=$CondDb" -if [ "$CondDb" = "sqlite" ]; then - echo -e " -sqliteDb=${sqliteDb}" - echo -e " -sqliteCatalog=${sqliteCatalog}" -fi -echo " " - -root_filename=${TestArea}/ClusterAnalysis_${Flag}.root -ps_filename=${TestArea}/ClusterAnalysis_${Flag}.ps -cfg_file=${TestArea}/ClusterAnalysis_${Flag}.cfg - -echo ${cfg_file} - -export CORAL_AUTH_PATH=/afs/cern.ch/cms/DB/conddb - -eval `scramv1 runtime -sh` - -inputfilelist=`getRunList` - -[ "$inputfilelist" == "" ] && echo "No file exists for the specified path" && exit - -cat template_ClusterAnalysis.cfg | sed -e "s@#${geometry}@@g" -e "s#insert_DBfile#$DBfile#" -e "s#insert_DBcatalog#$DBcatalog#" -e "s#insert_root_filename#${root_filename}#" -e "s#insert_ps_filename#${ps_filename}#" -e "s#insert_input_file_list#$inputfilelist#" > ${cfg_file} -echo "cmsRun ${cfg_file}" -cmsRun ${cfg_file} > ${TestArea}/ClusterAnalysis_${Flag}.out - -echo -e "\nlog file " ${TestArea}/ClusterAnalysis_${Flag}.out -echo -echo -e "\nroot file and postscript file with histos can be found in ${TestArea}\n\t ${root_filename} \n\t ${ps_filename}" -echo -e "\nto see .ps file do\ngv ${ps_filename}&" diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/BadStrips.C b/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/BadStrips.C deleted file mode 100644 index 694d65ee9f8..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/BadStrips.C +++ /dev/null @@ -1,182 +0,0 @@ -#include <iostream> -#include <stdio.h> -#include <string.h> -#include <sstream> - -//Global variables - -float LowTh; //sigmas -float HighTh; //sigmas -float AbsLowThNoise; //noise -float AbsHighThNoise; //noise - -Float_t Sbin,S2bin,Mean,Mean2,stddev,diff; - -char filename[128]; - -TFile *f, *g; -TPostScript *ps; -TCanvas *C; - - - -///comparing new and old badstrips - -void compare(TH1F *h1, TH1F *h2, TH1F *h){ - int difbad=0; - - - for(int i=1; i<=h1->GetNbinsX(); i++){ - if ((h1->GetBinContent(i))!=(h2->GetBinContent(i))){ - //cout<<" badstrip number "<< i << " of " << h2->GetName() <<" is different!!!! "<< endl; - difbad++; - } - } - if (difbad!=0){ - cout<<" the number of different badstrips in module " << h1->GetTitle() << " is "<< difbad <<"\n"<< endl; - char title[128]; - sprintf(title,"Bad Strips for mod %s",h1->GetTitle()); - THStack* stack =new THStack(title,title); - h1->SetFillColor(kBlue); - h2->SetFillColor(kRed); - stack->Add(h1); - stack->Add(h2); - C->cd(1); - stack->Draw(); - C->cd(2); - h->Draw(); - C->Draw(); - C->Update(); - ps->NewPage(); - }else{ - cout<< "every badstrip is the same"<< endl; - } -} - - - -void apvStudy(int iApv, TH1F *histo, TH1F *histo1){ - Int_t Nbin=0; - - int Nbads=0; - int ibinStart= iApv*128; //iApv=0 ibinStart=0; iApv=1 ibinStart=128; etc - int ibinStop= (iApv+1)*128; //iApv=0 ibinStop=128; iApv=1 ibinStop=256; etc - for (Int_t i=ibinStart; i<ibinStop; i++){ - Sbin += histo->GetBinContent(i+1); - S2bin += histo->GetBinContent(i+1)*histo->GetBinContent(i+1); - Nbin++; - } - - Mean = Sbin/Nbin; - Mean2 = S2bin/Nbin; - stddev=sqrt(Mean2-Mean*Mean); - - for (Int_t i=ibinStart; i<ibinStop; i++) - { - if(histo->GetBinContent(i+1)>AbsLowThNoise && histo->GetBinContent(i+1)<AbsHighThNoise){ - if(histo->GetBinContent(i+1)>Mean+HighTh*stddev || histo->GetBinContent(i+1)<Mean-LowTh*stddev){ - std::cout<< "!!!!!! Module " << histo->GetTitle() << " Strip number " << i << " is a badstrip !!!!!"<< std::endl; - histo1->SetBinContent(i+1,1.); - Nbads++; - } - } - else{ - std::cout<< "****** Module " << histo->GetTitle() << " Strip Noise= "<<histo->GetBinContent(i+1) <<" OUT RANGE:("<< AbsLowThNoise<<" , "<<AbsHighThNoise<< ") Strip number "<< i << " is a badstrip !!!!!"<< std::endl; - histo1->SetBinContent(i+1,1.); - Nbads++; - } - if(Nbads > 20&&i==ibinStop-1) std::cout<< "&&&&&& Module " << histo->GetTitle() <<"has "<<Nbads<< " bad strips "<< std::endl; - } - - - - if(Nbads==0){ - // cout<< " All strips are good! "<<endl; - } - // cout<< " ____________ "<<endl; -} - - -BadStrips(char *inputfilename, char *outputfilename, float LowTh_=3, float HighTh_=5, float AbsLowThNoise_=2, float AbsHighThNoise_=6){ - - LowTh=LowTh_; - HighTh=HighTh_; - AbsLowThNoise=AbsLowThNoise_; - AbsHighThNoise=AbsHighThNoise_; - //char histos; - int NTotalBins; - float xlow=0; - - f=new TFile(inputfilename); - g=new TFile(outputfilename,"RECREATE"); - g->mkdir("NewBadStrips"); - g->mkdir("Noises"); - - C= new TCanvas(); - C->Divide(1,2); - - - - - - char psfilename[128]; - char * pch; - strcat(psfilename,outputfilename); - pch = strstr(psfilename,".root"); - strncpy (pch,".ps\0",4); - cout << "psfilename " << psfilename << endl; - ps = new TPostScript(psfilename,121); - - - f->cd("Noises"); - - TIter nextkey(gDirectory->GetListOfKeys()); - TKey *key; - while (key = (TKey*)nextkey()) { - TH1F* h = (TH1F*)key->ReadObj(); - - char *titolo; - titolo = h->GetTitle(); - if (strstr(titolo,"Cumulative")) - continue; - char mybadTitle[200]; - sprintf(mybadTitle,"BadStrips_%s",&titolo[7]); - - - TH1F *h1 = new TH1F(mybadTitle,mybadTitle,h->GetNbinsX(),-0.5,h->GetNbinsX()-0.5); - - - for (int iApv=0;iApv<(Int_t)((h->GetNbinsX())/128); iApv++){ - // std::cout << "\n\nAPV i= " << iApv << " of "<< (Int_t)((h->GetNbinsX())/128) << " APVs in module" << &titolo[23] << "\n\n" << std::endl; - Sbin=0; - S2bin=0; - Mean=0; - Mean2=0; - stddev=0; - diff=0; - apvStudy(iApv,h,h1); - } - g->cd("NewBadStrips"); - h1->Write(); - g->cd("Noises"); - h->Write(); - - char badstripTitle[128]; - sprintf(badstripTitle,"BadStrips/"); - strcat(badstripTitle,h1->GetTitle()); - - TH1F* h2 = (TH1F*) f->Get(badstripTitle);///////h2 is in BadStrips /////h is in NewBadStrips - - compare(h1,h2,h); - f->cd("Noises"); - - } - - //save(); - - f->Close(); - g->Close(); - ps->Close(); -} - - diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.C b/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.C deleted file mode 100644 index 2f1184748cd..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.C +++ /dev/null @@ -1,406 +0,0 @@ -/* -* $Date: 2006/11/06 13:26:13 $ -* $Revision: 1.1 $ -* -* \author: D. Giordano, domenico.giordano@cern.ch -*/ - - -#include <iostream> -#include <stdio.h> -#include <string.h> -#include <pair> -#include <map> -#include <vector> - -gROOT->Reset(); - -//&&&&&&&&&&&&&&&&&&&& -//Global variables -//&&&&&&&&&&&&&&&&&&&& - -//--------------------------------- -//User Defined Variables - -char outFile[128]="NoiseEvolution"; -char path[128]; //="/castor/cern.ch/user/g/giordano/MTCC/Display/Display_PedNoise_RunNb"; -//char path[128]="/data/giordano/Display/Display_PedNoise_RunNb"; - -int histoBins=60; -float histoMin=-1.; -float histoMax= 1.; - -int minIov=100000000; -int maxIov=0; - -//End User Defined Variables -//--------------------------------- - -float profileAlpha= 0.2; - -char inFile[128], refFile[128]; -TRFIOFile *inFile_, *refFile_; -TFile *outFile_; - -TH1F *inH, *refH, *outH; - -TCanvas * C; - -//int iov[11]={2354,2371,2440,2459,2475,2500,2515,2554,2601,2644,10000}; -//int iovDim = 11; -int *iov; -int iovDim; - -char *SubDet[4]={"TIB","TID","TOB","TEC"}; - -char *SubNamePtr; -std::vector<string> vHistoNames; -std::vector<int> vHistoNBinsX; -std::vector<string> vLayerName; - -TObjArray Hlist(0); - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void GetRuns(char* path_,char* RunsList_){ - strcat(path,path_); - - char tmp[1024]; - strcat(tmp,RunsList_); - - char* pch = strtok (tmp," "); - iovDim=0; - while (pch != NULL){ - pch = strtok (NULL, " "); - iovDim++; - } - - cout << "iovDim " << iovDim << endl; - iov = new int[iovDim]; - char* pch = strtok (RunsList_," "); - int i=0; - cout << " RunList " << endl; - while (pch != NULL){ - iov[i] = atoi(pch); - pch = strtok (NULL, " "); - cout << iov[i] << endl; - - if (iov[i]>maxIov) - maxIov=iov[i]; - if (iov[i]<minIov) - minIov=iov[i]; - - i++; - } - cout << endl; -} - -void book(){ - cout << "\n[book]\n" << endl; - - char filename[128]; - sprintf(filename,"%s.root",outFile); - outFile_ = new TFile(filename,"RECREATE"); - - for (int i=1;i<iovDim;i++){ - char dirName[128]; - sprintf(dirName,"IOV_%d",iov[i]); - cout << dirName << endl; - outFile_->mkdir(dirName); - outFile_->cd(dirName); - - gDirectory->mkdir("DetId"); - gDirectory->mkdir("Layer"); - gDirectory->mkdir("SubDet"); - - gDirectory->cd("DetId"); - //Make Histos for each detector - for (int j=0;j<vHistoNames.size();j++){ - //cout << "vHistoName " << vHistoNames[j] << endl; - char newName[128]; - SubNamePtr=((strstr(vHistoNames[j].c_str(),":"))+1); - sprintf(newName,"NoiseVariationProfile_%s_%s",SubNamePtr,dirName); - //cout << "newName " << newName << endl; - Hlist.Add(new TH1F(newName,newName,vHistoNBinsX[j],-0.5,vHistoNBinsX[j]-0.5)); - sprintf(newName,"NoiseVariation_%s_%s",SubNamePtr,dirName); - Hlist.Add(new TH1F(newName,newName,histoBins,histoMin,histoMax)); - } - - gDirectory->cd("../Layer"); - //Make Histos for each layer - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"NoiseVariation_%s_%s",vLayerName[j].c_str(),dirName); - Hlist.Add(new TH1F(newName,newName,histoBins,histoMin,histoMax)); - sprintf(newName,"NoiseComparison_%s_%s",vLayerName[j].c_str(),dirName); - Hlist.Add(new TH2F(newName,newName,histoBins,0,10,histoBins,0,10)); - } - - gDirectory->cd("../SubDet"); - //Make Histos hor each SubDet - Hlist.Add(new TH1F("NoiseVariation_TIB_"+TString(dirName),"NoiseVariation_TIB_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("NoiseVariation_TOB_"+TString(dirName),"NoiseVariation_TOB_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("NoiseVariation_TEC_"+TString(dirName),"NoiseVariation_TEC_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("NoiseVariation_TID_"+TString(dirName),"NoiseVariation_TID_"+TString(dirName),histoBins,histoMin,histoMax)); - } - - gDirectory->cd("../.."); - - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"pNoiseVariation_%s",vLayerName[j].c_str()); - Hlist.Add(new TProfile(newName,newName,iovDim,minIov,maxIov,histoMin,histoMax)); - } - - Hlist.Add(new TProfile("pNoiseVariation_TIB","pNoiseVariation_TIB",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pNoiseVariation_TID","pNoiseVariation_TID",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pNoiseVariation_TOB","pNoiseVariation_TOB",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pNoiseVariation_TEC","pNoiseVariation_TEC",iovDim,minIov,maxIov,histoMin,histoMax)); - - outFile_->cd(); -} - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void LayerName(char* input,char* output){ - - char *pch; - - for(int i=0;i<4;i++){ - pch=strstr(input,SubDet[i]); - if (pch != NULL){ - sprintf(output,"%s_",SubDet[i]); - char *qch = strstr(input,"Rphi"); - if ( qch != NULL){ - if (SubDet[i]!="TEC" && SubDet[i]!="TID") - strncat(output,qch,5); - else - strncat(output,--qch,5); - }else{ - qch = strstr(input,"Ster"); - if (qch != NULL ){ - if (SubDet[i]!="TEC" && SubDet[i]!="TID") - strncat(output,qch,5); - else - strncat(output,--qch,5); - } else { - cout << "ERROR: module isn't Rphi or Stereo" << endl; - } - } - break; - } - } -} - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void save(){ - cout << "\n[save]\n" << endl; - - //gDirectory->cd(); - - std::cout << "........ saving file "<< outFile_->GetName() << std::endl; - outFile_->Write(); - std::cout << "........ done"<< std::endl; - - char filename[128]; - sprintf(filename,"%s.ps",outFile); - std::cout << "........ opening file "<< filename << std::endl; - TPostScript ps(filename,121); - - //outFile_->cd("IOV_2371/DetId"); - //gDirectory->ls(); - TCanvas myCanvas; - myCanvas.Draw(); - - for (int i=1;i<iovDim;i++){ - //Make Histos for each layer - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - myCanvas.SetLogy(1);; - sprintf(newName,"IOV_%d/Layer/NoiseVariation_%s_IOV_%d",iov[i],vLayerName[j].c_str(),iov[i]); - if (((TH1F*) outFile_->Get(newName))->GetEntries()){ - ((TH1F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - myCanvas.SetLogy(0); - sprintf(newName,"IOV_%d/Layer/NoiseComparison_%s_IOV_%d",iov[i],vLayerName[j].c_str(),iov[i]); - if (((TH2F*) outFile_->Get(newName))->GetEntries()){ - ((TH2F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - } - - myCanvas.SetLogy(1); - for (int j=0;j<4;j++){ - sprintf(newName,"IOV_%d/SubDet/NoiseVariation_%s_IOV_%d",iov[i],SubDet[j],iov[i]); - if (((TH1F*) outFile_->Get(newName))->GetEntries()){ - ((TH1F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - } - myCanvas.SetLogy(0); - } - - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"pNoiseVariation_%s",vLayerName[j].c_str()); - float Max = ((TProfile*) outFile_->Get(newName))->GetMaximum(); - float Min = ((TProfile*) outFile_->Get(newName))->GetMinimum(); - ((TProfile*) outFile_->Get(newName))->SetMaximum((1+profileAlpha)*Max-profileAlpha*Min); - ((TProfile*) outFile_->Get(newName))->SetMinimum((1+profileAlpha)*Min-profileAlpha*Max); - ((TProfile*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - for (int j=0;j<4;j++){ - char newName[128]; - sprintf(newName,"pNoiseVariation_%s",SubDet[j]); - float Max = ((TProfile*) outFile_->Get(newName))->GetMaximum(); - float Min = ((TProfile*) outFile_->Get(newName))->GetMinimum(); - ((TProfile*) outFile_->Get(newName))->SetMaximum((1+profileAlpha)*Max-profileAlpha*Min); - ((TProfile*) outFile_->Get(newName))->SetMinimum((1+profileAlpha)*Min-profileAlpha*Max); - ((TProfile*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - // for (int ih=0; ih<Hlist.GetEntries();ih++){ - // Hlist.At(ih)->Draw(); - //myCanvas.Update(); - //ps.NewPage(); - //} - ps.Close(); - std::cout << "........ closed"<< std::endl; - std::cout << "to see the file please do \n gv " << filename << std::endl; - - outFile_->Close(); -} - -void variation(TH1F* in, TH1F* ref, int iov){ - - char inName[128]; - char outName[128]; - TH1F* outH1[4]; - TH2F* outH2; - TProfile* outP[2]; - - strcpy(inName,in->GetTitle()); - SubNamePtr=((strstr(inName,":"))+1); - sprintf(outName,"IOV_%d/DetId/NoiseVariationProfile_%s_IOV_%d",iov,SubNamePtr,iov); - outH1[0] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"IOV_%d/DetId/NoiseVariation_%s_IOV_%d",iov,SubNamePtr,iov); - outH1[1] = (TH1F*) outFile_->Get(outName); - - char tmp[128]; - LayerName(inName,tmp); - sprintf(outName,"IOV_%d/Layer/NoiseVariation_%s_IOV_%d",iov,tmp,iov); - outH1[2] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"IOV_%d/Layer/NoiseComparison_%s_IOV_%d",iov,tmp,iov); - outH2 = (TH2F*) outFile_->Get(outName); - - sprintf(outName,"pNoiseVariation_%s",tmp); - outP[0] = (TProfile*) outFile_->Get(outName); - - char det[4]; - det[3]='\0'; - strncpy(det,tmp,3); - - sprintf(outName,"IOV_%d/SubDet/NoiseVariation_%s_IOV_%d",iov,det,iov); - // cout << outName << endl; - outH1[3] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"pNoiseVariation_%s",det); - outP[1] = (TProfile*) outFile_->Get(outName); - - float delta; - for (int i=1;i<=in->GetNbinsX();i++){ - // cout << " i = " << i << " " << in->GetBinContent(i) << endl; - - if (ref->GetBinContent(i)) - delta= in->GetBinContent(i)/ref->GetBinContent(i) - 1 ; - else - -9999; - - outH1[0]->SetBinContent(i,delta); - - for (int j=1;j<4;j++) - outH1[j]->Fill(delta); - - outH2->Fill(ref->GetBinContent(i),in->GetBinContent(i)); - - int iov_= iov;//==10000 ? 2700 : iov; - for (int j=0;j<2;j++) - outP[j]->Fill(iov_,delta); - - } -} - -void loop(int iov){ - - //Loop on detectors - for (int j=0;j<vHistoNames.size();j++){ - - //cout << vHistoNames[j] << endl; - char hTitle[128]; - sprintf(hTitle,"Noises/%s",vHistoNames[j].c_str()); - //cout << hTitle << endl; - inH = (TH1F*) inFile_->Get(hTitle); - refH = (TH1F*) refFile_->Get(hTitle); - - variation(inH,refH,iov); - } -} - -NoiseEvolution(char* path_, char* RunsList_){ - - - GetRuns(path_,RunsList_); - - //Open Reference File - sprintf(refFile,"%s/Display_PedNoise_RunNb_%d.root",path,iov[0]); - cout << "\nReference File " << refFile << endl; - refFile_= new TRFIOFile(refFile); - - //Get Histo Names - refFile_->cd("Noises"); - TIter nextkey(gDirectory->GetListOfKeys()); - TKey *key; - while (key = (TKey*)nextkey()) { - const char * title; - title=key->GetTitle(); - if (strncmp(title,"Noises_",6)==0 && strstr(title,"Cumulative")== NULL){ - vHistoNames.push_back(string(title)); - vHistoNBinsX.push_back(((TH1F*)key->ReadObj())->GetNbinsX()); - - char tmp[128]; - LayerName(title,tmp); - string tmp1(tmp); - int i=0; - while (i<vLayerName.size() && tmp1!=vLayerName[i]){i++;} - if (i==vLayerName.size()) - vLayerName.push_back(tmp1); - } - } - - book(); - - - for (int i=1;i<iovDim;i++){ - - sprintf(inFile,"%s/Display_PedNoise_RunNb_%d.root",path,iov[i]); - cout << "\nAnalyzing File " << inFile << endl; - inFile_= new TRFIOFile(inFile); - - loop(iov[i]); - } - - save(); -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.sh b/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.sh deleted file mode 100755 index 8206fb961be..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/NoiseEvolution.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh - -path=$1 - -runs=`ls ${path}/Display_PedNoise_RunNb_*.root | sed -e "s@[^0-9]@@g" | sort -r` - -arun=`echo $runs` - -root -b -l -q "NoiseEvolution.C(\"$path\",\"$arun\")" diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/PedestalEvolution.C b/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/PedestalEvolution.C deleted file mode 100644 index 86849d3d5b8..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/PedestalEvolution.C +++ /dev/null @@ -1,406 +0,0 @@ -/* -* $Date: 2006/11/06 13:26:13 $ -* $Revision: 1.1 $ -* -* \author: D. Giordano, domenico.giordano@cern.ch -*/ - - -#include <iostream> -#include <stdio.h> -#include <string.h> -#include <pair> -#include <map> -#include <vector> - -gROOT->Reset(); - -//&&&&&&&&&&&&&&&&&&&& -//Global variables -//&&&&&&&&&&&&&&&&&&&& - -//--------------------------------- -//User Defined Variables - -char outFile[128]="PedestalEvolution"; -char path[128]; //="/castor/cern.ch/user/g/giordano/MTCC/Display/Display_PedNoise_RunNb"; -//char path[128]="/data/giordano/Display/Display_PedNoise_RunNb"; - -int histoBins=60; -float histoMin=-5.; -float histoMax= 5.; - -int minIov=100000000; -int maxIov=0; - -//End User Defined Variables -//--------------------------------- - -float profileAlpha= 0.2; - -char inFile[128], refFile[128]; -TRFIOFile *inFile_, *refFile_; -TFile *outFile_; - -TH1F *inH, *refH, *outH; - -TCanvas * C; - -//int iov[11]={2354,2371,2440,2459,2475,2500,2515,2554,2601,2644,10000}; -//int iovDim = 11; -int *iov; -int iovDim; - -char *SubDet[4]={"TIB","TID","TOB","TEC"}; - -char *SubNamePtr; -std::vector<string> vHistoNames; -std::vector<int> vHistoNBinsX; -std::vector<string> vLayerName; - -TObjArray Hlist(0); - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void GetRuns(char* path_,char* RunsList_){ - strcat(path,path_); - - char tmp[1024]; - strcat(tmp,RunsList_); - - char* pch = strtok (tmp," "); - iovDim=0; - while (pch != NULL){ - pch = strtok (NULL, " "); - iovDim++; - } - - cout << "iovDim " << iovDim << endl; - iov = new int[iovDim]; - char* pch = strtok (RunsList_," "); - int i=0; - cout << " RunList " << endl; - while (pch != NULL){ - iov[i] = atoi(pch); - pch = strtok (NULL, " "); - cout << iov[i] << endl; - - if (iov[i]>maxIov) - maxIov=iov[i]; - if (iov[i]<minIov) - minIov=iov[i]; - - i++; - } - cout << endl; -} - -void book(){ - cout << "\n[book]\n" << endl; - - char filename[128]; - sprintf(filename,"%s.root",outFile); - outFile_ = new TFile(filename,"RECREATE"); - - for (int i=1;i<iovDim;i++){ - char dirName[128]; - sprintf(dirName,"IOV_%d",iov[i]); - cout << dirName << endl; - outFile_->mkdir(dirName); - outFile_->cd(dirName); - - gDirectory->mkdir("DetId"); - gDirectory->mkdir("Layer"); - gDirectory->mkdir("SubDet"); - - gDirectory->cd("DetId"); - //Make Histos for each detector - for (int j=0;j<vHistoNames.size();j++){ - //cout << "vHistoName " << vHistoNames[j] << endl; - char newName[128]; - SubNamePtr=((strstr(vHistoNames[j].c_str(),":"))+1); - sprintf(newName,"PedestalVariationProfile_%s_%s",SubNamePtr,dirName); - //cout << "newName " << newName << endl; - Hlist.Add(new TH1F(newName,newName,vHistoNBinsX[j],-0.5,vHistoNBinsX[j]-0.5)); - sprintf(newName,"PedestalVariation_%s_%s",SubNamePtr,dirName); - Hlist.Add(new TH1F(newName,newName,histoBins,histoMin,histoMax)); - } - - gDirectory->cd("../Layer"); - //Make Histos for each layer - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"PedestalVariation_%s_%s",vLayerName[j].c_str(),dirName); - Hlist.Add(new TH1F(newName,newName,histoBins,histoMin,histoMax)); - sprintf(newName,"PedestalComparison_%s_%s",vLayerName[j].c_str(),dirName); - Hlist.Add(new TH2F(newName,newName,histoBins,0,512,histoBins,0,512)); - } - - gDirectory->cd("../SubDet"); - //Make Histos hor each SubDet - Hlist.Add(new TH1F("PedestalVariation_TIB_"+TString(dirName),"PedestalVariation_TIB_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("PedestalVariation_TOB_"+TString(dirName),"PedestalVariation_TOB_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("PedestalVariation_TEC_"+TString(dirName),"PedestalVariation_TEC_"+TString(dirName),histoBins,histoMin,histoMax)); - Hlist.Add(new TH1F("PedestalVariation_TID_"+TString(dirName),"PedestalVariation_TID_"+TString(dirName),histoBins,histoMin,histoMax)); - } - - gDirectory->cd("../.."); - - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"pPedestalVariation_%s",vLayerName[j].c_str()); - Hlist.Add(new TProfile(newName,newName,iovDim,minIov,maxIov,histoMin,histoMax)); - } - - Hlist.Add(new TProfile("pPedestalVariation_TIB","pPedestalVariation_TIB",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pPedestalVariation_TID","pPedestalVariation_TID",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pPedestalVariation_TOB","pPedestalVariation_TOB",iovDim,minIov,maxIov,histoMin,histoMax)); - Hlist.Add(new TProfile("pPedestalVariation_TEC","pPedestalVariation_TEC",iovDim,minIov,maxIov,histoMin,histoMax)); - - outFile_->cd(); -} - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void LayerName(char* input,char* output){ - - char *pch; - - for(int i=0;i<4;i++){ - pch=strstr(input,SubDet[i]); - if (pch != NULL){ - sprintf(output,"%s_",SubDet[i]); - char *qch = strstr(input,"Rphi"); - if ( qch != NULL){ - if (SubDet[i]!="TEC" && SubDet[i]!="TID") - strncat(output,qch,5); - else - strncat(output,--qch,5); - }else{ - qch = strstr(input,"Ster"); - if (qch != NULL ){ - if (SubDet[i]!="TEC" && SubDet[i]!="TID") - strncat(output,qch,5); - else - strncat(output,--qch,5); - } else { - cout << "ERROR: module isn't Rphi or Stereo" << endl; - } - } - break; - } - } -} - -//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - -void save(){ - cout << "\n[save]\n" << endl; - - //gDirectory->cd(); - - std::cout << "........ saving file "<< outFile_->GetName() << std::endl; - outFile_->Write(); - std::cout << "........ done"<< std::endl; - - char filename[128]; - sprintf(filename,"%s.ps",outFile); - std::cout << "........ opening file "<< filename << std::endl; - TPostScript ps(filename,121); - - //outFile_->cd("IOV_2371/DetId"); - //gDirectory->ls(); - TCanvas myCanvas; - myCanvas.Draw(); - - for (int i=1;i<iovDim;i++){ - //Make Histos for each layer - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - myCanvas.SetLogy(1);; - sprintf(newName,"IOV_%d/Layer/PedestalVariation_%s_IOV_%d",iov[i],vLayerName[j].c_str(),iov[i]); - if (((TH1F*) outFile_->Get(newName))->GetEntries()){ - ((TH1F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - myCanvas.SetLogy(0); - sprintf(newName,"IOV_%d/Layer/PedestalComparison_%s_IOV_%d",iov[i],vLayerName[j].c_str(),iov[i]); - if (((TH2F*) outFile_->Get(newName))->GetEntries()){ - ((TH2F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - } - - myCanvas.SetLogy(1); - for (int j=0;j<4;j++){ - sprintf(newName,"IOV_%d/SubDet/PedestalVariation_%s_IOV_%d",iov[i],SubDet[j],iov[i]); - if (((TH1F*) outFile_->Get(newName))->GetEntries()){ - ((TH1F*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - } - myCanvas.SetLogy(0); - } - - for (int j=0;j<vLayerName.size();j++){ - char newName[128]; - sprintf(newName,"pPedestalVariation_%s",vLayerName[j].c_str()); - float Max = ((TProfile*) outFile_->Get(newName))->GetMaximum(); - float Min = ((TProfile*) outFile_->Get(newName))->GetMinimum(); - ((TProfile*) outFile_->Get(newName))->SetMaximum((1+profileAlpha)*Max-profileAlpha*Min); - ((TProfile*) outFile_->Get(newName))->SetMinimum((1+profileAlpha)*Min-profileAlpha*Max); - ((TProfile*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - for (int j=0;j<4;j++){ - char newName[128]; - sprintf(newName,"pPedestalVariation_%s",SubDet[j]); - float Max = ((TProfile*) outFile_->Get(newName))->GetMaximum(); - float Min = ((TProfile*) outFile_->Get(newName))->GetMinimum(); - ((TProfile*) outFile_->Get(newName))->SetMaximum((1+profileAlpha)*Max-profileAlpha*Min); - ((TProfile*) outFile_->Get(newName))->SetMinimum((1+profileAlpha)*Min-profileAlpha*Max); - ((TProfile*) outFile_->Get(newName))->Draw(); - myCanvas.Update(); - ps.NewPage(); - } - - // for (int ih=0; ih<Hlist.GetEntries();ih++){ - // Hlist.At(ih)->Draw(); - //myCanvas.Update(); - //ps.NewPage(); - //} - ps.Close(); - std::cout << "........ closed"<< std::endl; - std::cout << "to see the file please do \n gv " << filename << std::endl; - - outFile_->Close(); -} - -void variation(TH1F* in, TH1F* ref, int iov){ - - char inName[128]; - char outName[128]; - TH1F* outH1[4]; - TH2F* outH2; - TProfile* outP[2]; - - strcpy(inName,in->GetTitle()); - SubNamePtr=((strstr(inName,":"))+1); - sprintf(outName,"IOV_%d/DetId/PedestalVariationProfile_%s_IOV_%d",iov,SubNamePtr,iov); - outH1[0] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"IOV_%d/DetId/PedestalVariation_%s_IOV_%d",iov,SubNamePtr,iov); - outH1[1] = (TH1F*) outFile_->Get(outName); - - char tmp[128]; - LayerName(inName,tmp); - sprintf(outName,"IOV_%d/Layer/PedestalVariation_%s_IOV_%d",iov,tmp,iov); - outH1[2] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"IOV_%d/Layer/PedestalComparison_%s_IOV_%d",iov,tmp,iov); - outH2 = (TH2F*) outFile_->Get(outName); - - sprintf(outName,"pPedestalVariation_%s",tmp); - outP[0] = (TProfile*) outFile_->Get(outName); - - char det[4]; - det[3]='\0'; - strncpy(det,tmp,3); - - sprintf(outName,"IOV_%d/SubDet/PedestalVariation_%s_IOV_%d",iov,det,iov); - // cout << outName << endl; - outH1[3] = (TH1F*) outFile_->Get(outName); - - sprintf(outName,"pPedestalVariation_%s",det); - outP[1] = (TProfile*) outFile_->Get(outName); - - float delta; - for (int i=1;i<=in->GetNbinsX();i++){ - // cout << " i = " << i << " " << in->GetBinContent(i) << endl; - - if (ref->GetBinContent(i)) - delta= in->GetBinContent(i)/ref->GetBinContent(i) - 1 ; - else - -9999; - - outH1[0]->SetBinContent(i,delta); - - for (int j=1;j<4;j++) - outH1[j]->Fill(delta); - - outH2->Fill(ref->GetBinContent(i),in->GetBinContent(i)); - - int iov_= iov;//==10000 ? 2700 : iov; - for (int j=0;j<2;j++) - outP[j]->Fill(iov_,delta); - - } -} - -void loop(int iov){ - - //Loop on detectors - for (int j=0;j<vHistoNames.size();j++){ - - //cout << vHistoNames[j] << endl; - char hTitle[128]; - sprintf(hTitle,"Pedestals/%s",vHistoNames[j].c_str()); - //cout << hTitle << endl; - inH = (TH1F*) inFile_->Get(hTitle); - refH = (TH1F*) refFile_->Get(hTitle); - - variation(inH,refH,iov); - } -} - -PedestalEvolution(char* path_, char* RunsList_){ - - - GetRuns(path_,RunsList_); - - //Open Reference File - sprintf(refFile,"%s/Display_PedNoise_RunNb_%d.root",path,iov[0]); - cout << "\nReference File " << refFile << endl; - refFile_= new TRFIOFile(refFile); - - //Get Histo Names - refFile_->cd("Pedestals"); - TIter nextkey(gDirectory->GetListOfKeys()); - TKey *key; - while (key = (TKey*)nextkey()) { - const char * title; - title=key->GetTitle(); - if (strncmp(title,"Pedestals_",6)==0 && strstr(title,"Cumulative")== NULL){ - vHistoNames.push_back(string(title)); - vHistoNBinsX.push_back(((TH1F*)key->ReadObj())->GetNbinsX()); - - char tmp[128]; - LayerName(title,tmp); - string tmp1(tmp); - int i=0; - while (i<vLayerName.size() && tmp1!=vLayerName[i]){i++;} - if (i==vLayerName.size()) - vLayerName.push_back(tmp1); - } - } - - book(); - - - for (int i=1;i<iovDim;i++){ - - sprintf(inFile,"%s/Display_PedNoise_RunNb_%d.root",path,iov[i]); - cout << "\nAnalyzing File " << inFile << endl; - inFile_= new TRFIOFile(inFile); - - loop(iov[i]); - } - - save(); -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/README b/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/README deleted file mode 100644 index b21beb5c244..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/NoiseStudy/README +++ /dev/null @@ -1,56 +0,0 @@ -Author: Domenico Giordano - domenico.giordano@cern.ch - - -%%%%%%%%%%%%%%%%%%% -NoiseEvolution.C -%%%%%%%%%%%%%%%%%%% - - A) the macro allows to compare the noise value (strip by strip) from a Commissioning Run to another (different IOVs) - B) the noise variation is defined for each strip as - - Strip_Noise_Variation = Strip_Noise(iov) / Strip_Noise(ref_iov) -1 - - C) the macro produces several histograms - - Noise_variation as a function of strip number (for each module) - - Summary histograms of noise_variation - for each module - for each layer - for each subdet (TIB,TID,TOB,TEC) - - - D) the macro accesses preprocessed root files that contain for each detector histograms of pedestal, noise, badstrip as obtained from the offlineDB - - those root files are already in my public area under castor and are automatically accessed by the macro. - - to produce those starting root files you can run the following commands - - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - - project CMSSW - scramv1 p CMSSW CMSSW_1_2_0_pre2 - cd CMSSW_1_2_0_pre2/src - cvs co -r CMSSW_1_2_0_pre3 CondTools/SiStrip - cd CondTools/SiStrip/scripts/ - - ./SiStripCondObjDisplay.sh -run=2326 -sqliteDb=/afs/cern.ch/user/g/giordano/public/SQLITE/SiStripPedNoiseFromOMDS.db -sqliteCatalog=/afs/cern.ch/user/g/giordano/public/SQLITE/SiStripPedNoiseFromOMDS.xml - - then open the gv that is pointed out at the end of job. - - the complete list of commands to be executed is in ~giordano/public/SQLITE/retrieve_info.txt - //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& - - - - - - -%%%%%%%%%%%%%%%%%%% -BadStrips.C -%%%%%%%%%%%%%%%%%%% - - the macro allows to evaluate bad strips for each module looking apv noise profile, and cutting on absolute ad relative strip noise thresholds - - root -b -l -q 'BadStrips.C("<input_file_path>","<output_file_path>",relative LowTh, relative HighTh, absolute LowTh, absolute HTh)' - - eg:. - root -b -l -q 'BadStrips.C("/tmp/cmstacuser/Display/Display_PedNoise_RunNb_1.root","./Badstrips.root",3,5,2,6 )' > ! AsbThout.log diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/langaus.C b/AnalysisExamples/SiStripDetectorPerformance/test/langaus.C deleted file mode 100644 index 13a4e5813a3..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/langaus.C +++ /dev/null @@ -1,291 +0,0 @@ -/----------------------------------------------------------------------- -// -// Convoluted Landau and Gaussian Fitting Function -// (using ROOT's Landau and Gauss functions) -// -// Based on a Fortran code by R.Fruehwirth (fruhwirth@hephy.oeaw.ac.at) -// Adapted for C++/ROOT by H.Pernegger (Heinz.Pernegger@cern.ch) and -// Markus Friedl (Markus.Friedl@cern.ch) -// -// to execute this example, do: -// root > .x langaus.C -// or -// root > .x langaus.C++ -// -//----------------------------------------------------------------------- - -#include "TH1.h" -#include "TF1.h" -#include "TROOT.h" -#include "TStyle.h" - -Double_t langaufun(Double_t *, Double_t *); - -int nFitNum = 0; - -Double_t langaufun(Double_t *x, Double_t *par) { - - //Fit parameters: - //par[0]=Width (scale) parameter of Landau density - //par[1]=Most Probable (MP, location) parameter of Landau density - //par[2]=Total area (integral -inf to inf, normalization constant) - //par[3]=Width (sigma) of convoluted Gaussian function - // - //In the Landau distribution (represented by the CERNLIB approximation), - //the maximum is located at x=-0.22278298 with the location parameter=0. - //This shift is corrected within this function, so that the actual - //maximum is identical to the MP parameter. - - // Numeric constants - Double_t invsq2pi = 0.3989422804014; // (2 pi)^(-1/2) - Double_t mpshift = -0.22278298; // Landau maximum location - - // Control constants - Double_t np = 100.0; // number of convolution steps - Double_t sc = 5.0; // convolution extends to +-sc Gaussian sigmas - - // Variables - Double_t xx; - Double_t mpc; - Double_t fland; - Double_t sum = 0.0; - Double_t xlow,xupp; - Double_t step; - Double_t i; - - - // MP shift correction - mpc = par[1] - mpshift * par[0]; - - // Range of convolution integral - xlow = x[0] - sc * par[3]; - xupp = x[0] + sc * par[3]; - - step = (xupp-xlow) / np; - - // Convolution integral of Landau and Gaussian by sum - for(i=1.0; i<=np/2; i++) { - xx = xlow + (i-.5) * step; - fland = TMath::Landau(xx,mpc,par[0]) / par[0]; - sum += fland * TMath::Gaus(x[0],xx,par[3]); - - xx = xupp - (i-.5) * step; - fland = TMath::Landau(xx,mpc,par[0]) / par[0]; - sum += fland * TMath::Gaus(x[0],xx,par[3]); - } - - return (par[2] * step * sum * invsq2pi / par[3]); -} - - - -TF1 *langaufit(TH1F *his, Double_t *fitrange, Double_t *startvalues, Double_t *parlimitslo, Double_t *parlimitshi, Double_t *fitparams, Double_t *fiterrors, Double_t *ChiSqr, Int_t *NDF) -{ - // Once again, here are the Landau * Gaussian parameters: - // par[0]=Width (scale) parameter of Landau density - // par[1]=Most Probable (MP, location) parameter of Landau density - // par[2]=Total area (integral -inf to inf, normalization constant) - // par[3]=Width (sigma) of convoluted Gaussian function - // - // Variables for langaufit call: - // his histogram to fit - // fitrange[2] lo and hi boundaries of fit range - // startvalues[4] reasonable start values for the fit - // parlimitslo[4] lower parameter limits - // parlimitshi[4] upper parameter limits - // fitparams[4] returns the final fit parameters - // fiterrors[4] returns the final fit errors - // ChiSqr returns the chi square - // NDF returns ndf - - Int_t i; - Char_t FunName[100]; - - sprintf(FunName,"Fitfcn_%s%d",his->GetName(), nFitNum++); - - TF1 *ffitold = (TF1*)gROOT->GetListOfFunctions()->FindObject(FunName); - if (ffitold) delete ffitold; - - TF1 *ffit = new TF1(FunName,langaufun,fitrange[0],fitrange[1],4); - ffit->SetParameters(startvalues); - ffit->SetParNames("Width","MP","Area","GSigma"); - - for (i=0; i<4; i++) { - ffit->SetParLimits(i, parlimitslo[i], parlimitshi[i]); - } - - his->Fit(FunName,"RB0"); // fit within specified range, use ParLimits, do not plot - - ffit->GetParameters(fitparams); // obtain fit parameters - for (i=0; i<4; i++) { - fiterrors[i] = ffit->GetParError(i); // obtain fit parameter errors - } - ChiSqr[0] = ffit->GetChisquare(); // obtain chi^2 - NDF[0] = ffit->GetNDF(); // obtain ndf - - return (ffit); // return fit function - -} - - -Int_t langaupro(Double_t *params, Double_t &maxx, Double_t &FWHM) { - - // Seaches for the location (x value) at the maximum of the - // Landau-Gaussian convolute and its full width at half-maximum. - // - // The search is probably not very efficient, but it's a first try. - - Double_t p,x,fy,fxr,fxl; - Double_t step; - Double_t l,lold; - Int_t i = 0; - Int_t MAXCALLS = 10000; - - - // Search for maximum - - p = params[1] - 0.1 * params[0]; - step = 0.05 * params[0]; - lold = -2.0; - l = -1.0; - - - while ( (l != lold) && (i < MAXCALLS) ) { - i++; - - lold = l; - x = p + step; - l = langaufun(&x,params); - - if (l < lold) - step = -step/10; - - p += step; - } - - if (i == MAXCALLS) - return (-1); - - maxx = x; - - fy = l/2; - - - // Search for right x location of fy - - p = maxx + params[0]; - step = params[0]; - lold = -2.0; - l = -1e300; - i = 0; - - - while ( (l != lold) && (i < MAXCALLS) ) { - i++; - - lold = l; - x = p + step; - l = TMath::Abs(langaufun(&x,params) - fy); - - if (l > lold) - step = -step/10; - - p += step; - } - - if (i == MAXCALLS) - return (-2); - - fxr = x; - - - // Search for left x location of fy - - p = maxx - 0.5 * params[0]; - step = -params[0]; - lold = -2.0; - l = -1e300; - i = 0; - - while ( (l != lold) && (i < MAXCALLS) ) { - i++; - - lold = l; - x = p + step; - l = TMath::Abs(langaufun(&x,params) - fy); - - if (l > lold) - step = -step/10; - - p += step; - } - - if (i == MAXCALLS) - return (-3); - - - fxl = x; - - FWHM = fxr - fxl; - return (0); -} - -void langaus( TH1F *poHist) { - // Fill Histogram - printf("Fitting...\n"); - - // Setting fit range and start values - Double_t fr[2]; - Double_t sv[4], pllo[4], plhi[4], fp[4], fpe[4]; - fr[0]=0.3*poHist->GetMean(); - fr[1]=3.0*poHist->GetMean(); - - pllo[0]=5.0; pllo[1]=30.0; pllo[2]=1.0; pllo[3]=10.0; - plhi[0]=25.0; plhi[1]=200.0; plhi[2]=1000000.0; plhi[3]=50.0; - sv[0]=17.9; sv[1]=100.0; sv[2]=50000.0; sv[3]=42.1; - - Double_t chisqr; - Int_t ndf; - TF1 *fitsnr = langaufit(poHist,fr,sv,pllo,plhi,fp,fpe,&chisqr,&ndf); - - Double_t SNRPeak, SNRFWHM; - langaupro(fp,SNRPeak,SNRFWHM); - - printf("Fitting done\nPlotting results...\n"); - - poHist->Draw( "pe"); - fitsnr->Draw("lsame"); -} - -void langaus_new() { - // Fill Histogram - TH1F oPlot1( *( dynamic_cast<TH1F *>( gPad->GetPrimitive( "htemp")))); - TH1F *hSNR = &( oPlot1); - - // Fitting SNR histo - printf("Fitting...\n"); - - // Setting fit range and start values - Double_t fr[2]; - Double_t sv[4], pllo[4], plhi[4], fp[4], fpe[4]; - fr[0]=0.3*hSNR->GetMean(); - fr[1]=3.0*hSNR->GetMean(); - - pllo[0]=5.0; pllo[1]=30.0; pllo[2]=1.0; pllo[3]=10.0; - plhi[0]=25.0; plhi[1]=200.0; plhi[2]=1000000.0; plhi[3]=50.0; - sv[0]=17.9; sv[1]=100.0; sv[2]=50000.0; sv[3]=42.1; - - Double_t chisqr; - Int_t ndf; - TF1 *fitsnr = langaufit(hSNR,fr,sv,pllo,plhi,fp,fpe,&chisqr,&ndf); - - Double_t SNRPeak, SNRFWHM; - langaupro(fp,SNRPeak,SNRFWHM); - - printf("Fitting done\nPlotting results...\n"); - - gStyle->SetOptStat("emr"); - gStyle->SetOptFit(); - - fitsnr->Draw("lsame"); -} diff --git a/AnalysisExamples/SiStripDetectorPerformance/test/readme.txt b/AnalysisExamples/SiStripDetectorPerformance/test/readme.txt deleted file mode 100644 index 385c2491bf3..00000000000 --- a/AnalysisExamples/SiStripDetectorPerformance/test/readme.txt +++ /dev/null @@ -1,36 +0,0 @@ -The config file selects 3.8 Tesla runs. You can find, commented, a subset of run with different magnetic field configuration. - -In the output rootuple you will find a set of variables related to the track, trigger and clusters. - -Track-related variables: -Ntk -p_tk -pt_tk -eta_tk -phi_tk -nhits_tk - -Trigger-related variables (from LTC digi collection): -DTtrig -NODTtrig -CSCtrig -Othertrig - -Cluster-related variables only for hits used for track reconstruction: -Nclu (cluster number) -Subid (==3 TIB, ==5 TOB, == 6 TEC) -Layer (1 or 2 for internal or external) -Clu_rawid (detector raw ID) -Clu_ch (cluster charge) -Clu_ang (angle between track and detector respect to the x local coordinate) -Clu_size (cluster size) -Clu_bar (cluster barycenter) -Clu_1strip (position of the first strip of the cluster) - -Cluster-related variables only for hits used for track reconstruction: -same as above but with _all suffix - - - -livio.fano@cern.ch - diff --git a/CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h b/CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h index e57dfca5c8f..19a833b8c72 100644 --- a/CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h +++ b/CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h @@ -1,3 +1,6 @@ +#ifndef _CALOMISCALIBTOOLS_H +#define _CALOMISCALIBTOOLS_H + // -*- C++ -*- // // Package: CaloMiscalibTools @@ -13,7 +16,7 @@ // // Original Author: Lorenzo AGOSTINO // Created: Mon Jul 17 18:07:01 CEST 2006 -// $Id: AlCaElectronsProducer.h,v 1.2 2006/09/06 16:08:17 lorenzo Exp $ +// $Id: CaloMiscalibTools.h,v 1.1 2006/09/11 12:50:53 malgeri Exp $ // // Modified : Luca Malgeri // Date: : 11/09/2006 @@ -61,3 +64,5 @@ class CaloMiscalibTools : public edm::ESProducer, public edm::EventSetupRecordIn std::string barrelfile_; std::string endcapfile_; }; + +#endif diff --git a/CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h b/CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h index 5a159de9a47..d8193ddd5b8 100644 --- a/CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h +++ b/CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h @@ -1,3 +1,6 @@ +#ifndef _ECALRECHITRECALIB_H +#define _ECALRECHITRECALIB_H + // -*- C++ -*- // // Package: EcalRecHitRecalib @@ -12,8 +15,8 @@ */ // // Original Author: Luca Malgeri -// Created: $Date: 2006/09/11 12:50:11 $ -// $Id: EcalRecHitRecalib.h,v 1.1 2006/09/11 12:50:11 malgeri Exp $ +// Created: $Date: 2006/11/06 14:51:18 $ +// $Id: EcalRecHitRecalib.h,v 1.1 2006/11/06 14:51:18 malgeri Exp $ // // @@ -50,3 +53,5 @@ class EcalRecHitRecalib : public edm::EDProducer { std::string RecalibBarrelHits_; std::string RecalibEndcapHits_; }; + +#endif diff --git a/CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h b/CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h index b4561445c1b..50d9be15650 100644 --- a/CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h +++ b/CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h @@ -1,3 +1,6 @@ +#ifndef _HCALRECHITRECALIB_H +#define _HCALRECHITRECALIB_H + // -*- C++ -*- // // Package: HcalRecHitRecalib @@ -12,8 +15,8 @@ */ // // Original Author: Luca Malgeri -// Created: $Date: 2006/10/02 12:50:11 $ -// $Id: HcalRecHitRecalib.h,v 1.1 2006/10/02 12:50:11 malgeri Exp $ +// Created: $Date: 2006/11/06 14:51:18 $ +// $Id: HcalRecHitRecalib.h,v 1.1 2006/11/06 14:51:18 malgeri Exp $ // // @@ -64,3 +67,4 @@ class HcalRecHitRecalib : public edm::EDProducer { CaloMiscalibMapHcal mapHcal_; }; +#endif diff --git a/CalibCalorimetry/CaloMiscalibTools/src/SealModule.cc b/CalibCalorimetry/CaloMiscalibTools/src/SealModule.cc index 1762644ab2a..678c6f10147 100644 --- a/CalibCalorimetry/CaloMiscalibTools/src/SealModule.cc +++ b/CalibCalorimetry/CaloMiscalibTools/src/SealModule.cc @@ -1,15 +1,11 @@ #include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/SourceFactory.h" #include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/SourceFactory.h" #include "CalibCalorimetry/CaloMiscalibTools/interface/EcalRecHitRecalib.h" #include "CalibCalorimetry/CaloMiscalibTools/interface/CaloMiscalibTools.h" #include "CalibCalorimetry/CaloMiscalibTools/interface/HcalRecHitRecalib.h" - DEFINE_SEAL_MODULE(); - DEFINE_ANOTHER_FWK_MODULE(EcalRecHitRecalib); DEFINE_ANOTHER_FWK_MODULE(HcalRecHitRecalib); DEFINE_ANOTHER_FWK_EVENTSETUP_SOURCE(CaloMiscalibTools); - - diff --git a/CalibCalorimetry/CastorCalib/doc/html/index.html b/CalibCalorimetry/CastorCalib/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/CastorCalib/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/CastorCalib/doc/html/overview.html b/CalibCalorimetry/CastorCalib/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/CastorCalib/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/Configuration/doc/html/index.html b/CalibCalorimetry/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/Configuration/doc/html/overview.html b/CalibCalorimetry/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalCorrectionModules/doc/html/index.html b/CalibCalorimetry/EcalCorrectionModules/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalCorrectionModules/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalCorrectionModules/doc/html/overview.html b/CalibCalorimetry/EcalCorrectionModules/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalCorrectionModules/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/index.html b/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/overview.html b/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/index.html b/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/overview.html b/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalCorrelatedNoiseAnalysisModules/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalLaserAnalyzer/doc/html/index.html b/CalibCalorimetry/EcalLaserAnalyzer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalLaserAnalyzer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalLaserAnalyzer/doc/html/overview.html b/CalibCalorimetry/EcalLaserAnalyzer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalLaserAnalyzer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalLaserCorrection/doc/html/index.html b/CalibCalorimetry/EcalLaserCorrection/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalLaserCorrection/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalLaserCorrection/doc/html/overview.html b/CalibCalorimetry/EcalLaserCorrection/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalLaserCorrection/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalLaserSorting/doc/html/index.html b/CalibCalorimetry/EcalLaserSorting/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalLaserSorting/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalLaserSorting/doc/html/overview.html b/CalibCalorimetry/EcalLaserSorting/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalLaserSorting/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalSRTools/doc/html/index.html b/CalibCalorimetry/EcalSRTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalSRTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalSRTools/doc/html/overview.html b/CalibCalorimetry/EcalSRTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalSRTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/EcalTPGTools/doc/html/index.html b/CalibCalorimetry/EcalTPGTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/EcalTPGTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/EcalTPGTools/doc/html/overview.html b/CalibCalorimetry/EcalTPGTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/EcalTPGTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibCalorimetry/HcalTPGIO/doc/html/index.html b/CalibCalorimetry/HcalTPGIO/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibCalorimetry/HcalTPGIO/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibCalorimetry/HcalTPGIO/doc/html/overview.html b/CalibCalorimetry/HcalTPGIO/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibCalorimetry/HcalTPGIO/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibFormats/CastorObjects/doc/html/index.html b/CalibFormats/CastorObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibFormats/CastorObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibFormats/CastorObjects/doc/html/overview.html b/CalibFormats/CastorObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibFormats/CastorObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibFormats/SiPixelObjects/doc/html/index.html b/CalibFormats/SiPixelObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibFormats/SiPixelObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibFormats/SiPixelObjects/doc/html/overview.html b/CalibFormats/SiPixelObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibFormats/SiPixelObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibMuon/CSCCalibration/BuildFile b/CalibMuon/CSCCalibration/BuildFile deleted file mode 100644 index d10b86ea3e8..00000000000 --- a/CalibMuon/CSCCalibration/BuildFile +++ /dev/null @@ -1,38 +0,0 @@ -<Flags CXXFLAGS=-g> - -<use name=FWCore/Framework> -<use name=FWCore/MessageLogger> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> - -<use name=DataFormats/CSCDigi> -<use name=EventFilter/CSCRawToDigi> -<use name=clhep> -<use name=root> -<use name=oracle> -<lib name=occi> -<lib name=condbon> -<lib name=condbc> -<lib name=cscmap> - -<lib name=Minuit2> -<flags SEAL_PLUGIN_NAME="CalibMuonCSCCalibration"> - -<export> - <lib name=CalibMuonCSCCalibration> - - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=FWCore/MessageLogger> - <use name=DataFormats/CSCDigi> - <use name=EventFilter/CSCRawToDigi> - <use name=clhep> - <use name=root> - <lib name=occi> - <lib name=condbon> - <lib name=condbc> - <lib name=cscmap> - <lib name=Minuit2> -</export> - diff --git a/CalibMuon/CSCCalibration/doc/html/index.html b/CalibMuon/CSCCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibMuon/CSCCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibMuon/CSCCalibration/doc/html/overview.html b/CalibMuon/CSCCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibMuon/CSCCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibMuon/CSCCalibration/interface/AutoCorrMat.h b/CalibMuon/CSCCalibration/interface/AutoCorrMat.h deleted file mode 100644 index 41a2ab2f18a..00000000000 --- a/CalibMuon/CSCCalibration/interface/AutoCorrMat.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - Author: Stan Durkin - -*/ - -#include <stdio.h> -#include <math.h> -#define LAYERS_ma 6 -#define STRIPS_ma 80 - -class AutoCorrMat{ - - public: - - AutoCorrMat(){ - for(int i=0;i<12;i++){ - Mat[i]=0.0; - N[i]=0.0; - } - } - - ~AutoCorrMat(){} - - void zero(){ - for(int i=0;i<12;i++){ - Mat[i]=0.0; - N[i]=0.0; - } - } - - void add(int *adc){ - int pairs[12][2]={{3,3},{3,4},{4,4},{3,5},{4,5},{5,5},{4,6},{5,6},{6,6},{5,7},{6,7},{7,7}}; - double ped=(adc[0]+adc[1])/2.; - for(int i=0;i<12;i++){ - N[i]=N[i]+1; - Mat[i]=Mat[i]+(adc[pairs[i][0]]-ped)*(adc[pairs[i][1]]-ped); - - } - } - - float *mat(){ - float *tmp; - for(int i=0;i<12;i++)tMat[i]=Mat[i]/N[i]; - tmp=tMat; - return tmp; - } - - private: - - float Mat[12]; - float N[12]; - float tMat[12]; - -}; - -class Chamber_AutoCorrMat{ - public: - - Chamber_AutoCorrMat(){} - ~Chamber_AutoCorrMat(){} - - void zero(){ - for(int lay=0;lay<6;lay++){ - for(int strip=0;strip<STRIPS_ma;strip++){ - CMat[lay][strip].zero(); - } - } - } - - void add(int lay,int strip,int *adc){ - CMat[lay][strip].add(adc); - } - - float *autocorrmat(int lay,int strip){ - float *tmp; - tmp=m; - tmp=CMat[lay][strip].mat(); - return tmp; - } - - private: - - AutoCorrMat CMat[LAYERS_ma][STRIPS_ma]; - float m[12]; - -}; diff --git a/CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h deleted file mode 100644 index 0c1481e480d..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h +++ /dev/null @@ -1,22 +0,0 @@ -#include <iostream> -#include <vector> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h" - -class CSCAFEBAnalyzer : public edm::EDAnalyzer { -public: - explicit CSCAFEBAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - virtual void endJob(); -private: - /// variables persistent across events should be declared here. - - CSCAFEBThrAnalysis analysisthr_; -}; - diff --git a/CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h b/CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h deleted file mode 100644 index 1fd20be333e..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef CALIBMUON_CSCCALIBRATION_CSCAFEBTHRANALYSIS_H -#define CALIBMUON_CSCCALIBRATION_CSCAFEBTHRANALYSIS_H 1 - -#include "TH1.h" -#include "TH2.h" -#include "TFile.h" -#include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" -#include "CalibMuon/CSCCalibration/interface/CSCToAFEB.h" -#include <map> -#include <string> -#include <sstream> -#include <stdio.h> - -/** \class CSCAFEBThrAnalysis - * - * $Date: 2006/06/02 08:45:25 $ - * $Revision: 1.1 $ - * \author - */ -class CSCAFEBThrAnalysis { -public: - CSCAFEBThrAnalysis(); - void setup(const std::string& histoFileName); - void analyze(const CSCWireDigiCollection& wirecltn); - void done(); - -private: - void bookForId(int flag, const int& idint,const std::string& ids); - void hf1ForId(std::map<int, TH1*>& mp, int flag, const int& id, - float& x, float w); - void hf2ForId(std::map<int, TH2*>& mp, int flag, const int& id, - float& x, float& y, float w); - /// Statistics - int nmbev; - int nmbev_no_wire; - - /// DAC info - int npulses; - int unsigned indDac; - int BegDac; - int EndDac; - int EvDac; - int StepDac; - std::vector<float> vecDac; - std::vector<int> vecDacOccup; - - /// Maps - per event, threshold curve, fit results - std::map<int, std::vector<int> > m_wire_ev; - std::map<int, std::vector<std::vector<int> > > m_wire_dac; - std::map<int, std::vector<std::vector<float> > > m_res_for_db; - - /// Layer, wire to AFEB, channel conversion - const CSCToAFEB csctoafeb; - - /// ROOT hist file - TFile* hist_file; - - /// Histogram maps - std::map<int, TH1*> mh_ChanEff; - - std::map<int, TH2*> mh_FirstTime; - std::map<int, TH2*> mh_AfebDac; - std::map<int, TH2*> mh_AfebThrPar; - std::map<int, TH2*> mh_AfebNoisePar; - std::map<int, TH2*> mh_AfebNDF; - std::map<int, TH2*> mh_AfebChi2perNDF; -}; - -#endif diff --git a/CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h deleted file mode 100644 index f04a2acd8a2..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Analyzer for reading AFEB thresholds - * author O.Boeriu 9/05/06 - * - */ - -#include <iostream> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "CalibMuon/CSCCalibration/interface/condbc.h" -#include "CalibMuon/CSCCalibration/interface/cscmap.h" - -class CSCAFEBdacAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCAFEBdacAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_dac 9 -#define LAYERS_dac 6 -#define WIRES_dac 64 -#define TOTALWIRES_dac 384 -#define DDU 2 - - ~CSCAFEBdacAnalyzer(){ - - //create array (480 entries) for database transfer - //condbc *cdb = new condbc(); - cscmap *map = new cscmap(); - - for(int myDDU=0;myDDU<Nddu;myDDU++){ - - for(int myChamber=0; myChamber<NChambers; myChamber++){ - - std::string test1="CSC_slice"; - std::string test2="afeb_thresholds"; - //std::string test3="ped_rms"; - //std::string test4="peak_spread"; - //std::string test5="pulse_shape"; - std::string answer; - - for (int ii=0;ii<Nddu;ii++){ - if (myDDU !=ii) continue; - for (int i=0; i<NChambers; i++){ - if (myChamber !=i) continue; - - for (int j=0; j<LAYERS_dac; j++){ - for (int k=0; k<WIRES_dac; k++){ - fff = (j*80)+k; - - } - } - } - }//DDU - - - //get chamber ID from Igor's mapping - - int new_crateID = crateID[myChamber]; - int new_dmbID = dmbID[myChamber]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<" Above data is for chamber: "<< chamber_id<<" from sector "<<sector<<std::endl; - - std::cout<<" DO you want to send constants to DB? "<<std::endl; - std::cout<<" Please answer y or n for EACH chamber present! "<<std::endl; - - std::cin>>answer; - if(answer=="y"){ - //SEND CONSTANTS TO DB - //cdb->cdb_write(test1,chamber_id,chamber_num,test2,480, newPed, 6, &ret_code); - //cdb->cdb_write(test1,chamber_id,chamber_num,test3,480, newRMS, 6, &ret_code); - //cdb->cdb_write(test1,chamber_id,chamber_num,test4,480, newPeakRMS,6, &ret_code); - //cdb->cdb_write(test1,chamber_id,chamber_num,test5,480, newSumFive,6, &ret_code); - - std::cout<<" Your results were sent to DB !!! "<<std::endl; - }else{ - std::cout<<" NO data was sent!!! "<<std::endl; - } - } - - } - - } - - private: - // variables persistent across events should be declared here. - // - - int eventNumber,evt,misMatch,fff,ret_code,NChambers,Nddu,event; - int wireGroup,wireTBin,length,i_chamber,i_layer,reportedChambers,chamber_num,sector; - int dmbID[CHAMBERS_dac],crateID[CHAMBERS_dac]; - std::string chamber_id; -}; diff --git a/CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h deleted file mode 100644 index 52970408100..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h +++ /dev/null @@ -1,71 +0,0 @@ -/** - * Analyzer for reading CFEB comparator information - * author O.Boeriu 9/05/06 - * - */ - -#include <iostream> -#include "CalibMuon/CSCCalibration/interface/condbc.h" -#include "CalibMuon/CSCCalibration/interface/cscmap.h" - -class CSCCompThreshAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCCompThreshAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ct 9 -#define LAYERS_ct 6 -#define STRIPS_ct 80 -#define TOTALSTRIPS_ct 480 -#define DDU_ct 9 -#define NUMMOD_ct 875 -#define NUMBERPLOTTED_ct 25 - - ~CSCCompThreshAnalyzer(){ - - //create array (480 entries) for database transfer - //condbc *cdb = new condbc(); - //cscmap *map = new cscmap(); - - for(int myChamber=0; myChamber<NChambers; myChamber++){ - - //float meanComp = 0.; - std::string test1="CSC_slice"; - std::string test2="comparator_threshold"; - std::string answer; - - //print out result here - for (int i=0; i<CHAMBERS_ct; i++){ - if (myChamber !=i) continue; - - for (int j=0; j<LAYERS_ct; j++){ - for (int k=0; k<STRIPS_ct; k++){ - //arrayMeanThresh[i][j][k]= meanmod[tmp][i_chamber][i_layer-1][mycompstrip]; - fff = (j*80)+k; - //theMeanThresh = arrayMeanThresh[i][j][k]; - //newMeanThresh[fff] = theRMS; - - //std::cout <<" chamber "<<i<<" layer "<<j<<" strip "<<fff<<" ped "<<newPed[fff]<<" RMS "<<newRMS[fff]<<std::endl; - } - } - } - } - } - -private: - // variables persistent across events should be declared here. - // - - std::string chamber_id; - int eventNumber,evt,event,pedSum, strip, misMatch,fff,ret_code,NChambers,Nddu; - int length,i_chamber,i_layer,reportedChambers,chamber_num,sector; - int timebin,mycompstrip,comparator,compstrip; - int dmbID[CHAMBERS_ct],crateID[CHAMBERS_ct]; - float theMeanThresh[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float arrayMeanThresh[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float mean[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float meanTot[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float meanmod[NUMMOD_ct][CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float newThresh[TOTALSTRIPS_ct]; - -}; diff --git a/CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h deleted file mode 100644 index 5272c24fa44..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h +++ /dev/null @@ -1,417 +0,0 @@ -/** - * Analyzer for calculating CFEB cross-talk & pedestal. - * author S.Durkin, O.Boeriu 15/05/06 - * runs over multiple DDUs - * takes variable size chambers & layers - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "CalibMuon/CSCCalibration/interface/condbon.h" -#include "CalibMuon/CSCCalibration/interface/cscmap.h" -#include "CalibMuon/CSCCalibration/interface/CSCxTalk.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" - -class TCalibCrossTalkEvt { - public: - Float_t xtalk_slope_left; - Float_t xtalk_slope_right; - Float_t xtalk_int_left; - Float_t xtalk_int_right; - Float_t xtalk_chi2_left; - Float_t xtalk_chi2_right; - Float_t peakTime; - Int_t strip; - Int_t layer; - Int_t cham; - Int_t ddu; - Float_t pedMean; - Float_t pedRMS; - Float_t peakRMS; - Float_t maxADC; - Float_t sum; - Float_t time[8]; - Float_t adc[8]; - Int_t tbin[8]; - Int_t event; -}; - -class CSCCrossTalkAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCCrossTalkAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_xt 18 -#define LAYERS_xt 6 -#define STRIPS_xt 80 -#define TIMEBINS_xt 8 -#define DDU_xt 36 -#define TOTALSTRIPS_xt 480 -#define TOTALEVENTS_xt 320 - - ~CSCCrossTalkAnalyzer(){ - - Conv binsConv; - //get time of Run file for DB transfer - filein.open("../test/CSCxtalk.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - } - } - - string::size_type runNameStart = name.find("RunNum",0); - string::size_type runNameEnd = name.find("bin",0); - int nameSize = runNameEnd+3-runNameStart; - std::string myname= name.substr(runNameStart,nameSize); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - CSCobject *cn1 = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - //root ntuple - TCalibCrossTalkEvt calib_evt; - TFile calibfile("ntuples/calibxtalk.root", "RECREATE"); - TTree calibtree("Calibration","Cross-talk"); - calibtree.Branch("EVENT", &calib_evt, "xtalk_slope_left/F:xtalk_slope_right/F:xtalk_int_left/F:xtalk_int_right/F:xtalk_chi2_left/F:xtalk_chi2_right/F:peakTime/F:strip/I:layer/I:cham/I:ddu/I:pedMean/F:pedRMS/F:peakRMS/F:maxADC/F:sum/F:time[8]/F:adc[8]/F:tbin[8]/I:event/I"); - - ////////////////////////////////////////////////////////////////////iuse==strip-1 - // Now that we have filled our array, extract convd and nconvd - float adc_ped_sub_left = -999.; - float adc_ped_sub = -999.; - float adc_ped_sub_right = -999.; - int thebin; - float sum=0.0; - float mean=0; - - for (int iii=0; iii<Nddu; iii++){ - calib_evt.event=myevt; - for (int i=0; i<NChambers; i++){ - - //get chamber ID from DB mapping - int new_crateID = crateID[i]; - int new_dmbID = dmbID[i]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - meanPedestal = 0.0; - meanPeak = 0.0; - meanPeakSquare=0.0; - meanPedestalSquare = 0.; - theRMS =0.0; - thePedestal =0.0; - theRSquare =0.0; - thePeak =0.0; - thePeakRMS =0.0; - theSumFive =0.0; - - for (int j=0; j<LAYERS_xt; j++){ - mean=0.,sum=0.; - for (int s=0; s<size[i]; s++) { - //re-zero convd and nconvd - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - binsConv.convd[m][n] = 0.; - binsConv.nconvd[m][n] = 0.; - } - } - - for (int l=0; l < TIMEBINS_xt*20; l++){ - adc_ped_sub_left = theadccountsl[iii][i][j][s][l] - (theadccountsl[iii][i][j][s][0] + theadccountsl[iii][i][j][s][1])/2.; - adc_ped_sub = theadccountsc[iii][i][j][s][l] - (theadccountsc[iii][i][j][s][0] + theadccountsc[iii][i][j][s][1])/2.; - adc_ped_sub_right = theadccountsr[iii][i][j][s][l] - (theadccountsr[iii][i][j][s][0] + theadccountsr[iii][i][j][s][1])/2.; - - thebin=thebins[iii][i][j][s][l]; - - if (thebin >= 0 && thebin < 120){ - binsConv.convd[0][thebin] += adc_ped_sub_left; - binsConv.nconvd[0][thebin] += 1.0; - - binsConv.convd[1][thebin] += adc_ped_sub; - binsConv.nconvd[1][thebin] += 1.0; - - binsConv.convd[2][thebin] += adc_ped_sub_right; - binsConv.nconvd[2][thebin] += 1.0; - - } - } //loop over timebins - - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - if(binsConv.nconvd[m][n]>1.0 && binsConv.nconvd[m][n] !=0.){ - binsConv.convd[m][n] = binsConv.convd[m][n]/binsConv.nconvd[m][n]; - } - } - } - - // Call our functions first time to calculate mean pf peak time over a layer - float xl_temp_a = 0.0; - float xl_temp_b = 0.0; - float minl_temp = 0.0; - float xr_temp_a = 0.0; - float xr_temp_b = 0.0; - float minr_temp = 0.0; - float pTime = 0.0; - - binsConv.mkbins(50.); - binsConv.convolution(&xl_temp_a, &xl_temp_b, &minl_temp, &xr_temp_a, &xr_temp_b, &minr_temp, &pTime); - myPeakTime[iii][i][j][s] = pTime; - sum=sum+myPeakTime[iii][i][j][s]; - mean = sum/size[i]; - } - - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[i]); - cn1->obj[layer_id].resize(size[i]); - for (int k=0; k<size[i]; k++){ - // re-zero convd and nconvd - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - binsConv.convd[m][n] = 0.; - binsConv.nconvd[m][n] = 0.; - } - } - - for (int l=0; l < TIMEBINS_xt*20; l++){ - adc_ped_sub_left = theadccountsl[iii][i][j][k][l] - (theadccountsl[iii][i][j][k][0] + theadccountsl[iii][i][j][k][1])/2.; - adc_ped_sub = theadccountsc[iii][i][j][k][l] - (theadccountsc[iii][i][j][k][0] + theadccountsc[iii][i][j][k][1])/2.; - adc_ped_sub_right = theadccountsr[iii][i][j][k][l] - (theadccountsr[iii][i][j][k][0] + theadccountsr[iii][i][j][k][1])/2.; - - thebin=thebins[iii][i][j][k][l]; - - if (thebin >= 0 && thebin < 120){ - binsConv.convd[0][thebin] += adc_ped_sub_left; - binsConv.nconvd[0][thebin] += 1.0; - - binsConv.convd[1][thebin] += adc_ped_sub; - binsConv.nconvd[1][thebin] += 1.0; - - binsConv.convd[2][thebin] += adc_ped_sub_right; - binsConv.nconvd[2][thebin] += 1.0; - - } - } //loop over timebins - - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - if(binsConv.nconvd[m][n]>1.0 && binsConv.nconvd[m][n] !=0.){ - binsConv.convd[m][n] = binsConv.convd[m][n]/binsConv.nconvd[m][n]; - } - } - } - ////////////////////////////////////////////////////////////////// - // Call our functions a second time to calculate the cross-talk // - ////////////////////////////////////////////////////////////////// - float xl_temp_a = 0.; - float xl_temp_b = 0.; - float minl_temp = 0.; - float xr_temp_a = 0.; - float xr_temp_b = 0.; - float minr_temp = 0.; - float pTime = 0.; - - binsConv.mkbins(50.); - binsConv.convolution(&xl_temp_a, &xl_temp_b, &minl_temp, &xr_temp_a, &xr_temp_b, &minr_temp, &pTime); - - if (k==0){ - xtalk_intercept_left[iii][i][j][k] = 0.0; - xtalk_slope_left[iii][i][j][k] = 0.0; - xtalk_chi2_left[iii][i][j][k] = 0.0; - //right side is calculated - xtalk_slope_right[iii][i][j][k] = xl_temp_b; - xtalk_intercept_right[iii][i][j][k] = xl_temp_a; - xtalk_chi2_right[iii][i][j][k] = minl_temp; - myPeakTime[iii][i][j][k] = pTime; - }else if(k==size[i]-1){ - xtalk_intercept_right[iii][i][j][k] = 0.0; - xtalk_slope_right[iii][i][j][k] = 0.0; - xtalk_chi2_right[iii][i][j][k] = 0.0; - //left side is calculated - xtalk_intercept_left[iii][i][j][k] = xr_temp_a; - xtalk_slope_left[iii][i][j][k] = xr_temp_b; - xtalk_chi2_left[iii][i][j][k] = minr_temp; - myPeakTime[iii][i][j][k] = pTime; - }else{ - xtalk_intercept_left[iii][i][j][k] = xl_temp_a; - xtalk_intercept_right[iii][i][j][k] = xr_temp_a; - xtalk_slope_left[iii][i][j][k] = xl_temp_b; - xtalk_slope_right[iii][i][j][k] = xr_temp_b; - xtalk_chi2_left[iii][i][j][k] = minl_temp; - xtalk_chi2_right[iii][i][j][k] = minr_temp; - myPeakTime[iii][i][j][k] = pTime; - } - - fff = (j*size[i])+k; - float the_xtalk_left_a = xtalk_intercept_left[iii][i][j][k]; - float the_xtalk_right_a = xtalk_intercept_right[iii][i][j][k]; - float the_xtalk_left_b = xtalk_slope_left[iii][i][j][k]; - float the_xtalk_right_b = xtalk_slope_right[iii][i][j][k]; - float the_chi2_right = xtalk_chi2_right[iii][i][j][k]; - float the_chi2_left = xtalk_chi2_left[iii][i][j][k]; - float the_peakTime = myPeakTime[iii][i][j][k]; - - new_xtalk_intercept_right[fff] = the_xtalk_right_a ; - new_xtalk_intercept_left[fff] = the_xtalk_left_a ; - new_xtalk_slope_right[fff] = the_xtalk_right_b ; - new_xtalk_slope_left[fff] = the_xtalk_left_b ; - new_rchi2[fff] = the_chi2_right; - new_lchi2[fff] = the_chi2_left; - newPeakTime[fff] = the_peakTime; - newMeanPeakTime[fff] = the_peakTime-mean; - - //pedestal info - thePedestal = arrayPed[iii][i][j][k]; - meanPedestal = arrayOfPed[iii][i][j][k]/evt; - newPed[fff] = meanPedestal; - meanPedestalSquare = arrayOfPedSquare[iii][i][j][k] / evt; - theRMS = sqrt(abs(meanPedestalSquare - meanPedestal*meanPedestal)); - newRMS[fff] = theRMS; - theRSquare = (thePedestal-meanPedestal)*(thePedestal-meanPedestal)/(theRMS*theRMS*theRMS*theRMS); - thePeak = arrayPeak[iii][i][j][k]; - meanPeak = arrayOfPeak[iii][i][j][k] / evt; - meanPeakSquare = arrayOfPeakSquare[iii][i][j][k] / evt; - thePeakRMS = sqrt(abs(meanPeakSquare - meanPeak*meanPeak)); - newPeakRMS[fff] = thePeakRMS; - newPeak[fff] = thePeak; - - theSumFive = arraySumFive[iii][i][j][k]; - newSumFive[fff]=theSumFive; - - calib_evt.pedMean = newPed[fff]; - calib_evt.pedRMS = newRMS[fff]; - calib_evt.peakRMS = newPeakRMS[fff]; - calib_evt.maxADC = newPeak[fff]; - calib_evt.sum = newSumFive[fff]; - - std::cout <<"Ch "<<i<<" L "<<j<<" S "<<k<<" ped "<<meanPedestal<<" RMS "<<theRMS<<" maxADC "<<thePeak<<" maxRMS "<<thePeakRMS<<" Sum/peak "<<theSumFive<<" IntL "<<the_xtalk_left_a<<" SL "<<the_xtalk_left_b<<" IntR "<<the_xtalk_right_a<<" SR "<<the_xtalk_right_b<<" diff "<<the_peakTime-mean<<std::endl; - calib_evt.xtalk_slope_left = xtalk_slope_left[iii][i][j][k]; - calib_evt.xtalk_slope_right = xtalk_slope_right[iii][i][j][k]; - calib_evt.xtalk_int_left = xtalk_intercept_left[iii][i][j][k]; - calib_evt.xtalk_int_right = xtalk_intercept_right[iii][i][j][k]; - calib_evt.xtalk_chi2_left = xtalk_chi2_left[iii][i][j][k]; - calib_evt.xtalk_chi2_right = xtalk_chi2_right[iii][i][j][k]; - calib_evt.peakTime = myPeakTime[iii][i][j][k]; - calib_evt.cham = i; - calib_evt.ddu = iii; - calib_evt.layer = j; - calib_evt.strip = k; - - - /* for (int tbin=0;tbin<8;tbin++){ */ -/* calib_evt.time[tbin] = myTime[tbin]; */ -/* calib_evt.adc[tbin] = myADC[tbin]; */ -/* calib_evt.tbin[tbin] = myTbin[tbin]; */ -/* } */ - - calibtree.Fill(); - cn->obj[layer_id][k].resize(2); - cn->obj[layer_id][k][0] = meanPedestal; - cn->obj[layer_id][k][1] = theRMS; - cn1->obj[layer_id][k].resize(6); - cn1->obj[layer_id][k][0] = the_xtalk_right_b ; - cn1->obj[layer_id][k][1] = the_xtalk_right_a ; - cn1->obj[layer_id][k][2] = the_chi2_right; - cn1->obj[layer_id][k][3] = the_xtalk_left_b ; - cn1->obj[layer_id][k][4] = the_xtalk_left_a ; - cn1->obj[layer_id][k][5] = the_chi2_left; - - }//loop over strips - }//loop over layers - }//chambers - }//Nddu - - dbon->cdbon_last_run("pedestals",&run); - std::cout<<"Last pedestal run "<<run<<std::endl; - if(debug) dbon->cdbon_write(cn,"pedestals",run+1,myTime); - dbon->cdbon_last_run("crosstalk",&run); - std::cout<<"Last crosstalk run "<<run<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn1,"crosstalk",run+1,myTime); - calibfile.Write(); - calibfile.Close(); - } - - private: - int eventNumber,evt,strip,misMatch,fff,ret_code,length,Nddu,myevt; - int i_chamber,i_layer,reportedChambers,chamber_num,sector,run,NChambers ; - int dmbID[CHAMBERS_xt],crateID[CHAMBERS_xt],size[CHAMBERS_xt]; - std::vector<int> adc; - std::string chamber_id; - std::string tid; - int thebins[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsc[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsl[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsr[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - float pedMean,pedMean1,time,max1,max2,aPeak,sumFive; - float meanPedestal,meanPeak,meanPeakSquare,meanPedestalSquare,theRMS; - float thePeak,thePeakRMS,theSumFive,thePedestal,theRSquare; - float thetime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - float xtalk_intercept_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_intercept_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_slope_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_slope_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_chi2_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_chi2_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myMeanPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float array_meanPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPed[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPedSquare[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayPed[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayPeak[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPeak[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPeakSquare[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arraySumFive[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myTime[TIMEBINS_xt]; - float myADC[TIMEBINS_xt]; - int myTbin[TIMEBINS_xt]; - float newPed[TOTALSTRIPS_xt]; - float newRMS[TOTALSTRIPS_xt]; - float newPeakRMS[TOTALSTRIPS_xt]; - float newPeak[TOTALSTRIPS_xt]; - float newSumFive[TOTALSTRIPS_xt]; - float new_xtalk_intercept_right[TOTALSTRIPS_xt]; - float new_xtalk_intercept_left[TOTALSTRIPS_xt]; - float new_xtalk_slope_right[TOTALSTRIPS_xt]; - float new_xtalk_slope_left[TOTALSTRIPS_xt]; - float new_rchi2[TOTALSTRIPS_xt]; - float new_lchi2[TOTALSTRIPS_xt]; - float newPeakTime[TOTALSTRIPS_xt]; - float newMeanPeakTime[TOTALSTRIPS_xt]; - int lines; - std::ifstream filein; - string PSet,name; - bool debug; - - //root ntuple - TCalibCrossTalkEvt calib_evt; - TBranch *calibevt; - TTree *calibtree; - TFile *calibfile; - - /* calibfile = new TFile("ntuples/calibxtalk.root", "RECREATE","Calibration Ntuple"); */ -/* calibtree = new TTree("Calibration","Crosstalk"); */ -/* calibevt = calibtree->Branch("EVENT", &calib_evt, ""xtalk_slope_left/F:xtalk_slope_right/F:xtalk_int_left/F:xtalk_int_right/F:xtalk_chi2_left/F:xtalk_chi2_right/F:peakTime/F:strip/I:layer/I:cham/I:ddu/I:pedMean/F:pedRMS/F:peakRMS/F:maxADC/F:sum/F:time[8]/F:adc[8]/F:tbin[8]/I:event/I"); */ -}; - diff --git a/CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h b/CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h deleted file mode 100644 index 878984a74ee..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef CSCCalibration_CSCFitAFEBThr_h -#define CSCCalibration_CSCFitAFEBThr_h - -/** \class CSCFitAFEBThr - * - * Concrete algorithmic class used to identify threshold and noise in - * AFEB channel threshold scan in the endcap muon CSCs. - * Based on CSCFitSCAPulse as an example - */ - -#include <Minuit2/VariableMetricMinimizer.h> - -using namespace ROOT::Minuit2; - -class CSCThrTurnOnFcn; - -class CSCFitAFEBThr { - -public: - CSCFitAFEBThr(); - virtual ~CSCFitAFEBThr(); - -/// Find the threshold and noise from the threshold turn-on curve. -/// The returned bool is success/fail status. - virtual bool ThresholdNoise(const std::vector<float> & inputx, - const std::vector<float> & inputy, - const int & npulses, - std::vector<int> & dacoccup, - std::vector<float> & mypar, - std::vector<float> & ermypar, - float & ercorr, - float & chisq, - int & ndf, - int & niter, - float & edm - ) const; -private: - ModularFunctionMinimizer* theFitter; - CSCThrTurnOnFcn* theOBJfun; -}; - -#endif diff --git a/CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h deleted file mode 100644 index 4c5f78b5d5c..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Analyzer for reading gains information - * author S. Durkin, O.Boeriu 18/03/06 - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> -#include "CalibMuon/CSCCalibration/interface/condbon.h" -#include "CalibMuon/CSCCalibration/interface/cscmap.h" -#include "TFile.h" -#include "TTree.h" - -class TCalibGainEvt { - public: - Float_t slope; - Float_t intercept; - Float_t chi2; - Int_t strip; - Int_t layer; - Int_t cham; -}; - -class CSCGainAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCGainAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ga 468 -#define LAYERS_ga 6 -#define STRIPS_ga 80 -#define NUMBERPLOTTED_ga 10 -#define NUMMODTEN_ga 200 -#define DDU_ga 36 - - ~CSCGainAnalyzer(){ -//get time of Run file for DB transfer - filein.open("../test/CSCgain.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("RunNum",0); - string::size_type runNameEnd = name.find("bin",0); - int nameSize = runNameEnd+3-runNameStart; - std::string myname= name.substr(runNameStart,nameSize); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - //root ntuple information - TCalibGainEvt calib_evt; - TFile calibfile("ntuples/calibgain.root", "RECREATE"); - TTree calibtree("Calibration","Gains"); - calibtree.Branch("EVENT", &calib_evt, "slope/F:intercept/F:chi2/F:strip/I:layer/I:cham/I"); - - for (int dduiter=0;dduiter<Nddu;dduiter++){ - for(int chamberiter=0; chamberiter<NChambers; chamberiter++){ - for (int cham=0;cham<NChambers;cham++){ - if (cham !=chamberiter) continue; - - //get chamber ID from DB mapping - int new_crateID = crateID[cham]; - int new_dmbID = dmbID[cham]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - for (int layeriter=0; layeriter<LAYERS_ga; layeriter++){ - for (int stripiter=0; stripiter<STRIPS_ga; stripiter++){ - - for (int j=0; j<LAYERS_ga; j++){//layer - if (j != layeriter) continue; - - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[cham]); - for (int k=0; k<size[cham]; k++){//strip - if (k != stripiter) continue; - float sumOfX = 0.0; - float sumOfY = 0.0; - float sumOfXY = 0.0; - float sumx2 = 0.0; - float gainSlope = 0.0; - float gainIntercept = 0.0; - float chi2 = 0.0; - - float charge[NUMBERPLOTTED_ga]={22.4, 44.8, 67.2, 89.6, 112, 134.4, 156.8, 179.2, 201.6, 224.0}; - - for(int ii=0; ii<NUMBERPLOTTED_ga; ii++){//numbers - sumOfX += charge[ii]; - sumOfY += maxmodten[ii][cham][j][k]; - sumOfXY += (charge[ii]*maxmodten[ii][cham][j][k]); - sumx2 += (charge[ii]*charge[ii]); - } - - //Fit parameters for straight line - gainSlope = ((NUMBERPLOTTED_ga*sumOfXY) - (sumOfX * sumOfY))/((NUMBERPLOTTED_ga*sumx2) - (sumOfX*sumOfX));//k - gainIntercept = ((sumOfY*sumx2)-(sumOfX*sumOfXY))/((NUMBERPLOTTED_ga*sumx2)-(sumOfX*sumOfX));//m - - for(int ii=0; ii<NUMBERPLOTTED_ga; ii++){ - chi2 += (maxmodten[ii][cham][j][k]-(gainIntercept+(gainSlope*charge[ii])))*(maxmodten[ii][cham][j][k]-(gainIntercept+(gainSlope*charge[ii])))/(NUMBERPLOTTED_ga*NUMBERPLOTTED_ga); - } - - std::cout <<"Chamber: "<<cham<<" Layer: "<<j<<" Strip: "<<k<<" Slope: "<<gainSlope <<" Intercept: "<<gainIntercept <<" chi2 "<<chi2<<std::endl; - - calib_evt.slope = gainSlope; - calib_evt.intercept = gainIntercept; - calib_evt.chi2 = chi2; - calib_evt.strip = k; - calib_evt.layer = j; - calib_evt.cham = cham; - - calibtree.Fill(); - - cn->obj[layer_id][k].resize(3); - cn->obj[layer_id][k][0] = gainSlope; - cn->obj[layer_id][k][1] = gainIntercept; - cn->obj[layer_id][k][2] = chi2; - }//k loop - }//j loop - }//stripiter loop - }//layiter loop - }//cham - }//chamberiter - }//dduiter - - //send data to DB - dbon->cdbon_last_run("gains",&run); - std::cout<<"Last gains run "<<run<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn,"gains",run+1,myTime); - calibfile.Write(); - calibfile.Close(); - } - - private: - std::vector<int> newadc; - std::string chamber_id; - int eventNumber,evt,chamber_num,sector,i_chamber,i_layer,reportedChambers; - int fff,ret_code,length,strip,misMatch,NChambers,Nddu,run; - time_t rawtime; - int dmbID[CHAMBERS_ga],crateID[CHAMBERS_ga],size[CHAMBERS_ga]; - float gainSlope,gainIntercept; - float adcMax[DDU_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float adcMean_max[DDU_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float maxmodten[NUMMODTEN_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float newGain[480]; - float newIntercept[480]; - float newChi2[480]; - int lines; - std::ifstream filein; - string PSet,name; - bool debug; -}; diff --git a/CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h b/CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h deleted file mode 100644 index 15b0f3cb6e8..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Analyzer for reading bin by bin ADC information - * author S.Durkin, O.Boeriu 20/03/06 - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "CalibMuon/CSCCalibration/interface/condbon.h" -#include "CalibMuon/CSCCalibration/interface/cscmap.h" -#include "CalibMuon/CSCCalibration/interface/AutoCorrMat.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TDirectory.h" -#include "TCanvas.h" - -class TCalibNoiseMatrixEvt { - public: - Float_t elem[12]; - Int_t strip; - Int_t layer; - Int_t cham; -}; - -class CSCNoiseMatrixAnalyzer : public edm::EDAnalyzer { - - public: - explicit CSCNoiseMatrixAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ma 468 -#define LAYERS_ma 6 -#define STRIPS_ma 80 -#define DDU_ma 36 - - ~CSCNoiseMatrixAnalyzer(){ - //get time of Run file for DB transfer - filein.open("../test/CSCmatrix.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("RunNum",0); - string::size_type runNameEnd = name.find("bin",0); - int nameSize = runNameEnd+3-runNameStart; - std::string myname= name.substr(runNameStart,nameSize); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - //root ntuple - TCalibNoiseMatrixEvt calib_evt; - TFile calibfile("ntuples/calibmatrix.root", "RECREATE"); - TTree calibtree("Calibration","NoiseMatrix"); - calibtree.Branch("EVENT", &calib_evt, "elem[12]/F:strip/I:layer/I:cham/I"); - - //for (int myDDU; myDDU<Nddu; myDDU++){ - for (int i=0; i<NChambers; i++){ - - //get chamber ID from DB mapping - int new_crateID = crateID[i]; - int new_dmbID = dmbID[i]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - for (int j=0; j<LAYERS_ma; j++){ - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[i]); - - for (int k=0; k<size[i]; k++){ - for (int max=0; max<12;max++){ - tmp=cam[i].autocorrmat(j,k); - calib_evt.elem[0] = tmp[0]; - calib_evt.elem[1] = tmp[1]; - calib_evt.elem[2] = tmp[2]; - calib_evt.elem[3] = tmp[3]; - calib_evt.elem[4] = tmp[4]; - calib_evt.elem[5] = tmp[5]; - calib_evt.elem[6] = tmp[6]; - calib_evt.elem[7] = tmp[7]; - calib_evt.elem[8] = tmp[8]; - calib_evt.elem[9] = tmp[9]; - calib_evt.elem[10] = tmp[10]; - calib_evt.elem[11] = tmp[11]; - calib_evt.strip = k; - calib_evt.layer = j; - calib_evt.cham = i; - - calibtree.Fill(); - - std::cout<<"Chamber "<<i<<" Layer "<<j<<" strip "<<k<<" Matrix elements "<<tmp[max]<<std::endl; - if(tmp[max]>100) std::cout<<"Matrix elements out of range!"<<std::endl; - cn->obj[layer_id][k].resize(12); - - cn->obj[layer_id][k][0] = tmp[0]; - cn->obj[layer_id][k][1] = tmp[1]; - cn->obj[layer_id][k][2] = tmp[3]; - cn->obj[layer_id][k][3] = tmp[2]; - cn->obj[layer_id][k][4] = tmp[4]; - cn->obj[layer_id][k][5] = tmp[6]; - cn->obj[layer_id][k][6] = tmp[5]; - cn->obj[layer_id][k][7] = tmp[7]; - cn->obj[layer_id][k][8] = tmp[9]; - cn->obj[layer_id][k][9] = tmp[8]; - cn->obj[layer_id][k][10] = tmp[10]; - cn->obj[layer_id][k][11] = tmp[11]; - - } - } - } - } - //}//myDDU - - //send data to DB - dbon->cdbon_last_run("noisematrix",&run); - std::cout<<"run "<<run<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn,"noisematrix",run+1,myTime); - - calibfile.Write(); - calibfile.Close(); - } - - private: - // variables persistent across events should be declared here. - std::vector<int> adc; - std::string chamber_id; - int eventNumber,evt,strip,misMatch,NChambers,Nddu; - int i_chamber,i_layer,reportedChambers,fff,ret_code,length,chamber_num,sector,run; - int dmbID[CHAMBERS_ma],crateID[CHAMBERS_ma],size[CHAMBERS_ma]; - int lines; - std::ifstream filein; - string PSet,name; - bool debug; - float *tmp, corrmat[12]; - float newMatrix1[480]; - float newMatrix2[480]; - float newMatrix3[480]; - float newMatrix4[480]; - float newMatrix5[480]; - float newMatrix6[480]; - float newMatrix7[480]; - float newMatrix8[480]; - float newMatrix9[480]; - float newMatrix10[480]; - float newMatrix11[480]; - float newMatrix12[480]; - - Chamber_AutoCorrMat cam[CHAMBERS_ma]; -}; diff --git a/CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h b/CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h deleted file mode 100644 index 7f44057ab2b..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef CSCCalibration_CSCThrTurnOnFcn_h -#define CSCCalibration_CSCThrTurnOnFcn_h - - -/** \class CSCThrTurnOnFcn - * - * Model functional form for fitting AFEB turn-on threshold - * information from Muon Endcap CSC's. This version - * is for ROOT Minuit2. Based on CSCPulseHeightFcn as an example. - * - */ - -#include "Minuit2/FCNBase.h" -#include <vector> - -using namespace ROOT::Minuit2; -using std::vector; - - -class CSCThrTurnOnFcn : public FCNBase { - -private: - /// data - std::vector<float> xdata; - std::vector<float> ydata; - std::vector<float> ery; - float norm; - -public: - ///Cache the current data, x and y - void setData(const std::vector<float> & x, const std::vector<float> & y) { - for(unsigned int i=0;i<x.size();i++) { - xdata.push_back(x[i]); ydata.push_back(y[i]); - } -}; - - /// Set the errors - void setErrors(const std::vector<float> & er) { - for(unsigned int i=0;i<er.size();i++) ery.push_back(er[i]); - }; - - /// Set the norm (if needed) - void setNorm(float n) {norm=n;}; - - /// Provide the chi-squared function for the given data - virtual double operator() (const std::vector<double>&) const; - - ///@@ What? - virtual double Up() const {return 1.;} - -}; - -#endif diff --git a/CalibMuon/CSCCalibration/interface/CSCToAFEB.h b/CalibMuon/CSCCalibration/interface/CSCToAFEB.h deleted file mode 100644 index 5468c938564..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCToAFEB.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef CSCToAFEB_CSCToAFEB_h -#define CSCToAFEB_CSCToAFEB_h - -/**\class CSCToAFEB - * - * CSC layer, wire vs AFEB channel map. - * - * \author N. Terentiev, CMU - */ - -class CSCToAFEB{ - -private: - int layer_wire_to_channel_[6][8]; - int layer_wire_to_board_[6][8]; - int station_ring_to_nmxafeb_[4][3]; - int station_ring_to_nmxwire_[4][3]; -public: - - /// Constructor - -CSCToAFEB (){ - - for(int i=1; i<=6; i++) for(int j=1;j<=8;j++) { - if(i==1 || i==3 || i==5) { - if(j<5) layer_wire_to_channel_[i-1][j-1] =j+4; - if(j>4) layer_wire_to_channel_[i-1][j-1] =j+8; - } - if(i==2 || i==4 || i==6) { - if(j<5) layer_wire_to_channel_[i-1][j-1] =j; - if(j>4) layer_wire_to_channel_[i-1][j-1] =j+4; - } - } - - for(int i=1; i<=6; i++) for(int j=1;j<=8;j++) - layer_wire_to_board_[i-1][j-1]=(i-1)/2+1; - - for(int i=1; i<=4; i++) for(int j=1;j<=3;j++) { - if(i==1) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=18; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=12; - } - if(i==2) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=42; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - if(i==3) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=36; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - if(i==4) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=36; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - } - - for(int i=1; i<=4; i++) for(int j=1;j<=3;j++) { - if(i==1) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=48; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=32; - } - if(i==2) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=112; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - if(i==3) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=96; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - if(i==4) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=96; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - } - - - /* - layer_wire_to_channel_[6][8] = {{ 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }, - { 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }, - { 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }}; - gives AFEB channel number for given layer and wire numbers. - - layer_wire_to_board_[6][8] = {{ 1,1,1,1,1,1,1,1 }, - { 1,1,1,1,1,1,1,1 }, - { 2,2,2,2,2,2,2,2 }, - { 2,2,2,2,2,2,2,2 }, - { 3,3,3,3,3,3,3,3 }, - { 3,3,3,3,3,3,3,3 }}; - gives position of AFEB in column for given layer and wire numbers. - - station_ring_to_nmxafeb_[4][3]= {{18?,24,12}, - {42, 24,0 }, - {36, 24,0 ], - {36, 24,0 }}; - gives max. # of AFEBs in CSC of different types for given station and ring. - - station_ring_to_nmxwire_[4][3]= {{48?,64,32}, - {112,64,0 }, - {96, 64,0 ], - {96, 64,0 }}; - gives max. # of wiregroups in one layer of CSC of different types - for given station and ring. - */ - } - - /// return AFEB channel number - int getAfebCh(int layer, int wiregroup) const; - /// return AFEB position number - int getAfebPos(int layer, int wiregroup) const; - /// return layer number - int getLayer(int afeb, int channel) const; - /// return wiregroup number - int getWireGroup(int afeb, int channel) const; - /// return max. number of AFEBs - int getMaxAfeb(int station, int ring) const; - /// return max. number of wiregroups per layer - int getMaxWire(int station, int ring) const; - - /// Print content - void print() const; - -}; - -#endif diff --git a/CalibMuon/CSCCalibration/interface/CSCxTalk.h b/CalibMuon/CSCCalibration/interface/CSCxTalk.h deleted file mode 100644 index 6dd28997c7b..00000000000 --- a/CalibMuon/CSCCalibration/interface/CSCxTalk.h +++ /dev/null @@ -1,162 +0,0 @@ -#include <stdio.h> -#include <math.h> - - -class Conv{ - - public: - - Conv(){} - - //square wave fcn convoluted with 1/(t+2.5) - float elec(float t,float vs){ - float f; - if (t<=vs){ - f=log(t+2.5)-log(2.5); - } - else{ - f=log(t+2.5)-log(t-50+2.5); - } - return f; - }//end elec - - - //calculate single electron distribution in 6.25 ns steps - void mkbins(float vs){ - int i,k; - float t; - for(i=0;i<120;i++) conve[i]=0.0; - for(i=0;i<120;i++){ - for(k=0;k<16;k++){ - t=(6.25*i)+(k*0.625); - conve[i]=conve[i]+elec(t,vs); - } - } - } //end mkbins - - - //convolution function - void convolution(float *xleft_a, float *xleft_b, float *min_left, float *xright_a, float *xright_b, float *min_right, float *pTime){ - //void(convolution){ - - float max, cross0,cross2,min_l,min_r,sum_x=0.0,sumx2=0.; - float sum_y_left=0.0,sum_y_right=0.0,sum_xy_left=0.0,sum_xy_right=0.0; - float a_left=0.0,a_right=0.0,b_left=0.0,b_right=0.0,chi2_left=0.0,chi2_right=0.0,chi_left=0.0,chi_right=0.0; - float aleft=0.0,aright=0.0,bleft=0.0,bright=0.0; - int i,j,k,l,imax=0; - - for(l=0;l<3;l++){ - for(i=0;i<119;i++)conv[l][i]=0.0; - for(j=0;j<119;j++){ - for(k=0;k<119;k++){ - if(j+k<119)conv[l][j+k]=conv[l][j+k]+convd[l][j]*conve[k]; - } - } - } - max=0; - min_l=9999999999999999.0; - min_r=9999999999999999.0; - for(i=0;i<119;i++){ - if(conv[1][i]>max){ - max=conv[1][i]; - imax=i; - } - } - - //find the max peak time from 3 timebins when line intersects x axis a+b*x=0 -> x=-a/b - float time1=-999.0, time2=-999.0, time3=-999.0; - float data1=-999.0, data2=-999.0, data3=-999.0; - float peakTime=0.0; - - time1=imax-1; - time2=imax; - time3=imax+1; - - data1=conv[1][imax-1]; - data2=conv[1][imax]; - data3=conv[1][imax+1]; - - peakTime=(0.5)*((time1*time1*(data3-data2)+time2*time2*(data1-data3)+time3*time3*(data2-data1))/(time1*(data3-data2)+time2*(data1-data3)+time3*(data2-data1)))*6.25; - - for(l=0;l<3;l++){ - for(i=0;i<119;i++)conv[l][i]=conv[l][i]/max; - } - - int nobs = 0; - for (int j=0; j<119; j++){ - if (conv[1][j]>0.6) nobs++; - } - - for(i=0;i<119;i++){ - cross0=0.0; - cross2=0.0; - - if(conv[1][i]>0.6){ - cross0=conv[0][i]/(conv[0][i]+conv[1][i]+conv[2][i]); - cross2=conv[2][i]/(conv[0][i]+conv[1][i]+conv[2][i]); - - sum_x += i; - sum_y_left += cross0; - sum_y_right += cross2; - sumx2 += i*i; - sum_xy_left += i*cross0; - sum_xy_right += i*cross2; - } - } - - //LMS fitting straight line y=a+b*x - - bleft = ((nobs*sum_xy_left) - (sum_x * sum_y_left))/((nobs*sumx2) - (sum_x*sum_x)); - bright = ((nobs*sum_xy_right) - (sum_x * sum_y_right))/((nobs*sumx2) - (sum_x*sum_x)); - - aleft = ((sum_y_left*sumx2)-(sum_x*sum_xy_left))/((nobs*sumx2)-(sum_x*sum_x)); - aright = ((sum_y_right*sumx2)-(sum_x*sum_xy_right))/((nobs*sumx2)-(sum_x*sum_x)); - - for(i=0;i<119;i++ ){ - chi2_left += (cross0 -(aleft+(bleft*i)))*(cross0 -(aleft+(bleft*i))); - chi2_right += (cross2 -(aright+(bright*i)))*(cross2 -(aright+(bright*i))); - } - - if(chi_left<min_l){ - min_l=chi_left; - bleft=bleft; - aleft=aleft; - } - if(chi_right<min_r){ - min_r=chi_right; - bright=bright; - aright=aright; - } - - - //Now calculating parameters in ns to compensate for drift in peak time - b_left = bleft/6.25; - b_right = bright/6.25; - - a_left = aleft + (bleft*peakTime/6.25); - a_right = aright + (bright*peakTime/6.25); - - *xleft_a = a_left; - *xleft_b = b_left; - *min_left = chi2_left; - *xright_a = a_right; - *xright_b = b_right; - *min_right = chi2_right; - *pTime = peakTime; - - } //end CONVOLUTION - - ~Conv(){} - - - float convd[3][120]; - float nconvd[3][120]; - float conve[120]; - float conv[3][120]; - -private: - - - -} ; - diff --git a/CalibMuon/CSCCalibration/interface/condbc.h b/CalibMuon/CSCCalibration/interface/condbc.h deleted file mode 100644 index 6d08d550088..00000000000 --- a/CalibMuon/CSCCalibration/interface/condbc.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef GUARD_occiproc_H -#define GUARD_occiproc_H - -#if !defined(__CINT__) - -#include <iostream> -#include <occi.h> -#include <string> -using namespace oracle::occi; -using namespace std; - -#else - -#include <string> -class Environment; -class Connection; -class SQLException; - -#endif - - -class condbc -{ - private: - - Environment *env; - Connection *con; - - public : - /** - * Constructor for condbc - */ - condbc () throw (SQLException); - /** - * Destructor for condbc - */ - ~condbc () throw (SQLException); - - void cdb_check(string subdet, string id_str, int id_num, string var_name, - int *version); - void cdb_check_v(string subdet, string id_str, int id_num, string var_name, - string start_valid, int *c_version, int *ret_version); - void cdb_check_r(string subdet, string id_str, int id_num, string var_name, - int run, int *c_version, int *ret_version); - void cdb_check_rv(string subdet, string id_str, int id_num, string var_name, - int run, string start_valid, int *c_version, int *ret_version); - - void cdb_write (string subdet, string id_str, int id_num, string var_name, - int size, float *value, int run, int *ret_code); - void cdb_write (string subdet, string id_str, int id_num, string var_name, - int size, float *value, int run, string v_par_st1, string v_par_st2, - string v_par_st3, float v_par_num1, float v_par_num2, float v_par_num3, - string v_rec_comment, int *ret_code); - void cdb_write_v (string subdet, string id_str, int id_num, string var_name, - int size, float *value, int run, string start_valid, int *ret_code); - void cdb_write_v (string subdet, string id_str, int id_num, string var_name, - int size, float *value, int run, string start_valid, string v_par_st1, - string v_par_st2, string v_par_st3, float v_par_num1, float v_par_num2, - float v_par_num3, string v_rec_comment, int *ret_code); - - void cdb_read (string subdet, string id_str, int id_num, string var_name, - int size, int version, int *c_version, int *ret_version, int *ret_size, - float *value, int *run); - void cdb_read_v (string subdet, string id_str, int id_num, string var_name, - int size, string start_valid, int *c_version, int *ret_version, - int *ret_size, float *value, int *run); - void cdb_read_r (string subdet, string id_str, int id_num, string var_name, - int size, int run, int *c_version, int *ret_version, int *ret_size, - float *value); - void cdb_read_rv (string subdet, string id_str, int id_num, string var_name, - int size, int run, string start_valid, int *c_version, int *ret_version, - int *ret_size, float *value); - - }; // end of class condbc -#endif diff --git a/CalibMuon/CSCCalibration/interface/condbon.h b/CalibMuon/CSCCalibration/interface/condbon.h deleted file mode 100644 index d87770cb3d7..00000000000 --- a/CalibMuon/CSCCalibration/interface/condbon.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef GUARD_condbon_H -#define GUARD_condbon_H - -#include <iostream> -#include <sstream> -#include <occi.h> -#include <string> -#include <time.h> -#include <stdlib.h> -#include <stdio.h> -using namespace oracle::occi; -using namespace std; - -#include <vector> -#include <map> -using namespace std; - -class CSCobject{ - public: - CSCobject(); - ~CSCobject(); - - map< int,vector<vector<float> > > obj; -}; - -class condbon -{ - private: - - Environment *env; - Connection *con; - Statement *stmt, *stmt1; - - public : - /** - * Constructor for condbon - */ - condbon () throw (SQLException); - /** - * Destructor for condbon - */ - ~condbon () throw (SQLException); -/* time should be given in format like "Fri May 26 16:55:51 2006" */ - void cdbon_write (CSCobject *obj, string obj_name, int run, string time); - void cdbon_last_run (string obj_name, int *run); - - }; // end of class condbon -#endif diff --git a/CalibMuon/CSCCalibration/interface/cscmap.h b/CalibMuon/CSCCalibration/interface/cscmap.h deleted file mode 100644 index f4fca07b811..00000000000 --- a/CalibMuon/CSCCalibration/interface/cscmap.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef GUARD_cscmap_H -#define GUARD_cscmap_H - -#include <iostream> -#include <occi.h> -#include <string> -using namespace oracle::occi; -using namespace std; - -class cscmap -{ - private: - - Environment *env; - Connection *con; - - public : - /** - * Constructor for cscmap - */ - cscmap () throw (SQLException); - /** - * Destructor for cscmap - */ - ~cscmap () throw (SQLException); - - void crate0_chamber (int crate0, int dmb, string *chamber_id, - int *chamber_num, int *sector); - void crate_chamber (int crate, int dmb, string *chamber_id, - int *chamber_num, int *sector); - void chamber_crate (string chamber_id, int *crate, int *dmb, - int *sector, int *chamber_num, int *crate0); - -}; // end of class cscmap -#endif diff --git a/CalibMuon/CSCCalibration/src/CSCAFEBAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCAFEBAnalyzer.cc deleted file mode 100644 index 12a6514897b..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCAFEBAnalyzer.cc +++ /dev/null @@ -1,40 +0,0 @@ -#include <iostream> -#include <vector> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h" - -CSCAFEBAnalyzer::CSCAFEBAnalyzer(edm::ParameterSet const& conf) { - - /// If your module takes parameters, here is where you would define - /// their names and types, and access them to initialize internal - /// variables. Example as follows: - - analysisthr_.setup(conf.getParameter<std::string>("HistogramFile")); -} - -void CSCAFEBAnalyzer::analyze(edm::Event const& e,edm::EventSetup const& iSetup) { - edm::Handle<CSCWireDigiCollection> wire_digis; - - /// For CSC unpacker - const char* modtag="cscunpacker"; - e.getByLabel(modtag,"MuonCSCWireDigi",wire_digis); - - /// To get information from the event setup, you must request the "Record" - /// which contains it and then extract the object you need (HCAL example) - - /// edm::ESHandle<CaloGeometry> geometry; - /// iSetup.get<IdealGeometryRecord>().get(geometry); - - analysisthr_.analyze(*wire_digis); -} - -void CSCAFEBAnalyzer::endJob() { - analysisthr_.done(); -} diff --git a/CalibMuon/CSCCalibration/src/CSCAFEBThrAnalysis.cc b/CalibMuon/CSCCalibration/src/CSCAFEBThrAnalysis.cc deleted file mode 100644 index e911a66f695..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCAFEBThrAnalysis.cc +++ /dev/null @@ -1,396 +0,0 @@ -#include "CalibMuon/CSCCalibration/interface/CSCAFEBThrAnalysis.h" -#include "CalibMuon/CSCCalibration/interface/CSCToAFEB.h" -#include <CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h> -#include "TMath.h" - -class CSCFitAFEBThr; - -CSCAFEBThrAnalysis::CSCAFEBThrAnalysis() { - -hist_file=0; // set to null - -nmbev=0; -nmbev_no_wire=0; - -npulses=100; -vecDac.clear(); -BegDac=1; -EndDac=29; -EvDac=1; -StepDac=1; -indDac=0; - -vecDacOccup.assign(150,0); -m_wire_dac.clear(); -m_res_for_db.clear(); -mh_ChanEff.clear(); -mh_FirstTime.clear(); -mh_AfebDac.clear(); - -} - -void CSCAFEBThrAnalysis::setup(const std::string& histoFileName) { - /// open the histogram file - hist_file=new TFile(histoFileName.c_str(),"RECREATE"); - hist_file->cd(); -} - -void CSCAFEBThrAnalysis::bookForId(int flag, const int& idint, - const std::string& idstring ) { - hist_file->cd(); - - std::ostringstream ss; - - if(flag==100) { - ss <<idint<<"_Anode_First_Time"; - mh_FirstTime[idint]=new TH2F(ss.str().c_str(),"",675,0.0,675.0,50,0.0,10.0); - mh_FirstTime[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_FirstTime[idint]->GetYaxis()->SetTitle("Anode First Time Bin"); - mh_FirstTime[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==101) { - ss <<idint<<"_Anode_Chan_Eff"; - mh_ChanEff[idint]=new TH1F(ss.str().c_str(),"",675,0.0,675.0); - mh_ChanEff[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_ChanEff[idint]->GetYaxis()->SetTitle("Entries"); - ss.str(""); // clear - } - - if(flag==200) { - ss <<idint<<"_Anode_AfebDac"; - mh_AfebDac[idint]=new TH2F(ss.str().c_str(),"",75,0.0,75.0, 50,0.0,50.0); - mh_AfebDac[idint]->GetXaxis()->SetTitle("Threshold DAC"); - mh_AfebDac[idint]->GetYaxis()->SetTitle("AFEB Channel Occupancy"); - mh_AfebDac[idint]->SetOption("COL"); - ss.str(""); // clear - } - - if(flag==300) { - ss <<idint<<"_Anode_AfebThrPar"; - mh_AfebThrPar[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,50.0); - mh_AfebThrPar[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebThrPar[idint]->GetYaxis()->SetTitle("AFEB Channel Threshold (DAC)"); - mh_AfebThrPar[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==400) { - ss <<idint<<"_Anode_AfebNoisePar"; - mh_AfebNoisePar[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,5.0); - mh_AfebNoisePar[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebNoisePar[idint]->GetYaxis()->SetTitle("AFEB Channel Noise (DAC)"); - mh_AfebNoisePar[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==500) { - ss <<idint<<"_Anode_AfebNDF"; - mh_AfebNDF[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 25,-5.0,20.0); - mh_AfebNDF[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebNDF[idint]->GetYaxis()->SetTitle("AFEB Channel Fit NDF"); - mh_AfebNDF[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==600) { - ss <<idint<<"_Anode_AfebChi2perNDF"; - mh_AfebChi2perNDF[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,10.0); - mh_AfebChi2perNDF[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebChi2perNDF[idint]->GetYaxis()->SetTitle("AFEB Channel Fit Chi2/NDF"); - mh_AfebChi2perNDF[idint]->SetOption("BOX"); - ss.str(""); // clear - } -} - -void CSCAFEBThrAnalysis::hf1ForId(std::map<int, TH1*>& mp, int flag, -const int& id, float& x, float w) { - - std::map<int,TH1*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,w); -} - -void CSCAFEBThrAnalysis::hf2ForId(std::map<int, TH2*>& mp, int flag, -const int& id, float& x, float& y, float w) { - - std::map<int,TH2*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,y,w); -} - - -/* Analyze the hits */ -void CSCAFEBThrAnalysis::analyze(const CSCWireDigiCollection& wirecltn) { - -std::ostringstream ss; -std::map<int,std::vector<int> >::iterator intIt; -std::map<int, std::vector<std::vector<int> > >::iterator wiredacIt; - -std::vector<int> vec; -int afeb,ch; -float x,y; - -m_wire_ev.clear(); - -/// Store DAC - -nmbev++; -//indDac=(nmbev-1)/EvDac; -float dac=BegDac+StepDac*indDac; -if(vecDac.size() <= indDac) vecDac.push_back(dac); - -//std::cout<<" Event "<<nmbev; -//std::cout<<" "<<indDac<<" "<<vecDac[indDac]<<std::endl; - -//Anode wires - - CSCWireDigiCollection::DigiRangeIterator wiredetUnitIt; - if(wirecltn.begin() == wirecltn.end()) nmbev_no_wire++; - - if(wirecltn.begin() != wirecltn.end()) { - - vecDacOccup[indDac]=vecDacOccup[indDac]+1; - - for (wiredetUnitIt=wirecltn.begin(); - wiredetUnitIt!=wirecltn.end(); - ++wiredetUnitIt){ - - const CSCDetId& id = (*wiredetUnitIt).first; - - const int idchamber=id.endcap()*10000 +id.station()*1000+ - id.ring()*100 +id.chamber(); - const int idlayer =id.endcap()*100000+id.station()*10000+ - id.ring()*1000+id.chamber()*10+id.layer(); - - // std::cout<<idchamber<<" "<<idlayer<<std::endl; - - const int maxwire=csctoafeb.getMaxWire(id.station(),id.ring()); - std::vector<int> wireplane(maxwire,0); - - const CSCWireDigiCollection::Range& range = (*wiredetUnitIt).second; - for (CSCWireDigiCollection::const_iterator digiIt = - range.first; digiIt!=range.second; ++digiIt){ - - int iwire=(*digiIt).getWireGroup(); - if(iwire<=maxwire) { - if(wireplane[iwire-1]==0) { - wireplane[iwire-1]=(*digiIt).getBeamCrossingTag()+1; - ch=csctoafeb.getAfebCh(id.layer(),(*digiIt).getWireGroup()); - afeb=csctoafeb.getAfebPos(id.layer(),(*digiIt).getWireGroup()); - - /// Plot time bin of the first hit vs AFEB channels - - x=(afeb-1)*16+ch; - y=wireplane[iwire-1]; - hf2ForId(mh_FirstTime, 100, idchamber,x, y, 1.0); - - } // end if wireplane[iwire-1]==0 - } // end if iwire<=csctoafeb.getMaxWire(id.station(),id.ring() - } // end of for digis in layer - - /// Store time bin of the first hit into map - - if(m_wire_ev.find(idlayer) == m_wire_ev.end()) - m_wire_ev[idlayer]=wireplane; - - } // end of cycle on detUnit - - - /// Accumulate hits into map of wires vs DAC - - for(intIt=m_wire_ev.begin(); intIt!=m_wire_ev.end(); ++intIt) { - const int idwirev=(*intIt).first; - const std::vector<int> wiretemp=(*intIt).second; // What for? - int nsize=EndDac-BegDac+1; - std::vector<int> zer(nsize,0); - - wiredacIt=m_wire_dac.find(idwirev); - if(wiredacIt==m_wire_dac.end()) { - for(unsigned int j=0;j<wiretemp.size();j++) - m_wire_dac[idwirev].push_back(zer); - wiredacIt=m_wire_dac.find(idwirev); -// std::cout<<idwirev<<" "<<wiredacIt->second.size()<<" "<< -// wiredacIt->second[0].size()<<std::endl; - } - for(unsigned int i=0;i<(*intIt).second.size();i++) - if((*intIt).second[i]>0) wiredacIt->second[i][indDac]= - wiredacIt->second[i][indDac]+1; - } // end of adding hits to the map of wire/DAC - } // end of if wire collection not empty - indDac++; - if(dac==(float)EndDac) indDac=0; -} // end of void CSCAFEBThrAnalysis - - -void CSCAFEBThrAnalysis::done() { - - float x,y; - - std::map<int, std::vector<std::vector<int> > >::iterator mwiredacIt; - std::map<int, std::vector<std::vector<float> > >::iterator mresfordbIt; - std::vector<int>::iterator vecIt; - - std::cout<<"Events analyzed "<<nmbev<<std::endl; - std::cout<<"Events no anodes "<<nmbev_no_wire<<std::endl<<std::endl; - - std::cout<<"DAC occupancy"<<std::endl; - int ndacsize=EndDac-BegDac+1; - for(int i=0;i<ndacsize;i++) std::cout - <<" "<<vecDacOccup[i]; - std::cout<<"\n\n"<<std::endl; - - std::vector<float> inputx; - std::vector<float> inputy; - - std::vector<float> mypar(2, 0.0); - std::vector<float> ermypar(2, 0.0); - float ercorr, chisq, edm; - int ndf,niter; - - int ch, afeb, idchmb; - - CSCFitAFEBThr * fitAnodeThr; - - std::vector<float> fitres(4,0); - -// std::cout<<"Threshold curves:\n"<<std::endl; - - for(mwiredacIt=m_wire_dac.begin();mwiredacIt!=m_wire_dac.end();++mwiredacIt){ - int idwiredac=(*mwiredacIt).first; - - int layer=idwiredac-(idwiredac/10)*10; - idchmb=idwiredac/10; - - for(int unsigned iwire=0; iwire<mwiredacIt->second.size();iwire++) { - - afeb=csctoafeb.getAfebPos(layer,iwire+1); - ch=csctoafeb.getAfebCh(layer,iwire+1); - int afebid=(idwiredac/10)*100+csctoafeb.getAfebPos(layer,iwire+1); - - indDac=0; - for(vecIt=mwiredacIt->second[iwire].begin(); - vecIt!=mwiredacIt->second[iwire].end(); ++vecIt) { - - x=vecDac[indDac]; y=*vecIt; - hf2ForId(mh_AfebDac, 200, afebid,x, y,1.0); - - /// Plot "efficiency" vs AFEB channels - if(indDac==0) { - x=(afeb-1)*16+ch; - y=*vecIt; - hf1ForId(mh_ChanEff, 101, idchmb, x, y); - } - - inputx.push_back(x); - inputy.push_back(y); - - indDac++; - } - // end of DAC cycle to form vectors of input data (inputx,inputy)for fit - -// std::cout<<afebid<<" "<<ch<<std::endl; -// for(unsigned int i=0;i<inputx.size();i++) -// std::cout<<" "<<inputy[i]; -// std::cout<<std::endl; - - - for(unsigned int i=0;i<2;i++) {mypar[i]=0.0; ermypar[i]=0.0;} - ercorr=0.0; - chisq=0.0; - ndf=0; - niter=0; - edm=0.0; - - /// Fitting threshold curve - fitAnodeThr=new CSCFitAFEBThr(); - -fitAnodeThr->ThresholdNoise(inputx,inputy,npulses,vecDacOccup,mypar,ermypar,ercorr,chisq,ndf,niter,edm); - delete fitAnodeThr; - -// std::cout<<"Fit "<<mypar[0]<<" "<<mypar[1]<<" "<<ndf<<" "<<chisq -// <<std::endl<<std::endl; - - /// Histogram fit results for given CSC vs wire defined as x=(afeb-1)*16+ch - - x=(afeb-1)*16+ch; - - /// Threshold - y=mypar[0]; - hf2ForId(mh_AfebThrPar, 300, idchmb,x, y, 1.0); - - /// Noise - y=mypar[1]; - hf2ForId(mh_AfebNoisePar, 400, idchmb,x, y, 1.0); - - /// NDF - y=ndf; - hf2ForId(mh_AfebNDF, 500, idchmb,x, y, 1.0); - - /// Chi2/NDF - y=0.0; - if(ndf>0) y=chisq/(float)ndf; - hf2ForId(mh_AfebChi2perNDF, 600, idchmb,x, y, 1.0); - - /// Prepare vector of fit results - fitres[0]=mypar[0]; - fitres[1]=mypar[1]; - fitres[2]=ndf; - fitres[3]=0.0; - if(ndf>0) fitres[3]=chisq/(float)ndf; - - /// Store fit results to map of wire vectors of vectors of results - - mresfordbIt=m_res_for_db.find(idwiredac); - if(mresfordbIt==m_res_for_db.end()) - m_res_for_db[idwiredac].push_back(fitres); - else m_res_for_db[idwiredac].push_back(fitres); - - inputx.clear(); - inputy.clear(); - -} // end for(int iwire=0) -} // end of iteration thru m_wire_dac map - - std::cout<<"Size of map for DB "<<m_res_for_db.size()<<std::endl; - - std::cout<<"The following CSCs will go to DB"<<std::endl<<std::endl; - - for(mresfordbIt=m_res_for_db.begin(); mresfordbIt!=m_res_for_db.end(); - ++mresfordbIt) { - int idlayer=(*mresfordbIt).first; - idchmb=idlayer/10; - int layer=idlayer-idchmb*10; - std::cout<<"CSC "<<idchmb<<" Layer "<<layer<<" " - <<(*mresfordbIt).second.size()<<std::endl; - } - /* - for(mresfordbIt=m_res_for_db.begin(); mresfordbIt!=m_res_for_db.end(); - ++mresfordbIt) { - int idlayer=(*mresfordbIt).first; - for (int i=0;i<(*mresfordbIt).second.size();i++) { - std::cout<<idlayer<<" "<<i+1<<" "; - for(int j=0;j<4;j++) - std::cout<< (*mresfordbIt).second[i][j]<<" "; - std::cout<<std::endl; - } - } - */ - if(hist_file!=0) { // if there was a histogram file... - hist_file->Write(); // write out the histrograms - delete hist_file; // close and delete the file - hist_file=0; // set to zero to clean up - std::cout << "Hist. file was closed\n"; - } - - std::cout<<" End of CSCAFEBThrAnalysis"<<std::endl; -} diff --git a/CalibMuon/CSCCalibration/src/CSCAFEBdacAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCAFEBdacAnalyzer.cc deleted file mode 100644 index 1ac2c49af92..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCAFEBdacAnalyzer.cc +++ /dev/null @@ -1,119 +0,0 @@ -/** - * Analyzer for reading AFEB thresholds. - * author O.Boeriu 18/03/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "DataFormats/CSCDigi/interface/CSCWireDigi.h" -#include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" -#include "EventFilter/CSCRawToDigi/interface/CSCAnodeData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCALCTHeader.h" -#include "EventFilter/CSCRawToDigi/interface/CSCCLCTData.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h" - -CSCAFEBdacAnalyzer::CSCAFEBdacAnalyzer(edm::ParameterSet const& conf) { - - i_chamber=0,i_layer=0,reportedChambers =0; - eventNumber = 0,event=0; - evt = 0,Nddu=0; - length = 1, NChambers=0; - misMatch=0, wireGroup=0, wireTBin=0; - - -} - - - -void CSCAFEBdacAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCWireDigiCollection> wires; - - // Pass the handle to the method "getByType", which is used to retrieve - // one and only one instance of the type in question out of event "e". If - // zero or more than one instance exists in the event an exception is thrown. - // - - e.getByLabel("cscunpacker","MuonCSCWireDigi",wires); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByLabel("DaqSource" , rawdata); - event =e.id().event(); - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - - - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - evt++; - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;continue;} - - for (i_chamber=0; i_chamber<NChambers; i_chamber++) {//loop over all DMBs - - for(i_layer = 1; i_layer <= 6; ++i_layer) {//loop over all layers in chambers - //int wire[64]=0; - - std::vector<CSCWireDigi> wire = cscData[i_chamber].wireDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - //if (thisDMBheader.afebAvailable()){};//check that AFEB data exists - - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID(); - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID(); - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i < wire.size(); i++){ //loop over wire digis - wireGroup = wire[i].getWireGroup(); - wireTBin = wire[i].getBeamCrossingTag();wireTBin = wire[i].getBeamCrossingTag(); - - - }//end digis loop - }//end layer loop - }//end chamber loop - - eventNumber++; - edm::LogInfo ("CSCAFEBdacAnalyzer") << "end of event number " << eventNumber; - }//end DDU loop - } - } -} diff --git a/CalibMuon/CSCCalibration/src/CSCCompThreshAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCCompThreshAnalyzer.cc deleted file mode 100644 index 439d6b5464c..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCCompThreshAnalyzer.cc +++ /dev/null @@ -1,165 +0,0 @@ -/** - * Analyzer for reading CSC comapartor thresholds. - * author O.Boeriu 9/05/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h" - -CSCCompThreshAnalyzer::CSCCompThreshAnalyzer(edm::ParameterSet const& conf) { - - eventNumber = 0; - evt = 0,Nddu=0,misMatch=0,event=0; - i_chamber=0,i_layer=0,reportedChambers =0; - length = 1, NChambers=0; - timebin=-999,mycompstrip=-999,comparator=0,compstrip=0; - - for(int i=0;i<CHAMBERS_ct;i++){ - for(int j=0; j<LAYERS_ct; j++){ - for(int k=0; k<STRIPS_ct; k++){ - theMeanThresh[i][j][k] = 0.; - arrayMeanThresh[i][j][k] = 0.; - mean[i][j][k]=0.; - meanTot[i][j][k]=0.; - } - } - } - - for (int i=0;i<480;i++){ - newThresh[i]=0; - } - -} - -void CSCCompThreshAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCStripDigiCollection> strips; - - // Pass the handle to the method "getByType", which is used to retrieve - // one and only one instance of the type in question out of event "e". If - // zero or more than one instance exists in the event an exception is thrown. - // - - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByLabel("DaqSource" , rawdata); - event =e.id().event(); - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - evt++; - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) {std::cout<< "misMatched size!!!" << std::endl; misMatch++;continue;} - - for (i_chamber=0; i_chamber<NChambers; i_chamber++) {//loop over all DMBs - if (cscData[i_chamber].nclct()) { - CSCCLCTData & clctData = cscData[i_chamber].clctData(); - }else { - std::cout<<" No CLCT!" <<std::endl; - continue; - } - CSCCLCTData & clctData = cscData[i_chamber].clctData(); - for(i_layer = 1; i_layer <= 6; ++i_layer) {//loop over all layers in chambers - //std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - std::vector<CSCComparatorDigi> comp = clctData.comparatorDigis(i_layer); - - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){//check that CFEB data exists - - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID(); //get DMB ID - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID(); //get crate ID - if(crateID[i_chamber] == 255) continue; //255 is reserved for old crate, present only 0 and 1 - - for (unsigned int i=0; i<comp.size(); i++){//loop over CFEB comparator digis - comparator = comp[i].getComparator(); - timebin = comp[i].getTimeBin() ; - compstrip = comp[i].getStrip(); - int this_comparator[4] = {4, 5, 6, 7}; - - for (int iii=0; iii<40; iii++){ - if ((compstrip == iii) && (comparator == this_comparator[0] || comparator == this_comparator[1])) { - mycompstrip = 0 + iii*2; - } else if ((compstrip == iii) && (comparator == this_comparator[2] || comparator == this_comparator[3])) { - mycompstrip = 1 + iii*2; - } - } - - mean[i_chamber][i_layer-1][mycompstrip] = comparator/5; - - }//end comp loop - - meanTot[i_chamber][i_layer-1][mycompstrip] +=mean[i_chamber][i_layer-1][mycompstrip]/25.; - - // On the 25th event - if (evt%25 == 0&&(mycompstrip)%16==(evt-1)/875){ - int tmp = int((evt-1)/25)%35 ; - meanmod[tmp][i_chamber][i_layer-1][mycompstrip] = meanTot[i_chamber][i_layer-1][mycompstrip]; - } - }//end if cfeb.available loop - }//end layer loop - }//end chamber loop - - if((evt-1)%25==0){ - for(int ii=0;ii<CHAMBERS_ct;ii++){ - for(int jj=0;jj<LAYERS_ct;jj++){ - for(int kk=0;kk<STRIPS_ct;kk++){ - mean[ii][jj][kk]=0.0; - meanTot[ii][jj][kk]=0.0; - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCCompThreshAnalyzer") << "end of event number " << eventNumber; - - }//end DDU loop - } - } -} diff --git a/CalibMuon/CSCCalibration/src/CSCCrossTalkAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCCrossTalkAnalyzer.cc deleted file mode 100644 index 8ec646bf943..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCCrossTalkAnalyzer.cc +++ /dev/null @@ -1,232 +0,0 @@ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h" - -//bool CSCCrossTalkAnalyzer::debug=false; - -CSCCrossTalkAnalyzer::CSCCrossTalkAnalyzer(edm::ParameterSet const& conf) { - - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0, Nddu=0; - strip=0,misMatch=0,max1 =-9999999.,max2=-9999999.; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1,myevt=0; - aPeak=0.0,sumFive=0.0; - pedMean=0.0,NChambers=0; - - for (int i=0;i<480;i++){ - new_xtalk_intercept_right[i] = -999.; - new_xtalk_intercept_left[i] = -999.; - new_xtalk_slope_right[i] = -999.; - new_xtalk_slope_left[i] = -999.; - new_rchi2[i] = -999.; - new_lchi2[i] = -999.; - newPeakTime[i] = -999.; - newMeanPeakTime[i] = -999.; - newPed[i] = 0 ; - newRMS[i] = 0.0; - newPeakRMS[i] = 0.0; - newPeak[i] = 0.0; - newSumFive[i] = 0.0; - } - - - // for (int iii=0;iii<DDU_xt;iii++){ -// for (int i=0; i<CHAMBERS_xt; i++){ -// for (int j=0; j<LAYERS_xt; j++){ -// for (int k=0; k<STRIPS_xt; k++){ - for (int l=0; l<TIMEBINS_xt; l++){ - myTime[l] = 0.0; - myADC[l] = 0.0; - myTbin[l] = 0; - } - // } -// } -// } -// } - - for (int i=0;i<CHAMBERS_xt;i++){ - size[i] = 0; - } - - for (int iii=0;iii<DDU_xt;iii++){ - for (int i=0; i<CHAMBERS_xt; i++){ - for (int j=0; j<LAYERS_xt; j++){ - for (int k=0; k<STRIPS_xt; k++){ - for (int l=0; l<TIMEBINS_xt*20; l++){ - thetime[iii][i][j][k][l] = 0.0; - thebins[iii][i][j][k][l] = 0 ; - theadccountsc[iii][i][j][k][l] = 0 ; - theadccountsl[iii][i][j][k][l] = 0 ; - theadccountsr[iii][i][j][k][l] = 0 ; - arrayOfPed[iii][i][j][k] = 0.; - arrayOfPedSquare[iii][i][j][k] = 0.; - arrayPed[iii][i][j][k] = 0.; - arrayPeak[iii][i][j][k] = 0.; - arrayOfPeak[iii][i][j][k] = 0.; - arrayOfPeakSquare[iii][i][j][k]= 0.; - arraySumFive[iii][i][j][k] = 0.; - - } - } - } - } - } - - - for (int iii=0;iii<DDU_xt;iii++){ - for (int i=0; i<CHAMBERS_xt; i++){ - for (int j=0; j<LAYERS_xt; j++){ - for (int k=0; k<STRIPS_xt; k++){ - xtalk_intercept_left[iii][i][j][k] = -999.; - xtalk_intercept_right[iii][i][j][k] = -999.; - xtalk_slope_left[iii][i][j][k] = -999.; - xtalk_slope_right[iii][i][j][k] = -999.; - xtalk_chi2_left[iii][i][j][k] = -999.; - xtalk_chi2_right[iii][i][j][k] = -999.; - myPeakTime[iii][i][j][k] = 0.0 ; - myMeanPeakTime[iii][i][j][k] = 0.0 ; - array_meanPeakTime[iii][i][j][k] = -999.; - } - } - } - } -} - -void CSCCrossTalkAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - edm::Handle<FEDRawDataCollection> rawdata; - e.getByLabel("DaqSource" , rawdata); - myevt=e.id().event(); - //tid=e.id().time(); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++; continue;} - - for (int chamber = 0; chamber < NChambers; chamber++){ - - for (int layer = 1; layer <= 6; layer++){ - - std::vector<CSCStripDigi> digis = cscData[chamber].stripDigis(layer) ; - const CSCDMBHeader &thisDMBheader = cscData[chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[chamber] = cscData[chamber].dmbHeader().dmbID(); - crateID[chamber] = cscData[chamber].dmbHeader().crateID(); - if(crateID[chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[chamber] = digis.size(); - int strip = digis[i].getStrip(); - std::vector<int> adc = digis[i].getADCCounts(); - pedMean1 =(adc[0]+adc[1])/2; - int offset = evt / 20; - int smain[5],splus[5],sminus[5]; //5 for CFEBs - for(int s=0;s<5;s++) smain[s] = s*16+offset; - for(int s=0;s<5;s++) splus[s] = s*16+offset+1; - for(int s=0;s<5;s++) sminus[s] = s*16+offset-1; - int iuse=-99; - for(int s=0; s<5; s++) {if(strip-1==smain[s]) iuse=smain[s];} - for(int s=0; s<5; s++) {if(strip-1==splus[s]) iuse=smain[s];} - for(int s=0; s<5; s++) {if(strip-1==sminus[s]) iuse=smain[s];} - - if(iuse!=-99){ - - for(unsigned int k=0;k<adc.size();k++){ - time = (50. * k)-((evt%20)* 6.25)+116.5; - calib_evt.time[k]=time; - calib_evt.adc[k]=adc[k]; - pedMean =(adc[0]+adc[1])/2; - - myTime[k]=time; - myADC[k]=adc[k]; - myTbin[k]=k; - - aPeak = adc[3]; - if (max1 < aPeak) { - max1 = aPeak; - } - sumFive = adc[2]+adc[3]+adc[4]; - - if (max2<sumFive){ - max2=sumFive; - } - - int kk=8*k-evt%20+19;//19 to zero everything, for binning 120 - - thebins[iDDU][chamber][layer-1][strip-1][kk] = 8*k-evt%20+19; - thetime[iDDU][chamber][layer-1][strip-1][kk] = time; - - if(iuse==strip-1) theadccountsc[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - if(iuse==strip) theadccountsr[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - if(iuse==strip-2) theadccountsl[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - //calibtree->Fill(); - }//adc.size() - }//end iuse!=99 - - arrayPed[iDDU][chamber][layer-1][strip-1] = pedMean1; - arrayOfPed[iDDU][chamber][layer-1][strip-1] += pedMean1; - arrayOfPedSquare[iDDU][chamber][layer-1][strip-1] += pedMean1*pedMean1 ; - arrayPeak[iDDU][chamber][layer-1][strip-1] = max1-pedMean1; - arrayOfPeak[iDDU][chamber][layer-1][strip-1] += max1-pedMean1; - arrayOfPeakSquare[iDDU][chamber][layer-1][strip-1] += (max1-pedMean1)*(max1-pedMean1); - arraySumFive[iDDU][chamber][layer-1][strip-1] = (max2-pedMean1)/(max1-pedMean1); - - }//end loop over digis - }//end cfeb.available loop - }//end loop over layers - }//end loop over chambers - - eventNumber++; - edm::LogInfo ("CSCCrossTalkAnalyzer") << "end of event number " << eventNumber; - - } - } - } -} diff --git a/CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc b/CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc deleted file mode 100644 index f5d99853d89..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCFitAFEBThr.cc +++ /dev/null @@ -1,142 +0,0 @@ -#include "Minuit2/VariableMetricMinimizer.h" -#include "Minuit2/FunctionMinimum.h" - -#include <CalibMuon/CSCCalibration/interface/CSCFitAFEBThr.h> -#include <CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h> - -#include <cmath> -#include <vector> -#include <iostream> - -using namespace ROOT::Minuit2; -using namespace std; - -CSCFitAFEBThr::CSCFitAFEBThr() { - theOBJfun = new CSCThrTurnOnFcn(); - theFitter = new VariableMetricMinimizer(); -} - -CSCFitAFEBThr::~CSCFitAFEBThr() { - delete theFitter; - delete theOBJfun; -} - -bool CSCFitAFEBThr::ThresholdNoise(const std::vector<float> & inputx, - const std::vector<float> & inputy, - const int & npulses, - std::vector<int> & dacoccup, - std::vector<float> & mypar, - std::vector<float> & ermypar, - float & ercorr, - float & chisq, - int & ndf, - int & niter, - float & edm - ) const { - bool status = false; - - std::vector<double> parinit(2,0); - std::vector<double> erparinit(2,0); - - /// initial parameters, parinit[0]-threshold, parinit[1]-noise - parinit[0] = 30.0; - parinit[1] = 2.0; - - erparinit[0] = 20; - erparinit[1] = 0.5; - - /// do not fit input[y]==max and input[y]==0.0; calculate binom. error; - std::vector<float> x; - std::vector<float> y; - std::vector<float> ynorm; - std::vector<float> ery; - x.clear(); - y.clear(); - ynorm.clear(); - ery.clear(); - - /// ndf > 0 if there is input data,number of points to fit > 2 and - /// fit did not fail. - /// ndf = 0 if number of points to fit = 2 - /// ndf =-1 .......................... = 1 - /// ndf =-2 .......................... = 0 - /// ndf =-3 fit failed (number of points to fit was > 2) - /// ndf =-4 no input data - - int sum=0; - float r; - for(unsigned int i=0;i<inputx.size();i++) { - if(inputy[i]>0.0) sum++; - r=inputy[i]/(float)dacoccup[i]; - ynorm.push_back(r); -// std::cout<<" "<<ynorm[i]; - } -// std::cout<<std::endl; - if(sum==0) { - ndf=-4; - return status; - } - - - int nbeg=inputx.size(); - for(unsigned int i=inputx.size()-1;i>=0;i--) { - if(ynorm[i]<1.0) nbeg--; - if(ynorm[i]==1.0) break; - } - - for(unsigned int i=nbeg;i<inputx.size();i++) { - if(ynorm[i]>0.0) { - x.push_back(inputx[i]); - y.push_back(ynorm[i]); - - float p=inputy[i]/(float)dacoccup[i]; - float s=(float)dacoccup[i] * p * (1.0-p); - s=sqrt(s)/(float)dacoccup[i]; - ery.push_back(s); - } - } - - /// do not fit data with less than 3 points - ndf=x.size()-2; - if(ndf <=0) return status; - - /// Calculate approximate initial threshold par[0] - float half=0.5; - float dmin=999999.0; - float diff; - for(unsigned int i=0;i<x.size();i++) { - diff=y[i]-half; if(diff<0.0) diff=-diff; - if(diff<dmin) {dmin=diff; parinit[0]=x[i];} // par[0] from data - //cout<<i+1<<" "<<x[i]<<" "<<y[i]<<" "<<ery[i]<<endl; - } - - /// store data, errors and npulses for fit - theOBJfun->setData(x,y); - theOBJfun->setErrors(ery); - theOBJfun->setNorm(1.0); - - // for(unsigned int i=0;i<x.size();i++) std::cout<<" "<<x[i]<<" "<<y[i] - // <<" "<<ery[i]<<std::endl; - - /// Fit as 1D, <=500 iterations, edm=10**-5 (->0.1) - FunctionMinimum fmin=theFitter->Minimize(*theOBJfun,parinit,erparinit,1,500,0.1); - - status = fmin.IsValid(); - - if(status) { - mypar[0]=(float)fmin.Parameters().Vec()(0); - mypar[1]=(float)fmin.Parameters().Vec()(1); - ermypar[0]=(float)sqrt( fmin.Error().Matrix()(0,0) ); - ermypar[1]=(float)sqrt( fmin.Error().Matrix()(1,1) ); - ercorr=0; - if(ermypar[0] !=0.0 && ermypar[1]!=0.0) - ercorr=(float)fmin.Error().Matrix()(0,1)/(ermypar[0]*ermypar[1]); - - chisq = fmin.Fval(); - ndf=y.size()-mypar.size(); - niter=fmin.NFcn(); - edm=fmin.Edm(); - } - else ndf=-3; - return status; -} diff --git a/CalibMuon/CSCCalibration/src/CSCGainAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCGainAnalyzer.cc deleted file mode 100644 index 5a10385e7c0..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCGainAnalyzer.cc +++ /dev/null @@ -1,159 +0,0 @@ -/** - * Analyzer for reading CSC pedestals. - * author S. Durkin, O.Boeriu 18/03/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h" - -CSCGainAnalyzer::CSCGainAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0,Nddu=0; - strip=0,misMatch=0,NChambers=0; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1,gainSlope=-999.0,gainIntercept=-999.0; - - for (int i=0; i<NUMMODTEN_ga; i++){ - for (int j=0; j<CHAMBERS_ga; j++){ - for (int k=0; k<LAYERS_ga; k++){ - for (int l=0; l<STRIPS_ga; l++){ - maxmodten[i][j][k][l] = 0.0; - } - } - } - } - - - for (int i=0; i<CHAMBERS_ga; i++){ - size[i] = 0; - } - - for (int iii=0;iii<DDU_ga;iii++){ - for (int i=0; i<CHAMBERS_ga; i++){ - for (int j=0; j<LAYERS_ga; j++){ - for (int k=0; k<STRIPS_ga; k++){ - adcMax[iii][i][j][k] = -999.0; - adcMean_max[iii][i][j][k] = -999.0; - } - } - } - } - - for (int i=0; i<480; i++){ - newGain[i] =0.0; - newIntercept[i]=0.0; - newChi2[i] =0.0; - } -} - -void CSCGainAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByLabel("DaqSource" , rawdata); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;} - - for (int i_chamber=0; i_chamber<NChambers; i_chamber++) { - - for (int i_layer = 1; i_layer <=6; ++i_layer) { - - std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID();//get DMB ID - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID();//get crate ID - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[i_chamber] = digis.size(); - std::vector<int> adc = digis[i].getADCCounts(); - strip = digis[i].getStrip(); - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=-99.0; - for(unsigned int k=0; k<adc.size(); k++){ - float ped=(adc[0]+adc[1])/2.; - if(adc[k]-ped > adcMax[iDDU][i_chamber][i_layer-1][strip-1]) { - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=adc[k]-ped; - } - } - adcMean_max[iDDU][i_chamber][i_layer-1][strip-1] += adcMax[iDDU][i_chamber][i_layer-1][strip-1]/20.; - - //On the 10th event save - if (evt%20 == 0 && (strip-1)%16 == (evt-1)/NUMMODTEN_ga){ - int ten = int((evt-1)/20)%NUMBERPLOTTED_ga ; - maxmodten[ten][i_chamber][i_layer-1][strip-1] = adcMean_max[iDDU][i_chamber][i_layer-1][strip-1]; - } - }//end digis loop - }//end cfeb.available loop - }//end layer loop - }//end chamber loop - - if((evt-1)%20==0){ - for(int iii=0;iii<DDU_ga;iii++){ - for(int ii=0; ii<CHAMBERS_ga; ii++){ - for(int jj=0; jj<LAYERS_ga; jj++){ - for(int kk=0; kk<STRIPS_ga; kk++){ - adcMean_max[iii][ii][jj][kk]=0.0; - } - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCGainAnalyzer") << "end of event number " << eventNumber; - } - } - } -} - - diff --git a/CalibMuon/CSCCalibration/src/CSCNoiseMatrixAnalyzer.cc b/CalibMuon/CSCCalibration/src/CSCNoiseMatrixAnalyzer.cc deleted file mode 100644 index 6e5893ace4d..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCNoiseMatrixAnalyzer.cc +++ /dev/null @@ -1,132 +0,0 @@ -/** - * Analyzer for reading CSC bin by bin ADC information. - * author S. Durkin, O.Boeriu 26/04/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -//#include "CalibMuon/CSCCalibration/interface/AutoCorrMat.h" -#include "CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h" - -CSCNoiseMatrixAnalyzer::CSCNoiseMatrixAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0,NChambers=0,Nddu=0; - strip=0,misMatch=0; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1; - for(int k=0;k<CHAMBERS_ma;k++) cam[k].zero(); - - for (int i=0;i<480;i++){ - newMatrix1[i] = 0.0; - newMatrix2[i] = 0.0; - newMatrix3[i] = 0.0; - newMatrix4[i] = 0.0; - newMatrix5[i] = 0.0; - newMatrix6[i] = 0.0; - newMatrix7[i] = 0.0; - newMatrix8[i] = 0.0; - newMatrix9[i] = 0.0; - newMatrix10[i]= 0.0; - newMatrix11[i]= 0.0; - newMatrix12[i]= 0.0; - - } - - for (int i=0; i< CHAMBERS_ma; i++){ - size[i]=0; - } -} - -void CSCNoiseMatrixAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCStripDigiCollection> strips; - - // Pass the handle to the method "getByType", which is used to retrieve - // one and only one instance of the type in question out of event "e". If - // zero or more than one instance exists in the event an exception is thrown. - // - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByLabel("DaqSource" , rawdata); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - evt++; - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;} - - for (int i_chamber=0; i_chamber<NChambers; i_chamber++) { - - for(int i_layer = 1; i_layer <= LAYERS_ma; ++i_layer) { - std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID(); - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID(); - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[i_chamber]=digis.size(); - int strip = digis[i].getStrip(); - adc = digis[i].getADCCounts(); - int tadc[8]; - for(unsigned int j=0;j<adc.size();j++)tadc[j]=adc[j]; - cam[i_chamber].add(i_layer-1,strip-1,tadc); - } - } - } - } - tmp=corrmat; - - eventNumber++; - edm::LogInfo ("CSCNoiseMatrixAnalyzer") << "end of event number " << eventNumber; - } - } - } -} diff --git a/CalibMuon/CSCCalibration/src/CSCThrTurnOnFcn.cc b/CalibMuon/CSCCalibration/src/CSCThrTurnOnFcn.cc deleted file mode 100644 index a9c92a799f2..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCThrTurnOnFcn.cc +++ /dev/null @@ -1,37 +0,0 @@ -#include <CalibMuon/CSCCalibration/interface/CSCThrTurnOnFcn.h> -#include <FWCore/MessageLogger/interface/MessageLogger.h> -#include <cmath> -#include <iostream> -#include <vector> -#include "TMath.h" - -double CSCThrTurnOnFcn::operator() -(const std::vector<double>& par) const { - - double x,y,er,fn; - double N=norm; - double chi2 = 0.; - - int size=xdata.size(); - for(int i = 0; i < size; ++i) { - x=xdata[i]; - y=ydata[i]; - er=ery[i]; - - fn=(x-par[0])/(par[1]*1.4142); - fn=N * (1.- TMath::Erf(fn))/2.; - - double diff = y-fn; - chi2 += diff*diff / (er*er); - - // std::cout<<"CSC AFEB threshold fit "<<i+1<<" "<<x<<" "<<y<<" " - // <<er<<" "<<fn<<" "<<chi2<<" " - // <<par[0]<<" "<<par[1]<<"\n"; - - LogDebug("CSC")<<" AFEB threshold fit "<<i+1<<" "<<x<<" "<<y<<" " - <<er<<" "<<fn<<" "<<chi2<<" " - <<par[0]<<" "<<par[1]<<"\n"; - } - // std::cout<<"Chi2 "<<chi2<<std::endl; - return chi2; -} diff --git a/CalibMuon/CSCCalibration/src/CSCToAFEB.cc b/CalibMuon/CSCCalibration/src/CSCToAFEB.cc deleted file mode 100644 index 0ce6c2cea65..00000000000 --- a/CalibMuon/CSCCalibration/src/CSCToAFEB.cc +++ /dev/null @@ -1,52 +0,0 @@ -/**\class CSCToAFEB - * - * CSC layer, wire vs AFEB channel map. - * - * \author N. Terentiev, CMU - */ - -#include <CalibMuon/CSCCalibration/interface/CSCToAFEB.h> -#include <iostream> - -using namespace std; - - /// return AFEB channel number - int CSCToAFEB::getAfebCh(int layer, int wiregroup) const { - int wire=wiregroup-8*((wiregroup-1)/8); - int channel=layer_wire_to_channel_[layer - 1][wire - 1]; - return channel; - } - /// return AFEB position number - int CSCToAFEB::getAfebPos(int layer, int wiregroup) const { - int col=(wiregroup-1)/8+1; - int wire=wiregroup-8*((wiregroup-1)/8); - int afeb=(col-1)*3+layer_wire_to_board_[layer - 1][wire - 1]; - return afeb; - } - /// return layer number - int CSCToAFEB::getLayer(int afeb, int channel) const { - int col=(afeb-1)/3+1; - int pos_in_col=afeb-(col-1)*3; - int layer=pos_in_col*2-1; - if(channel < 5 || (channel >8 && channel < 13)) layer++; - return layer; - } - /// return wiregroup number - int CSCToAFEB::getWireGroup(int afeb, int channel) const { - int col=(afeb-1)/3+1; - int wire=(col-1)*8+1; - if(channel<5) wire=wire+(channel-1); - if(channel>4 && channel<9) wire=wire+(channel-5); - if(channel>8 && channel<13) wire=wire+(channel-5); - if(channel>12) wire=wire+(channel-9); - return wire; - } - /// return max. number of AFEBs - int CSCToAFEB::getMaxAfeb(int station, int ring) const { - return station_ring_to_nmxafeb_[station-1][ring-1]; - } - - /// return max. number of wiregroups per plane - int CSCToAFEB::getMaxWire(int station, int ring) const { - return station_ring_to_nmxwire_[station-1][ring-1]; - } diff --git a/CalibMuon/CSCCalibration/src/SealModule.cc b/CalibMuon/CSCCalibration/src/SealModule.cc deleted file mode 100644 index 8e1f52315ba..00000000000 --- a/CalibMuon/CSCCalibration/src/SealModule.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "CalibMuon/CSCCalibration/interface/CSCAFEBAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCAFEBdacAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCCompThreshAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCCrossTalkAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCGainAnalyzer.h" -#include "CalibMuon/CSCCalibration/interface/CSCNoiseMatrixAnalyzer.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(CSCAFEBAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCAFEBdacAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCCompThreshAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCCrossTalkAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCGainAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCNoiseMatrixAnalyzer); diff --git a/CalibMuon/Configuration/doc/html/index.html b/CalibMuon/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibMuon/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibMuon/Configuration/doc/html/overview.html b/CalibMuon/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibMuon/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibMuon/DTDigiSync/doc/html/index.html b/CalibMuon/DTDigiSync/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibMuon/DTDigiSync/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibMuon/DTDigiSync/doc/html/overview.html b/CalibMuon/DTDigiSync/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibMuon/DTDigiSync/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibMuon/RPCCalibration/doc/html/index.html b/CalibMuon/RPCCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibMuon/RPCCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibMuon/RPCCalibration/doc/html/overview.html b/CalibMuon/RPCCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibMuon/RPCCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/Configuration/doc/html/index.html b/CalibTracker/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/Configuration/doc/html/overview.html b/CalibTracker/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelConnectivity/src/module.cc b/CalibTracker/SiPixelConnectivity/src/module.cc index dda478317f2..f5cd64175c8 100644 --- a/CalibTracker/SiPixelConnectivity/src/module.cc +++ b/CalibTracker/SiPixelConnectivity/src/module.cc @@ -8,4 +8,4 @@ EVENTSETUP_DATA_REG(PixelToFEDAssociate); DEFINE_FWK_EVENTSETUP_MODULE(PixelToFEDAssociateFromAsciiESProducer); -// DEFINE_ANOTHER_FWK_EVENTSETUP_MODULE(...); +// DEFINE_ANOTHER_FWK_EVENTSETUP_MODULE(...) diff --git a/CalibTracker/SiPixelESProducers/doc/html/index.html b/CalibTracker/SiPixelESProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelESProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelESProducers/doc/html/overview.html b/CalibTracker/SiPixelESProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelESProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelErrorEstimation/doc/html/index.html b/CalibTracker/SiPixelErrorEstimation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelErrorEstimation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelErrorEstimation/doc/html/overview.html b/CalibTracker/SiPixelErrorEstimation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelErrorEstimation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelGainCalibration/doc/html/index.html b/CalibTracker/SiPixelGainCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelGainCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelGainCalibration/doc/html/overview.html b/CalibTracker/SiPixelGainCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelGainCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelIsAliveCalibration/doc/html/index.html b/CalibTracker/SiPixelIsAliveCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelIsAliveCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelIsAliveCalibration/doc/html/overview.html b/CalibTracker/SiPixelIsAliveCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelIsAliveCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelSCurveCalibration/doc/html/index.html b/CalibTracker/SiPixelSCurveCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelSCurveCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelSCurveCalibration/doc/html/overview.html b/CalibTracker/SiPixelSCurveCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelSCurveCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiPixelTools/doc/html/index.html b/CalibTracker/SiPixelTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiPixelTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiPixelTools/doc/html/overview.html b/CalibTracker/SiPixelTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiPixelTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiStripAPVAnalysis/src/ApvAnalysisFactory.cc b/CalibTracker/SiStripAPVAnalysis/src/ApvAnalysisFactory.cc index 16aaf34b8ee..43c445d7259 100644 --- a/CalibTracker/SiStripAPVAnalysis/src/ApvAnalysisFactory.cc +++ b/CalibTracker/SiStripAPVAnalysis/src/ApvAnalysisFactory.cc @@ -130,7 +130,8 @@ void ApvAnalysisFactory::update(uint32_t detId, const edm::DetSet<SiStripRawDigi for(int istrip = startStrip; istrip < stopStrip;istrip++) { - tmpRawDigi.data.push_back(in.data[istrip]); //maybe dangerous + if (in.data.size() <= istrip) tmpRawDigi.data.push_back(0); + else tmpRawDigi.data.push_back(in.data[istrip]); //maybe dangerous } (*apvIt)->newEvent(); diff --git a/CalibTracker/SiStripCommon/doc/html/index.html b/CalibTracker/SiStripCommon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiStripCommon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiStripCommon/doc/html/overview.html b/CalibTracker/SiStripCommon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiStripCommon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiStripDCS/doc/html/index.html b/CalibTracker/SiStripDCS/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiStripDCS/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiStripDCS/doc/html/overview.html b/CalibTracker/SiStripDCS/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiStripDCS/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiStripESProducers/doc/html/index.html b/CalibTracker/SiStripESProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiStripESProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiStripESProducers/doc/html/overview.html b/CalibTracker/SiStripESProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiStripESProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiStripHitEfficiency/doc/html/index.html b/CalibTracker/SiStripHitEfficiency/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiStripHitEfficiency/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiStripHitEfficiency/doc/html/overview.html b/CalibTracker/SiStripHitEfficiency/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiStripHitEfficiency/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CalibTracker/SiStripLorentzAngle/BuildFile b/CalibTracker/SiStripLorentzAngle/BuildFile deleted file mode 100644 index 09736fcb687..00000000000 --- a/CalibTracker/SiStripLorentzAngle/BuildFile +++ /dev/null @@ -1,12 +0,0 @@ -<flags SEAL_PLUGIN_NAME="CalibTrackerSiStripLorentzAngle"> -<use name=FWCore/Framework> -<use name=DataFormats/Common> -<use name=FWCore/ParameterSet> -<use name=RecoTracker/TkSeedGenerator> -<use name=TrackingTools/TrackFitters> -<use name=TrackingTools/TransientTrack> -<use name=clhep> -<use name=boost> -<export> -<lib name=CalibTrackerSiStripLorentzAngle> -</export> diff --git a/CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h b/CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h deleted file mode 100644 index 70f386e6c36..00000000000 --- a/CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h +++ /dev/null @@ -1,244 +0,0 @@ -#ifndef CalibTracker_SiStripLorentzAngle_SiStripLorentzAngle_h -#define CalibTracker_SiStripLorentzAngle_SiStripLorentzAngle_h - -#include <map> - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h" -#include "DataFormats/DetId/interface/DetId.h" - -#include <TROOT.h> -#include <TTree.h> -#include <TFile.h> -#include <TH1F.h> -#include <TF1.h> -#include <TProfile.h> -#include <TFolder.h> -#include <TDirectory.h> -#include <TAxis.h> -#include <TMath.h> - - -class SiStripLorentzAngle : public edm::EDAnalyzer -{ - public: - - explicit SiStripLorentzAngle(const edm::ParameterSet& conf); - - virtual ~SiStripLorentzAngle(); - - virtual void beginJob(const edm::EventSetup& c); - - virtual void endJob(); - - virtual void analyze(const edm::Event& e, const edm::EventSetup& c); - - void findtrackangle(const TrajectorySeed& seed, - const TrackingRecHitCollection &hits, - const edm::Event& e, - const edm::EventSetup& es); - - TrajectoryStateOnSurface startingTSOS(const TrajectorySeed& seed)const; - - const char* makename(DetId detid); - - const char* makedescription(DetId detid); - - private: - - const TrackerGeometry::DetIdContainer& Id; - - typedef std::map <int, TProfile*> histomap; - histomap histos; - - typedef struct {double chi2; int ndf; double p0; double p1; double p2; double errp0; double errp1; double errp2; double min;} histofit ; - typedef std::map <int, histofit*> fitmap; - fitmap fits; - - typedef std::vector<std::pair<const TrackingRecHit *,float> > hitanglevector; - typedef std::map <const reco::Track *, hitanglevector> trackhitmap; - - edm::ParameterSet conf_; - std::string filename_; - - std::vector<DetId> Detvector; - - TrackLocalAngle *anglefinder_; - - int mtcctibcorr, mtcctobcorr; - - int monodscounter; - int monosscounter; - int stereocounter; - - int run; - int event; - int size; - int module; - int string; - int rod; - int extint; - int bwfw; - int wheel; - int type; - int layer; - int sign; - int charge; - float angle; - float stereocorrection; - float localmagfield; - int monostereo; - float momentum, pt; - - int eventcounter, trackcounter, hitcounter; - LocalVector localmagdir; - - - - - TF1* fitfunc; - TFile* hFile; - TTree* SiStripLorentzAngleTree; - - TH1F *hphi, *hnhit; - TH1F *htaTIBL1mono; - TH1F *htaTIBL1stereo; - TH1F *htaTIBL2mono; - TH1F *htaTIBL2stereo; - TH1F *htaTIBL3; - TH1F *htaTIBL4; - TH1F *htaTOBL1mono; - TH1F *htaTOBL1stereo; - TH1F *htaTOBL2mono; - TH1F *htaTOBL2stereo; - TH1F *htaTOBL3; - TH1F *htaTOBL4; - TH1F *htaTOBL5; - TH1F *htaTOBL6; - TProfile *hwvst; - - bool seed_plus; - PropagatorWithMaterial *thePropagator; - PropagatorWithMaterial *thePropagatorOp; - KFUpdator *theUpdator; - Chi2MeasurementEstimator *theEstimator; - - const TransientTrackingRecHitBuilder *RHBuilder; - const KFTrajectorySmoother * theSmoother; - const KFTrajectoryFitter * theFitter; - const TrackerGeometry * tracker; - const MagneticField * magfield; - TrajectoryStateTransform tsTransform; - - //Directory hierarchy - - TDirectory *histograms; - TDirectory *summary; - - //TIB-TID-TOB-TEC - - TDirectory *TIB; - TDirectory *TOB; - TDirectory *TID; - TDirectory *TEC; - - //Forward-Backward - - TDirectory *TIBfw; - TDirectory *TIDfw; - TDirectory *TOBfw; - TDirectory *TECfw; - - TDirectory *TIBbw; - TDirectory *TIDbw; - TDirectory *TOBbw; - TDirectory *TECbw; - - //TIB directories - - TDirectory *TIBfw1; - TDirectory *TIBfw2; - TDirectory *TIBfw3; - TDirectory *TIBfw4; - - TDirectory *TIBbw1; - TDirectory *TIBbw2; - TDirectory *TIBbw3; - TDirectory *TIBbw4; - - //TID directories - - TDirectory *TIDfw1; - TDirectory *TIDfw2; - TDirectory *TIDfw3; - - TDirectory *TIDbw1; - TDirectory *TIDbw2; - TDirectory *TIDbw3; - - //TOB directories - - TDirectory *TOBfw1; - TDirectory *TOBfw2; - TDirectory *TOBfw3; - TDirectory *TOBfw4; - TDirectory *TOBfw5; - TDirectory *TOBfw6; - - TDirectory *TOBbw1; - TDirectory *TOBbw2; - TDirectory *TOBbw3; - TDirectory *TOBbw4; - TDirectory *TOBbw5; - TDirectory *TOBbw6; - - //TEC directories - - TDirectory *TECfw1; - TDirectory *TECfw2; - TDirectory *TECfw3; - TDirectory *TECfw4; - TDirectory *TECfw5; - TDirectory *TECfw6; - TDirectory *TECfw7; - TDirectory *TECfw8; - TDirectory *TECfw9; - - TDirectory *TECbw1; - TDirectory *TECbw2; - TDirectory *TECbw3; - TDirectory *TECbw4; - TDirectory *TECbw5; - TDirectory *TECbw6; - TDirectory *TECbw7; - TDirectory *TECbw8; - TDirectory *TECbw9; - -}; - - -#endif diff --git a/CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h b/CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h deleted file mode 100644 index 9b3970d7dcd..00000000000 --- a/CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef CalibTracker_SiSitripLorentzAngle_TrackLocalAngle_h -#define CalibTracker_SiSitripLorentzAngle_TrackLocalAngle_h - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeed.h" -#include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" -#include "TrackingTools/MaterialEffects/interface/PropagatorWithMaterial.h" -#include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" -#include "TrackingTools/KalmanUpdators/interface/Chi2MeasurementEstimator.h" - #include "TrackingTools/TrackFitters/interface/KFTrajectoryFitter.h" -#include "TrackingTools/TrackFitters/interface/KFTrajectorySmoother.h" -#include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateTransform.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/TrackReco/interface/Track.h" - -class TrackLocalAngle -{ - public: - - // typedef TransientTrackingRecHit::ConstRecHitPointer ConstRecHitPointer; - //typedef TransientTrackingRecHit::RecHitPointer RecHitPointer; - //typedef ConstReferenceCountingPointer<TransientTrackingRecHit> ConstRecHitPointer; - - explicit TrackLocalAngle(const edm::ParameterSet& conf); - - virtual ~TrackLocalAngle(); - void init(const edm::Event& e,const edm::EventSetup& c); - - std::vector<std::pair<const TrackingRecHit*,float> > findtrackangle(const TrajectorySeed& seed, - const reco::Track & theT); - - std::vector<std::pair<const TrackingRecHit *,float> > findtrackangle(const reco::Track & theT); - std::vector<std::pair<const TrackingRecHit *,float> > buildTrack(TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed); - TrajectoryStateOnSurface startingTSOS(const TrajectorySeed& seed)const; - - private: - edm::ParameterSet conf_; - - bool seed_plus; - const Propagator *thePropagator; - const Propagator *thePropagatorOp; - KFUpdator *theUpdator; - Chi2MeasurementEstimator *theEstimator; - const TransientTrackingRecHitBuilder *RHBuilder; - // const KFTrajectorySmoother * theSmoother; - const TrajectoryFitter * theFitter; - const TrackerGeometry * tracker; - const MagneticField * magfield; - TrajectoryStateTransform tsTransform; - // TransientTrackingRecHit::RecHitContainer hits; -}; - - -#endif diff --git a/CalibTracker/SiStripLorentzAngle/src/SealModules.cc b/CalibTracker/SiStripLorentzAngle/src/SealModules.cc deleted file mode 100644 index f04bf267001..00000000000 --- a/CalibTracker/SiStripLorentzAngle/src/SealModules.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Framework/interface/ModuleFactory.h" -#include "CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(SiStripLorentzAngle) - diff --git a/CalibTracker/SiStripLorentzAngle/src/SiStripLorentzAngle.cc b/CalibTracker/SiStripLorentzAngle/src/SiStripLorentzAngle.cc deleted file mode 100644 index c60b8e69ce0..00000000000 --- a/CalibTracker/SiStripLorentzAngle/src/SiStripLorentzAngle.cc +++ /dev/null @@ -1,1580 +0,0 @@ - -#include <memory> -#include <string> -#include <iostream> -#include <fstream> - -#include "CalibTracker/SiStripLorentzAngle/interface/SiStripLorentzAngle.h" - -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/TrackReco/interface/TrackExtraFwd.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TIDDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/SiStripDetId/interface/TECDetId.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "Geometry/CommonTopologies/interface/StripTopology.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "MagneticField/Engine/interface/MagneticField.h" - - -using namespace std; - - //Constructor - -SiStripLorentzAngle::SiStripLorentzAngle(edm::ParameterSet const& conf) : - conf_(conf), filename_(conf.getParameter<std::string>("fileName")) -{ - anglefinder_=new TrackLocalAngle(conf); -} - - //BeginJob - -void SiStripLorentzAngle::beginJob(const edm::EventSetup& c){ - - hFile = new TFile (filename_.c_str(), "RECREATE" ); - - TAxis *xaxis, *yaxis; - - hphi = new TH1F("hphi","Phi distribution",20,-3.14,3.14); - hnhit = new TH1F("hnhit","Number of Hits per Track ",18,2,20); - - hwvst = new TProfile("WidthvsTrackProjection","Cluster width vs track projection ",120,-60.,60.); - fitfunc = new TF1("fitfunc","[1]*((x-[0])^2)+[2]",-30,30); - - SiStripLorentzAngleTree = new TTree("SiStripLorentzAngleTree","SiStrip LorentzAngle tree"); - SiStripLorentzAngleTree->Branch("run", &run, "run/I"); - SiStripLorentzAngleTree->Branch("event", &event, "event/I"); - SiStripLorentzAngleTree->Branch("module", &module, "module/I"); - SiStripLorentzAngleTree->Branch("type", &type, "type/I"); - SiStripLorentzAngleTree->Branch("layer", &layer, "layer/I"); - SiStripLorentzAngleTree->Branch("string", &string, "string/I"); - SiStripLorentzAngleTree->Branch("rod", &rod, "rod/I"); - SiStripLorentzAngleTree->Branch("extint", &extint, "extint/I"); - SiStripLorentzAngleTree->Branch("size", &size, "size/I"); - SiStripLorentzAngleTree->Branch("angle", &angle, "angle/F"); - SiStripLorentzAngleTree->Branch("sign", &sign, "sign/I"); - SiStripLorentzAngleTree->Branch("bwfw", &bwfw, "bwfw/I"); - SiStripLorentzAngleTree->Branch("wheel", &wheel, "wheel/I"); - SiStripLorentzAngleTree->Branch("monostereo", &monostereo, "monostereo/I"); - SiStripLorentzAngleTree->Branch("stereocorrection", &stereocorrection, "stereocorrection/F"); - SiStripLorentzAngleTree->Branch("localmagfield", &localmagfield, "localmagfield/F"); - SiStripLorentzAngleTree->Branch("momentum", &momentum, "momentum/F"); - SiStripLorentzAngleTree->Branch("pt", &pt, "pt/F"); - SiStripLorentzAngleTree->Branch("charge", &charge, "charge/I"); - - eventcounter = 0; - trackcounter = 0; - hitcounter = 0; - - mtcctibcorr = 0; - mtcctobcorr = 0; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - mtcctibcorr = 1; - mtcctobcorr = 2; - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL1mono = new TH1F("TIBL1angle_mono","Track angle (TIB L1) MONO",120,-60.,60.); - xaxis = htaTIBL1mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL1stereo = new TH1F("TIBL1angle_stereo","Track angle (TIB L1) STEREO",120,-60.,60.); - xaxis = htaTIBL1stereo->GetXaxis(); - xaxis->SetTitle("degree"); - } - - htaTIBL2mono = new TH1F("TIBL2angle_mono","Track angle (TIB L2) MONO",120,-60.,60.); - xaxis = htaTIBL2mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL2stereo = new TH1F("TIBL2angle_stereo","Track angle (TIB L2) STEREO",120,-60.,60.); - xaxis = htaTIBL2stereo->GetXaxis(); - xaxis->SetTitle("degree"); - htaTIBL3 = new TH1F("TIBL3angle","Track angle (TIB L3)",120,-60.,60.); - xaxis = htaTIBL3->GetXaxis(); - xaxis->SetTitle("degree"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL4 = new TH1F("TIBL4angle","Track angle (TIB L4)",120,-60.,60.); - xaxis = htaTIBL4->GetXaxis(); - xaxis->SetTitle("degree"); - - htaTOBL1mono = new TH1F("TOBL1angle_mono","Track angle (TOB L1) MONO",120,-60.,60.); - xaxis = htaTOBL1mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL1stereo = new TH1F("TOBL1angle_stereo","Track angle (TOB L1) STEREO",120,-60.,60.); - xaxis = htaTOBL1stereo->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL2mono = new TH1F("TOBL2angle_mono","Track angle (TOB L2) MONO",120,-60.,60.); - xaxis = htaTOBL2mono->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL2stereo = new TH1F("TOBL2angle_stereo","Track angle (TOB L2) STEREO",120,-60.,60.); - xaxis = htaTOBL2stereo->GetXaxis(); - xaxis->SetTitle("degree"); - } - - htaTOBL3 = new TH1F("TOBL3","Track angle (TOB L3)",120,-60.,60.); - xaxis = htaTOBL3->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL4 = new TH1F("TOBL4","Track angle (TOB L4)",120,-60.,60.); - xaxis = htaTOBL4->GetXaxis(); - xaxis->SetTitle("degree"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTOBL5 = new TH1F("TOBL5","Track angle (TOB L5)",120,-60.,60.); - xaxis = htaTOBL5->GetXaxis(); - xaxis->SetTitle("degree"); - htaTOBL6 = new TH1F("TOBL6","Track angle (TOB L6)",120,-60.,60.); - xaxis = htaTOBL6->GetXaxis(); - xaxis->SetTitle("degree"); - } - - edm::ESHandle<MagneticField> esmagfield; - c.get<IdealMagneticFieldRecord>().get(esmagfield); - magfield=&(*esmagfield); - - edm::ESHandle<TrackerGeometry> estracker; - c.get<TrackerDigiGeometryRecord>().get(estracker); - tracker=&(*estracker); - - //Get Ids; - - const TrackerGeometry::DetIdContainer& Id = estracker->detIds(); - - TrackerGeometry::DetIdContainer::iterator Iditer; - - monodscounter=0; - monosscounter=0; - stereocounter=0; - -for(Iditer=Id.begin();Iditer!=Id.end();Iditer++){ - - if((Iditer->subdetId() != PixelSubdetector::PixelBarrel) && (Iditer->subdetId() != PixelSubdetector::PixelEndcap)){ - - StripSubdetector subid(*Iditer); - - //Mono single sided detectors - - if(subid.glued() == 0){ - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - if(subid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(*Iditer); - if(TIBid.layer()!=1){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - if(subid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(*Iditer); - if((TIBid.layer()!=1) && (TIBid.layer()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - if(subid.subdetId() == int (StripSubdetector::TOB)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - - } - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - if(subid.subdetId() == int (StripSubdetector::TOB)){ - TOBDetId TOBid=TOBDetId(*Iditer); - if((TOBid.layer()!=1) && (TOBid.layer()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - } - - if(subid.subdetId() == int (StripSubdetector::TID)){ - TIDDetId TIDid=TIDDetId(*Iditer); - if((TIDid.ring()!=1) && (TIDid.ring()!=2)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - - if(subid.subdetId() == int (StripSubdetector::TEC)){ - TECDetId TECid=TECDetId(*Iditer); - if((TECid.ring()!=1) && (TECid.ring()!=2) && (TECid.ring()!=5)){ - monosscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - } - - //Mono double sided detectors - - if((subid.glued() != 0) && (subid.stereo() == 0)){ - monodscounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - - //Stereo detectors - - if((subid.glued() != 0) && (subid.stereo() == 1)){ - stereocounter++; - Detvector.push_back(*Iditer); - histos[Iditer->rawId()] = new TProfile(makename(*Iditer),makedescription(*Iditer),30,-30.,30.); - xaxis = histos[Iditer->rawId()]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[Iditer->rawId()]->GetYaxis(); - yaxis->SetTitle("number of strips"); - } - } - } - - //Summary histograms - - histos[1] = new TProfile("TIBL2_widthvsangle", "Cluster width vs track angle: TIB layer 2",30,-30.,30.); - xaxis = histos[1]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[1]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[2] = new TProfile("TIBL2_widthvsangle_int", "Cluster width vs track angle: TIB layer 2 INT",30,-30.,30.); - xaxis = histos[2]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[2]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[3] = new TProfile("TIBL2_widthvsangle_ext", "Cluster width vs track angle: TIB layer 2 EXT",30,-30.,30.); - xaxis = histos[3]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[3]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[4] = new TProfile("TIBL3_widthvsangle", "Cluster width vs track angle: TIB layer 3",30,-30.,30.); - xaxis = histos[4]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[4]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[5] = new TProfile("TIBL3_widthvsangle_int", "Cluster width vs track angle: TIB layer 3 INT",30,-30.,30.); - xaxis = histos[5]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[5]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[6] = new TProfile("TIBL3_widthvsangle_ext", "Cluster width vs track angle: TIB layer 3 EXT",30,-30.,30.); - xaxis = histos[6]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[6]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - histos[7] = new TProfile("TOBL3_widthvsangle", "Cluster width vs track angle: TOB layer 3",30,-30.,30.); - xaxis = histos[7]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[7]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[8] = new TProfile("TOBL4_widthvsangle", "Cluster width vs track angle: TOB layer 4",30,-30.,30.); - xaxis = histos[8]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[8]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - histos[9] = new TProfile("TIBL1_widthvsangle", "Cluster width vs track angle: TIB layer 1",30,-30.,30.); - xaxis = histos[9]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[9]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[10] = new TProfile("TIBL1_widthvsangle_int", "Cluster width vs track angle: TIB layer 1 INT",30,-30.,30.); - xaxis = histos[10]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[10]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[11] = new TProfile("TIBL1_widthvsangle_ext", "Cluster width vs track angle: TIB layer 1 EXT",30,-30.,30.); - xaxis = histos[11]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[11]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[12] = new TProfile("TIBL4_widthvsangle", "Cluster width vs track angle: TIB layer 4",30,-30.,30.); - xaxis = histos[12]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[12]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[13] = new TProfile("TIBL4_widthvsangle_int", "Cluster width vs track angle: TIB layer 4 INT",30,-30.,30.); - xaxis = histos[13]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[13]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[14] = new TProfile("TIBL4_widthvsangle_ext", "Cluster width vs track angle: TIB layer 4 EXT",30,-30.,30.); - xaxis = histos[14]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[14]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - histos[15] = new TProfile("TOBL1_widthvsangle", "Cluster width vs track angle: TOB layer 1",30,-30.,30.); - xaxis = histos[15]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[15]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[16] = new TProfile("TOBL2_widthvsangle", "Cluster width vs track angle: TOB layer 2",30,-30.,30.); - xaxis = histos[16]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[16]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[17] = new TProfile("TOBL5_widthvsangle", "Cluster width vs track angle: TOB layer 5",30,-30.,30.); - xaxis = histos[17]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[17]->GetYaxis(); - yaxis->SetTitle("number of strips"); - histos[18] = new TProfile("TOBL6_widthvsangle", "Cluster width vs track angle: TOB layer 6",30,-30.,30.); - xaxis = histos[18]->GetXaxis(); - xaxis->SetTitle("degree"); - yaxis = histos[18]->GetYaxis(); - yaxis->SetTitle("number of strips"); - - } - - //Directory hierarchy - - histograms = new TDirectory("Histograms", "Histograms", ""); - summary = new TDirectory("Summary", "Summary", ""); - - //TIB-TID-TOB-TEC - - TIB = histograms->mkdir("TIB"); - TOB = histograms->mkdir("TOB"); - TID = histograms->mkdir("TID"); - TEC = histograms->mkdir("TEC"); - - //Forward-Backward - - TIBfw = TIB->mkdir("TIB forward"); - TIDfw = TID->mkdir("TID forward"); - TOBfw = TOB->mkdir("TOB forward"); - TECfw = TEC->mkdir("TEC forward"); - - TIBbw = TIB->mkdir("TIB backward"); - TIDbw = TID->mkdir("TID backward"); - TOBbw = TOB->mkdir("TOB backward"); - TECbw = TEC->mkdir("TEC backward"); - - //TIB directories - - TIBfw1 = TIBfw->mkdir("TIB forward layer 1"); - TIBfw2 = TIBfw->mkdir("TIB forward layer 2"); - TIBfw3 = TIBfw->mkdir("TIB forward layer 3"); - TIBfw4 = TIBfw->mkdir("TIB forward layer 4"); - - TIBbw1 = TIBbw->mkdir("TIB backward layer 1"); - TIBbw2 = TIBbw->mkdir("TIB backward layer 2"); - TIBbw3 = TIBbw->mkdir("TIB backward layer 3"); - TIBbw4 = TIBbw->mkdir("TIB backward layer 4"); - - //TID directories - - TIDfw1 = TIDfw->mkdir("TID forward wheel 1"); - TIDfw2 = TIDfw->mkdir("TID forward wheel 2"); - TIDfw3 = TIDfw->mkdir("TID forward wheel 3"); - - TIDbw1 = TIDbw->mkdir("TID backward wheel 1"); - TIDbw2 = TIDbw->mkdir("TID backward wheel 2"); - TIDbw3 = TIDbw->mkdir("TID backward wheel 3"); - - //TOB directories - - TOBfw1 = TOBfw->mkdir("TOB forward layer 1"); - TOBfw2 = TOBfw->mkdir("TOB forward layer 2"); - TOBfw3 = TOBfw->mkdir("TOB forward layer 3"); - TOBfw4 = TOBfw->mkdir("TOB forward layer 4"); - TOBfw5 = TOBfw->mkdir("TOB forward layer 5"); - TOBfw6 = TOBfw->mkdir("TOB forward layer 6"); - - TOBbw1 = TOBbw->mkdir("TOB backward layer 1"); - TOBbw2 = TOBbw->mkdir("TOB backward layer 2"); - TOBbw3 = TOBbw->mkdir("TOB backward layer 3"); - TOBbw4 = TOBbw->mkdir("TOB backward layer 4"); - TOBbw5 = TOBbw->mkdir("TOB backward layer 5"); - TOBbw6 = TOBbw->mkdir("TOB backward layer 6"); - - //TEC directories - - TECfw1 = TECfw->mkdir("TEC forward wheel 1"); - TECfw2 = TECfw->mkdir("TEC forward wheel 2"); - TECfw3 = TECfw->mkdir("TEC forward wheel 3"); - TECfw4 = TECfw->mkdir("TEC forward wheel 4"); - TECfw5 = TECfw->mkdir("TEC forward wheel 5"); - TECfw6 = TECfw->mkdir("TEC forward wheel 6"); - TECfw7 = TECfw->mkdir("TEC forward wheel 7"); - TECfw8 = TECfw->mkdir("TEC forward wheel 8"); - TECfw9 = TECfw->mkdir("TEC forward wheel 9"); - - TECbw1 = TECbw->mkdir("TEC backward layer 1"); - TECbw2 = TECbw->mkdir("TEC backward layer 2"); - TECbw3 = TECbw->mkdir("TEC backward layer 3"); - TECbw4 = TECbw->mkdir("TEC backward layer 4"); - TECbw5 = TECbw->mkdir("TEC backward layer 5"); - TECbw6 = TECbw->mkdir("TEC backward layer 6"); - TECbw7 = TECbw->mkdir("TEC backward layer 7"); - TECbw8 = TECbw->mkdir("TEC backward layer 8"); - TECbw9 = TECbw->mkdir("TEC backward layer 9"); - - -} - -// Virtual destructor needed. - -SiStripLorentzAngle::~SiStripLorentzAngle() { } - -// Analyzer: Functions that gets called by framework every event - -void SiStripLorentzAngle::analyze(const edm::Event& e, const edm::EventSetup& es) -{ - - run = e.id().run(); - event = e.id().event(); - - eventcounter+=1; - - using namespace edm; - - // Step A: Get Inputs - - anglefinder_->init(e,es); - - trackhitmap trackhits; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - - //LogDebug("SiStripLorentzAngle::analyze")<<"MTCC - Getting tracks"; - - edm::Handle<reco::TrackCollection> trackCollection; - e.getByType(trackCollection); - - const reco::TrackCollection *tracks=trackCollection.product(); - - //LogDebug("SiStripLorentzAngle::analyze")<<"MTCC - Getting seed"; - - edm::Handle<TrajectorySeedCollection> seedcoll; - e.getByType(seedcoll); - - //LogDebug("SiStripLorentzAngle::analyze")<<"MTCC - Getting used rechit"; - - if((*seedcoll).size()>0){ - if (tracks->size()>0){ - - trackcounter+=tracks->size(); - - reco::TrackCollection::const_iterator ibeg=trackCollection.product()->begin(); - - hphi->Fill((*ibeg).outerPhi()); - hnhit->Fill((*ibeg).recHitsSize()); - - std::vector<std::pair<const TrackingRecHit *,float> > tmphitangle=anglefinder_->findtrackangle((*(*seedcoll).begin()),tracks->front()); - std::vector<std::pair<const TrackingRecHit *,float> >::iterator tmpiter; - - trackhits[&(*ibeg)] = tmphitangle; - - for(tmpiter=tmphitangle.begin();tmpiter!=tmphitangle.end();tmpiter++){ - hitcounter+=1; - } - - } - } - } - else{ //MTCCtrack FALSE - - //LogDebug("SiStripLorentzAngle::analyze")<<"Getting tracks"; - - std::string src=conf_.getParameter<std::string>( "src" ); - - edm::Handle<reco::TrackCollection> trackCollection; - e.getByLabel(src, trackCollection); - - const reco::TrackCollection *tracks=trackCollection.product(); - reco::TrackCollection::const_iterator tciter; - - if(tracks->size()>0){ - - trackcounter+=tracks->size(); - - for(tciter=tracks->begin();tciter!=tracks->end();tciter++){ - - std::vector<std::pair<const TrackingRecHit *,float> > tmphitangle=anglefinder_->findtrackangle(*tciter); - std::vector<std::pair<const TrackingRecHit *,float> >::iterator tmpiter; - - hphi->Fill((*tciter).outerPhi()); - hnhit->Fill((*tciter).recHitsSize()); - - trackhits[&(*tciter)] = tmphitangle; - - for(tmpiter=tmphitangle.begin();tmpiter!=tmphitangle.end();tmpiter++){ - hitcounter+=1; - } - } - } - } - - if(trackhits.size()!=0){ - - trackhitmap::iterator mapiter; - - for(mapiter = trackhits.begin(); mapiter != trackhits.end(); mapiter++){ - - momentum=-99; - pt=-99; - charge=-99; - - momentum = (*mapiter).first->p(); - pt = (*mapiter).first->pt(); - charge = (*mapiter).first->charge(); - - std::vector<std::pair<const TrackingRecHit *,float> > hitangle = (*mapiter).second; - std::vector<std::pair<const TrackingRecHit *,float> >::iterator hitsiter; - - if(hitangle.size()!=0){ - - for(hitsiter=hitangle.begin();hitsiter!=hitangle.end();hitsiter++){ - - module=-99; - type=-99; - layer=-99; - wheel=-99; - string=-99; - size=-99; - extint=-99; - bwfw=-99; - rod=-99; - angle=-9999; - stereocorrection=-9999; - localmagfield=-99; - sign = -99; - monostereo=-99; - - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>(hitsiter->first); - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > cluster=hit->cluster(); - - size=(cluster->amplitudes()).size(); - - StripSubdetector detid=(StripSubdetector)hit->geographicalId(); - - type = detid.subdetId(); - - module = (hit->geographicalId()).rawId(); - - angle=hitsiter->second; - - monostereo=detid.stereo(); - - //Local Magnetic Field - - const GeomDet *geomdet = tracker->idToDet(hit->geographicalId()); - LocalPoint localp(0,0,0); - const GlobalPoint globalp = (geomdet->surface()).toGlobal(localp); - GlobalVector globalmagdir = magfield->inTesla(globalp); - localmagdir = (geomdet->surface()).toLocal(globalmagdir); - localmagfield = localmagdir.mag(); - - if(localmagfield != 0.){ - - //Sign correction for TIB and TOB - - if((detid.subdetId() == int (StripSubdetector::TIB)) || (detid.subdetId() == int (StripSubdetector::TOB))){ - - LocalVector ylocal(0,1,0); - - float normprojection = (localmagdir * ylocal)/(localmagfield); - - if(normprojection>0){sign = 1;} - if(normprojection<0){sign = -1;} - - //Stereocorrection applied in TrackLocalAngle - - if((detid.stereo()==1) && (normprojection == 0.)){ - LogDebug("SiStripLorentzAngle::analyze")<<"Error: TIB|TOB YBprojection = 0"; - } - - if((detid.stereo()==1) && (normprojection != 0.)){ - stereocorrection = 1/normprojection; - stereocorrection*=sign; - - float tg = tan((angle*TMath::Pi())/180); - tg*=stereocorrection; - angle = atan(tg)*180/TMath::Pi(); - - } - - angle *= sign; - - } - } - - //Filling histograms - - histos[module]->Fill(angle,size); - - LogDebug("SiStripLorentzAngle::analyze")<<"Module histogram filled"; - - //Summary histograms - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - TIBDetId TIBid=TIBDetId(hit->geographicalId()); - - extint = TIBid.string()[1]; - string = TIBid.string()[2]; - bwfw= TIBid.string()[0]; - layer = TIBid.layer() + mtcctibcorr; - - if(layer == 1){ - histos[9]->Fill(angle,size); - if(TIBid.stereo()==0){ - htaTIBL1mono->Fill(angle);} - if(TIBid.stereo()==1){ - htaTIBL1stereo->Fill(angle);} - - if(TIBid.string()[1]==0){//int - histos[10]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[11]->Fill(angle,size); - } - } - - if(layer == 2){ - histos[1]->Fill(angle,size); - if(TIBid.stereo()==0){ - htaTIBL2mono->Fill(angle);} - if(TIBid.stereo()==1){ - htaTIBL2stereo->Fill(angle);} - - if(TIBid.string()[1]==0){//int - histos[2]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[3]->Fill(angle,size); - } - } - - if(layer == 3){ - histos[4]->Fill(angle,size); - htaTIBL3->Fill(angle); - if(TIBid.string()[1]==0){//int - histos[5]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[6]->Fill(angle,size); - } - } - - if(layer == 4){ - histos[12]->Fill(angle,size); - htaTIBL4->Fill(angle); - if(TIBid.string()[1]==0){//int - histos[13]->Fill(angle,size); - } - if(TIBid.string()[1]==1){//ext - histos[14]->Fill(angle,size); - } - } - - } - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - TOBDetId TOBid=TOBDetId(hit->geographicalId()); - - layer = TOBid.layer() + mtcctobcorr; - rod = TOBid.rod()[1]; - bwfw = TOBid.rod()[0]; - - if(layer == 1){ - histos[15]->Fill(angle,size); - if(TOBid.stereo()==0){//mono - htaTOBL1mono->Fill(angle); - } - if(TOBid.stereo()==1){//stereo - htaTOBL1stereo->Fill(angle); - } - } - - if(layer == 2){ - histos[16]->Fill(angle,size); - if(TOBid.stereo()==0){//mono - htaTOBL2mono->Fill(angle); - } - if(TOBid.stereo()==1){//stereo - htaTOBL2stereo->Fill(angle); - } - } - - if(layer == 3){ - histos[7]->Fill(angle,size); - htaTOBL3->Fill(angle);} - - if(layer == 4){ - histos[8]->Fill(angle,size); - htaTOBL4->Fill(angle);} - - if(layer == 5){ - histos[17]->Fill(angle,size); - htaTOBL5->Fill(angle);} - - if(layer == 6){ - histos[18]->Fill(angle,size); - htaTOBL6->Fill(angle);} - - } - - if(detid.subdetId() == int (StripSubdetector::TID)){ - TIDDetId TIDid=TIDDetId(hit->geographicalId()); - bwfw = TIDid.module()[0]; - wheel = TIDid.wheel(); - } - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - TECDetId TECid=TECDetId(hit->geographicalId()); - bwfw = TECid.petal()[0]; - wheel = TECid.wheel(); - } - - const GeomDetUnit * stripdet=(const GeomDetUnit*)tracker->idToDetUnit(detid); - - const StripTopology& topol=(StripTopology&)stripdet->topology(); - - float thickness=stripdet->specificSurface().bounds().thickness(); - - float proj=tan(angle)*thickness/topol.pitch(); - - //Filling WidthvsTrackProjection histogram - - hwvst->Fill(proj,size); - - //Filling Tree - - SiStripLorentzAngleTree->Fill(); - - LogDebug("SiStripLorentzAngle::analyze")<<"Tree Filled"; - - } - } - } - - } -} - -//Makename function - -const char* SiStripLorentzAngle::makename(DetId detid){ - - std::string name; - - stringstream idnum; - stringstream layernum; - stringstream wheelnum; - stringstream stringnum; - stringstream rodnum; - stringstream ringnum; - stringstream petalnum; - - idnum << detid.rawId(); - - StripSubdetector DetId(detid.rawId()); - - //TIB - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - name="TIB"; - - TIBDetId TIBid=TIBDetId(DetId); - - if(TIBid.string()[0] == 0){ - name+="bw";} - if(TIBid.string()[0] == 1){ - name+="fw";} - - name+="L"; - int layer = TIBid.layer() + mtcctibcorr; - layernum << layer; - name+=layernum.str(); - - if(TIBid.string()[1] == 0){ - name+="int";} - if(TIBid.string()[1] == 1){ - name+="ext";} - - name+="string"; - int string = TIBid.string()[2]; - stringnum << string; - name+=stringnum.str(); - - if(TIBid.stereo() == 0){ - name+="mono";} - if(TIBid.stereo() == 1){ - name+="stereo";} - } - - //TID - - if(detid.subdetId() == int (StripSubdetector::TID)){ - name="TID"; - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - name+="bw";} - if(TIDid.module()[0] == 1){ - name+="fw";} - - name+="W"; - int wheel = TIDid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TIDid.side() == 1){ - name+="neg";} - if(TIDid.side() == 2){ - name+="pos";} - - name+="ring"; - int ring = TIDid.ring(); - ringnum << ring; - name+=ringnum.str(); - - if(TIDid.stereo() == 0){ - name+="mono";} - if(TIDid.stereo() == 1){ - name+="stereo";} - } - - //TOB - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - name="TOB"; - - TOBDetId TOBid=TOBDetId(DetId); - - if(TOBid.rod()[0] == 0){ - name+="bw";} - if(TOBid.rod()[0] == 1){ - name+="fw";} - - name+="L"; - int layer = TOBid.layer() + mtcctobcorr; - layernum << layer; - name+=layernum.str(); - - name+="rod"; - int rod = TOBid.rod()[1]; - rodnum << rod; - name+=rodnum.str(); - - if(TOBid.stereo() == 0){ - name+="mono";} - if(TOBid.stereo() == 1){ - name+="stereo";} - } - - //TEC - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - name="TEC"; - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - name+="bw";} - if(TECid.petal()[0] == 1){ - name+="fw";} - - name+="W"; - int wheel = TECid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TECid.side() == 1){ - name+="neg";} - if(TECid.side() == 2){ - name+="pos";} - - name+="ring"; - int ring = TECid.ring(); - ringnum << ring; - name+=ringnum.str(); - - name+="petal"; - int petal = TECid.petal()[1]; - petalnum << petal; - name+=petalnum.str(); - - if(TECid.stereo() == 0){ - name+="mono";} - if(TECid.stereo() == 1){ - name+="stereo";} - } - - name+="_"; - - name+=idnum.str(); - - return name.c_str(); - -} - -//Makedescription function - -const char* SiStripLorentzAngle::makedescription(DetId detid){ - - std::string name; - - name="Cluster width vs track angle ("; - - stringstream idnum; - stringstream layernum; - stringstream wheelnum; - stringstream stringnum; - stringstream rodnum; - stringstream ringnum; - stringstream petalnum; - - idnum << detid.rawId(); - - StripSubdetector DetId(detid.rawId()); - - //TIB - - if(detid.subdetId() == int (StripSubdetector::TIB)){ - name+="TIB "; - - TIBDetId TIBid=TIBDetId(DetId); - - if(TIBid.string()[0] == 0){ - name+="backward, ";} - if(TIBid.string()[0] == 1){ - name+="forward, ";} - - name+="Layer n."; - int layer = TIBid.layer() + mtcctibcorr; - layernum << layer; - name+=layernum.str(); - - if(TIBid.string()[1] == 0){ - name+=", internal ";} - if(TIBid.string()[1] == 1){ - name+=", external ";} - - name+="string n."; - int string = TIBid.string()[2]; - stringnum << string; - name+=stringnum.str(); - - if(TIBid.stereo() == 0){ - name+=", mono,";} - if(TIBid.stereo() == 1){ - name+=", stereo,";} - - } - - //TID - - if(detid.subdetId() == int (StripSubdetector::TID)){ - name+="TID "; - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - name+="bacward, ";} - if(TIDid.module()[0] == 1){ - name+="forward, ";} - - name+="Wheel n."; - int wheel = TIDid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TIDid.side() == 1){ - name+=", negative ";} - if(TIDid.side() == 2){ - name+=", positive ";} - - name+="ring n."; - int ring = TIDid.ring(); - ringnum << ring; - name+=ringnum.str(); - - if(TIDid.stereo() == 0){ - name+=", mono";} - if(TIDid.stereo() == 1){ - name+=", stereo";} - - } - - //TOB - - if(detid.subdetId() == int (StripSubdetector::TOB)){ - name+="TOB "; - - TOBDetId TOBid=TOBDetId(DetId); - - if(TOBid.rod()[0] == 0){ - name+="backward, ";} - if(TOBid.rod()[0] == 1){ - name+="forward, ";} - - name+="Layer n."; - int layer = TOBid.layer() + mtcctobcorr; - layernum << layer; - name+=layernum.str(); - - name+=", rod n."; - int rod = TOBid.rod()[1]; - rodnum << rod; - name+=rodnum.str(); - - if(TOBid.stereo() == 0){ - name+=", mono,";} - if(TOBid.stereo() == 1){ - name+=", stereo,";} - } - - //TEC - - if(detid.subdetId() == int (StripSubdetector::TEC)){ - name+="TEC "; - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - name+="backward, ";} - if(TECid.petal()[0] == 1){ - name+="forward, ";} - - name+="Wheel n."; - int wheel = TECid.wheel(); - wheelnum << wheel; - name+=wheelnum.str(); - - if(TECid.side() == 1){ - name+=", negative ";} - if(TECid.side() == 2){ - name+=", positive ";} - - name+="ring n."; - int ring = TECid.ring(); - ringnum << ring; - name+=ringnum.str(); - - name+=", petal n."; - int petal = TECid.petal()[1]; - petalnum << petal; - name+=petalnum.str(); - - if(TECid.stereo() == 0){ - name+=", mono";} - if(TECid.stereo() == 1){ - name+=", stereo";} - - } - - name+=" IdNumber = "; - - name+=idnum.str(); - - name+=")"; - - return name.c_str(); - -} - - //EndJob - -void SiStripLorentzAngle::endJob(){ - - - std::vector<DetId>::iterator Iditer; - - //Histograms fit - - int histonum = Detvector.size(); - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - fitfunc->SetParameters(0, 0, 1); - histos[Iditer->rawId()]->Fit("fitfunc","E","",-20, 20); - - TF1 *fitfunction = histos[Iditer->rawId()]->GetFunction("fitfunc"); - - fits[Iditer->rawId()] = new histofit; - - fits[Iditer->rawId()]->chi2 = fitfunction->GetChisquare(); - fits[Iditer->rawId()]->ndf = fitfunction->GetNDF(); - fits[Iditer->rawId()]->p0 = fitfunction->GetParameter(0); - fits[Iditer->rawId()]->p1 = fitfunction->GetParameter(1); - fits[Iditer->rawId()]->p2 = fitfunction->GetParameter(2); - fits[Iditer->rawId()]->errp0 = fitfunction->GetParError(0); - fits[Iditer->rawId()]->errp1 = fitfunction->GetParError(1); - fits[Iditer->rawId()]->errp2 = fitfunction->GetParError(2); - fits[Iditer->rawId()]->min = fitfunction->Eval(fits[Iditer->rawId()]->p0); - - } - - int n; - int nmax = 19; - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - nmax=9;} - - for(n=1; n<nmax; n++){ - - fitfunc->SetParameters(0, 0, 1); - histos[n]->Fit("fitfunc","E","",-20, 20); - - TF1 *fitfunction = histos[n]->GetFunction("fitfunc"); - - fits[n] = new histofit; - - fits[n]->chi2 = fitfunction->GetChisquare(); - fits[n]->ndf = fitfunction->GetNDF(); - fits[n]->p0 = fitfunction->GetParameter(0); - fits[n]->p1 = fitfunction->GetParameter(1); - fits[n]->p2 = fitfunction->GetParameter(2); - fits[n]->errp0 = fitfunction->GetParError(0); - fits[n]->errp1 = fitfunction->GetParError(1); - fits[n]->errp2 = fitfunction->GetParError(2); - fits[n]->min = fitfunction->Eval(fits[n]->p0); - - } - - //File with fit parameters - - ofstream fit; - fit.open("fit.txt"); - - if(conf_.getParameter<bool>("MTCCtrack")){ //MTCCtrack TRUE - fit<<endl<<">>> MTCCtrack = TRUE"<<endl<<endl; - }else{ - fit<<endl<<">>> MTCCtrack = FALSE"<<endl<<endl; - } - fit<<">>> TOTAL EVENT = "<<eventcounter<<endl; - fit<<">>> NUMBER OF RECHITS = "<<hitcounter<<endl; - fit<<">>> NUMBER OF TRACKS = "<<trackcounter<<endl<<endl; - fit<<">>> NUMBER OF DETECTOR HISTOGRAMS = "<<histonum<<endl; - fit<<">>> NUMBER OF MONO SINGLE SIDED DETECTORS = "<<monosscounter<<endl; - fit<<">>> NUMBER OF MONO DOUBLE SIDED DETECTORS = "<<monodscounter<<endl; - fit<<">>> NUMBER OF STEREO DETECTORS = "<<stereocounter<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[9]->chi2)/(fits[9]->ndf)<<endl; - fit<<"NdF = "<<fits[9]->ndf<<endl; - fit<<"p0 = "<<fits[9]->p0<<" err p0 = "<<fits[9]->errp0<<endl; - fit<<"p1 = "<<fits[9]->p1<<" err p1 = "<<fits[9]->errp1<<endl; - fit<<"p2 = "<<fits[9]->p2<<" err p2 = "<<fits[9]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[9]->p0<<" +- "<<fits[9]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[9]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[10]->chi2)/(fits[10]->ndf)<<endl; - fit<<"NdF = "<<fits[10]->ndf<<endl; - fit<<"p0 = "<<fits[10]->p0<<" err p0 = "<<fits[10]->errp0<<endl; - fit<<"p1 = "<<fits[10]->p1<<" err p1 = "<<fits[10]->errp1<<endl; - fit<<"p2 = "<<fits[10]->p2<<" err p2 = "<<fits[10]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[10]->p0<<" +- "<<fits[10]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[10]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 1 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[11]->chi2)/(fits[11]->ndf)<<endl; - fit<<"NdF = "<<fits[11]->ndf<<endl; - fit<<"p0 = "<<fits[11]->p0<<" err p0 = "<<fits[11]->errp0<<endl; - fit<<"p1 = "<<fits[11]->p1<<" err p1 = "<<fits[11]->errp1<<endl; - fit<<"p2 = "<<fits[11]->p2<<" err p2 = "<<fits[11]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[11]->p0<<" +- "<<fits[11]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[11]->min<<endl<<endl; - } - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[1]->chi2)/(fits[1]->ndf)<<endl; - fit<<"NdF = "<<fits[1]->ndf<<endl; - fit<<"p0 = "<<fits[1]->p0<<" err p0 = "<<fits[1]->errp0<<endl; - fit<<"p1 = "<<fits[1]->p1<<" err p1 = "<<fits[1]->errp1<<endl; - fit<<"p2 = "<<fits[1]->p2<<" err p2 = "<<fits[1]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[1]->p0<<" +- "<<fits[1]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[1]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[2]->chi2)/(fits[2]->ndf)<<endl; - fit<<"NdF = "<<fits[2]->ndf<<endl; - fit<<"p0 = "<<fits[2]->p0<<" err p0 = "<<fits[2]->errp0<<endl; - fit<<"p1 = "<<fits[2]->p1<<" err p1 = "<<fits[2]->errp1<<endl; - fit<<"p2 = "<<fits[2]->p2<<" err p2 = "<<fits[2]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[2]->p0<<" +- "<<fits[2]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[2]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 2 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[3]->chi2)/(fits[3]->ndf)<<endl; - fit<<"NdF = "<<fits[3]->ndf<<endl; - fit<<"p0 = "<<fits[3]->p0<<" err p0 = "<<fits[3]->errp0<<endl; - fit<<"p1 = "<<fits[3]->p1<<" err p1 = "<<fits[3]->errp1<<endl; - fit<<"p2 = "<<fits[3]->p2<<" err p2 = "<<fits[3]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[3]->p0<<" +- "<<fits[3]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[3]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[4]->chi2)/(fits[4]->ndf)<<endl; - fit<<"NdF = "<<fits[4]->ndf<<endl; - fit<<"p0 = "<<fits[4]->p0<<" err p0 = "<<fits[4]->errp0<<endl; - fit<<"p1 = "<<fits[4]->p1<<" err p1 = "<<fits[4]->errp1<<endl; - fit<<"p2 = "<<fits[4]->p2<<" err p2 = "<<fits[4]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[4]->p0<<" +- "<<fits[4]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[4]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[5]->chi2)/(fits[5]->ndf)<<endl; - fit<<"NdF = "<<fits[5]->ndf<<endl; - fit<<"p0 = "<<fits[5]->p0<<" err p0 = "<<fits[5]->errp0<<endl; - fit<<"p1 = "<<fits[5]->p1<<" err p1 = "<<fits[5]->errp1<<endl; - fit<<"p2 = "<<fits[5]->p2<<" err p2 = "<<fits[5]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[5]->p0<<" +- "<<fits[5]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[5]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 3 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[6]->chi2)/(fits[6]->ndf)<<endl; - fit<<"NdF = "<<fits[6]->ndf<<endl; - fit<<"p0 = "<<fits[6]->p0<<" err p0 = "<<fits[6]->errp0<<endl; - fit<<"p1 = "<<fits[6]->p1<<" err p1 = "<<fits[6]->errp1<<endl; - fit<<"p2 = "<<fits[6]->p2<<" err p2 = "<<fits[6]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[6]->p0<<" +- "<<fits[6]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[6]->min<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[12]->chi2)/(fits[12]->ndf)<<endl; - fit<<"NdF = "<<fits[12]->ndf<<endl; - fit<<"p0 = "<<fits[12]->p0<<" err p0 = "<<fits[12]->errp0<<endl; - fit<<"p1 = "<<fits[12]->p1<<" err p1 = "<<fits[12]->errp1<<endl; - fit<<"p2 = "<<fits[12]->p2<<" err p2 = "<<fits[12]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[12]->p0<<" +- "<<fits[12]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[12]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 INT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[13]->chi2)/(fits[13]->ndf)<<endl; - fit<<"NdF = "<<fits[13]->ndf<<endl; - fit<<"p0 = "<<fits[13]->p0<<" err p0 = "<<fits[13]->errp0<<endl; - fit<<"p1 = "<<fits[13]->p1<<" err p1 = "<<fits[13]->errp1<<endl; - fit<<"p2 = "<<fits[13]->p2<<" err p2 = "<<fits[13]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[13]->p0<<" +- "<<fits[13]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[13]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TIB LAYER 4 EXT -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[14]->chi2)/(fits[14]->ndf)<<endl; - fit<<"NdF = "<<fits[14]->ndf<<endl; - fit<<"p0 = "<<fits[14]->p0<<" err p0 = "<<fits[14]->errp0<<endl; - fit<<"p1 = "<<fits[14]->p1<<" err p1 = "<<fits[14]->errp1<<endl; - fit<<"p2 = "<<fits[14]->p2<<" err p2 = "<<fits[14]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[14]->p0<<" +- "<<fits[14]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[14]->min<<endl<<endl; - - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 1 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[15]->chi2)/(fits[15]->ndf)<<endl; - fit<<"NdF = "<<fits[15]->ndf<<endl; - fit<<"p0 = "<<fits[15]->p0<<" err p0 = "<<fits[15]->errp0<<endl; - fit<<"p1 = "<<fits[15]->p1<<" err p1 = "<<fits[15]->errp1<<endl; - fit<<"p2 = "<<fits[15]->p2<<" err p2 = "<<fits[15]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[15]->p0<<" +- "<<fits[15]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[15]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 2 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[16]->chi2)/(fits[16]->ndf)<<endl; - fit<<"NdF = "<<fits[16]->ndf<<endl; - fit<<"p0 = "<<fits[16]->p0<<" err p0 = "<<fits[16]->errp0<<endl; - fit<<"p1 = "<<fits[16]->p1<<" err p1 = "<<fits[16]->errp1<<endl; - fit<<"p2 = "<<fits[16]->p2<<" err p2 = "<<fits[16]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[16]->p0<<" +- "<<fits[16]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[16]->min<<endl<<endl; - } - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 3 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[7]->chi2)/(fits[7]->ndf)<<endl; - fit<<"NdF = "<<fits[7]->ndf<<endl; - fit<<"p0 = "<<fits[7]->p0<<" err p0 = "<<fits[7]->errp0<<endl; - fit<<"p1 = "<<fits[7]->p1<<" err p1 = "<<fits[7]->errp1<<endl; - fit<<"p2 = "<<fits[7]->p2<<" err p2 = "<<fits[7]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[7]->p0<<" +- "<<fits[7]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[7]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 4 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[8]->chi2)/(fits[8]->ndf)<<endl; - fit<<"NdF = "<<fits[8]->ndf<<endl; - fit<<"p0 = "<<fits[8]->p0<<" err p0 = "<<fits[8]->errp0<<endl; - fit<<"p1 = "<<fits[8]->p1<<" err p1 = "<<fits[8]->errp1<<endl; - fit<<"p2 = "<<fits[8]->p2<<" err p2 = "<<fits[8]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[8]->p0<<" +- "<<fits[8]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[8]->min<<endl<<endl; - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 5 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[17]->chi2)/(fits[17]->ndf)<<endl; - fit<<"NdF = "<<fits[17]->ndf<<endl; - fit<<"p0 = "<<fits[17]->p0<<" err p0 = "<<fits[17]->errp0<<endl; - fit<<"p1 = "<<fits[17]->p1<<" err p1 = "<<fits[17]->errp1<<endl; - fit<<"p2 = "<<fits[17]->p2<<" err p2 = "<<fits[17]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[17]->p0<<" +- "<<fits[17]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[17]->min<<endl<<endl; - - fit<<endl<<"--------------------------- SUMMARY FIT: TOB LAYER 6 -------------------------"<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[18]->chi2)/(fits[18]->ndf)<<endl; - fit<<"NdF = "<<fits[18]->ndf<<endl; - fit<<"p0 = "<<fits[18]->p0<<" err p0 = "<<fits[18]->errp0<<endl; - fit<<"p1 = "<<fits[18]->p1<<" err p1 = "<<fits[18]->errp1<<endl; - fit<<"p2 = "<<fits[18]->p2<<" err p2 = "<<fits[18]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[18]->p0<<" +- "<<fits[18]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[18]->min<<endl<<endl; - } - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - fit<<endl<<"-------------------------- MODULE HISTOGRAM FIT ------------------------"<<endl<<endl; - fit<<makedescription(*Iditer)<<endl<<endl; - fit<<"Chi Square/ndf = "<<(fits[Iditer->rawId()]->chi2)/(fits[Iditer->rawId()]->ndf)<<endl; - fit<<"NdF = "<<fits[Iditer->rawId()]->ndf<<endl; - fit<<"p0 = "<<fits[Iditer->rawId()]->p0<<" err p0 = "<<fits[Iditer->rawId()]->errp0<<endl; - fit<<"p1 = "<<fits[Iditer->rawId()]->p1<<" err p1 = "<<fits[Iditer->rawId()]->errp1<<endl; - fit<<"p2 = "<<fits[Iditer->rawId()]->p2<<" err p2 = "<<fits[Iditer->rawId()]->errp2<<endl<<endl; - fit<<"Minimum at angle = "<<fits[Iditer->rawId()]->p0<<" +- "<<fits[Iditer->rawId()]->errp0<<endl; - fit<<"Cluster size at the minimum = "<<fits[Iditer->rawId()]->min<<endl<<endl; - - } - - fit.close(); - - //Set directories - - for(n=1;n<nmax;n++){ - histos[n]->SetDirectory(summary);} - - hphi->SetDirectory(summary); - hnhit->SetDirectory(summary); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL1mono->SetDirectory(summary); - htaTIBL1stereo->SetDirectory(summary); - } - - htaTIBL2mono->SetDirectory(summary); - htaTIBL2stereo->SetDirectory(summary); - htaTIBL3->SetDirectory(summary); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTIBL4->SetDirectory(summary); - htaTOBL1mono->SetDirectory(summary); - htaTOBL1stereo->SetDirectory(summary); - htaTOBL2mono->SetDirectory(summary); - htaTOBL2stereo->SetDirectory(summary); - } - - htaTOBL3->SetDirectory(summary); - htaTOBL4->SetDirectory(summary); - - if(!(conf_.getParameter<bool>("MTCCtrack"))){ //MTCCtrack FALSE - htaTOBL5->SetDirectory(summary); - htaTOBL6->SetDirectory(summary); - } - - hwvst->SetDirectory(summary); - - for(Iditer=Detvector.begin(); Iditer!=Detvector.end(); Iditer++){ - - StripSubdetector DetId(Iditer->rawId()); - - if(Iditer->subdetId() == int (StripSubdetector::TIB)){ - - TIBDetId TIBid=TIBDetId(DetId); - - int correctedlayer = TIBid.layer() + mtcctibcorr; - - if(TIBid.string()[0] == 0){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TIBbw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TIBbw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TIBbw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TIBbw4);} - } - if(TIBid.string()[0] == 1){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TIBfw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TIBfw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TIBfw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TIBfw4);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TID)){ - - TIDDetId TIDid=TIDDetId(DetId); - - if(TIDid.module()[0] == 0){ - if(TIDid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TIDbw1);} - if(TIDid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TIDbw2);} - if(TIDid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TIDbw3);} - } - if(TIDid.module()[0] == 1){ - if(TIDid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TIDfw1);} - if(TIDid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TIDfw2);} - if(TIDid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TIDfw3);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TOB)){ - - TOBDetId TOBid=TOBDetId(DetId); - - int correctedlayer = TOBid.layer() + mtcctobcorr; - - if(TOBid.rod()[0] == 0){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TOBbw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TOBbw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TOBbw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TOBbw4);} - if(correctedlayer == 5){ - histos[Iditer->rawId()]->SetDirectory(TOBbw5);} - if(correctedlayer == 6){ - histos[Iditer->rawId()]->SetDirectory(TOBbw6);} - } - if(TOBid.rod()[0] == 1){ - if(correctedlayer == 1){ - histos[Iditer->rawId()]->SetDirectory(TOBfw1);} - if(correctedlayer == 2){ - histos[Iditer->rawId()]->SetDirectory(TOBfw2);} - if(correctedlayer == 3){ - histos[Iditer->rawId()]->SetDirectory(TOBfw3);} - if(correctedlayer == 4){ - histos[Iditer->rawId()]->SetDirectory(TOBfw4);} - if(correctedlayer == 5){ - histos[Iditer->rawId()]->SetDirectory(TOBfw5);} - if(correctedlayer == 6){ - histos[Iditer->rawId()]->SetDirectory(TOBfw6);} - } - } - - if(Iditer->subdetId() == int (StripSubdetector::TEC)){ - - TECDetId TECid=TECDetId(DetId); - - if(TECid.petal()[0] == 0){ - if(TECid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TECbw1);} - if(TECid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TECbw2);} - if(TECid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TECbw3);} - if(TECid.wheel() == 4){ - histos[Iditer->rawId()]->SetDirectory(TECbw4);} - if(TECid.wheel() == 5){ - histos[Iditer->rawId()]->SetDirectory(TECbw5);} - if(TECid.wheel() == 6){ - histos[Iditer->rawId()]->SetDirectory(TECbw6);} - if(TECid.wheel() == 7){ - histos[Iditer->rawId()]->SetDirectory(TECbw7);} - if(TECid.wheel() == 8){ - histos[Iditer->rawId()]->SetDirectory(TECbw8);} - if(TECid.wheel() == 9){ - histos[Iditer->rawId()]->SetDirectory(TECbw9);} - } - if(TECid.petal()[0] == 1){ - if(TECid.wheel() == 1){ - histos[Iditer->rawId()]->SetDirectory(TECfw1);} - if(TECid.wheel() == 2){ - histos[Iditer->rawId()]->SetDirectory(TECfw2);} - if(TECid.wheel() == 3){ - histos[Iditer->rawId()]->SetDirectory(TECfw3);} - if(TECid.wheel() == 4){ - histos[Iditer->rawId()]->SetDirectory(TECfw4);} - if(TECid.wheel() == 5){ - histos[Iditer->rawId()]->SetDirectory(TECfw5);} - if(TECid.wheel() == 6){ - histos[Iditer->rawId()]->SetDirectory(TECfw6);} - if(TECid.wheel() == 7){ - histos[Iditer->rawId()]->SetDirectory(TECfw7);} - if(TECid.wheel() == 8){ - histos[Iditer->rawId()]->SetDirectory(TECfw8);} - if(TECid.wheel() == 9){ - histos[Iditer->rawId()]->SetDirectory(TECfw9);} - } - } - - } - - hFile->Write(); - hFile->Close(); - -} diff --git a/CalibTracker/SiStripLorentzAngle/src/TrackLocalAngle.cc b/CalibTracker/SiStripLorentzAngle/src/TrackLocalAngle.cc deleted file mode 100644 index 97795b7edb3..00000000000 --- a/CalibTracker/SiStripLorentzAngle/src/TrackLocalAngle.cc +++ /dev/null @@ -1,300 +0,0 @@ - -#include <memory> -#include <string> -#include <iostream> -#include <TMath.h> -#include "CalibTracker/SiStripLorentzAngle/interface/TrackLocalAngle.h" - -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "Geometry/Vector/interface/LocalVector.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackExtra.h" -#include "DataFormats/SiStripDetId/interface/StripSubdetector.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2D.h" -#include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/GluedGeomDet.h" -#include "TrackingTools/Records/interface/TrackingComponentsRecord.h" -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "TrackingTools/TrackFitters/interface/KFFittingSmoother.h" - -using namespace std; -TrackLocalAngle::TrackLocalAngle(edm::ParameterSet const& conf) : - conf_(conf) -{ -} -void TrackLocalAngle::init(const edm::Event& e, const edm::EventSetup& es){ - - // - // get geometry - // - edm::ESHandle<TrackerGeometry> estracker; - es.get<TrackerDigiGeometryRecord>().get(estracker); - tracker=&(* estracker); - // - // get magnetic field - // - edm::ESHandle<MagneticField> esmagfield; - es.get<IdealMagneticFieldRecord>().get(esmagfield); - magfield=&(*esmagfield); - - // - // get the fitter - // - if(!(conf_.getParameter<bool>("MTCCtrack"))){ - edm::ESHandle<TrajectoryFitter> fitter; - LogDebug("TrackLocalAngle") << "get the fitter from the ES" << "\n"; - std::string fitterName = conf_.getParameter<std::string>("Fitter"); - es.get<TrackingComponentsRecord>().get(fitterName,fitter); - theFitter=&(*fitter); - - // - // get also the propagator - // - edm::ESHandle<Propagator> propagator; - LogDebug("TrackLocalAngle") << "get also the propagator" << "\n"; - std::string propagatorName = conf_.getParameter<std::string>("Propagator"); - es.get<TrackingComponentsRecord>().get(propagatorName,propagator); - thePropagator=&(*propagator); - } - // - // get the builder - // - edm::ESHandle<TransientTrackingRecHitBuilder> builder; - LogDebug("TrackLocalAngle") << "get also the TransientTrackingRecHitBuilder" << "\n"; - std::string builderName = conf_.getParameter<std::string>("TTRHBuilder"); - es.get<TransientRecHitRecord>().get(builderName,builder); - RHBuilder=&(*builder); -} - -// Virtual destructor needed. -TrackLocalAngle::~TrackLocalAngle() { -} - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngle::findtrackangle(const reco::Track& theT) -{ - // int cont = 0; - //convert the TrackingRecHit vector to a TransientTrackingRecHit vector - //meanwhile computes the number of degrees of freedom - LogDebug("TrackLocalAngle") << "Start\n"; - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - tmp.push_back(RHBuilder->build(&**i )); - } - LogDebug("TrackLocalAngle") << "Transient rechit filled" << "\n"; - - //SORT RECHITS ALONGMOMENTUM - const TransientTrackingRecHit::ConstRecHitPointer *firstHit; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.begin(); it!=tmp.end();it++){ - if ((**it).isValid()) { - firstHit = &(*it); - break; - } - } - const TransientTrackingRecHit::ConstRecHitPointer *lastHit; - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1; it!=tmp.begin()-1;it--){ - if ((**it).isValid()) { - lastHit= &(*it); - break; - } - } - if ((*firstHit)->globalPosition().mag2() > ((*lastHit)->globalPosition().mag2()) ){ - //FIXME temporary should use reverse - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - } else hits=tmp; - - reco::TransientTrack theTT(theT, thePropagator->magneticField() ); - - // TrajectoryStateOnSurface theTSOS=theTT.impactPointState(); - // theTSOS.rescaleError(100); - - TrajectoryStateOnSurface firstState=thePropagator->propagate(theTT.impactPointState(), hits.front()->det()->surface()); - AlgebraicSymMatrix C(5,1); - C *= 100.; - TrajectoryStateOnSurface theTSOS( firstState.localParameters(), LocalTrajectoryError(C), - firstState.surface(), - thePropagator->magneticField()); - - LogDebug("TrackLocalAngle") << "Initial TSOS\n" << theTSOS << "\n"; - - const TrajectorySeed * seed = new TrajectorySeed();//empty seed: not needed - //buildTrack - return buildTrack(hits, theTSOS, *seed); - // return buildTrack(theTSOS, *seed); -} - -std::vector< std::pair<const TrackingRecHit*,float> > TrackLocalAngle::buildTrack( - TransientTrackingRecHit::RecHitContainer& hits, - const TrajectoryStateOnSurface& theTSOS, - const TrajectorySeed& seed) -{ - //variable declarations - std::vector<Trajectory> trajVec; - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - Trajectory * theTraj; - - //perform the fit: the result's size is 1 if it succeded, 0 if fails - trajVec = theFitter->fit(seed, hits, theTSOS); - - LogDebug("TrackProducer") <<" FITTER FOUND "<< trajVec.size() << " TRAJECTORIES" <<"\n"; - - if (trajVec.size() != 0){ - - theTraj = new Trajectory( trajVec.front() ); - - LogDebug("TrackLocalAngle") <<"track done"; - std::vector<TrajectoryMeasurement> TMeas=theTraj->measurements(); - - std::vector<TrajectoryMeasurement>::iterator itm; - int i=0; - LogDebug("TrackLocalAngle::findtrackangle")<<"Loop on rechit and TSOS"; - for (itm=TMeas.begin();itm!=TMeas.end();itm++){ - //std::cout<<"hit: "<<i++<<std::endl; - TrajectoryStateOnSurface tsos=itm->updatedState(); - const TransientTrackingRecHit::ConstRecHitPointer thit=itm->recHit(); - const SiStripMatchedRecHit2D* matchedhit=dynamic_cast<const SiStripMatchedRecHit2D*>((*thit).hit()); - const SiStripRecHit2D* hit=dynamic_cast<const SiStripRecHit2D*>((*thit).hit()); - LocalVector trackdirection=tsos.localDirection(); - if(matchedhit){//if matched hit... - - GluedGeomDet * gdet=(GluedGeomDet *)tracker->idToDet(matchedhit->geographicalId()); - - GlobalVector gtrkdir=gdet->toGlobal(trackdirection); - std::cout<<"Track direction trasformed in global direction"<<std::endl; - - //cluster and trackdirection on mono det - - // THIS THE POINTER TO THE MONO HIT OF A MATCHED HIT - const SiStripRecHit2D *monohit=matchedhit->monoHit(); - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > monocluster=monohit->cluster(); - const GeomDetUnit * monodet=gdet->monoDet(); - - LocalVector monotkdir=monodet->toLocal(gtrkdir); - //size=(monocluster->amplitudes()).size(); - if(monotkdir.z()!=0){ - - // THE LOCAL ANGLE (MONO) - float angle = atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi(); - // - hitangleassociation.push_back(make_pair(monohit, angle)); - // std::cout<<"Angle="<<atan(monotkdir.x()/monotkdir.z())*180/TMath::Pi()<<std::endl; - - - //cluster and trackdirection on stereo det - - // THIS THE POINTER TO THE STEREO HIT OF A MATCHED HIT - const SiStripRecHit2D *stereohit=matchedhit->stereoHit(); - - - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > stereocluster=stereohit->cluster(); - const GeomDetUnit * stereodet=gdet->stereoDet(); - LocalVector stereotkdir=stereodet->toLocal(gtrkdir); - //size=(stereocluster->amplitudes()).size(); - if(stereotkdir.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - float angle = atan(stereotkdir.x()/stereotkdir.z())*180/TMath::Pi(); - hitangleassociation.push_back(make_pair(stereohit, angle)); - - } - } - } - else if(hit){ - // hit= POINTER TO THE RECHIT - const edm::Ref<edm::DetSetVector<SiStripCluster>, SiStripCluster, edm::refhelper::FindForDetSetVector<SiStripCluster> > cluster=hit->cluster(); - //size=(cluster->amplitudes()).size(); - - - if(trackdirection.z()!=0){ - - // THE LOCAL ANGLE (STEREO) - float angle = atan(trackdirection.x()/trackdirection.z())*180/TMath::Pi(); - hitangleassociation.push_back(make_pair(hit, angle)); - } - } - LogDebug("TrackLocalAngle")<<"I found "<<i<<" hits."; - } - } - return hitangleassociation; -} - - -std::vector<std::pair<const TrackingRecHit*,float> > TrackLocalAngle::findtrackangle(const TrajectorySeed& seed, - const reco::Track& theT){ - std::vector<std::pair<const TrackingRecHit*,float> >hitangleassociation; - seed_plus=(seed.direction()==alongMomentum); - //services - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Start find track angle"; - if (seed_plus) { - thePropagator= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) );} - else { - thePropagator= new PropagatorWithMaterial(oppositeToMomentum,0.1057,&(*magfield) ); - thePropagatorOp= new PropagatorWithMaterial(alongMomentum,0.1057,&(*magfield) ); - } - - theUpdator= new KFUpdator(); - theEstimator= new Chi2MeasurementEstimator(30); - - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Now construct the KF fitters"; - - const KFTrajectoryFitter theKFFitter= KFTrajectoryFitter(*thePropagator, - *theUpdator, - *theEstimator) ; - const KFTrajectorySmoother theKFSmoother= KFTrajectorySmoother(*thePropagatorOp, - *theUpdator, - *theEstimator); - LogDebug("AnalyzeMTCCTracks::findtrackangle")<<"Contructing Trajectory State of seeds"; - theFitter = new KFFittingSmoother(theKFFitter,theKFSmoother); - const TrajectoryStateOnSurface startingState=startingTSOS(seed); - - - TransientTrackingRecHit::RecHitContainer tmp; - TransientTrackingRecHit::RecHitContainer hits; - - for (trackingRecHit_iterator i=theT.recHitsBegin(); - i!=theT.recHitsEnd(); i++){ - // hits.push_back(builder->build(&**i )); - // if ((*i)->isValid()){ - tmp.push_back(RHBuilder->build(&**i )); - // } - } - - for (TransientTrackingRecHit::RecHitContainer::const_iterator it=tmp.end()-1;it!=tmp.begin()-1;it--){ - hits.push_back(*it); - } - - return buildTrack(hits, startingState, seed); -} - - -TrajectoryStateOnSurface TrackLocalAngle::startingTSOS(const TrajectorySeed& seed)const -{ - PTrajectoryStateOnDet pState( seed.startingState()); - const GeomDet* gdet = (&(*tracker))->idToDet(DetId(pState.detId())); - TrajectoryStateOnSurface State= tsTransform.transientState( pState, &(gdet->surface()), - &(*magfield)); - return State; - -} - - diff --git a/CalibTracker/SiStripQuality/doc/html/index.html b/CalibTracker/SiStripQuality/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CalibTracker/SiStripQuality/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CalibTracker/SiStripQuality/doc/html/overview.html b/CalibTracker/SiStripQuality/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CalibTracker/SiStripQuality/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Calibration/EcalAlCaRecoProducers/interface/AlCaElectronsProducer.h b/Calibration/EcalAlCaRecoProducers/interface/AlCaElectronsProducer.h index 26e33af35de..eb111807b14 100644 --- a/Calibration/EcalAlCaRecoProducers/interface/AlCaElectronsProducer.h +++ b/Calibration/EcalAlCaRecoProducers/interface/AlCaElectronsProducer.h @@ -1,3 +1,6 @@ +#ifndef _ALCAELECTRONSPRODUCER_H +#define _ALCAELECTRONSPRODUCER_H + // -*- C++ -*- // // Package: AlCaElectronsProducer @@ -14,7 +17,7 @@ // // Original Author: Lorenzo AGOSTINO // Created: Mon Jul 17 18:07:01 CEST 2006 -// $Id: AlCaElectronsProducer.h,v 1.4 2006/09/25 16:49:22 meridian Exp $ +// $Id: AlCaElectronsProducer.h,v 1.6 2006/09/27 11:41:42 malgeri Exp $ // // @@ -54,3 +57,5 @@ class AlCaElectronsProducer : public edm::EDProducer { }; + +#endif diff --git a/Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h b/Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h index d2c3ad20d6e..772e94e7dab 100644 --- a/Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h +++ b/Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h @@ -1,3 +1,6 @@ +#ifndef _ALCAPHISYMRECHITSPRODUCER_H +#define _ALCAPHISYMRECHITSPRODUCER_H + // -*- C++ -*- // // Package: AlCaPhiSymRecHitsProducer @@ -12,8 +15,8 @@ */ // // Original Author: David Futyan -// Created: $Date$ -// $Id$ +// Created: $Date: 2006/08/28 14:42:06 $ +// $Id: AlCaPhiSymRecHitsProducer.h,v 1.1 2006/08/28 14:42:06 futyand Exp $ // // @@ -52,3 +55,5 @@ class AlCaPhiSymRecHitsProducer : public edm::EDProducer { double eCut_barl_; double eCut_endc_; }; + +#endif diff --git a/Calibration/EcalAlCaRecoProducers/src/SealModule.cc b/Calibration/EcalAlCaRecoProducers/src/SealModule.cc index 297a18f5ad9..b6a4ea4e4c2 100644 --- a/Calibration/EcalAlCaRecoProducers/src/SealModule.cc +++ b/Calibration/EcalAlCaRecoProducers/src/SealModule.cc @@ -4,6 +4,5 @@ #include "Calibration/EcalAlCaRecoProducers/interface/AlCaPhiSymRecHitsProducer.h" DEFINE_SEAL_MODULE(); - DEFINE_ANOTHER_FWK_MODULE(AlCaElectronsProducer); DEFINE_ANOTHER_FWK_MODULE(AlCaPhiSymRecHitsProducer); diff --git a/Calibration/HcalConnectivity/doc/html/index.html b/Calibration/HcalConnectivity/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Calibration/HcalConnectivity/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Calibration/HcalConnectivity/doc/html/overview.html b/Calibration/HcalConnectivity/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Calibration/HcalConnectivity/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Calibration/HcalIsolatedTrackReco/doc/html/index.html b/Calibration/HcalIsolatedTrackReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Calibration/HcalIsolatedTrackReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Calibration/HcalIsolatedTrackReco/doc/html/overview.html b/Calibration/HcalIsolatedTrackReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Calibration/HcalIsolatedTrackReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Calibration/IsolatedParticles/doc/html/index.html b/Calibration/IsolatedParticles/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Calibration/IsolatedParticles/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Calibration/IsolatedParticles/doc/html/overview.html b/Calibration/IsolatedParticles/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Calibration/IsolatedParticles/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Calibration/TkAlCaRecoProducers/doc/html/index.html b/Calibration/TkAlCaRecoProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Calibration/TkAlCaRecoProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Calibration/TkAlCaRecoProducers/doc/html/overview.html b/Calibration/TkAlCaRecoProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Calibration/TkAlCaRecoProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CaloOnlineTools/EcalTools/doc/html/index.html b/CaloOnlineTools/EcalTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CaloOnlineTools/EcalTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CaloOnlineTools/EcalTools/doc/html/overview.html b/CaloOnlineTools/EcalTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CaloOnlineTools/EcalTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CaloOnlineTools/HcalOnlineDb/doc/html/index.html b/CaloOnlineTools/HcalOnlineDb/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CaloOnlineTools/HcalOnlineDb/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CaloOnlineTools/HcalOnlineDb/doc/html/overview.html b/CaloOnlineTools/HcalOnlineDb/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CaloOnlineTools/HcalOnlineDb/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/CandAlgos/doc/html/index.html b/CommonTools/CandAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/CandAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/CandAlgos/doc/html/overview.html b/CommonTools/CandAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/CandAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/CandUtils/doc/html/index.html b/CommonTools/CandUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/CandUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/CandUtils/doc/html/overview.html b/CommonTools/CandUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/CandUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/ConditionDBWriter/doc/html/index.html b/CommonTools/ConditionDBWriter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/ConditionDBWriter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/ConditionDBWriter/doc/html/overview.html b/CommonTools/ConditionDBWriter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/ConditionDBWriter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/RecoAlgos/doc/html/index.html b/CommonTools/RecoAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/RecoAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/RecoAlgos/doc/html/overview.html b/CommonTools/RecoAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/RecoAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/RecoUtils/doc/html/index.html b/CommonTools/RecoUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/RecoUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/RecoUtils/doc/html/overview.html b/CommonTools/RecoUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/RecoUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/TrackerMap/interface/VisTrackerMapBox.h b/CommonTools/TrackerMap/interface/VisTrackerMapBox.h index 25764c467c5..c53e18af564 100644 --- a/CommonTools/TrackerMap/interface/VisTrackerMapBox.h +++ b/CommonTools/TrackerMap/interface/VisTrackerMapBox.h @@ -16,6 +16,7 @@ class VisTrackerMapBox : public QWidget void setPaintOptions(bool print_total,float minval=0.,float maxval=0.){v_tk->setPaintOptions(print_total, minval, maxval);} QLabel * labelinfo; VisTrackerMap *v_tk; + int getSelectedModule() {return selectedModule; selectedModule = 0;} signals: void moduleSelected(int); @@ -25,4 +26,5 @@ class VisTrackerMapBox : public QWidget private: TrackerMap *trackerMap; + int selectedModule; }; diff --git a/CommonTools/TrackerMap/src/VisTrackerMapBox.cc b/CommonTools/TrackerMap/src/VisTrackerMapBox.cc index 4cc62c30843..d4613634384 100644 --- a/CommonTools/TrackerMap/src/VisTrackerMapBox.cc +++ b/CommonTools/TrackerMap/src/VisTrackerMapBox.cc @@ -7,6 +7,8 @@ VisTrackerMapBox::VisTrackerMapBox( QWidget *parent, const char *name ) : QWidget( parent, name ) { + selectedModule = 0; + setCaption( "TrackerMap" ); resize( 500, 500 ); @@ -32,5 +34,6 @@ void VisTrackerMapBox::update() void VisTrackerMapBox::emitModSel(int id) { + selectedModule = id; emit moduleSelected(id); } diff --git a/CommonTools/UtilAlgos/doc/html/index.html b/CommonTools/UtilAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/UtilAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/UtilAlgos/doc/html/overview.html b/CommonTools/UtilAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/UtilAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CommonTools/Utils/doc/html/index.html b/CommonTools/Utils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CommonTools/Utils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CommonTools/Utils/doc/html/overview.html b/CommonTools/Utils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CommonTools/Utils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/BTauPlugins/doc/html/index.html b/CondCore/BTauPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/BTauPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/BTauPlugins/doc/html/overview.html b/CondCore/BTauPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/BTauPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/BeamSpotPlugins/doc/html/index.html b/CondCore/BeamSpotPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/BeamSpotPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/BeamSpotPlugins/doc/html/overview.html b/CondCore/BeamSpotPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/BeamSpotPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/CastorPlugins/doc/html/index.html b/CondCore/CastorPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/CastorPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/CastorPlugins/doc/html/overview.html b/CondCore/CastorPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/CastorPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/DBCommon/BuildFile b/CondCore/DBCommon/BuildFile index da049f768c6..e0f9b4db074 100644 --- a/CondCore/DBCommon/BuildFile +++ b/CondCore/DBCommon/BuildFile @@ -1,12 +1,12 @@ <use name=Framework/SealKernel> -<use name=CORALRelationalAccess> +<use name=RelationalAccess> <use name=DataSvc> <use name=ObjectRelationalAccess> <use name=rootrflx> <use name=FWCore/Utilities> <export> <use name=Framework/SealKernel> - <use name=CORALRelationalAccess> + <use name=RelationalAccess> <use name=DataSvc> <use name=ObjectRelationalAccess> <use name=rootrflx> diff --git a/CondCore/DQMPlugins/doc/html/index.html b/CondCore/DQMPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/DQMPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/DQMPlugins/doc/html/overview.html b/CondCore/DQMPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/DQMPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/ESPlugins/doc/html/index.html b/CondCore/ESPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/ESPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/ESPlugins/doc/html/overview.html b/CondCore/ESPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/ESPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/EgammaPlugins/doc/html/index.html b/CondCore/EgammaPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/EgammaPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/EgammaPlugins/doc/html/overview.html b/CondCore/EgammaPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/EgammaPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/GeometryPlugins/doc/html/index.html b/CondCore/GeometryPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/GeometryPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/GeometryPlugins/doc/html/overview.html b/CondCore/GeometryPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/GeometryPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/HIPlugins/doc/html/index.html b/CondCore/HIPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/HIPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/HIPlugins/doc/html/overview.html b/CondCore/HIPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/HIPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/L1TPlugins/doc/html/index.html b/CondCore/L1TPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/L1TPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/L1TPlugins/doc/html/overview.html b/CondCore/L1TPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/L1TPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/LuminosityPlugins/doc/html/index.html b/CondCore/LuminosityPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/LuminosityPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/LuminosityPlugins/doc/html/overview.html b/CondCore/LuminosityPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/LuminosityPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/MetaDataService/interface/MetaData.h b/CondCore/MetaDataService/interface/MetaData.h index 3ccd5daceb5..210b2cb4da8 100644 --- a/CondCore/MetaDataService/interface/MetaData.h +++ b/CondCore/MetaDataService/interface/MetaData.h @@ -1,5 +1,5 @@ -#ifndef CondCore_MetaDataService_METADATA_H -#define CondCore_MetaDataService_METADATA_H +#ifndef COND_METADATA_H +#define COND_METADATA_H #include <string> #include <memory> #include <vector> diff --git a/CondCore/MetaDataService/src/MetaData.cc b/CondCore/MetaDataService/src/MetaData.cc index f89a16c5de5..fdf9ae12580 100644 --- a/CondCore/MetaDataService/src/MetaData.cc +++ b/CondCore/MetaDataService/src/MetaData.cc @@ -31,11 +31,14 @@ cond::MetaData::MetaData(const std::string& connectionString, cond::ServiceLoade m_loader.loadAuthenticationService(); } m_service=&(m_loader.loadRelationalService()); + //coral::IRelationalDomain& domain = relationalService.domainForConnection(m_con); m_session=0; m_mode=cond::ReadWriteCreate; } + cond::MetaData::~MetaData(){ } + void cond::MetaData::connect( cond::ConnectMode mod ){ coral::IRelationalDomain& domain = m_service->domainForConnection(m_con); m_session=domain.newSession( m_con ) ; @@ -61,6 +64,12 @@ void cond::MetaData::disconnect(){ bool cond::MetaData::addMapping(const std::string& name, const std::string& iovtoken){ try{ m_session->transaction().start(false); + }catch(std::exception& er){ + throw cond::Exception( std::string("MetaData::addMapping ")+ er.what()); + }catch(...){ + throw cond::Exception( "MetaData::addMapping cannot start transaction" ); + } + try{ if(!m_session->nominalSchema().existsTable(cond::MetaDataNames::metadataTable())){ this->createTable(cond::MetaDataNames::metadataTable()); } @@ -73,13 +82,10 @@ bool cond::MetaData::addMapping(const std::string& name, const std::string& iovt dataEditor.insertRow( rowBuffer ); m_session->transaction().commit() ; }catch( coral::DuplicateEntryInUniqueKeyException& er ){ - m_session->transaction().rollback() ; throw cond::MetaDataDuplicateEntryException("addMapping",name); }catch(std::exception& er){ - m_session->transaction().rollback() ; throw cond::Exception(er.what()); }catch(...){ - m_session->transaction().rollback() ; throw cond::Exception( "MetaData::addMapping Could not commit the transaction" ); } return true; @@ -87,6 +93,12 @@ bool cond::MetaData::addMapping(const std::string& name, const std::string& iovt bool cond::MetaData::replaceToken(const std::string& name, const std::string& newtoken){ try{ m_session->transaction().start(false); + }catch(std::exception& er){ + throw cond::Exception( std::string("MetaData::addMapping ")+ er.what()); + }catch(...){ + throw cond::Exception( "MetaData::addMapping cannot start transaction" ); + } + try{ if(!m_session->nominalSchema().existsTable(cond::MetaDataNames::metadataTable())){ throw cond::Exception( "MetaData::replaceToken MetaData table doesnot exist" ); } @@ -104,47 +116,45 @@ bool cond::MetaData::replaceToken(const std::string& name, const std::string& ne dataEditor.updateRows( setClause, condition, inputData ); m_session->transaction().commit() ; }catch( coral::DuplicateEntryInUniqueKeyException& er ){ - m_session->transaction().rollback(); throw cond::MetaDataDuplicateEntryException("MetaData::replaceToken",name); }catch(std::exception& er){ - m_session->transaction().rollback() ; throw cond::Exception(er.what()); }catch(...){ - m_session->transaction().rollback() ; throw cond::Exception( "MetaData::replaceToken Could not commit the transaction" ); } return true; } const std::string cond::MetaData::getToken( const std::string& name ){ - std::string iovtoken; try{ if( m_mode!=cond::ReadOnly ){ m_session->transaction().start(false); }else{ m_session->transaction().start(true); } - coral::ITable& mytable=m_session->nominalSchema().tableHandle( cond::MetaDataNames::metadataTable() ); - std::auto_ptr< coral::IQuery > query(mytable.newQuery()); - query->setRowCacheSize( 100 ); - coral::AttributeList emptyBindVariableList; - std::string condition=cond::MetaDataNames::tagColumn()+" = '"+name+"'"; - query->setCondition( condition, emptyBindVariableList ); - query->addToOutputList( cond::MetaDataNames::tokenColumn() ); - coral::ICursor& cursor = query->execute(); - while( cursor.next() ) { - const coral::AttributeList& row = cursor.currentRow(); - iovtoken=row[ cond::MetaDataNames::tokenColumn() ].data<std::string>(); - } - m_session->transaction().commit(); - }catch(const coral::TableNotExistingException& er){ + }catch(const std::exception& er){ + throw cond::Exception( std::string("MetaData::getToken: Could not start a new transaction" )+er.what() ); + }catch(...){ + throw cond::Exception( "MetaData::getToken Could not start a new transaction" ); + } + coral::ITable& mytable=m_session->nominalSchema().tableHandle( cond::MetaDataNames::metadataTable() ); + std::string iovtoken; + std::auto_ptr< coral::IQuery > query(mytable.newQuery()); + query->setRowCacheSize( 100 ); + coral::AttributeList emptyBindVariableList; + std::string condition=cond::MetaDataNames::tagColumn()+" = '"+name+"'"; + query->setCondition( condition, emptyBindVariableList ); + query->addToOutputList( cond::MetaDataNames::tokenColumn() ); + coral::ICursor& cursor = query->execute(); + while( cursor.next() ) { + const coral::AttributeList& row = cursor.currentRow(); + iovtoken=row[ cond::MetaDataNames::tokenColumn() ].data<std::string>(); + } + try{ m_session->transaction().commit(); - return ""; }catch(const std::exception& er){ - m_session->transaction().rollback() ; - throw cond::Exception( std::string("MetaData::getToken error: ")+er.what() ); + throw cond::Exception( std::string("MetaData::getToken Could not commit a transaction")+er.what() ); }catch(...){ - m_session->transaction().rollback() ; - throw cond::Exception( "MetaData::getToken: unknow exception" ); + throw cond::Exception( "MetaData::getToken: Could not commit a transaction" ); } return iovtoken; } @@ -177,15 +187,12 @@ bool cond::MetaData::hasTag( const std::string& name ) const{ coral::ICursor& cursor = query->execute(); if( cursor.next() ) result=true; cursor.close(); + // Committing the transaction + //std::cout << "Committing..." << std::endl; m_session->transaction().commit(); - }catch(const coral::TableNotExistingException& er){ - m_session->transaction().commit(); - return false; }catch(const std::exception& er){ - m_session->transaction().rollback() ; throw cond::Exception( std::string("MetaData::hasTag: " )+er.what() ); }catch(...){ - m_session->transaction().rollback() ; throw cond::Exception( "MetaData::hasTag: unknown exception "); } return result; @@ -207,15 +214,12 @@ void cond::MetaData::listAllTags( std::vector<std::string>& result ) const{ result.push_back(row[cond::MetaDataNames::tagColumn()].data<std::string>()); } cursor.close(); + // Committing the transaction + //std::cout << "Committing..." << std::endl; m_session->transaction().commit(); - }catch(const coral::TableNotExistingException& er){ - m_session->transaction().commit(); - return; }catch(const std::exception& er){ - m_session->transaction().rollback() ; throw cond::Exception( std::string("MetaData::listAllTag: " )+er.what() ); }catch(...){ - m_session->transaction().rollback() ; throw cond::Exception( "MetaData::listAllTag: unknown exception "); } } diff --git a/CondCore/ORA/doc/html/index.html b/CondCore/ORA/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/ORA/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/ORA/doc/html/overview.html b/CondCore/ORA/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/ORA/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/PhysicsToolsPlugins/doc/html/index.html b/CondCore/PhysicsToolsPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/PhysicsToolsPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/PhysicsToolsPlugins/doc/html/overview.html b/CondCore/PhysicsToolsPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/PhysicsToolsPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/PopCon/doc/html/index.html b/CondCore/PopCon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/PopCon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/PopCon/doc/html/overview.html b/CondCore/PopCon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/PopCon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/RecoMuonPlugins/doc/html/index.html b/CondCore/RecoMuonPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/RecoMuonPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/RecoMuonPlugins/doc/html/overview.html b/CondCore/RecoMuonPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/RecoMuonPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/RunInfoPlugins/doc/html/index.html b/CondCore/RunInfoPlugins/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/RunInfoPlugins/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/RunInfoPlugins/doc/html/overview.html b/CondCore/RunInfoPlugins/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/RunInfoPlugins/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/SiPixelPlugins/src/plugin.cc b/CondCore/SiPixelPlugins/src/plugin.cc index acecabd3327..4b888cd63bc 100644 --- a/CondCore/SiPixelPlugins/src/plugin.cc +++ b/CondCore/SiPixelPlugins/src/plugin.cc @@ -2,9 +2,6 @@ #include "CondFormats/SiPixelObjects/interface/SiPixelFedCablingMap.h" #include "CondFormats/DataRecord/interface/SiPixelFedCablingMapRcd.h" -#include "CondFormats/SiPixelObjects/interface/SiPixelGainCalibration.h" -#include "CondFormats/DataRecord/interface/SiPixelGainCalibrationRcd.h" DEFINE_SEAL_MODULE(); REGISTER_PLUGIN(SiPixelFedCablingMapRcd,SiPixelFedCablingMap); -REGISTER_PLUGIN(SiPixelGainCalibrationRcd,SiPixelGainCalibration); diff --git a/CondCore/TagCollection/doc/html/index.html b/CondCore/TagCollection/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/TagCollection/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/TagCollection/doc/html/overview.html b/CondCore/TagCollection/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/TagCollection/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondCore/Utilities/doc/html/index.html b/CondCore/Utilities/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondCore/Utilities/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondCore/Utilities/doc/html/overview.html b/CondCore/Utilities/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondCore/Utilities/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/AlignmentRecord/doc/html/index.html b/CondFormats/AlignmentRecord/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/AlignmentRecord/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/AlignmentRecord/doc/html/overview.html b/CondFormats/AlignmentRecord/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/AlignmentRecord/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/BTauObjects/doc/html/index.html b/CondFormats/BTauObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/BTauObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/BTauObjects/doc/html/overview.html b/CondFormats/BTauObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/BTauObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/BeamSpotObjects/doc/html/index.html b/CondFormats/BeamSpotObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/BeamSpotObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/BeamSpotObjects/doc/html/overview.html b/CondFormats/BeamSpotObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/BeamSpotObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/CSCObjects/interface/CSCReadoutMapping.h b/CondFormats/CSCObjects/interface/CSCReadoutMapping.h index 0299bf71a95..94f684aed21 100644 --- a/CondFormats/CSCObjects/interface/CSCReadoutMapping.h +++ b/CondFormats/CSCObjects/interface/CSCReadoutMapping.h @@ -73,17 +73,6 @@ class CSCReadoutMapping { */ virtual void fill( const edm::ParameterSet& ) = 0; - - ///returns vmecrate given CSCDetId - int crate(const CSCDetId&) const; - ///returns dmbId given CSCDetId - int dmbId(const CSCDetId&) const; - ///returns DCC# given CSCDetId - int DCC(const CSCDetId&) const; - ///returns DDU# given CSCDetId - int DDU(const CSCDetId&) const; - - /** * Add one record of info to mapping */ diff --git a/CondFormats/CSCObjects/src/CSCReadoutMapping.cc b/CondFormats/CSCObjects/src/CSCReadoutMapping.cc index a30592e43c0..b2589c9430d 100644 --- a/CondFormats/CSCObjects/src/CSCReadoutMapping.cc +++ b/CondFormats/CSCObjects/src/CSCReadoutMapping.cc @@ -67,16 +67,3 @@ int CSCReadoutMapping::swId( int endcap, int station, int ring, int chamber ) co // Software id is just CSCDetId for the chamber - but no distinction within ME11 return CSCDetId::rawIdMaker( endcap, station, ring, chamber, 0 ); // usual detid for chamber, i.e. layer=0 } - -int CSCReadoutMapping::crate(const CSCDetId & id) const { - return 1;//dummy -} -int CSCReadoutMapping::dmbId(const CSCDetId & id) const { - return 1;//dummy -} -int CSCReadoutMapping::DDU(const CSCDetId & id) const { - return 1;//dummy -} -int CSCReadoutMapping::DCC(const CSCDetId & id) const { - return 1;//dummy -} diff --git a/CondFormats/CastorObjects/doc/html/index.html b/CondFormats/CastorObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/CastorObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/CastorObjects/doc/html/overview.html b/CondFormats/CastorObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/CastorObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/Common/doc/html/index.html b/CondFormats/Common/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/Common/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/Common/doc/html/overview.html b/CondFormats/Common/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/Common/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/DQMObjects/doc/html/index.html b/CondFormats/DQMObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/DQMObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/DQMObjects/doc/html/overview.html b/CondFormats/DQMObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/DQMObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/ESObjects/doc/html/index.html b/CondFormats/ESObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/ESObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/ESObjects/doc/html/overview.html b/CondFormats/ESObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/ESObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/EcalCorrections/doc/html/index.html b/CondFormats/EcalCorrections/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/EcalCorrections/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/EcalCorrections/doc/html/overview.html b/CondFormats/EcalCorrections/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/EcalCorrections/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/EgammaObjects/doc/html/index.html b/CondFormats/EgammaObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/EgammaObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/EgammaObjects/doc/html/overview.html b/CondFormats/EgammaObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/EgammaObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/GeometryObjects/doc/html/index.html b/CondFormats/GeometryObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/GeometryObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/GeometryObjects/doc/html/overview.html b/CondFormats/GeometryObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/GeometryObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/HIObjects/doc/html/index.html b/CondFormats/HIObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/HIObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/HIObjects/doc/html/overview.html b/CondFormats/HIObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/HIObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/HcalMapping/TagLog b/CondFormats/HcalMapping/TagLog new file mode 100644 index 00000000000..0af7688e308 --- /dev/null +++ b/CondFormats/HcalMapping/TagLog @@ -0,0 +1,24 @@ +** V00-01-03 [Fri Mar 3 21:57:23 2006] +Wire source map fix + +** V00-01-02 [Tue Feb 21 23:01:30 2006] +Added calibration and some unmapped channels + +** V00-01-01 [Tue Feb 7 17:17:03 2006] +Fiber update + +** V00-01-00 [Wed Feb 1 20:36:08 2006] +HcalMapping no longer in use + +** V00-00-03 [Tue Jan 17 19:01:17 2006] +Update maps for correct HTR slots + +** V00-00-02 [Thu Dec 29 22:44:18 2005] +Update maps for new releases + +** V00-00-01 [Mon Nov 14 19:17:45 2005] +Added Trigger Primitives to the satocrich map + +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/CondFormats/JetMETObjects/doc/html/index.html b/CondFormats/JetMETObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/JetMETObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/JetMETObjects/doc/html/overview.html b/CondFormats/JetMETObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/JetMETObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/L1TObjects/doc/html/index.html b/CondFormats/L1TObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/L1TObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/L1TObjects/doc/html/overview.html b/CondFormats/L1TObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/L1TObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/Luminosity/doc/html/index.html b/CondFormats/Luminosity/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/Luminosity/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/Luminosity/doc/html/overview.html b/CondFormats/Luminosity/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/Luminosity/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/PhysicsToolsObjects/doc/html/index.html b/CondFormats/PhysicsToolsObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/PhysicsToolsObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/PhysicsToolsObjects/doc/html/overview.html b/CondFormats/PhysicsToolsObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/PhysicsToolsObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/RecoMuonObjects/doc/html/index.html b/CondFormats/RecoMuonObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/RecoMuonObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/RecoMuonObjects/doc/html/overview.html b/CondFormats/RecoMuonObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/RecoMuonObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/RunInfo/doc/html/index.html b/CondFormats/RunInfo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondFormats/RunInfo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondFormats/RunInfo/doc/html/overview.html b/CondFormats/RunInfo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondFormats/RunInfo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondFormats/SiStripObjects/interface/SiStripApvGain.h b/CondFormats/SiStripObjects/interface/SiStripApvGain.h new file mode 100644 index 00000000000..c1cff054bb7 --- /dev/null +++ b/CondFormats/SiStripObjects/interface/SiStripApvGain.h @@ -0,0 +1,37 @@ +#ifndef SiStripApvGain_h +#define SiStripApvGain_h + +#include<vector> +#include<map> +#include<iostream> +#include<boost/cstdint.hpp> + + +class SiStripApvGain { + + public: + + typedef std::vector<short>::const_iterator ContainerIterator; + typedef std::pair<ContainerIterator, ContainerIterator> Range; + typedef std::vector<int> Registry; + typedef Registry::iterator RegistryIterator; + typedef Registry::const_iterator RegistryConstIterator; + + SiStripApvGain(){}; + ~SiStripApvGain(){}; + + bool put(const uint32_t& detID,Range input); + const Range getRange(const uint32_t& detID) const; + void getDetIds(std::vector<uint32_t>& DetIds_) const; + + float getStripGain (const uint16_t& strip, const Range& range) const; + float getApvGain (const uint16_t& apv, const Range& range) const; + + private: + std::vector<short> v_gains; + std::vector<int> v_detids; + std::vector<int> v_ibegin; + std::vector<int> v_iend; +}; + +#endif diff --git a/CondFormats/SiStripObjects/src/SiStripApvGain.cc b/CondFormats/SiStripObjects/src/SiStripApvGain.cc new file mode 100644 index 00000000000..7920580f84d --- /dev/null +++ b/CondFormats/SiStripObjects/src/SiStripApvGain.cc @@ -0,0 +1,65 @@ +#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h" +#include "FWCore/Utilities/interface/Exception.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +bool SiStripApvGain::put(const uint32_t& DetId, Range input) { + // put in SiStripApvGain of DetId + + RegistryIterator p = std::lower_bound(v_detids.begin(),v_detids.end(),DetId); + if (p!=v_detids.end() && *p==(int)DetId){ + edm::LogError("SiStripApvGain") << "[" << __PRETTY_FUNCTION__ << "] SiStripApvGain for DetID " << DetId << " is already stored. Skippig this put" << std::endl; + return false; + } + + int sd= input.second-input.first; + int pd= p-v_detids.begin(); + + int ibegin=v_gains.size(); + int iend =v_gains.size()+sd; + v_detids.insert(p,DetId); + v_ibegin.insert(v_ibegin.begin()+pd,ibegin); + v_iend.insert(v_iend.begin()+pd,iend); + + v_gains.insert(v_gains.end(),input.first,input.second); + return true; +} + +const SiStripApvGain::Range SiStripApvGain::getRange(const uint32_t& DetId) const { + // get SiStripApvGain Range of DetId + + RegistryConstIterator p = std::lower_bound(v_detids.begin(),v_detids.end(),DetId); + if (p==v_detids.end() || *p!=(int)DetId) + return SiStripApvGain::Range(v_gains.end(),v_gains.end()); + else{ + int pd= p-v_detids.begin(); + int ibegin = *(v_ibegin.begin()+pd); + int iend = *(v_iend.begin()+pd); + return SiStripApvGain::Range(v_gains.begin()+ibegin,v_gains.begin()+iend); + } +} + +void SiStripApvGain::getDetIds(std::vector<uint32_t>& DetIds_) const { + // returns vector of DetIds in map + // DetIds_=v_detids; + DetIds_.insert(DetIds_.begin(),v_detids.begin(),v_detids.end()); +} + +float SiStripApvGain::getStripGain(const uint16_t& strip, const Range& range) const { + uint16_t apv = (uint16_t) (strip/128); + if (apv>=range.second-range.first){ + throw cms::Exception("CorruptedData") + << "[SiStripApvGain::getApvGain] looking for SiStripApvGain for a strip out of range: strip " << strip << " apv " << apv << std::endl; + } + + return static_cast<float> (*(range.first+apv)); +} + +float SiStripApvGain::getApvGain(const uint16_t& apv, const Range& range) const { + if (apv>=range.second-range.first){ + throw cms::Exception("CorruptedData") + << "[SiStripApvGain::getApvGain] looking for SiStripApvGain for an apv out of range: apv " << apv << std::endl; + } + + return static_cast<float> (*(range.first+apv)); +} + diff --git a/CondFormats/SiStripObjects/src/T_EventSetup_SiStripApvGain.cc b/CondFormats/SiStripObjects/src/T_EventSetup_SiStripApvGain.cc new file mode 100644 index 00000000000..22ec0473e5f --- /dev/null +++ b/CondFormats/SiStripObjects/src/T_EventSetup_SiStripApvGain.cc @@ -0,0 +1,7 @@ +// system include files + +// user include files +#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h" +#include "FWCore/Framework/interface/eventsetupdata_registration_macro.h" + +EVENTSETUP_DATA_REG(SiStripApvGain); diff --git a/CondFormats/SiStripObjects/src/classes.h b/CondFormats/SiStripObjects/src/classes.h index c9e086d6c31..252e7cdb922 100644 --- a/CondFormats/SiStripObjects/src/classes.h +++ b/CondFormats/SiStripObjects/src/classes.h @@ -2,6 +2,7 @@ #include "CondFormats/SiStripObjects/interface/FedChannelConnection.h" #include "CondFormats/SiStripObjects/interface/SiStripPedestals.h" #include "CondFormats/SiStripObjects/interface/SiStripNoises.h" +#include "CondFormats/SiStripObjects/interface/SiStripApvGain.h" namespace { @@ -10,13 +11,13 @@ namespace { std::vector< std::vector<FedChannelConnection> >::iterator tmp2; std::vector< std::vector<FedChannelConnection> >::const_iterator tmp3; - //std::vector<char>::iterator tmp4; - //std::vector<char>::const_iterator tmp5; + std::vector<char>::iterator tmp4; + std::vector<char>::const_iterator tmp5; std::vector< SiStripPedestals::DetRegistry >::iterator tmp6; std::vector< SiStripPedestals::DetRegistry >::const_iterator tmp7; - //std::vector<short>::iterator tmp8; - //std::vector<short>::const_iterator tmp9; + std::vector<short>::iterator tmp8; + std::vector<short>::const_iterator tmp9; std::vector< SiStripNoises::DetRegistry >::iterator tmp10; std::vector< SiStripNoises::DetRegistry >::const_iterator tmp11; @@ -48,5 +49,5 @@ template std::vector<FedChannelConnection>::iterator; template std::vector<FedChannelConnection>::const_iterator; //template std::vector<uint16_t>::iterator; //template std::vector<uint16_t>::const_iterator; - */ + diff --git a/CondFormats/SiStripObjects/src/classes_def.xml b/CondFormats/SiStripObjects/src/classes_def.xml index 30e909b8e38..a7e091205ca 100644 --- a/CondFormats/SiStripObjects/src/classes_def.xml +++ b/CondFormats/SiStripObjects/src/classes_def.xml @@ -14,6 +14,8 @@ <class name="SiStripNoises::DetRegistry"/> <class name="std::vector<SiStripNoises::DetRegistry>"/> + <class name="SiStripApvGain"/> + <class pattern="*iterator*"/> <class pattern="*vector*"/> <class pattern="*map*"/> diff --git a/CondTools/DQM/doc/html/index.html b/CondTools/DQM/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondTools/DQM/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondTools/DQM/doc/html/overview.html b/CondTools/DQM/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondTools/DQM/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondTools/Geometry/doc/html/index.html b/CondTools/Geometry/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondTools/Geometry/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondTools/Geometry/doc/html/overview.html b/CondTools/Geometry/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondTools/Geometry/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondTools/Hcal/BuildFile b/CondTools/Hcal/BuildFile index 5e2c7388021..3a8361a00fb 100644 --- a/CondTools/Hcal/BuildFile +++ b/CondTools/Hcal/BuildFile @@ -6,7 +6,7 @@ <use name=CalibFormats/HcalObjects> <use name=CondCore/IOVService> <use name=CondCore/DBCommon> -<use name=CORALRelationalAccess> +<use name=RelationalAccess> <use name=CondCore/MetaDataService> <use name=DataSvc> <use name=xerces-c> @@ -21,7 +21,7 @@ <use name=CondCore/IOVService> <use name=CondCore/DBCommon> <use name=CondCore/MetaDataService> - <use name=CORALRelationalAccess> + <use name=RelationalAccess> <use name=DataSvc> <use name=xerces-c> </export> diff --git a/CondTools/L1Trigger/doc/html/index.html b/CondTools/L1Trigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondTools/L1Trigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondTools/L1Trigger/doc/html/overview.html b/CondTools/L1Trigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondTools/L1Trigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondTools/Luminosity/doc/html/index.html b/CondTools/Luminosity/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondTools/Luminosity/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondTools/Luminosity/doc/html/overview.html b/CondTools/Luminosity/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondTools/Luminosity/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondTools/O2OFramework/sql/EcalPedestals_payload_o2o-H2.sql b/CondTools/O2OFramework/sql/EcalPedestals_payload_o2o-H2.sql index f9379958626..6d1e49af2db 100644 --- a/CondTools/O2OFramework/sql/EcalPedestals_payload_o2o-H2.sql +++ b/CondTools/O2OFramework/sql/EcalPedestals_payload_o2o-H2.sql @@ -16,20 +16,17 @@ BEGIN SELECT miov.iov_id, riov.run_num FROM + location_def@ecalh4db ldef, run_type_def@ecalh4db rdef, run_tag@ecalh4db rtag, run_iov@ecalh4db riov, /* Selects the mon_run_iov with the greatest subrun_num */ (SELECT iov_id, run_iov_id, MAX(subrun_num) KEEP (DENSE_RANK FIRST ORDER BY subrun_num ASC) FROM mon_run_iov@ecalh4db GROUP BY iov_id, run_iov_id) miov - INNER JOIN run_iov@ecalh4db riov - ON miov.run_iov_id = riov.iov_id - INNER JOIN run_tag@ecalh4db rtag - ON riov.tag_id = rtag.tag_id - INNER JOIN location_def@ecalh4db ldef - ON rtag.location_id = ldef.def_id - INNER JOIN run_type_def@ecalh4db rdef - ON rtag.run_type_id = rdef.def_id WHERE - ldef.location='H2' + miov.run_iov_id = riov.iov_id + AND riov.tag_id = rtag.tag_id + AND rdef.def_id = rtag.run_type_id + AND ldef.def_id = rtag.location_id + AND ldef.location='H2' AND rdef.run_type='PEDESTAL' AND miov.iov_id > last_id ; @@ -39,11 +36,6 @@ BEGIN cv1 maps the data to its native mapping cv2 maps the native mapping (cv1) to remap SM1 to SM4 cv3 maps the altered mapping (cv2) to the det_id - - The FROM block from above is repeated here, instead of using the - results already transferred to the ECALPEDESTALS table. This is - because using a combination of the local tables and remote tables - has /very/ poor performance. */ INSERT INTO ecalpedestals_item (iov_value_id, pos, det_id, mean_x12, rms_x12, mean_x6, rms_x6, mean_x1, rms_x1) @@ -59,32 +51,19 @@ BEGIN dat.ped_mean_g1, dat.ped_rms_g1 FROM - /* Begin IOV selection block */ - /* Selects the mon_run_iov with the greatest subrun_num */ - (SELECT iov_id, run_iov_id, - MAX(subrun_num) KEEP (DENSE_RANK FIRST ORDER BY subrun_num ASC) - FROM mon_run_iov@ecalh4db GROUP BY iov_id, run_iov_id) miov - INNER JOIN run_iov@ecalh4db riov - ON miov.run_iov_id = riov.iov_id - INNER JOIN run_tag@ecalh4db rtag - ON riov.tag_id = rtag.tag_id - INNER JOIN location_def@ecalh4db ldef - ON rtag.location_id = ldef.def_id - INNER JOIN run_type_def@ecalh4db rdef - ON rtag.run_type_id = rdef.def_id - /* End IOV selection block */ - INNER JOIN mon_pedestals_dat@ecalh4db dat - ON miov.iov_id = dat.iov_id - INNER JOIN channelview@ecalh4db cv1 - ON dat.logic_id = cv1.logic_id AND cv1.name = 'EB_crystal_number' AND cv1.maps_to = 'EB_crystal_number' - INNER JOIN channelview@ecalh4db cv2 - ON cv1.id2 = cv2.id2 AND cv2.id1 = 4 AND cv2.name = 'EB_crystal_number' AND cv2.maps_to = 'EB_crystal_number' - INNER JOIN channelview@ecalh4db cv3 - ON cv2.logic_id = cv3.logic_id AND cv3.name = 'Offline_det_id' AND cv3.maps_to = 'EB_crystal_number' - WHERE - ldef.location='H2' - AND rdef.run_type='PEDESTAL' - AND miov.iov_id > last_id + ecalpedestals iov, mon_pedestals_dat@ecalh4db dat, channelview@ecalh4db cv1, channelview@ecalh4db cv2, channelview@ecalh4db cv3 + WHERE dat.iov_id = iov.iov_value_id + AND cv1.logic_id = dat.logic_id + AND cv1.name = 'EB_crystal_number' + AND cv1.maps_to = 'EB_crystal_number' + AND cv2.name = 'EB_crystal_number' + AND cv2.maps_to = 'EB_crystal_number' + AND cv2.id1 = 4 /* Translate to SM 4 */ + AND cv2.id2 = cv1.id2 + AND cv3.name='Offline_det_id' + AND cv3.maps_to='EB_crystal_number' + AND cv3.logic_id = cv2.logic_id + AND iov.iov_value_id > last_id ; END; / diff --git a/CondTools/RunInfo/doc/html/index.html b/CondTools/RunInfo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/CondTools/RunInfo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/CondTools/RunInfo/doc/html/overview.html b/CondTools/RunInfo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/CondTools/RunInfo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/CondTools/SiStrip/scripts/SiStripOfflinePedNoiseToDb.sh b/CondTools/SiStrip/scripts/SiStripOfflinePedNoiseToDb.sh index 983d9cedde2..aa7f9ead0a5 100755 --- a/CondTools/SiStrip/scripts/SiStripOfflinePedNoiseToDb.sh +++ b/CondTools/SiStrip/scripts/SiStripOfflinePedNoiseToDb.sh @@ -1,5 +1,5 @@ #!/bin/sh - + function usage () { echo -e "\n[usage]\n SiStripOfflinePedNoiseToDb.sh [options]" echo -e " -InputFilePath=<path>" @@ -20,7 +20,12 @@ function usage () { echo -e "\nEXAMPLES:" echo -e "\n\tSingle Local File access" - echo -e "\n\t\t./SiStripOfflinePedNoiseToDb.sh -tagPN=SiStripOffPedNoi_v1 -tagCab=SiStripCabling_v1 -doPedNoiseTransfer -CondDb=devdb10 -geometry=TAC -InputFilePath=/storage/TIB/run/RU0000518_000.root -StartIOV=100" + echo -e "\n\t\t./SiStripOfflinePedNoiseToDb.sh -tagPN=SiStripOffPedNoi_v1 -tagCab=SiStripCabling_v1 -doPedNoiseTransfer -CondDb=devdb10 -geometry=TAC -InputFilePath=/storage/TIB/run/RU0000518_000.root -StartIOV=100 -firstUpload" + + echo -e "\n\t\t ./SiStripOfflinePedNoiseToDb.sh -tagPN=SiStripOffPedNoi_v1 -tagCab=SiStripCabling_v1 -doPedNoiseTransfer -geometry=TAC -InputFilePath=/storage/TIB/run/RU0000516_000.root -StartIOV=516 -sqliteDb=/tmp/giordano/o2o/dummy_1.db -sqliteCatalog=/tmp/giordano/o2o/dummy_1.xml -firstUpload" + + echo -e "\n\t\t ./SiStripOfflinePedNoiseToDb.sh -tagPN=SiStripOffPedNoi_v1 -tagCab=SiStripCabling_v1 -doPedNoiseTransfer -geometry=TAC -InputFilePath=/storage/TIB/run/RU0000516_000.root -StartIOV=600 -sqliteDb=/tmp/giordano/o2o/dummy_1.db -sqliteCatalog=/tmp/giordano/o2o/dummy_1.xml " + echo -e "\n\tMultiple Local Files access" echo -e "\n\t\t./SiStripOfflinePedNoiseToDb.sh -tagPN=SiStripOffPedNoi_v1 -tagCab=SiStripCabling_v1 -doPedNoiseTransfer -CondDb=devdb10 -geometry=TAC -InputFilePath=/storage/TIB/run/RU000052[0-4]\* -StartIOV=100" diff --git a/CondTools/SiStrip/scripts/template_SiStripOfflinePedNoiseToDb.cfg b/CondTools/SiStrip/scripts/template_SiStripOfflinePedNoiseToDb.cfg index 7f654bc0590..d7ca21a6b3b 100644 --- a/CondTools/SiStrip/scripts/template_SiStripOfflinePedNoiseToDb.cfg +++ b/CondTools/SiStrip/scripts/template_SiStripOfflinePedNoiseToDb.cfg @@ -24,10 +24,7 @@ process OFFPEDNOISE = { block PoolDBESSourceBlock = { using PoolDBBlock - bool loadAll = true - - # VPSet toGet = {{ string record = "SiStripPedestalsRcd" string tag = "insert_tagPN_p" }, { string record = "SiStripNoisesRcd" string tag = "insert_tagPN_n" }, { string record = "SiStripFedCablingRcd" string tag = "insert_tagCab" }} - + bool loadAll = true VPSet toGet = {{ string record = "SiStripPedestalsRcd" string tag = "insert_tagPN_p" }, { string record = "SiStripNoisesRcd" string tag = "insert_tagPN_n" }} } @@ -39,7 +36,7 @@ process OFFPEDNOISE = { untracked string threshold = "INFO" # untracked PSet default = { untracked int32 limit = 1000 } } - untracked vstring debugModules = {"SiStripOfflinePedNoiseToDb", "siStripOfflinePedNoiseToDb"} +# untracked vstring debugModules = {"SiStripOfflinePedNoiseToDb", "siStripOfflinePedNoiseToDb"} # untracked vstring suppressDebug = { "*" } # # untracked vstring suppressInfo = { } # # untracked vstring suppressWarning = { } @@ -106,8 +103,8 @@ process OFFPEDNOISE = { double MaskDeadCut = 0.5 double MaskTruncationCut = 0.05 double CutToAvoidSignal =3. - int32 NumberOfEventsForInit = 100 - int32 NumberOfEventsForIteration = 50 + int32 NumberOfEventsForInit = 500 + int32 NumberOfEventsForIteration = 200 } } diff --git a/Configuration/EventContent/doc/EventContent.doc b/Configuration/EventContent/doc/EventContent.doc new file mode 100644 index 00000000000..252298a2711 --- /dev/null +++ b/Configuration/EventContent/doc/EventContent.doc @@ -0,0 +1,62 @@ + +/*! + +\page Configuration_EventContent Package Configuration/EventContent + +<center> +<small> + +<!-- @CVS_TAG@ will be substituted at build time, no need to touch --> +<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/Configuration/EventContent/?cvsroot=CMSSW&only_with_tag=@CVS_TAG@>Source code (CVS tag: @CVS_TAG@)</a> - +<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/Configuration/EventContent/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a> +</small> +</center> + + +\section desc ConfiguratiionEventContent Package which contains EventContent standrd definitions + +\subsection files Files + +- \b EventContent.cff : fragment which defines the CMS Data Tiers. No product is explicitly added/dropped here, the information is gathered from the Software SubSystems: +\htmlonly +<pre> +# Reconstruction part +"RecoLocalTracker/Configuration/data/RecoLocalTracker_EventContent.cff" +"RecoLocalMuon/Configuration/data/RecoLocalMuon_EventContent.cff" +"RecoLocalCalo/Configuration/data/RecoLocalCalo_EventContent.cff" +"RecoEcal/Configuration/data/RecoEcal_EventContent.cff" +"TrackingTools/Configuration/data/TrackingTools_EventContent.cff" +"RecoTracker/Configuration/data/RecoTracker_EventContent.cff" +"RecoJets/Configuration/data/RecoJets_EventContent.cff" +"RecoMET/Configuration/data/RecoMET_EventContent.cff" +"RecoMuon/Configuration/data/RecoMuon_EventContent.cff" +"RecoBTau/Configuration/data/RecoBTau_EventContent.cff" +"RecoBTag/Configuration/data/RecoBTag_EventContent.cff" +"RecoTauTag/Configuration/data/RecoTauTag_EventContent.cff" +"RecoVertex/Configuration/data/RecoVertex_EventContent.cff" +"RecoPixelVertexing/Configuration/data/RecoPixelVertexing_EventContent.cff" +"RecoEgamma/Configuration/data/RecoEgamma_EventContent.cff" +# Simulation part +"SimG4Core/Configuration/data/SimG4Core_EventContent.cff" +"SimTracker/Configuration/data/SimTracker_EventContent.cff" +"SimMuon/Configuration/data/SimMuon_EventContent.cff" +"SimCalorimetry/Configuration/data/SimCalorimetry_EventContent.cff" +</pre> +\endhtmlonly + +\subsection seq Available Blocks +- \b FEVT: +- \b RECO: +- \b AOD : +- \b FEVTSIM: +- \b RECOSIM: +- \b AODSIM : + + +<hr> + +Last updated: @DATE@ Tommaso Boccali + + +*/ + diff --git a/Configuration/GlobalRuns/doc/html/index.html b/Configuration/GlobalRuns/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Configuration/GlobalRuns/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Configuration/GlobalRuns/doc/html/overview.html b/Configuration/GlobalRuns/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Configuration/GlobalRuns/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Configuration/SVSuite/data/SVSuite.xml b/Configuration/SVSuite/data/SVSuite.xml index 21c473a0430..1f14183b7b3 100644 --- a/Configuration/SVSuite/data/SVSuite.xml +++ b/Configuration/SVSuite/data/SVSuite.xml @@ -21,7 +21,7 @@ RecoEgamma_pho_E50.cfg </Test> </Validate> - + <Validate Version="Default-Slow"> <Test Events="5000" Name="SVSuiteRecoEGamma-ElePt100"> RecoEgamma_ele_pt100.cfg @@ -44,6 +44,9 @@ <Test Events="1000" Name="SVsuiteRecoMET-ZjetsDimuons"> RecoMET_Zjets_Dimuons_300-380.cfg </Test> + <Test Events="1000" Name="SVSuiteRecoTau-DiTaus"> + RecoTau_DiTaus_pt_20-420.cfg + </Test> </Validate> </ReleaseValidation> diff --git a/Configuration/SVSuite/data/runall.sh b/Configuration/SVSuite/data/runall.sh new file mode 100755 index 00000000000..54c4d172325 --- /dev/null +++ b/Configuration/SVSuite/data/runall.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# +#$Id: runall.sh,v 1.1 2006/11/22 17:40:35 lsexton Exp $ +# +#Dummy script to run all integration tests +# +# + +testsRecoEgamma=" +RecoEgamma_ele_E2000.cfg +RecoEgamma_ele_E50.cfg +RecoEgamma_ele_pt100.cfg +RecoEgamma_ele_pt10.cfg +RecoEgamma_ele_pt35.cfg +RecoEgamma_Hgg_120.cfg +RecoEgamma_HZZ4e_150.cfg +RecoEgamma_pho_E50.cfg +RecoEgamma_pho_pt35.cfg +RecoEgamma_pho_pt50.cfg +RecoEgamma_Zee.cfg +" + +testsRecoJets=" +RecoJets_Zprime700Dijets.cfg +" + +testsMET=" +RecoMET_Zjets_Dimuons_300-380.cfg +" + +testsTau=" +RecoTau_DiTaus_pt_20-420.cfg +" + +tests=`echo $testsRecoEgamma $testsRecoJets $testsMET $testsTau` + +report="" + +let nfail=0 +let npass=0 + +echo "Tests to be run : " $tests + +eval `scramv1 runtime -sh` + +for file in $tests +do + echo Preparing to run $file + let starttime=`date "+%s"` + cmsRun $file + let exitcode=$? + + let endtime=`date "+%s"` + let tottime=$endtime-$starttime; + + if [ $exitcode -ne 0 ] ;then + echo "cmsRun $file : FAILED - time: $tottime s - exit: $exitcode" + report="$report \n cmsRun $file : FAILED - time: $tottime s - exit: $exitcode" + let nfail+=1 + else + echo "cmsRun $file : PASSED - time: $tottime s" + report="$report \n cmsRun $file : PASSED - time: $tottime s" + let npass+=1 + fi +done + + +report="$report \n \n $npass tests passed, $nfail failed \n" + +echo -e "$report" +rm -f runall-report.log +echo -e "$report" >& runall-report.log diff --git a/Configuration/SiStripDAQ/doc/html/index.html b/Configuration/SiStripDAQ/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Configuration/SiStripDAQ/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Configuration/SiStripDAQ/doc/html/overview.html b/Configuration/SiStripDAQ/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Configuration/SiStripDAQ/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Configuration/Skimming/doc/html/index.html b/Configuration/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Configuration/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Configuration/Skimming/doc/html/overview.html b/Configuration/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Configuration/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Configuration/StandardSequences/doc/Reconstruction.doc b/Configuration/StandardSequences/doc/Sequences.doc similarity index 71% rename from Configuration/StandardSequences/doc/Reconstruction.doc rename to Configuration/StandardSequences/doc/Sequences.doc index 785b543df95..e206044b4c1 100644 --- a/Configuration/StandardSequences/doc/Reconstruction.doc +++ b/Configuration/StandardSequences/doc/Sequences.doc @@ -15,12 +15,28 @@ \section desc ConfigurationStandardSequences Package which contains the Standard Simulation and Reconstruction Sequences -\subsection files Configuration Fragment +\subsection files Configuration Fragments - \b Reconstruction.cff : Standard configuration fragment for Reconstruction - \b Simulation.cff : Standard configuration fragment for Simulation +\subsection additional Additional Files + +- \b Vertex includes: in order to allow an easy configuration of the Vertex Smearing, 4 Configuration Fragments are provided. The user is supposed to include one and only one among: + - VtxSmearedNoSmear.cff: disables vertex smearing. Actually, it smears, but by fractions of a micron. + - VtxSmearedGauss.cff: vertex smearing as in ORCA. On the transverse plane, 15 um gaussian smearing. Longitudinally (z), 5.3 cm gaussian smearing. This is the \b ADVICED option + - VtxSmearedFlat.cff: flat vertex smearing. On the transverse plane, 15 um flat smearing. Longitudinally (z), 5.3 cm flat smearing. + - VtxSmearedBeamProfile.cff: vertex smearing which resembles beam profile. + +- \b Mixing includes: three options are given to the user, who has to choose one and only one among: + - MixingNoPileUp.cff: no pile up at all. + - MixingLowLumiPileUp.cff: piles up 5.0 events on average (Poisson statistics), in bunches from -5 to +3. + - MixingHighLumiPileUp.cff: piles up 25.0 events on average (Poisson statistics), in bunches from -5 to +3. + \subsection seq Simulation Sequences + +(to be filled) + \subsection seq Reconstruction Sequences - \b reconstruction : this is the only default for CMSSW Reconstruction. Changes with time and is defined looking at the various needs wrt algorithms, space on disk, time available for reconstruction. At the moment, the standard \b reconstruction sequence is composed of (please note that at least the distinction between global/highlevel reconstruction does not really reflect functional aspects) diff --git a/DPGAnalysis/SiStripTools/doc/html/index.html b/DPGAnalysis/SiStripTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DPGAnalysis/SiStripTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DPGAnalysis/SiStripTools/doc/html/overview.html b/DPGAnalysis/SiStripTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DPGAnalysis/SiStripTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DPGAnalysis/Skims/doc/html/index.html b/DPGAnalysis/Skims/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DPGAnalysis/Skims/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DPGAnalysis/Skims/doc/html/overview.html b/DPGAnalysis/Skims/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DPGAnalysis/Skims/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/BeamMonitor/doc/html/index.html b/DQM/BeamMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/BeamMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/BeamMonitor/doc/html/overview.html b/DQM/BeamMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/BeamMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc b/DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc index 0ea0a2c4610..a0c3c85dadb 100644 --- a/DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc +++ b/DQM/CSCMonitorModule/src/CSCCFEBMonitor.cc @@ -1,8 +1,8 @@ /** \file * * implementation of CSCMonitor::MonitorCFEB(...) method - * $Date: 2006/02/10 10:30:55 $ - * $Revision: 1.3 $ + * $Date: 2006/03/20 13:12:13 $ + * $Revision: 1.4 $ * * \author Ilaria Segoni */ @@ -29,7 +29,7 @@ void CSCMonitor::MonitorCFEB(std::vector<CSCEventData>::iterator data, int Chamb int NumberOfUnpackedCFEBs = 0; - int N_CFEBs=5, N_Samples=16, N_Layers = 6, N_Strips = 16; + const int N_CFEBs=5, N_Samples=16, N_Layers = 6, N_Strips = 16; int ADC = 0, OutOffRange, Threshold = 30; bool DebugCFEB = false; CSCCFEBData * cfebData[5]; diff --git a/DQM/CSCMonitorModule/src/CSCStripCluster.cc b/DQM/CSCMonitorModule/src/CSCStripCluster.cc index f1cf6beaabe..e1c04c6f57a 100644 --- a/DQM/CSCMonitorModule/src/CSCStripCluster.cc +++ b/DQM/CSCMonitorModule/src/CSCStripCluster.cc @@ -1,4 +1,4 @@ #include "DQM/CSCMonitorModule/interface/CSCStripCluster.h" - CSCStripCluster::CSCStripCluster(){}; - CSCStripCluster::~CSCStripCluster(){}; + CSCStripCluster::CSCStripCluster(){} + CSCStripCluster::~CSCStripCluster(){} diff --git a/DQM/CSCMonitorModule/src/CSCStripClusterFitData.cc b/DQM/CSCMonitorModule/src/CSCStripClusterFitData.cc index 5ceb1a7d1ac..69dfcd502f2 100644 --- a/DQM/CSCMonitorModule/src/CSCStripClusterFitData.cc +++ b/DQM/CSCMonitorModule/src/CSCStripClusterFitData.cc @@ -2,5 +2,5 @@ //#include "CSCStripCluster.h" //#include "ClusterLocalMax.h" - CSCStripClusterFitData::CSCStripClusterFitData(){}; - CSCStripClusterFitData::~CSCStripClusterFitData(){}; + CSCStripClusterFitData::CSCStripClusterFitData(){} + CSCStripClusterFitData::~CSCStripClusterFitData(){} diff --git a/DQM/CSCMonitorModule/src/ClusterLocalMax.cc b/DQM/CSCMonitorModule/src/ClusterLocalMax.cc index 58ef7648057..d54e9be5af8 100644 --- a/DQM/CSCMonitorModule/src/ClusterLocalMax.cc +++ b/DQM/CSCMonitorModule/src/ClusterLocalMax.cc @@ -1,4 +1,4 @@ #include "DQM/CSCMonitorModule/interface/ClusterLocalMax.h" - ClusterLocalMax::ClusterLocalMax(){}; - ClusterLocalMax::~ClusterLocalMax(){}; + ClusterLocalMax::ClusterLocalMax(){} + ClusterLocalMax::~ClusterLocalMax(){} diff --git a/DQM/CastorMonitor/doc/html/index.html b/DQM/CastorMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/CastorMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/CastorMonitor/doc/html/overview.html b/DQM/CastorMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/CastorMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/DTMonitorClient/BuildFile b/DQM/DTMonitorClient/BuildFile deleted file mode 100644 index 22371c62d97..00000000000 --- a/DQM/DTMonitorClient/BuildFile +++ /dev/null @@ -1,34 +0,0 @@ -<use name=boost> -<use name=root> -<use name=DQMServices/Core> -<use name=DQMServices/NodeROOT> -<use name=DQMServices/Daemon> -<use name=DQMServices/UI> -<use name=DQMServices/Components> -<use name=DQMServices/WebComponents> -<use name=DQMServices/ClientConfig> -<use name=Geometry/DTGeometry> -<use name=xdaq> -<lib name=xgi> -<lib name=xdata> -<lib name=cgicc> -<lib name=log4cplus> -<lib name=xcept> -<lib name=udpappender> -<lib name=peer> -<lib name=mimetic> -<lib name=xmlappender> -<export> - <lib name=DQMDTMonitorClient> - <use name=root> - <use name=boost> - <use name=DQMServices/Core> - <use name=DQMServices/NodeROOT> - <use name=DQMServices/Daemon> - <use name=DQMServices/UI> - <use name=DQMServices/Components> - <use name=DQMServices/WebComponents> - <use name=DQMServices/ClientConfig> - <use name=xdaq> -</export> - diff --git a/DQM/DTMonitorClient/doc/html/index.html b/DQM/DTMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/DTMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/DTMonitorClient/doc/html/overview.html b/DQM/DTMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/DTMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/DTMonitorClient/interface/DTDQMClient.h b/DQM/DTMonitorClient/interface/DTDQMClient.h deleted file mode 100644 index 02036a50dfb..00000000000 --- a/DQM/DTMonitorClient/interface/DTDQMClient.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef DTDQMClient_H -#define DTDQMClient_H - -/** \class DTDQMClient - * * - * State machine DQM Client for DTs. Owns a web interface. - * - * $Date: 2006/05/08 12:26:41 $ - * $Revision: 1.3 $ - * \author Marco Zanetti from Ilaria Segoni example - * - */ - - -#include "DQMServices/Components/interface/DQMBaseClient.h" -#include "DQMServices/Components/interface/Updater.h" -#include "DQMServices/Components/interface/UpdateObserver.h" - -#include "DQMServices/Core/interface/MonitorUserInterface.h" - -#include "DQM/DTMonitorClient/interface/DTWebInterface.h" - -#include <vector> -#include <string> -#include <iostream> -#include <fstream> - -class SubscriptionHandle; -class QTestHandle; -class DTNoiseClient; - -class DTDQMClient : public DQMBaseClient, - public dqm::UpdateObserver -{ -public: - - /// You always need to have this line! Do not remove: - XDAQ_INSTANTIATOR(); - - ///Constructor: - DTDQMClient(xdaq::ApplicationStub *s); - - /// Override DQMBaseClient::general, which outputs the web interface page: - void general(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception); - - /// Handles all HTTP requests - void handleWebRequest(xgi::Input * in, xgi::Output * out); - - /// this obligatory method is called whenever the client enters the "Configured" state: - void configure(); - - /// this obligatory method is called whenever the client enters the "Enabled" state: - void newRun(); - - /// this obligatory method is called whenever the client enters the "Halted" state: - void endRun(); - - // this obligatory method is called by the Updater component, whenever there is an update - void onUpdate() const; - - -private: - - void checkGolbalQTStatus() const; - void checkDetailedQTStatus() const; - - /// DTDQMClient has a web interface: - DTWebInterface * webInterface_p; - - SubscriptionHandle *subscriber; - QTestHandle * qtHandler; - - DTNoiseClient * noiseClient; - - bool qtestsConfigured; - bool meListConfigured; - - mutable std::ofstream logFile; - mutable unsigned int QTFailed; - mutable unsigned int QTCritical; - -}; - -// You always need to have this line! Do not remove: -XDAQ_INSTANTIATOR_IMPL(DTDQMClient) - -#endif diff --git a/DQM/DTMonitorClient/interface/DTNoiseClient.h b/DQM/DTMonitorClient/interface/DTNoiseClient.h deleted file mode 100644 index 59334e4aca0..00000000000 --- a/DQM/DTMonitorClient/interface/DTNoiseClient.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef DTNoiseClient_H -#define DTNoiseClient_H - -/** \class DTNoiseClient - * * - * DT DQM Client for Noise checks - * - * $Date: 2006/06/29 17:03:09 $ - * $Revision: 1.3 $ - * \author Marco Zanetti - * - */ - - - -#include "DQMServices/Core/interface/MonitorUserInterface.h" -#include "DQMServices/Core/interface/MonitorElement.h" - - -#include "TH2F.h" -#include "TCanvas.h" - -#include <vector> -#include <string> -#include <iostream> -#include <fstream> -#include <map> - -class DTLayerId; - -class DTNoiseClient { - -public: - - /// Constructor - DTNoiseClient(); - - /// Destructor - ~DTNoiseClient(); - - /// Book Histos - void bookHistos(const DTLayerId & dtLayer); - - /// Check the noise Status - void performCheck(MonitorUserInterface * mui); - - /// Draw the summary plots - void drawSummaryNoise(); - -private: - - MonitorUserInterface * mui; - - /// < DTLayerId, numberOfNoisyCh > - std::map<DTLayerId, int> noisyChannelsStatistics; - - /// < DTLayerId, average noise > - std::map<DTLayerId, float> noiseStatistics; - - TH2F summaryAverage_W2_Se10; - TH2F summaryAverage_W2_Se11; - TH2F summaryAverage_W1_Se10; - - TH2F summaryNoiseChs_W2_Se10; - TH2F summaryNoiseChs_W2_Se11; - TH2F summaryNoiseChs_W1_Se10; - - // histograms: < sector*10+W, Histogram > - std::map< int , MonitorElement* > noiseAverageHistos; - std::map< int , MonitorElement* > noiseChHistos; - -}; - -#endif diff --git a/DQM/DTMonitorClient/interface/DTWebInterface.h b/DQM/DTMonitorClient/interface/DTWebInterface.h deleted file mode 100644 index 23c0479ea07..00000000000 --- a/DQM/DTMonitorClient/interface/DTWebInterface.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef DTWebInterface_H -#define DTWebInterface_H - -/** \class DTWebInterface - * Class that creates the web interface to control the DTDQMClient - * - * $Date: 2006/04/24 09:57:38 $ - * $Revision: 1.1 $ - * \author Marco Zanetti from Ilaria Segoni example - */ - - -#include "DQMServices/WebComponents/interface/WebInterface.h" - -class DTWebInterface : public WebInterface { - -public: - - DTWebInterface(std::string theContextURL, std::string theApplicationURL, MonitorUserInterface ** _mui_p); - - /* - you need to implement this function if you have widgets that invoke custom-made - methods defined in your client - */ - void handleCustomRequest(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception); - - /* - An example custom-made method that we want to bind to a widget - */ - void checkQTGlobalStatus(xgi::Input * in, xgi::Output * out , bool start) throw (xgi::exception::Exception); - void checkQTDetailedStatus(xgi::Input * in, xgi::Output * out , bool start) throw (xgi::exception::Exception); - void checkNoiseStatus(xgi::Input * in, xgi::Output * out , bool start) throw (xgi::exception::Exception); - - bool globalQTStatusRequest(){return performCheckingQTGlobalStatus;} - bool detailedQTStatusRequest(){return performCheckingQTDetailedStatus;} - bool noiseStatus(){return performCheckingNoiseStatus;} - -private: - - bool performCheckingQTGlobalStatus; - bool performCheckingQTDetailedStatus; - - bool performCheckingNoiseStatus; -}; - -#endif diff --git a/DQM/DTMonitorClient/src/DTDQMClient.cc b/DQM/DTMonitorClient/src/DTDQMClient.cc deleted file mode 100644 index c4ab4a3ea70..00000000000 --- a/DQM/DTMonitorClient/src/DTDQMClient.cc +++ /dev/null @@ -1,128 +0,0 @@ -/** \file - * - * Implementation of DTDQMClient - * - * $Date: 2006/06/30 15:31:06 $ - * $Revision: 1.2 $ - * \author Ilaria Segoni - */ - - - -#include "DQM/DTMonitorClient/interface/DTDQMClient.h" -#include "DQM/DTMonitorClient/interface/DTNoiseClient.h" - -#include "DQMServices/ClientConfig/interface/SubscriptionHandle.h" -#include "DQMServices/ClientConfig/interface/QTestHandle.h" - - -DTDQMClient::DTDQMClient(xdaq::ApplicationStub *stub) - : DQMBaseClient( - stub, // the application stub - do not change - "test", // the name by which the collector identifies the client - "localhost",// the name of the computer hosting the collector - 9090 // the port at which the collector listens - ),QTFailed(0),QTCritical(0) -{ - webInterface_p = new DTWebInterface(getContextURL(),getApplicationURL(), & mui_); - - xgi::bind(this, &DTDQMClient::handleWebRequest, "Request"); - - logFile.open("DTDQMClient.log"); - qtestsConfigured=false; - meListConfigured=false; - - subscriber=new SubscriptionHandle; - qtHandler=new QTestHandle; - - noiseClient = new DTNoiseClient; -} - - - -void DTDQMClient::general(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception){ - webInterface_p->Default(in, out); -} - - - - -void DTDQMClient::handleWebRequest(xgi::Input * in, xgi::Output * out){ - webInterface_p->handleRequest(in, out); -} - - - -void DTDQMClient::configure(){ - - meListConfigured=false; - qtestsConfigured=false; - - //#ifdef DT_CLIENT_DEBUG - //logFile << "Configuring DTDQMClient" << std::endl; - //#endif - - if(!subscriber->getMEList("MESubscriptionList.xml")) meListConfigured=true; - if(!qtHandler->configureTests("QualityTests.xml",mui_)) qtestsConfigured=true; -} - -void DTDQMClient::newRun(){ - upd_->registerObserver(this); - - ///ME's subscription - if(meListConfigured) { - subscriber->makeSubscriptions(mui_); - }else{ - logFile << "Cannot subscribe to ME's, error occurred in configuration." << std::endl; - } - ///QT's enabling - if(qtestsConfigured){ - qtHandler->attachTests(mui_); - }else{ - logFile << "Cannot run quality tests, error occurred in configuration." << std::endl; - } - -} - -void DTDQMClient::endRun(){ - -} - -void DTDQMClient::onUpdate() const{ - - // put here the code that needs to be executed on every update: - std::vector<std::string> uplist; - mui_->getUpdatedContents(uplist); - - if(meListConfigured) subscriber->updateSubscriptions(mui_); - if(qtestsConfigured){ - - if (webInterface_p->globalQTStatusRequest()) qtHandler->checkGolbalQTStatus(mui_); - if (webInterface_p->detailedQTStatusRequest()) qtHandler->checkDetailedQTStatus(mui_); - - // My stuff - if (webInterface_p->noiseStatus()) { - - noiseClient->performCheck(mui_); - - } - - // saving the ME - if ( mui_->getNumUpdates()%100 == 0) mui_->save("Sources.root"); - - if (!webInterface_p->noiseStatus()) cout<<"[DTDQMClient]: I stopped the noiseCheck"<<endl; - - } - - - -} - - - - - - - - - diff --git a/DQM/DTMonitorClient/src/DTNoiseClient.cc b/DQM/DTMonitorClient/src/DTNoiseClient.cc deleted file mode 100644 index d10447d2f13..00000000000 --- a/DQM/DTMonitorClient/src/DTNoiseClient.cc +++ /dev/null @@ -1,269 +0,0 @@ -/* - * \file DTNoiseClient.cc - * - * $Date: 2006/06/30 15:31:06 $ - * $Revision: 1.4 $ - * \author M. Zanetti - INFN Padova - * - */ - -#include "DQM/DTMonitorClient/interface/DTNoiseClient.h" - -// DQM -#include "DQMServices/Core/interface/MonitorElement.h" -#include "DQMServices/QualityTests/interface/QCriterionRoot.h" -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" - -// Geometry -#include "DataFormats/MuonDetId/interface/DTWireId.h" - -// ROOT Staff -#include "TROOT.h" -#include "TCanvas.h" -#include "TText.h" -#include "TStyle.h" - -#include <iostream> -#include <stdio.h> -#include <string> -#include <sstream> - -using namespace edm; -using namespace std; - -DTNoiseClient::DTNoiseClient() { - - // dbe = edm::Service<DaqMonitorBEInterface>().operator->(); - - summaryAverage_W2_Se10 = TH2F("summaryAverage_W2_Se10","Average Noise YB2_Sector10",4,1,5,15,1,16); - summaryAverage_W2_Se11 = TH2F("summaryAverage_W2_Se11","Average Noise YB2_Sector11",4,1,5,15,1,16); - summaryAverage_W1_Se10 = TH2F("summaryAverage_W1_Se10","Average Noise YB1_Sector10",4,1,5,15,1,16); - - summaryNoiseChs_W2_Se10 = TH2F("summaryNoiseChs_W2_Se10","Noisy Channels YB2_Sector10",4,1,5,15,1,16); - summaryNoiseChs_W2_Se11 = TH2F("summaryNoiseChs_W2_Se11","Noisy Channels YB2_Sector11",4,1,5,15,1,16); - summaryNoiseChs_W1_Se10 = TH2F("summaryNoiseChs_W1_Se10","Noisy Channels YB1_Sector10",4,1,5,15,1,16); - -} - - -DTNoiseClient::~DTNoiseClient() { - - DaqMonitorBEInterface* dbe = mui->getBEInterface(); - dbe->save("NoiseSummary.root"); - -} - - -void DTNoiseClient::bookHistos(const DTLayerId& dtLayer) { - - stringstream wheel; wheel << dtLayer.wheel(); - stringstream sector; sector << dtLayer.sector(); - - DaqMonitorBEInterface* dbe = mui->getBEInterface(); - - dbe->setCurrentFolder("DT/DTDigiClient/Summary"); - - int code; - if ( dtLayer.sector() != 14 ) - code = dtLayer.sector()*10 + dtLayer.wheel(); - else code = 10 + dtLayer.wheel(); - - string histoName = "summaryAverage_W" + wheel.str() + "_Se" + sector.str(); - noiseAverageHistos[code] = dbe->book2D(histoName,histoName,4,1,5,15,1,16); - histoName = "summaryNoiseChs_W" + wheel.str() + "_Se" + sector.str(); - noiseChHistos[code] = dbe->book2D(histoName,histoName,4,1,5,15,1,16); - - -} - - -void DTNoiseClient::performCheck(MonitorUserInterface * mui_) { - - // Get the MonitorUserInterface - mui = mui_; - - /// FIXME: ES missing, no way to get the geometry - /// fake loop - for (int w=-2; w<=2; w++) { - stringstream wheel; wheel << w; - for (int st=1; st<=4; st++) { - stringstream station; station << st; - for (int se=1; se<=14; se++) { - stringstream sector; sector << se; - - /// WARNING: Pay attantion to the FU number!!! - string folder = "Collector/FU0/DT/DTDigiTask/Wheel" + wheel.str() + - "/Station" + station.str() + - "/Sector" + sector.str() + "/Occupancies/Noise/"; - - for (int sl=1; sl<=3; sl++) { - if (st==4 && sl==2) continue; - stringstream superLayer; superLayer << sl; - for (int l=1; l<=4; l++) { - stringstream layer; layer << sl; - - string histoName = folder + - + "OccupancyNoise_W" + wheel.str() - + "_St" + station.str() - + "_Sec" + sector.str() - + "_SL" + superLayer.str() - + "_L" + layer.str(); - - MonitorElement * noise = mui->get(histoName); - - if (noise) { - - // get the NoisyChannels report - string criterionName = "NoisyChannels"; // this as to be the same in QualityTests.xml - const QReport * theQReport = noise->getQReport(criterionName); - if(theQReport) { - - vector<dqm::me_util::Channel> badChannels = theQReport->getBadChannels(); - for (vector<dqm::me_util::Channel>::iterator ch_it = badChannels.begin(); - ch_it != badChannels.end(); ch_it++) { - - noisyChannelsStatistics[DTLayerId(w,st,se,sl,l)]++; - - } - } - - // noise average per layer - MonitorElementT<TNamed>* ob = dynamic_cast<MonitorElementT<TNamed>*>(noise); - if (ob) { - - TH1F * noiseT = dynamic_cast<TH1F*> (ob->operator->()); - if (noiseT) { - - float average=0; - for (int i = 1; i <= noiseT->GetNbinsX(); i++){ - average += noiseT->GetBinContent(i); - } - noiseStatistics[DTLayerId(w,st,se,sl,l)] = average/noiseT->GetNbinsX(); - } - } - - } - - } - } - } - } - } - - drawSummaryNoise(); - -} - - -void DTNoiseClient::drawSummaryNoise() { - - - - /// Filling - for (map<DTLayerId,float>::iterator ns_it = noiseStatistics.begin(); - ns_it != noiseStatistics.end(); ns_it++) { - - int code; - if ( ((*ns_it).first).sector() != 14 ) - code = ((*ns_it).first).sector()*10+((*ns_it).first).wheel(); - else code = 10 +((*ns_it).first).wheel(); - - if (noiseAverageHistos.find(code) != noiseAverageHistos.end() ) { - noiseAverageHistos.find(code)->second->Fill(((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - else { - bookHistos((*ns_it).first); - noiseAverageHistos.find(code)->second->Fill(((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - - - if ( ((*ns_it).first).superlayerId().chamberId().wheel() == 2 ) { - if ( ((*ns_it).first).sector() == 10 ||((*ns_it).first).sector() == 14 ) - summaryAverage_W2_Se10.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - - if ( ((*ns_it).first).sector() == 11 ) - summaryAverage_W2_Se11.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - - if ( ((*ns_it).first).superlayerId().chamberId().wheel() == 1 ) - summaryAverage_W1_Se10.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - - for (map<DTLayerId,int>::iterator ns_it = noisyChannelsStatistics.begin(); - ns_it != noisyChannelsStatistics.end(); ns_it++) { - - - int code; - if ( ((*ns_it).first).sector() != 14 ) - code = ((*ns_it).first).sector()*10+((*ns_it).first).wheel(); - else code = 10 +((*ns_it).first).wheel(); - - if (noiseChHistos.find(code) != noiseChHistos.end() ) { - noiseChHistos.find(code)->second->Fill(((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - else { - bookHistos((*ns_it).first); - noiseChHistos.find(code)->second->Fill(((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - - - - if ( ((*ns_it).first).superlayerId().chamberId().wheel() == 2 ) { - if ( ((*ns_it).first).sector() == 10 ||((*ns_it).first).sector() == 14 ) - summaryNoiseChs_W2_Se10.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - - if ( ((*ns_it).first).sector() == 11 ) - summaryNoiseChs_W2_Se11.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - } - - if ( ((*ns_it).first).superlayerId().chamberId().wheel() == 1 ) - summaryNoiseChs_W1_Se10.Fill( ((*ns_it).first).station() , - 5*( ((*ns_it).first).superLayer()-1) + ((*ns_it).first).layer(), - ((*ns_it).second)); - - } - - - /// Drawing - TCanvas noiseCanvas("noiseCanvas","noiseCanvas",50,0,1000,900); - noiseCanvas.SetFillColor(10); - noiseCanvas.Divide(3,2); - - gStyle->SetPalette(1); - noiseCanvas.cd(1); - summaryNoiseChs_W2_Se10.Draw("colz"); noiseCanvas.Update(); - noiseCanvas.cd(2); - summaryNoiseChs_W2_Se11.Draw("colz"); noiseCanvas.Update(); - noiseCanvas.cd(3); - summaryNoiseChs_W1_Se10.Draw("colz"); noiseCanvas.Update(); - - noiseCanvas.cd(4); - summaryAverage_W2_Se10.Draw("colz"); noiseCanvas.Update(); - noiseCanvas.cd(5); - summaryAverage_W2_Se11.Draw("colz"); noiseCanvas.Update(); - noiseCanvas.cd(6); - summaryAverage_W1_Se10.Draw("colz"); noiseCanvas.Update(); - - noiseCanvas.Draw(); - noiseCanvas.SaveAs("NoiseSummary.jpg"); - -} - diff --git a/DQM/DTMonitorClient/src/DTWebInterface.cc b/DQM/DTMonitorClient/src/DTWebInterface.cc deleted file mode 100644 index 6b67d3881da..00000000000 --- a/DQM/DTMonitorClient/src/DTWebInterface.cc +++ /dev/null @@ -1,105 +0,0 @@ -#include "DQM/DTMonitorClient/interface/DTWebInterface.h" - -#include "DQMServices/WebComponents/interface/Button.h" -#include "DQMServices/WebComponents/interface/CgiWriter.h" -#include "DQMServices/WebComponents/interface/CgiReader.h" -#include "DQMServices/WebComponents/interface/ConfigBox.h" -#include "DQMServices/WebComponents/interface/Navigator.h" -#include "DQMServices/WebComponents/interface/ContentViewer.h" -#include "DQMServices/WebComponents/interface/GifDisplay.h" - - -/* - Create your widgets in the constructor of your web interface -*/ -DTWebInterface::DTWebInterface(std::string theContextURL, std::string theApplicationURL, MonitorUserInterface ** _mui_p) - : WebInterface(theContextURL, theApplicationURL, _mui_p) { - - performCheckingQTGlobalStatus=false; - performCheckingQTDetailedStatus=false; - performCheckingNoiseStatus=false; - - Navigator * nav = new Navigator(getApplicationURL(), "50px", "10px"); - ContentViewer * cont = new ContentViewer(getApplicationURL(), "180px", "10px"); - - Button * butQTGlobal = new Button(getApplicationURL(), - "310px", "10px", "QTGlobalStatus", "Check QT Global Status"); - Button * butQTGlobalStop = new Button(getApplicationURL(), - "340px", "10px", "QTGlobalStatusStop", "Stop Checking QT Global Status"); - - Button * butQTDetailed = new Button(getApplicationURL(), - "390px", "10px", "QTDetailedStatus ", "Check QT Detailed Status"); - Button * butQTDetailedStop = new Button(getApplicationURL(), - "420px", "10px", "QTDetailedStatusStop", "Stop Checking QT Detailed Status"); - - - Button * butNoiseCheck = new Button(getApplicationURL(), - "470px", "10px", "NoiseCheck", "Check Noise"); - Button * butNoiseCheckStop = new Button(getApplicationURL(), - "500px", "10px", "NoiseCheckStop", "Stop Noise Checking"); - - - GifDisplay * dis = new GifDisplay(getApplicationURL(), - "50px","630px", "500px", "800px", "MyGifDisplay"); - GifDisplay * dis2 = new GifDisplay(getApplicationURL(), - "650px", "10px", "500px", "800px", "MyOtherGifDisplay"); - - page_p = new WebPage(getApplicationURL()); - - page_p->add("navigator", nav); - page_p->add("contentViewer", cont); - page_p->add("butQTGlobalCheck", butQTGlobal); - page_p->add("butQTDetailedCheck", butQTDetailed); - page_p->add("QTGlobalStatusStop", butQTGlobalStop); - page_p->add("QTDetailedStatusStop", butQTDetailedStop); - - page_p->add("NoiseCheck", butNoiseCheck); - page_p->add("NoiseCheckStop", butNoiseCheckStop); - - page_p->add("gifDisplay", dis); - page_p->add("otherGifDisplay", dis2); -} - -/* - Only implement the handleCustomRequest function if you have widgets that invoke - custom-made methods defined in your client. In this example we have created a - Button that makes custom requests, therefore we need to implement it. -*/ -void DTWebInterface::handleCustomRequest(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception) -{ - // this is the way to get the string that identifies the request: - std::multimap<std::string, std::string> request_multimap; - CgiReader reader(in); - reader.read_form(request_multimap); - std::string requestID = get_from_multimap(request_multimap, "RequestID"); - - // if you have more than one custom requests, add 'if' statements accordingly: - if (requestID == "QTGlobalStatus") checkQTGlobalStatus(in, out,true); - if (requestID == "QTDetailedStatus") checkQTDetailedStatus(in, out,true); - if (requestID == "QTGlobalStatusStop") checkQTGlobalStatus(in, out,false); - if (requestID == "QTDetailedStatusStop") checkQTDetailedStatus(in, out,false); - - if (requestID == "NoiseCheck") checkNoiseStatus(in, out,true); - if (requestID == "NoiseCheckStop") checkNoiseStatus(in, out,false); - -} - - -void DTWebInterface::checkQTGlobalStatus(xgi::Input * in, xgi::Output * out, bool start ) - throw (xgi::exception::Exception) -{ - performCheckingQTGlobalStatus=start; -} - -void DTWebInterface::checkQTDetailedStatus(xgi::Input * in, xgi::Output * out, bool start ) - throw (xgi::exception::Exception) -{ - performCheckingQTDetailedStatus=start; -} - - -void DTWebInterface::checkNoiseStatus(xgi::Input * in, xgi::Output * out, bool start ) - throw (xgi::exception::Exception) -{ - performCheckingNoiseStatus=start; -} diff --git a/DQM/DTMonitorClient/test/QualityTests.xml b/DQM/DTMonitorClient/test/QualityTests.xml deleted file mode 100644 index 7e8e4276966..00000000000 --- a/DQM/DTMonitorClient/test/QualityTests.xml +++ /dev/null @@ -1,17 +0,0 @@ -<TESTSCONFIGURATION> - -<QTEST name="NoisyChannels"> - <TYPE>NoisyChannelROOT</TYPE> - <PARAM name="error">0.80</PARAM> - <PARAM name="warning">0.70</PARAM> - <PARAM name="tolerance">1</PARAM> - <PARAM name="neighbours">3</PARAM> -</QTEST> - - -<LINK name="*OccupancyNoise*"> - <TestName activate="true">NoisyChannels</TestName> -</LINK> - - -</TESTSCONFIGURATION> diff --git a/DQM/EcalBarrelMonitorClient/interface/EcalBarrelMonitorClient.h b/DQM/EcalBarrelMonitorClient/interface/EcalBarrelMonitorClient.h index e2b7870c077..e6d4f326050 100644 --- a/DQM/EcalBarrelMonitorClient/interface/EcalBarrelMonitorClient.h +++ b/DQM/EcalBarrelMonitorClient/interface/EcalBarrelMonitorClient.h @@ -4,8 +4,8 @@ /* * \file EcalBarrelMonitorClient.h * - * $Date: 2006/11/11 13:14:36 $ - * $Revision: 1.59 $ + * $Date: 2006/09/14 10:49:22 $ + * $Revision: 1.57 $ * \author G. Della Ricca * \author F. Cossutti * @@ -133,7 +133,6 @@ int hostPort_; bool enableServer_; int serverPort_; -string inputFile_; string outputFile_; string dbName_; @@ -141,8 +140,6 @@ string dbHostName_; int dbHostPort_; string dbUserName_; string dbPassword_; - -string maskFile_; RunIOV runiov_; MonRunIOV moniov_; diff --git a/DQM/EcalBarrelMonitorClient/src/EBBeamCaloClient.cc b/DQM/EcalBarrelMonitorClient/src/EBBeamCaloClient.cc index 1b995bce01d..ffc3bc2a9de 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBBeamCaloClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBBeamCaloClient.cc @@ -1,8 +1,8 @@ /* * \file EBBeamCaloClient.cc * - * $Date: 2006/10/18 16:57:52 $ - * $Revision: 1.30 $ + * $Date: 2006/09/28 13:27:32 $ + * $Revision: 1.29 $ * \author G. Della Ricca * \author A. Ghezzi * @@ -839,7 +839,7 @@ void EBBeamCaloClient::htmlOutput(int run, string htmlDir, string htmlName){ const int csize = 250; // const double histMax = 1.e15; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; TH2C dummy( "dummy", "dummy for sm", 85, 0., 85., 20, 0., 20. ); for ( int i = 0; i < 68; i++ ) { @@ -904,7 +904,7 @@ void EBBeamCaloClient::htmlOutput(int run, string htmlDir, string htmlName){ can->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); can->SetGridx(); @@ -939,7 +939,7 @@ void EBBeamCaloClient::htmlOutput(int run, string htmlDir, string htmlName){ can->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(0); obj2f->GetYaxis()->SetNdivisions(0); obj2f->SetMinimum(-0.00000001); @@ -978,7 +978,7 @@ void EBBeamCaloClient::htmlOutput(int run, string htmlDir, string htmlName){ can->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(86); obj2f->GetYaxis()->SetNdivisions(0); //obj2f->SetTitle(""); diff --git a/DQM/EcalBarrelMonitorClient/src/EBIntegrityClient.cc b/DQM/EcalBarrelMonitorClient/src/EBIntegrityClient.cc index 7ab70fd3521..6e1a6c5bf37 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBIntegrityClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBIntegrityClient.cc @@ -2,8 +2,8 @@ /* * \file EBIntegrityClient.cc * - * $Date: 2006/10/18 16:57:52 $ - * $Revision: 1.110 $ + * $Date: 2006/08/03 19:41:25 $ + * $Revision: 1.109 $ * \author G. Della Ricca * \author G. Franzoni * @@ -672,6 +672,7 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } c1.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -684,8 +685,6 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -755,6 +754,7 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } c2.setTaskStatus(val); + status = status && val; int itt = (ipt-1) + 4*(iet-1) + 1; @@ -767,8 +767,6 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -830,6 +828,7 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } c3. setTaskStatus(val); + status = status && val; int ic = EBIntegrityClient::chNum[ (ie-1)%5 ][ (ip-1) ] + (ie-1)/5 * 25; @@ -842,8 +841,6 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -912,6 +909,7 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } c4.setTaskStatus(val); + status = status && val; int itt = 68 + iet; @@ -924,8 +922,6 @@ bool EBIntegrityClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -1602,7 +1598,7 @@ void EBIntegrityClient::htmlOutput(int run, string htmlDir, string htmlName){ const int csize = 250; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; int pCol4[10]; for ( int i = 0; i < 10; i++ ) pCol4[i] = 30+i; @@ -1720,7 +1716,7 @@ void EBIntegrityClient::htmlOutput(int run, string htmlDir, string htmlName){ cQual->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); cQual->SetGridx(); @@ -1850,7 +1846,7 @@ void EBIntegrityClient::htmlOutput(int run, string htmlDir, string htmlName){ cMeMem->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(10); obj2f->GetYaxis()->SetNdivisions(5); cMeMem->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EBLaserClient.cc b/DQM/EcalBarrelMonitorClient/src/EBLaserClient.cc index c68ea2a0f6f..c71e7da9b1e 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBLaserClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBLaserClient.cc @@ -1,8 +1,8 @@ /* * \file EBLaserClient.cc * - * $Date: 2006/11/11 08:09:15 $ - * $Revision: 1.90 $ + * $Date: 2006/10/18 16:57:52 $ + * $Revision: 1.89 $ * \author G. Della Ricca * */ @@ -695,6 +695,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } apd_bl.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -707,8 +708,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel2 ) { @@ -735,6 +734,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } apd_ir.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -747,8 +747,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel3 ) { @@ -775,6 +773,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } apd_gr.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -787,8 +786,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel4 ) { @@ -815,6 +812,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } apd_rd.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -827,8 +825,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } } @@ -1057,6 +1053,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } pn_bl.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -1067,8 +1064,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel2 ) { @@ -1102,6 +1097,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } pn_ir.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -1112,8 +1108,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel3 ) { @@ -1147,6 +1141,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } pn_gr.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -1157,8 +1152,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } if ( update_channel4 ) { @@ -1192,6 +1185,7 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i val = false; } pn_rd.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -1202,8 +1196,6 @@ bool EBLaserClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, int i } } - status = status && val; - } } @@ -2350,7 +2342,7 @@ void EBLaserClient::htmlOutput(int run, string htmlDir, string htmlName){ const double histMax = 1.e15; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; TH2C dummy( "dummy", "dummy for sm", 85, 0., 85., 20, 0., 20. ); for ( int i = 0; i < 68; i++ ) { @@ -2423,7 +2415,7 @@ void EBLaserClient::htmlOutput(int run, string htmlDir, string htmlName){ cQual->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); cQual->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EBPedestalClient.cc b/DQM/EcalBarrelMonitorClient/src/EBPedestalClient.cc index d880ca541d0..7c7e1a46f9e 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBPedestalClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBPedestalClient.cc @@ -1,8 +1,8 @@ /* * \file EBPedestalClient.cc * - * $Date: 2006/11/11 08:09:15 $ - * $Revision: 1.91 $ + * $Date: 2006/10/18 16:57:52 $ + * $Revision: 1.90 $ * \author G. Della Ricca * \author F. Cossutti * @@ -564,6 +564,7 @@ bool EBPedestalClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, in val = false; } p.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -576,8 +577,6 @@ bool EBPedestalClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, in } } - status = status && val; - } } @@ -654,6 +653,7 @@ bool EBPedestalClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, in val = false; } pn.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -664,8 +664,6 @@ bool EBPedestalClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, in } } - status = status && val; - } } @@ -1369,7 +1367,7 @@ void EBPedestalClient::htmlOutput(int run, string htmlDir, string htmlName){ const double histMax = 1.e15; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; int pCol4[10]; for ( int i = 0; i < 10; i++ ) pCol4[i] = 30+i; @@ -1439,7 +1437,7 @@ void EBPedestalClient::htmlOutput(int run, string htmlDir, string htmlName){ cQual->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); cQual->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EBPedestalOnlineClient.cc b/DQM/EcalBarrelMonitorClient/src/EBPedestalOnlineClient.cc index f3ea2ec7e1a..902fc459be2 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBPedestalOnlineClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBPedestalOnlineClient.cc @@ -1,8 +1,8 @@ /* * \file EBPedestalOnlineClient.cc * - * $Date: 2006/11/11 08:09:15 $ - * $Revision: 1.44 $ + * $Date: 2006/10/18 16:57:52 $ + * $Revision: 1.43 $ * \author G. Della Ricca * \author F. Cossutti * @@ -318,6 +318,7 @@ bool EBPedestalOnlineClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moni val = false; } p.setTaskStatus(val); + status = status && val; int ic = (ip-1) + 20*(ie-1) + 1; @@ -330,8 +331,6 @@ bool EBPedestalOnlineClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moni } } - status = status && val; - } } @@ -581,7 +580,7 @@ void EBPedestalOnlineClient::htmlOutput(int run, string htmlDir, string htmlName const double histMax = 1.e15; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; TH2C dummy( "dummy", "dummy for sm", 85, 0., 85., 20, 0., 20. ); for ( int i = 0; i < 68; i++ ) { @@ -627,7 +626,7 @@ void EBPedestalOnlineClient::htmlOutput(int run, string htmlDir, string htmlName cQual->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); cQual->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EBTestPulseClient.cc b/DQM/EcalBarrelMonitorClient/src/EBTestPulseClient.cc index dafe66cccc4..3977b043be3 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBTestPulseClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBTestPulseClient.cc @@ -1,8 +1,8 @@ /* * \file EBTestPulseClient.cc * - * $Date: 2006/10/18 16:57:52 $ - * $Revision: 1.90 $ + * $Date: 2006/08/03 19:41:25 $ + * $Revision: 1.89 $ * \author G. Della Ricca * \author F. Cossutti * @@ -481,6 +481,7 @@ bool EBTestPulseClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } adc.setTaskStatus(val); + status = status && val; if ( ie == 1 && ip == 1 ) { @@ -544,8 +545,6 @@ bool EBTestPulseClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -650,6 +649,7 @@ bool EBTestPulseClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i val = false; } pn.setTaskStatus(val); + status = status && val; if ( econn ) { try { @@ -660,8 +660,6 @@ bool EBTestPulseClient::writeDb(EcalCondDBInterface* econn, MonRunIOV* moniov, i } } - status = status && val; - } } @@ -1257,7 +1255,7 @@ void EBTestPulseClient::htmlOutput(int run, string htmlDir, string htmlName){ const double histMax = 1.e15; - int pCol3[4] = { 2, 3, 5, 1 }; + int pCol3[3] = { 2, 3, 5 }; TH2C dummy( "dummy", "dummy for sm", 85, 0., 85., 20, 0., 20. ); for ( int i = 0; i < 68; i++ ) { @@ -1322,7 +1320,7 @@ void EBTestPulseClient::htmlOutput(int run, string htmlDir, string htmlName){ cQual->cd(); gStyle->SetOptStat(" "); - gStyle->SetPalette(4, pCol3); + gStyle->SetPalette(3, pCol3); obj2f->GetXaxis()->SetNdivisions(17); obj2f->GetYaxis()->SetNdivisions(4); cQual->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EBTriggerTowerClient.cc b/DQM/EcalBarrelMonitorClient/src/EBTriggerTowerClient.cc index a8b82453de1..343e151096a 100644 --- a/DQM/EcalBarrelMonitorClient/src/EBTriggerTowerClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EBTriggerTowerClient.cc @@ -1,8 +1,8 @@ /* * \file EBTriggerTowerClient.cc * - * $Date: 2006/10/18 16:57:52 $ - * $Revision: 1.16 $ + * $Date: 2006/10/02 12:57:52 $ + * $Revision: 1.15 $ * \author G. Della Ricca * \author F. Cossutti * @@ -498,7 +498,7 @@ void EBTriggerTowerClient::htmlOutput(int run, string htmlDir, string htmlName){ //const double histMax = 1.e15; - //int pCol3[4] = { 2, 3, 5, 1 }; + //int pCol3[3] = { 2, 3, 5 }; TH2C dummy( "dummy", "dummy for sm", 17, 0., 17., 4, 0., 4. ); for ( int i = 0; i < 68; i++ ) { @@ -538,7 +538,7 @@ void EBTriggerTowerClient::htmlOutput(int run, string htmlDir, string htmlName){ // imgFullName = htmlDir + imgName; // rectangle->cd(); // gStyle->SetOptStat(" "); -// gStyle->SetPalette(4, pCol3); +// gStyle->SetPalette(3, pCol3); // obj2f->GetXaxis()->SetNdivisions(17); // obj2f->GetYaxis()->SetNdivisions(4); // rectangle->SetGridx(); diff --git a/DQM/EcalBarrelMonitorClient/src/EcalBarrelMonitorClient.cc b/DQM/EcalBarrelMonitorClient/src/EcalBarrelMonitorClient.cc index da15b83cfe1..5da438095ae 100644 --- a/DQM/EcalBarrelMonitorClient/src/EcalBarrelMonitorClient.cc +++ b/DQM/EcalBarrelMonitorClient/src/EcalBarrelMonitorClient.cc @@ -1,8 +1,8 @@ /* * \file EcalBarrelMonitorClient.cc * - * $Date: 2006/11/19 09:49:06 $ - * $Revision: 1.186 $ + * $Date: 2006/11/05 10:00:45 $ + * $Revision: 1.183 $ * \author G. Della Ricca * \author F. Cossutti * @@ -99,22 +99,10 @@ void EcalBarrelMonitorClient::initialize(const ParameterSet& ps){ unknowns_ = 0; - // DQM ROOT input - - inputFile_ = ps.getUntrackedParameter<string>("inputFile", ""); - - if ( inputFile_.size() != 0 ) { - cout << " Reading DQM from inputFile = '" << inputFile_ << "'" << endl; - } - // DQM ROOT output outputFile_ = ps.getUntrackedParameter<string>("outputFile", ""); - if ( outputFile_.size() != 0 ) { - cout << " Writing DQM to outputFile = '" << outputFile_ << "'" << endl; - } - // Ecal Cond DB dbName_ = ps.getUntrackedParameter<string>("dbName", ""); @@ -124,29 +112,15 @@ void EcalBarrelMonitorClient::initialize(const ParameterSet& ps){ dbPassword_ = ps.getUntrackedParameter<string>("dbPassword", ""); if ( dbName_.size() != 0 ) { - cout << " Using Ecal Cond DB, " + cout << " DB output will go to" << " dbName = '" << dbName_ << "'" << " dbHostName = '" << dbHostName_ << "'" << " dbHostPort = '" << dbHostPort_ << "'" << " dbUserName = '" << dbUserName_ << "'" << endl; } else { - cout << " Ecal Cond DB is not enabled" << endl; - } - - // Mask file - - if ( dbName_.size() == 0 ) { - - maskFile_ = ps.getUntrackedParameter<string>("maskFile", ""); - - if ( maskFile_.size() != 0 ) { - cout << " Using maskFile = '" << maskFile_ << "'" << endl; - } - + cout << " DB output is disabled" << endl; } - // enableSubRun switch - enableSubRun_ = ps.getUntrackedParameter<bool>("enableSubRun", false); // location @@ -161,7 +135,7 @@ void EcalBarrelMonitorClient::initialize(const ParameterSet& ps){ cout << " HTML output will go to" << " baseHtmlDir = '" << baseHtmlDir_ << "'" << endl; } else { - cout << " HTML output is not enabled" << endl; + cout << " HTML output is disabled" << endl; } // collateSources switch @@ -389,12 +363,10 @@ void EcalBarrelMonitorClient::initialize(const ParameterSet& ps){ chb_.insert( EBCIMMap::value_type( clients_.back(), EcalDCCHeaderBlock::BEAMH2 )); } -#if 0 clients_.push_back( new EBClusterClient(ps) ); clientNames_.push_back( "Cluster" ); chb_.insert( EBCIMMap::value_type( clients_.back(), EcalDCCHeaderBlock::BEAMH4 )); chb_.insert( EBCIMMap::value_type( clients_.back(), EcalDCCHeaderBlock::BEAMH2 )); -#endif cout << endl; @@ -446,15 +418,6 @@ void EcalBarrelMonitorClient::beginJob(void){ mui_->setVerbose(0); } - if ( ! enableStateMachine_ ) { - if ( ! enableMonitorDaemon_ ) { - if ( inputFile_.size() != 0 ) { - DaqMonitorBEInterface* dbe = mui_->getBEInterface(); - dbe->open(inputFile_); - } - } - } - mui_->setMaxAttempts2Reconnect(99999); for ( unsigned int i=0; i<clients_.size(); i++ ) { @@ -1032,15 +995,6 @@ void EcalBarrelMonitorClient::analyze(void){ if ( verbose_ ) cout << "Found '" << histo << "'" << endl; } - if ( inputFile_.size() != 0 ) { - if ( ievt_ == 1 ) { - cout << endl; - cout << " Reading DQM from file, forcing 'begin-of-run'" << endl; - cout << endl; - status_ = "begin-of-run"; - } - } - sprintf(histo, (prefixME_+"EcalBarrel/EcalInfo/RUN").c_str()); me = mui_->get(histo); if ( me ) { @@ -1176,7 +1130,7 @@ void EcalBarrelMonitorClient::analyze(void){ } } - + } if ( status_ == "end-of-run" ) { @@ -1191,7 +1145,7 @@ void EcalBarrelMonitorClient::analyze(void){ } - // BEGIN: run-time fixes for missing state transitions + // BEGIN: run-time fixes for missing state trasitions if ( status_ == "unknown" ) { @@ -1249,13 +1203,12 @@ void EcalBarrelMonitorClient::analyze(void){ } - // END: run-time fixes for missing state transitions + // END: run-time fixes for missing state trasitions } void EcalBarrelMonitorClient::htmlOutput(void){ - cout << endl; cout << "Preparing EcalBarrelMonitorClient html output ..." << endl; char tmp[10]; diff --git a/DQM/EcalBarrelMonitorDbModule/BuildFile b/DQM/EcalBarrelMonitorDbModule/BuildFile index db777adb40b..20f13ea224f 100644 --- a/DQM/EcalBarrelMonitorDbModule/BuildFile +++ b/DQM/EcalBarrelMonitorDbModule/BuildFile @@ -1,7 +1,7 @@ <flags SEAL_PLUGIN_NAME="DQMEcalBarrelMonitorDbModule"> <use name=FWCore/Framework> <use name=DQMServices/CoreROOT> -<use name=CORALRelationalAccess> +<use name=RelationalAccess> <use name=boost> <use name=root> <use name=coral> @@ -11,7 +11,7 @@ <lib name=DQMEcalBarrelMonitorDbModule> <use name=FWCore/Framework> <use name=DQMServices/CoreROOT> - <use name=CORALRelationalAccess> + <use name=RelationalAccess> <use name=boost> <use name=root> <use name=coral> diff --git a/DQM/EcalBarrelMonitorDbModule/src/MonitorElementsDb.cc b/DQM/EcalBarrelMonitorDbModule/src/MonitorElementsDb.cc index 6b2dbb27842..f3b74b1a968 100644 --- a/DQM/EcalBarrelMonitorDbModule/src/MonitorElementsDb.cc +++ b/DQM/EcalBarrelMonitorDbModule/src/MonitorElementsDb.cc @@ -1,11 +1,11 @@ -// $Id: MonitorElementsDb.cc,v 1.4 2006/10/16 17:33:17 dellaric Exp $ +// $Id: MonitorElementsDb.cc,v 1.1 2006/06/28 10:46:18 benigno Exp $ /*! \file MonitorElementsDb.cc \brief Generate a Monitor Element from DB data \author B. Gobbo - \version $Revision: 1.4 $ - \date $Date: 2006/10/16 17:33:17 $ + \version $Revision: 1.1 $ + \date $Date: 2006/06/28 10:46:18 $ */ #include "FWCore/ServiceRegistry/interface/Service.h" @@ -137,9 +137,6 @@ void MonitorElementsDb::analyze( const edm::Event& e, const edm::EventSetup& c, if( MEs_[i] != 0 && ( ievt_ % MEinfo_[i].ncycle ) == 0 ) { - MonitorElementT<TNamed>* ob = dynamic_cast<MonitorElementT<TNamed>*>( const_cast<MonitorElement*>(MEs_[i]) ); - if( ob ) ob->Reset(); - vars.clear(); try { @@ -264,7 +261,7 @@ void MonitorElementsDb::htmlOutput(std::string htmlDir){ } else if( dynamic_cast<TH2F*>( ob->operator->()) ) { TH2F* h = dynamic_cast<TH2F*>( ob->operator->() ); - if( h->GetMaximum(histMax) > 1.e4 ) { + if( h->GetMaximum(histMax) > 0. ) { gPad->SetLogz(1); } else { gPad->SetLogz(0); @@ -273,7 +270,7 @@ void MonitorElementsDb::htmlOutput(std::string htmlDir){ } else if( dynamic_cast<TProfile*>( ob->operator->()) ) { TProfile* h = dynamic_cast<TProfile*>( ob->operator->() ); - if( h->GetMaximum(histMax) > 1.e4 ) { + if( h->GetMaximum(histMax) > 0. ) { gPad->SetLogz(1); } else { gPad->SetLogz(0); diff --git a/DQM/EcalBarrelMonitorDbModule/test/data/tb-occupancy.xml b/DQM/EcalBarrelMonitorDbModule/test/data/tb-occupancy.xml index f91a3259542..a04fb600299 100644 --- a/DQM/EcalBarrelMonitorDbModule/test/data/tb-occupancy.xml +++ b/DQM/EcalBarrelMonitorDbModule/test/data/tb-occupancy.xml @@ -5,7 +5,7 @@ xsi:noNamespaceSchemaLocation="prova.xsd"> <me> - <th2d title="Occupancy Crystal in Beam SM06-November" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM25" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -14,15 +14,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 17057 and 17975 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15487 and 99999 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM06-November" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM25" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -31,15 +31,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 17057 and 17975 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15487 and 99999 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM06-October" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM13" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -48,83 +48,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15816 and 17056 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Occupancy Crystal with Max Energy SM06-October" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15816 and 17056 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Occupancy Crystal in Beam SM25" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15487 and 15815 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Occupancy Crystal with Max Energy SM25" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15487 and 15815 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Occupancy Crystal in Beam SM13" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15231 and 15486 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM13" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM13" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -133,15 +65,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 15231 and 15486 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM12" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM12" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -150,15 +82,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 14807 and 15230 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM12" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM12" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -167,15 +99,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 14807 and 15230 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM24" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM24" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -184,15 +116,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 14433 and 14806 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM24" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM24" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -201,15 +133,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 14433 and 14806 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM22-September" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM22-August" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -218,15 +150,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13919 and 14432 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 11392 and 12624 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM22-September" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM22-August" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -235,15 +167,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13919 and 14432 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 11392 and 12624 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM22-August" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM22-September" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -252,15 +184,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 11392 and 12624 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13919 and 14432 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM22-August" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM22-September" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -269,15 +201,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 11392 and 12624 group by CHANNELVIEW.ID2" /> + <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13919 and 14432 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM18" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM18" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -286,15 +218,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 12626 and 13028 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM18" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM18" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -303,15 +235,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 12626 and 13028 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM16" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM16" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -320,15 +252,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13038 and 13510 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM16" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM16" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -337,15 +269,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13038 and 13510 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal in Beam SM17" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal in Beam SM17" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -354,15 +286,15 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13522 and 13918 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> <me> - <th2d title="Occupancy Crystal with Max Energy SM17" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> + <th2d title="Occupancy Crystal with Max Energy SM17" xbins="85" xfrom="-0.5" xto="84.5" ybins="20" yfrom="-0.5" yto="19.5" ncycle="1" loop="1700"/> <query name="addToTableList" arg="CHANNELVIEW" /> <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> <query name="addToTableList" arg="RUN_IOV" /> @@ -371,45 +303,11 @@ <query name="addToTableList" arg="RUN_TYPE_DEF" /> <query name="addToTableList" arg="MON_RUN_IOV" /> <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> + <query name="addToOutputList" arg="cast( floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> + <query name="addToOutputList" arg="cast( mod((CHANNELVIEW.ID2-1) , 20 ) as float)" alias="Y" /> <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H4B' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 13522 and 13918 group by CHANNELVIEW.ID2" /> <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> </me> - <me> - <th2d title="Occupancy Crystal in Beam SM09" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_HIGH_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H2' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 1 and 99999 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Occupancy Crystal with Max Energy SM09" xbins="85" xfrom="0." xto="85." ybins="20" yfrom="0." yto="20." ncycle="1" loop="1700"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="MON_OCCUPANCY_DAT" /> - <query name="addToTableList" arg="RUN_IOV" /> - <query name="addToTableList" arg="LOCATION_DEF" /> - <query name="addToTableList" arg="RUN_TAG" /> - <query name="addToTableList" arg="RUN_TYPE_DEF" /> - <query name="addToTableList" arg="MON_RUN_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 20) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 20) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( sum(MON_OCCUPANCY_DAT.EVENTS_OVER_LOW_THRESHOLD) as float )" alias="Z" /> - <query name="setCondition" arg="RUN_TAG.TAG_ID = RUN_IOV.TAG_ID and LOCATION_DEF.DEF_ID = RUN_TAG.LOCATION_ID and MON_RUN_IOV.RUN_IOV_ID = RUN_IOV.IOV_ID and MON_OCCUPANCY_DAT.IOV_ID = MON_RUN_IOV.IOV_ID and CHANNELVIEW.LOGIC_ID = MON_OCCUPANCY_DAT.LOGIC_ID and CHANNELVIEW.NAME = CHANNELVIEW.MAPS_TO and LOCATION_DEF.LOCATION = 'H2' and RUN_TYPE_DEF.DEF_ID = RUN_TAG.RUN_TYPE_ID and RUN_TYPE_DEF.RUN_TYPE = 'BEAM' and RUN_IOV.RUN_NUM between 1 and 99999 group by CHANNELVIEW.ID2" /> - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - </dbelements> diff --git a/DQM/EcalBarrelMonitorDbModule/test/data/tb-temperature.xml b/DQM/EcalBarrelMonitorDbModule/test/data/tb-temperature.xml deleted file mode 100644 index 963f74b8e5a..00000000000 --- a/DQM/EcalBarrelMonitorDbModule/test/data/tb-temperature.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<?proc-inst-1 'foo' ?> - -<dbelements xmlns::xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="prova.xsd"> - - <me> - <th2d title="Temperature H4" xbins="17" xfrom="0." xto="17." ybins="10" yfrom="0." yto="10." ncycle="1" loop="170"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="DCU_CAPSULE_TEMP_DAT" /> - <query name="addToTableList" arg="DCU_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 10 ) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 10 ) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( DCU_CAPSULE_TEMP_DAT.CAPSULE_TEMP as float )" alias="Z" /> - <query name="setCondition" arg="DCU_CAPSULE_TEMP_DAT.IOV_ID = (select max(IOV_ID) from DCU_IOV, DCU_TAG, LOCATION_DEF where DCU_IOV.TAG_ID=DCU_TAG.TAG_ID and LOCATION_DEF.DEF_ID = DCU_TAG.LOCATION_ID and LOCATION_DEF.LOCATION='H4') and DCU_IOV.IOV_ID=DCU_CAPSULE_TEMP_DAT.IOV_ID and CHANNELVIEW.LOGIC_ID=DCU_CAPSULE_TEMP_DAT.LOGIC_ID" />; - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Temperature H4B" xbins="17" xfrom="0." xto="17." ybins="10" yfrom="0." yto="10." ncycle="1" loop="170"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="DCU_CAPSULE_TEMP_DAT" /> - <query name="addToTableList" arg="DCU_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 10 ) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 10 ) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( DCU_CAPSULE_TEMP_DAT.CAPSULE_TEMP as float )" alias="Z" /> - <query name="setCondition" arg="DCU_CAPSULE_TEMP_DAT.IOV_ID = (select max(IOV_ID) from DCU_IOV, DCU_TAG, LOCATION_DEF where DCU_IOV.TAG_ID=DCU_TAG.TAG_ID and LOCATION_DEF.DEF_ID = DCU_TAG.LOCATION_ID and LOCATION_DEF.LOCATION='H4B') and DCU_IOV.IOV_ID=DCU_CAPSULE_TEMP_DAT.IOV_ID and CHANNELVIEW.LOGIC_ID=DCU_CAPSULE_TEMP_DAT.LOGIC_ID" />; - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - - <me> - <th2d title="Temperature H2" xbins="17" xfrom="0." xto="17." ybins="10" yfrom="0." yto="10." ncycle="1" loop="170"/> - <query name="addToTableList" arg="CHANNELVIEW" /> - <query name="addToTableList" arg="DCU_CAPSULE_TEMP_DAT" /> - <query name="addToTableList" arg="DCU_IOV" /> - <query name="addToOutputList" arg="CHANNELVIEW.ID2" /> - <query name="addToOutputList" arg="cast( 0.5 + floor((CHANNELVIEW.ID2-1) / 10 ) as float )" alias="X" /> - <query name="addToOutputList" arg="cast( 0.5 + mod((CHANNELVIEW.ID2-1) , 10 ) as float )" alias="Y" /> - <query name="addToOutputList" arg="cast( DCU_CAPSULE_TEMP_DAT.CAPSULE_TEMP as float )" alias="Z" /> - <query name="setCondition" arg="DCU_CAPSULE_TEMP_DAT.IOV_ID = (select max(IOV_ID) from DCU_IOV, DCU_TAG, LOCATION_DEF where DCU_IOV.TAG_ID=DCU_TAG.TAG_ID and LOCATION_DEF.DEF_ID = DCU_TAG.LOCATION_ID and LOCATION_DEF.LOCATION='H2') and DCU_IOV.IOV_ID=DCU_CAPSULE_TEMP_DAT.IOV_ID and CHANNELVIEW.LOGIC_ID=DCU_CAPSULE_TEMP_DAT.LOGIC_ID" />; - <query name="addToOrderList" arg="CHANNELVIEW.ID2" /> - </me> - -</dbelements> diff --git a/DQM/EcalBarrelMonitorTasks/BuildFile b/DQM/EcalBarrelMonitorTasks/BuildFile index b1791c319ac..285d28f1540 100644 --- a/DQM/EcalBarrelMonitorTasks/BuildFile +++ b/DQM/EcalBarrelMonitorTasks/BuildFile @@ -7,8 +7,6 @@ <use name=DataFormats/EcalDetId> <use name=DataFormats/EcalDigi> <use name=DataFormats/EcalRecHit> -<use name=DataFormats/EgammaReco> -<use name=RecoEcal/EgammaCoreTools> <use name=boost> <use name=root> @@ -22,8 +20,6 @@ <use name=DataFormats/EcalDetId> <use name=DataFormats/EcalDigi> <use name=DataFormats/EcalRecHit> - <use name=DataFormats/EgammaReco> - <use name=RecoEcal/EgammaCoreTools> <use name=boost> <use name=root> </export> diff --git a/DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h b/DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h deleted file mode 100644 index 2563c15fc8a..00000000000 --- a/DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef EBClusterTask_H -#define EBClusterTask_H - -/* - * \file EBClusterTask.h - * - * $Date: 2006/10/30 13:12:31 $ - * $Revision: 1.2 $ - * \author G. Della Ricca - * -*/ - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "DQMServices/Daemon/interface/MonitorDaemon.h" -#include "FWCore/ServiceRegistry/interface/Service.h" - -#include "DataFormats/EcalRawData/interface/EcalRawDataCollections.h" - -#include "DataFormats/EcalDetId/interface/EBDetId.h" -#include "DataFormats/EcalDigi/interface/EBDataFrame.h" -#include "DataFormats/EcalDigi/interface/EcalDigiCollections.h" -#include "DataFormats/EcalRecHit/interface/EcalUncalibratedRecHit.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" - -#include "DataFormats/EgammaReco/interface/BasicCluster.h" -#include "DataFormats/EgammaReco/interface/SuperCluster.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include <iostream> -#include <fstream> -#include <vector> - -using namespace cms; -using namespace edm; -using namespace std; -using namespace reco; - -class EBClusterTask: public EDAnalyzer{ - -public: - -/// Constructor -EBClusterTask(const ParameterSet& ps); - -/// Destructor -virtual ~EBClusterTask(); - -protected: - -/// Analyze -void analyze(const Event& e, const EventSetup& c); - -/// BeginJob -void beginJob(const EventSetup& c); - -/// EndJob -void endJob(void); - -/// Setup -void setup(void); - -/// Cleanup -void cleanup(void); - -private: - -int ievt_; - -MonitorElement* meBEne_; -MonitorElement* meBNum_; -MonitorElement* meBCry_; - -MonitorElement* meBEneMap_; -MonitorElement* meBNumMap_; - -MonitorElement* meSEne_; -MonitorElement* meSNum_; -MonitorElement* meSSiz_; - -MonitorElement* meSEneMap_; -MonitorElement* meSNumMap_; - -bool init_; - -}; - -#endif diff --git a/DQM/EcalBarrelMonitorTasks/src/EBClusterTask.cc b/DQM/EcalBarrelMonitorTasks/src/EBClusterTask.cc deleted file mode 100644 index f79d106b91c..00000000000 --- a/DQM/EcalBarrelMonitorTasks/src/EBClusterTask.cc +++ /dev/null @@ -1,214 +0,0 @@ -/* - * \file EBClusterTask.cc - * - * $Date: 2006/11/02 13:50:15 $ - * $Revision: 1.6 $ - * \author G. Della Ricca - * -*/ - -#include <DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h> - -EBClusterTask::EBClusterTask(const ParameterSet& ps){ - - init_ = false; - - meBEne_ = 0; - meBNum_ = 0; - meBCry_ = 0; - - meSEneMap_ = 0; - meSNumMap_ = 0; - - meSEne_ = 0; - meSNum_ = 0; - - meSSiz_ = 0; - - meSEneMap_ = 0; - meSNumMap_ = 0; - -} - -EBClusterTask::~EBClusterTask(){ - -} - -void EBClusterTask::beginJob(const EventSetup& c){ - - ievt_ = 0; - - DaqMonitorBEInterface* dbe = 0; - - // get hold of back-end interface - dbe = Service<DaqMonitorBEInterface>().operator->(); - - if ( dbe ) { - dbe->setCurrentFolder("EcalBarrel/EBClusterTask"); - dbe->rmdir("EcalBarrel/EBClusterTask"); - } - -} - -void EBClusterTask::setup(void){ - - init_ = true; - - Char_t histo[200]; - - DaqMonitorBEInterface* dbe = 0; - - // get hold of back-end interface - dbe = Service<DaqMonitorBEInterface>().operator->(); - - if ( dbe ) { - dbe->setCurrentFolder("EcalBarrel/EBClusterTask"); - - sprintf(histo, "EBCLT basic cluster energy"); - meBEne_ = dbe->book1D(histo, histo, 100, 0., 500.); - - sprintf(histo, "EBCLT basic cluster number"); - meBNum_ = dbe->book1D(histo, histo, 100, 0., 100.); - - sprintf(histo, "EBCLT basic cluster crystals"); - meBCry_ = dbe->book1D(histo, histo, 100, 0., 100.); - - sprintf(histo, "EBCLT basic cluster energy map"); - meBEneMap_ = dbe->bookProfile2D(histo, histo, 170, -1.479, 1.479, 360, 0., 2*M_PI, 100, 0., 500., "s"); - - sprintf(histo, "EBCLT basic cluster number map"); - meBNumMap_ = dbe->book2D(histo, histo, 170, -1.479, 1.479, 360, 0., 2*M_PI); - - sprintf(histo, "EBCLT super cluster energy"); - meSEne_ = dbe->book1D(histo, histo, 100, 0., 500.); - - sprintf(histo, "EBCLT super cluster number"); - meSNum_ = dbe->book1D(histo, histo, 100, 0., 100.); - - sprintf(histo, "EBCLT super cluster size"); - meSSiz_ = dbe->book1D(histo, histo, 20, 0., 20.); - - sprintf(histo, "EBCLT super cluster energy map"); - meSEneMap_ = dbe->bookProfile2D(histo, histo, 170, -1.479, 1.479, 360, 0., 2*M_PI, 100, 0., 500., "s"); - - sprintf(histo, "EBCLT super cluster number map"); - meSNumMap_ = dbe->book2D(histo, histo, 170, -1.479, 1.479, 360, 0., 2*M_PI); - - } - -} - -void EBClusterTask::cleanup(void){ - - DaqMonitorBEInterface* dbe = 0; - - // get hold of back-end interface - dbe = Service<DaqMonitorBEInterface>().operator->(); - - if ( dbe ) { - dbe->setCurrentFolder("EcalBarrel/EBClusterTask"); - - if ( meBEne_ ) dbe->removeElement( meBEne_->getName() ); - meBEne_ = 0; - - if ( meBNum_ ) dbe->removeElement( meBNum_->getName() ); - meBNum_ = 0; - - if ( meBEneMap_ ) dbe->removeElement( meBEneMap_->getName() ); - meBEneMap_ = 0; - - if ( meBNumMap_ ) dbe->removeElement( meBNumMap_->getName() ); - meBNumMap_ = 0; - - if ( meBCry_ ) dbe->removeElement( meBCry_->getName() ); - meBCry_ = 0; - - if ( meSEne_ ) dbe->removeElement( meSEne_->getName() ); - meSEne_ = 0; - - if ( meSNum_ ) dbe->removeElement( meSNum_->getName() ); - meSNum_ = 0; - - if ( meSSiz_ ) dbe->removeElement( meSSiz_->getName() ); - meSSiz_ = 0; - - if ( meSEneMap_ ) dbe->removeElement( meSEneMap_->getName() ); - meSEneMap_ = 0; - - if ( meSNumMap_ ) dbe->removeElement( meSNumMap_->getName() ); - meSNumMap_ = 0; - - } - - init_ = false; - -} - -void EBClusterTask::endJob(void){ - - LogInfo("EBClusterTask") << "analyzed " << ievt_ << " events"; - - if ( init_ ) this->cleanup(); - -} - -void EBClusterTask::analyze(const Event& e, const EventSetup& c){ - - if ( ! init_ ) this->setup(); - - ievt_++; - - try { - - Handle<BasicClusterCollection> bclusters; - e.getByLabel("islandBasicClusterProducer", "islandBarrelBasicClusterCollection", bclusters); - - int nbcc = bclusters->size(); - LogDebug("EBClusterTask") << "event " << ievt_ << " basic cluster collection size " << nbcc; - - meBNum_->Fill(float(nbcc)); - - for ( BasicClusterCollection::const_iterator bclusterItr = bclusters->begin(); bclusterItr != bclusters->end(); ++bclusterItr ) { - - BasicCluster bcluster = *(bclusterItr); - - meBEne_->Fill(bcluster.energy()); - meBCry_->Fill(float(bcluster.getHitsByDetId().size())); - - meBEneMap_->Fill(bcluster.eta(), bcluster.phi(), bcluster.energy()); - meBNumMap_->Fill(bcluster.eta(), bcluster.phi()); - - } - - } catch ( std::exception& ex ) { - LogDebug("EBClusterTask") << " BasicClusterCollection not in event."; - } - - try { - - Handle<SuperClusterCollection> sclusters; - e.getByLabel("islandSuperClusterProducer", "islandBarrelSuperClusterCollection", sclusters); - - int nscc = sclusters->size(); - LogDebug("EBClusterTask") << "event " << ievt_ << " super cluster collection size " << nscc; - - meSNum_->Fill(float(nscc)); - - for ( SuperClusterCollection::const_iterator sclusterItr = sclusters->begin(); sclusterItr != sclusters->end(); ++sclusterItr ) { - - SuperCluster scluster = *(sclusterItr); - - meSEne_->Fill(scluster.energy()); - meSSiz_->Fill(float(1+scluster.clustersSize())); - - meSEneMap_->Fill(scluster.eta(), scluster.phi(), scluster.energy()); - meSNumMap_->Fill(scluster.eta(), scluster.phi()); - - } - - } catch ( std::exception& ex ) { - LogDebug("EBClusterTask") << " SuperClusterCollection not in event."; - } - -} - diff --git a/DQM/EcalBarrelMonitorTasks/src/EBPedestalTask.cc b/DQM/EcalBarrelMonitorTasks/src/EBPedestalTask.cc index 11434da7d8e..955643f2801 100644 --- a/DQM/EcalBarrelMonitorTasks/src/EBPedestalTask.cc +++ b/DQM/EcalBarrelMonitorTasks/src/EBPedestalTask.cc @@ -1,8 +1,8 @@ /* * \file EBPedestalTask.cc * - * $Date: 2006/09/22 06:01:40 $ - * $Revision: 1.46 $ + * $Date: 2006/08/11 09:55:28 $ + * $Revision: 1.45 $ * \author G. Della Ricca * */ @@ -119,7 +119,6 @@ void EBPedestalTask::cleanup(void){ dbe = Service<DaqMonitorBEInterface>().operator->(); if ( dbe ) { - dbe->setCurrentFolder("EcalBarrel/EBPedestalTask"); dbe->setCurrentFolder("EcalBarrel/EBPedestalTask/Gain01"); for ( int i = 0; i < 36; i++ ) { diff --git a/DQM/EcalBarrelMonitorTasks/src/EBTriggerTowerTask.cc b/DQM/EcalBarrelMonitorTasks/src/EBTriggerTowerTask.cc index dba2990f71f..e92b3ff4f8a 100644 --- a/DQM/EcalBarrelMonitorTasks/src/EBTriggerTowerTask.cc +++ b/DQM/EcalBarrelMonitorTasks/src/EBTriggerTowerTask.cc @@ -1,8 +1,8 @@ /* * \file EBTriggerTowerTask.cc * - * $Date: 2006/10/02 09:33:00 $ - * $Revision: 1.21 $ + * $Date: 2006/09/29 12:43:50 $ + * $Revision: 1.19 $ * \author G. Della Ricca * */ @@ -61,7 +61,7 @@ void EBTriggerTowerTask::setup(void){ for (int i = 0; i < 36 ; i++) { sprintf(histo, "EBTTT Et map SM%02d", i+1); - meEtMap_[i] = dbe->bookProfile2D(histo, histo, 17, 0., 17., 4, 0., 4., 128, 0, 512., "s"); + meEtMap_[i] = dbe->bookProfile2D(histo, histo, 17, 0., 17., 4, 0., 4., 128, 0., 512., "s"); sprintf(histo, "EBTTT FineGrainVeto SM%02d", i+1); meVeto_[i] = dbe->book3D(histo, histo, 17, 0., 17., 4, 0., 4., 2, 0., 2.); sprintf(histo, "EBTTT Flags SM%02d", i+1); @@ -73,9 +73,9 @@ void EBTriggerTowerTask::setup(void){ for (int i = 0; i < 36 ; i++) { for (int j = 0; j < 68 ; j++) { sprintf(histo, "EBTTT Et T SM%02d TT%02d", i+1, j+1); - meEtMapT_[i][j] = dbe->book1D(histo, histo, 128, 0.0001, 512.); + meEtMapT_[i][j] = dbe->book1D(histo, histo, 128, 0., 512.); sprintf(histo, "EBTTT Et R SM%02d TT%02d", i+1, j+1); - meEtMapR_[i][j] = dbe->book1D(histo, histo, 128, 0.0001, 512.); + meEtMapR_[i][j] = dbe->book1D(histo, histo, 128, 0., 512.); } } @@ -225,9 +225,7 @@ void EBTriggerTowerTask::analyze(const Event& e, const EventSetup& c){ xval = hit.amplitude(); -// xval = xval * (1./16.) * TMath::Sin(2*TMath::ATan(TMath::Exp(-0.0174*(ie-0.5)))); - - xval = xval * (1./16.); + xval = xval * (1./16.) * TMath::Sin(2*TMath::ATan(TMath::Exp(-0.0174*(ie-0.5)))); xmap[ism-1][itt-1] = xmap[ism-1][itt-1] + xval; diff --git a/DQM/EcalBarrelMonitorTasks/src/SealModule.cc b/DQM/EcalBarrelMonitorTasks/src/SealModule.cc index 00d70363083..298f8519f50 100644 --- a/DQM/EcalBarrelMonitorTasks/src/SealModule.cc +++ b/DQM/EcalBarrelMonitorTasks/src/SealModule.cc @@ -35,6 +35,3 @@ DEFINE_ANOTHER_FWK_MODULE(EBBeamCaloTask); #include <DQM/EcalBarrelMonitorTasks/interface/EBTriggerTowerTask.h> DEFINE_ANOTHER_FWK_MODULE(EBTriggerTowerTask); -#include <DQM/EcalBarrelMonitorTasks/interface/EBClusterTask.h> -DEFINE_ANOTHER_FWK_MODULE(EBClusterTask); - diff --git a/DQM/EcalCommon/doc/html/index.html b/DQM/EcalCommon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalCommon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalCommon/doc/html/overview.html b/DQM/EcalCommon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalCommon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalEndcapMonitorClient/doc/html/index.html b/DQM/EcalEndcapMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalEndcapMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalEndcapMonitorClient/doc/html/overview.html b/DQM/EcalEndcapMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalEndcapMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalEndcapMonitorDbModule/doc/html/index.html b/DQM/EcalEndcapMonitorDbModule/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalEndcapMonitorDbModule/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalEndcapMonitorDbModule/doc/html/overview.html b/DQM/EcalEndcapMonitorDbModule/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalEndcapMonitorDbModule/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalEndcapMonitorModule/doc/html/index.html b/DQM/EcalEndcapMonitorModule/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalEndcapMonitorModule/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalEndcapMonitorModule/doc/html/overview.html b/DQM/EcalEndcapMonitorModule/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalEndcapMonitorModule/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalEndcapMonitorTasks/doc/html/index.html b/DQM/EcalEndcapMonitorTasks/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalEndcapMonitorTasks/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalEndcapMonitorTasks/doc/html/overview.html b/DQM/EcalEndcapMonitorTasks/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalEndcapMonitorTasks/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalPreshowerMonitorClient/doc/html/index.html b/DQM/EcalPreshowerMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalPreshowerMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalPreshowerMonitorClient/doc/html/overview.html b/DQM/EcalPreshowerMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalPreshowerMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/EcalPreshowerMonitorModule/doc/html/index.html b/DQM/EcalPreshowerMonitorModule/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/EcalPreshowerMonitorModule/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/EcalPreshowerMonitorModule/doc/html/overview.html b/DQM/EcalPreshowerMonitorModule/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/EcalPreshowerMonitorModule/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/HLTEvF/BuildFile b/DQM/HLTEvF/BuildFile deleted file mode 100644 index 6e393b37a50..00000000000 --- a/DQM/HLTEvF/BuildFile +++ /dev/null @@ -1,12 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=DataFormats/HLTReco> -<flags SEAL_PLUGIN_NAME="DQMHLTEvF"> -<export> - <lib name=DQMHLTEvF> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=DataFormats/HLTReco> -</export> diff --git a/DQM/HLTEvF/interface/HltAnalyzer.h b/DQM/HLTEvF/interface/HltAnalyzer.h deleted file mode 100644 index dffea929005..00000000000 --- a/DQM/HLTEvF/interface/HltAnalyzer.h +++ /dev/null @@ -1,76 +0,0 @@ -// -*- C++ -*- -// -// Package: HltAnalyzer -// Class: HltAnalyzer -// -/**\class HltAnalyzer HltAnalyzer.cc DQM/HLTEvF/interface/HltAnalyzer.h - - Description: Correlate timings and pass/fail for paths and modules - on paths. - - Implementation: - Produces a HltPerformanceInfo object -*/ -// -// Original Author: Peter Wittich -// Created: Thu Nov 9 07:51:28 CST 2006 -// $Id$ -// -// - -#ifndef HLTANALYZER_H -#define HLTANALYZER_H - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDFilter.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "FWCore/Services/interface/Timing.h" - -#include "DataFormats/Common/interface/ModuleDescription.h" - -#include "DataFormats/Common/interface/TriggerResults.h" - -#include "FWCore/Framework/interface/TriggerNamesService.h" - - -#include "DataFormats/HLTReco/interface/HLTPerformanceInfo.h" - - -// -// class declaration -// - - -class HltAnalyzer : public edm::EDFilter { -public: - explicit HltAnalyzer(const edm::ParameterSet&); - ~HltAnalyzer(); - void newTimingMeasurement(const edm::ModuleDescription& iMod, - double diffTime) ; - -private: - virtual void beginJob(const edm::EventSetup&) ; - virtual bool filter(edm::Event&, const edm::EventSetup&); - virtual void endJob() ; - - - // ----------member data --------------------------- - HLTPerformanceInfo perfInfo_; - std::string myName_; - bool verbose_; - bool verbose() { return verbose_; } - edm::InputTag trigResLabel_; - -}; - -#endif // HLTANALYZER_H diff --git a/DQM/HLTEvF/src/HltAnalyzer.cc b/DQM/HLTEvF/src/HltAnalyzer.cc deleted file mode 100644 index 36d2c2b3a9a..00000000000 --- a/DQM/HLTEvF/src/HltAnalyzer.cc +++ /dev/null @@ -1,174 +0,0 @@ -// -*- C++ -*- -// -// Package: HltAnalyzer -// Class: HltAnalyzer -// -/**\class HltAnalyzer HltAnalyzer.cc DQM/HLTEvF/src/HltAnalyzer.cc - - Description: Correlate timings and pass/fail for paths and modules - on paths. - - Implementation: - Produces a HLTPerformanceInfo object -*/ -// -// Original Author: Peter Wittich -// Created: Thu Nov 9 07:51:28 CST 2006 -// $Id$ -// -// - - - -#include "DQM/HLTEvF/interface/HltAnalyzer.h" - -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - -// -// constructors and destructor -// -HltAnalyzer::HltAnalyzer(const edm::ParameterSet& iConfig) - : perfInfo_(), - myName_(iConfig.getParameter<std::string>("@module_label")), - verbose_(iConfig.getUntrackedParameter("verbose",false)) -{ - // now do what ever initialization is needed - produces<HLTPerformanceInfo>(); - - // this object needs to exist outside of the scope of the event - // entry point so that the EDM can call it when modules run - perfInfo_.clear(); - - trigResLabel_ = iConfig.getParameter< edm::InputTag > ("triggerResultsLabel"); - - // attach method to Timing service's "new measurement" signal - edm::Service<edm::service::Timing> time; - time->newMeasurementSignal.connect(boost::bind(boost::mem_fn(&HltAnalyzer::newTimingMeasurement), this, _1, _2) ); - - -} - - -HltAnalyzer::~HltAnalyzer() -{ - - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) - -} - - -// -// member functions -// - -// ------------ method called on each new Event ------------ -bool -HltAnalyzer::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - - // Before we get here, the timing service call-back will have filled the - // module information in the perfInfo_ member variable. - // Beware, though, that this can fail if the module in question did not run. - - - using namespace edm; - Handle<TriggerResults> pTrig; - iEvent.getByType(pTrig); - //iEvent.getByLabel(trigResLabel_,pTrig); - - - using edm::service::TriggerNamesService; - Service<TriggerNamesService> trigger_paths; - TriggerNamesService::Strings paths = trigger_paths->getTrigPaths(); - if ( verbose() ) { - std::cout << "Dumping paths." << std::endl; - } - for ( TriggerNamesService::Strings::const_iterator i = paths.begin(); - i != paths.end(); ++i ) { - HLTPerformanceInfo::Path p(*i); - unsigned int where = pTrig->find(*i); - p.setStatus( pTrig->at(where)); - if ( verbose() ) { - std::cout << "Path is " << *i - << " with result " << p.Status().state() - << std::endl; - } - TriggerNamesService::Strings - mods_on_path = trigger_paths->getTrigPathModules(*i); - for ( TriggerNamesService::Strings::const_iterator - j = mods_on_path.begin(); - j != mods_on_path.end(); ++j ) { - if ( verbose() ) - std::cout << "module is " << *j << std::endl; - // this call could fail if the module didn't run this event. - perfInfo_.addModuleToPath(j->c_str(), &p); - } - perfInfo_.addPath(p); - } - - if ( verbose() ) { - const HLTPerformanceInfo::Modules *l = perfInfo_.ListOfModules(); - std::cout << myName_<< ": dumping modules internal to perfinfo: " - << l->size() - << std::endl; - for ( HLTPerformanceInfo::Modules::const_iterator i = l->begin(); - i != l->end(); ++i ) { - std::cout << i->Name() << ": " << i->Time() << std::endl; - } - std::cout << myName_ << ": dumping path times.... " << std::endl; - const HLTPerformanceInfo::PathList *p = perfInfo_.ListOfPaths(); - for ( HLTPerformanceInfo::PathList::const_iterator j = p->begin(); - j != p->end(); ++j ) { - std::cout << "\t" << j->Name() << ": " << j->Time() << std::endl; - } - } - - - // done - now store - std::auto_ptr<HLTPerformanceInfo> pPerf(new HLTPerformanceInfo(perfInfo_)); - - iEvent.put(pPerf); - - // clear for next event - perfInfo_.clear(); - - return true; -} - -// ------- method called once each job just before starting event loop ----- -void -HltAnalyzer::beginJob(const edm::EventSetup&) -{ -} - -// ------ method called once each job just after ending the event loop ---- -void -HltAnalyzer::endJob() { -} - - -// fwk calls this method when new module measurement arrives -void HltAnalyzer::newTimingMeasurement(const edm::ModuleDescription& iMod, - double diffTime) -{ - HLTPerformanceInfo::Module m(iMod.moduleLabel().c_str(), diffTime); - perfInfo_.addModule(m); - if ( verbose() ) { - std::cout << myName_ << ": adding module with name " << iMod.moduleLabel() - << " and time " << diffTime - << ", size " << perfInfo_.ListOfModules()->size() - << std::endl; - } - - -} - - - diff --git a/DQM/HLTEvF/src/SealModule.cc b/DQM/HLTEvF/src/SealModule.cc deleted file mode 100644 index c90ac432740..00000000000 --- a/DQM/HLTEvF/src/SealModule.cc +++ /dev/null @@ -1,9 +0,0 @@ -// $Id$ -// - -#include "DQM/HLTEvF/interface/HltAnalyzer.h" - -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(HltAnalyzer); diff --git a/DQM/HLXMonitor/doc/html/index.html b/DQM/HLXMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/HLXMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/HLXMonitor/doc/html/overview.html b/DQM/HLXMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/HLXMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/HcalMonitorClient/interface/HcalLEDClient.h b/DQM/HcalMonitorClient/interface/HcalLEDClient.h index 194f3eba98d..58ae145a20e 100644 --- a/DQM/HcalMonitorClient/interface/HcalLEDClient.h +++ b/DQM/HcalMonitorClient/interface/HcalLEDClient.h @@ -106,7 +106,7 @@ private: string process_; MonitorUserInterface* mui_; - HcalElectronicsMap* readoutMap_; + const HcalElectronicsMap* readoutMap_; int etaMin[4]; int etaMax[4]; int phiMin[4]; int phiMax[4]; diff --git a/DQM/HcalMonitorClient/interface/HcalPedestalClient.h b/DQM/HcalMonitorClient/interface/HcalPedestalClient.h index 64068a9032b..919eb3f4189 100644 --- a/DQM/HcalMonitorClient/interface/HcalPedestalClient.h +++ b/DQM/HcalMonitorClient/interface/HcalPedestalClient.h @@ -109,7 +109,7 @@ private: string process_; MonitorUserInterface* mui_; - HcalElectronicsMap* readoutMap_; + const HcalElectronicsMap* readoutMap_; TH1F* all_peds[3]; TH1F* ped_rms[3]; diff --git a/DQM/HcalMonitorClient/src/HcalLEDClient.cc b/DQM/HcalMonitorClient/src/HcalLEDClient.cc index 64705ae0b52..b138be62438 100644 --- a/DQM/HcalMonitorClient/src/HcalLEDClient.cc +++ b/DQM/HcalMonitorClient/src/HcalLEDClient.cc @@ -117,7 +117,6 @@ void HcalLEDClient::beginJob(const EventSetup& eventSetup){ edm::ESHandle<HcalDbService> pSetup; eventSetup.get<HcalDbRecord>().get( pSetup ); readoutMap_=pSetup->getHcalMapping(); - readoutMap_->sortById(); ievt_ = 0; jevt_ = 0; diff --git a/DQM/HcalMonitorClient/src/HcalPedestalClient.cc b/DQM/HcalMonitorClient/src/HcalPedestalClient.cc index c18cb5867ff..b6240bd7a58 100644 --- a/DQM/HcalMonitorClient/src/HcalPedestalClient.cc +++ b/DQM/HcalMonitorClient/src/HcalPedestalClient.cc @@ -116,8 +116,7 @@ void HcalPedestalClient::beginJob(const EventSetup& eventSetup){ edm::ESHandle<HcalDbService> pSetup; eventSetup.get<HcalDbRecord>().get( pSetup ); readoutMap_=pSetup->getHcalMapping(); - readoutMap_->sortById(); - + ievt_ = 0; jevt_ = 0; this->setup(); diff --git a/DQM/HcalMonitorClient/src/SealModule.cc b/DQM/HcalMonitorClient/src/SealModule.cc index 529fcd7ae86..f4040aee586 100644 --- a/DQM/HcalMonitorClient/src/SealModule.cc +++ b/DQM/HcalMonitorClient/src/SealModule.cc @@ -4,4 +4,4 @@ #include <DQM/HcalMonitorClient/interface/HcalMonitorClient.h> -DEFINE_FWK_MODULE(HcalMonitorClient) +DEFINE_FWK_MODULE(HcalMonitorClient); diff --git a/DQM/L1TMonitorClient/doc/html/index.html b/DQM/L1TMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/L1TMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/L1TMonitorClient/doc/html/overview.html b/DQM/L1TMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/L1TMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/Physics/doc/html/index.html b/DQM/Physics/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/Physics/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/Physics/doc/html/overview.html b/DQM/Physics/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/Physics/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/RCTMonitor/doc/html/index.html b/DQM/RCTMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/RCTMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/RCTMonitor/doc/html/overview.html b/DQM/RCTMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/RCTMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h b/DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h index 55b48138417..0c3bd0350ec 100644 --- a/DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h +++ b/DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h @@ -5,8 +5,8 @@ * * Class for RPC Monitoring using RPCDigi and RPCRecHit. * - * $Date: 2006/10/14 10:32:01 $ - * $Revision: 1.5 $ + * $Date: 2006/09/19 07:49:10 $ + * $Revision: 1.4 $ * * \author Ilaria Segoni (CERN) * @@ -14,15 +14,28 @@ #include <FWCore/Framework/interface/Frameworkfwd.h> #include <FWCore/Framework/interface/EDAnalyzer.h> +#include <FWCore/Framework/interface/Handle.h> +#include <FWCore/Framework/interface/ESHandle.h> #include <FWCore/Framework/interface/Event.h> #include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/Service.h" #include "DQMServices/Core/interface/DaqMonitorBEInterface.h" #include "DQMServices/Daemon/interface/MonitorDaemon.h" +#include "FWCore/ServiceRegistry/interface/Service.h" #include<string> #include<map> -#include<fstream> + +/* Base Class Headers */ +#include <DataFormats/TrajectoryState/interface/LocalTrajectoryParameters.h> +#include <DataFormats/DTRecHit/interface/DTRecSegment4D.h> + +/* Collaborating Class Declarations */ +#include "FWCore/Framework/interface/Handle.h" +#include <Geometry/Surface/interface/Surface.h> +#include <Geometry/Surface/interface/BoundPlane.h> +#include <MagneticField/Engine/interface/MagneticField.h> + +#include <TrackingTools/GeomPropagators/interface/Propagator.h>// class RPCDetId; class TFile; @@ -31,6 +44,7 @@ class TFile; class TCanvas; class TH2F; + class RPCMonitorEfficiency : public edm::EDAnalyzer { public: @@ -47,29 +61,33 @@ class RPCMonitorEfficiency : public edm::EDAnalyzer { std::map<std::string, MonitorElement*> bookDetUnitMEEff(RPCDetId & detId); - + const BoundPlane makeSurface(const edm::EventSetup & eventSetup,const DTRecSegment4D & theSegment); + const MagneticField *makeMagneticField(const edm::EventSetup& eventSetup); + private: + int counter; std::string nameInLog; bool EffSaveRootFile; int EffSaveRootFileEventsInterval; std::string EffRootFileName; - + /// back-end interface DaqMonitorBEInterface * dbe; MonitorElement * h1; + LocalTrajectoryParameters makeLocalTrajectory(DTRecSegment4D theSegment); bool debug; + // TFile* theFile; std::string theRecHits4DLabel; std::string digiLabel; + PropagationDirection theDir; + // std::string HistoOutFile; + std::map<uint32_t, std::map<std::string, MonitorElement*> > meCollection; TH1F *hPositionX; std::vector<uint32_t> _idList; - - std::vector<std::map<RPCDetId, int> > counter; - std::vector<int> totalcounter; - std::ofstream ofrej; }; diff --git a/DQM/RPCMonitorDigi/interface/RPCMonitorSync.h b/DQM/RPCMonitorDigi/interface/RPCMonitorSync.h deleted file mode 100644 index a66acc3eafc..00000000000 --- a/DQM/RPCMonitorDigi/interface/RPCMonitorSync.h +++ /dev/null @@ -1,121 +0,0 @@ -#ifndef RPCMonitorSync_h -#define RPCMonitorSync_h - -/** \class RPCMonitorSync - * - * RPC Synchronization Monitoring Class - * - * $Date: 2006/10/20 07:57:31 $ - * $Revision: 0.1 $ - * - * \author Piotr Traczyk (SINS) - * - */ - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/EDAnalyzer.h> -#include <FWCore/Framework/interface/Handle.h> -#include <FWCore/Framework/interface/ESHandle.h> -#include <FWCore/Framework/interface/Event.h> -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "DQMServices/Daemon/interface/MonitorDaemon.h" -#include "FWCore/ServiceRegistry/interface/Service.h" - -#include <string> -#include <map> - -struct timing{ - - int early_all[4]; - int inTime; - int late_all[4]; - - int early() const { - return (early_all[0]+early_all[1]+early_all[2]+early_all[3]); - } - - int late() const { - return (late_all[0]+late_all[1]+late_all[2]+late_all[3]); - } - - int early_w() const { - return (early_all[0]+2*early_all[1]+3*early_all[2]+4*early_all[3]); - } - - int late_w() const { - return (late_all[0]+2*late_all[1]+3*late_all[2]+4*late_all[3]); - } - - int early_w2() const { - return (early_all[0]+4*early_all[1]+9*early_all[2]+16*early_all[3]); - } - - int late_w2() const { - return (late_all[0]+4*late_all[1]+9*late_all[2]+16*late_all[3]); - } - - float earlyFraction() const{ - return (float)early()/(early()+inTime+late()); - } - - float inTimeFraction() const { - return (float)inTime/(early()+inTime+late()); - } - - float lateFraction() const { - return (float)late()/(early()+inTime+late()); - } - - float outOfTimeFraction() const { - return (float)(early()+late())/(early()+inTime+late()); - } - - float offset() const { - return (float)(late_w()-early_w())/(early()+inTime+late()); - } - - float width() const { - return (float)sqrt((float)(late_w2()+early_w2())/(early()+inTime+late())); - } - -}; - -class RPCDetId; - -class RPCMonitorSync : public edm::EDAnalyzer { - public: - explicit RPCMonitorSync( const edm::ParameterSet& ); - ~RPCMonitorSync(); - - virtual void analyze( const edm::Event&, const edm::EventSetup& ); - - virtual void endJob(void); - -/// Booking of MonitoringElemnt for one RPCDetId (= roll) - std::map<std::string, MonitorElement*> bookDetUnitME(RPCDetId & detId); - - private: - - void readRPCDAQStrips(const edm::Event& iEvent); - - MonitorElement *barrelOffsetHist( char *name, char *title ); - MonitorElement *endcapOffsetHist( char *name, char *title ); - MonitorElement *barrelWidthHist( char *name, char *title ); - MonitorElement *endcapWidthHist( char *name, char *title ); - - std::map<uint32_t,timing> synchroMap; - int counter; - /// back-end interface - DaqMonitorBEInterface * dbe; - MonitorElement * h1; - std::map<uint32_t, std::map<std::string, MonitorElement*> > meCollection; - - std::string nameInLog; - bool saveRootFile; - int saveRootFileEventsInterval; - std::string RootFileName; -}; - -#endif diff --git a/DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc b/DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc index 73f2acfb534..0ac412dead5 100644 --- a/DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc +++ b/DQM/RPCMonitorDigi/src/RPCBookDetUnitME.cc @@ -28,7 +28,7 @@ std::map<std::string, MonitorElement*> RPCMonitorDigi::bookDetUnitME(RPCDetId & } char folder[120]; - sprintf(folder,"RPC/RecHits/%s/%s_%d/station_%d/sector_%d",regionName.c_str(),ringType.c_str(), + sprintf(folder,"RPC/Digi&RecHits/%s/%s_%d/station_%d/sector_%d",regionName.c_str(),ringType.c_str(), detId.ring(),detId.station(),detId.sector()); dbe->setCurrentFolder(folder); @@ -49,15 +49,11 @@ std::map<std::string, MonitorElement*> RPCMonitorDigi::bookDetUnitME(RPCDetId & sprintf(meId,"BXN_%s",detUnitLabel); sprintf(meTitle,"BXN_for_%s",layerLabel); - meMap[meId] = dbe->book1D(meId, meTitle, 11, -10.5, 10.5); - - sprintf(meId,"BXN_vs_strip_%s",detUnitLabel); - sprintf(meTitle,"BXN_vs_strip_for_%s",layerLabel); - meMap[meId] = dbe->book2D(meId, meTitle, 100, 0.5, 100.5, 11, -10.5, 10.5); + meMap[meId] = dbe->book1D(meId, meTitle, 100, 0.5, 100.5); sprintf(meId,"ClusterSize_%s",detUnitLabel); sprintf(meTitle,"ClusterSize_for_%s",layerLabel); - meMap[meId] = dbe->book1D(meId, meTitle, 21, 0.5, 20.5); + meMap[meId] = dbe->book1D(meId, meTitle, 11, 0.5, 11.5); sprintf(meId,"NumberOfClusters_%s",detUnitLabel); sprintf(meTitle,"NumberOfClusters_for_%s",layerLabel); diff --git a/DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc b/DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc index 83cc76a7bd1..0296c2bf692 100644 --- a/DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc +++ b/DQM/RPCMonitorDigi/src/RPCMonitorDigi.cc @@ -2,8 +2,8 @@ * * implementation of RPCMonitorDigi class * - * $Date: 2006/10/14 14:31:49 $ - * $Revision: 1.14 $ + * $Date: 2006/09/14 17:09:40 $ + * $Revision: 1.13 $ * * \author Ilaria Segoni */ @@ -61,7 +61,7 @@ RPCMonitorDigi::~RPCMonitorDigi(){ void RPCMonitorDigi::beginJob(edm::EventSetup const&){ edm::LogInfo (nameInLog) <<"Beginning DQMMonitorDigi " ; - GlobalHistogramsFolder="RPC/RecHits/GlobalHistograms"; + GlobalHistogramsFolder="RPC/Digi&RecHits/GlobalHistograms"; dbe->setCurrentFolder(GlobalHistogramsFolder); GlobalZYHitCoordinates = dbe->book2D("GlobalRecHitZYCoordinates", "Rec Hit Z-Y", 1000, -800, 800, 1000, -800, 800); @@ -181,9 +181,6 @@ void RPCMonitorDigi::analyze(const edm::Event& iEvent, sprintf(meId,"BXN_%s",detUnitLabel); meMap[meId]->Fill(bx); - - sprintf(meId,"BXN_vs_strip_%s",detUnitLabel); - meMap[meId]->Fill(strip,bx); }/// loop on Digi sprintf(meId,"BXWithData_%s",detUnitLabel); diff --git a/DQM/RPCMonitorDigi/src/RPCMonitorEfficiency.cc b/DQM/RPCMonitorDigi/src/RPCMonitorEfficiency.cc index 02c2806ce67..b35464905b0 100644 --- a/DQM/RPCMonitorDigi/src/RPCMonitorEfficiency.cc +++ b/DQM/RPCMonitorDigi/src/RPCMonitorEfficiency.cc @@ -2,41 +2,69 @@ * * implementation of RPCMonitorEfficiency class * - * $Date: 2006/10/24 05:49:35 $ - * Revision: 1.5 $ + * $Date: 2006/07/15 09:29:50 $ + * Revision: 1.2 $ * * \author Camilo Carrillo */ -#include <DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h> +#include <DQM/RPCMonitorDigi/interface/RPCMonitorDigi.h> + +///Data Format +#include <DataFormats/RPCDigi/interface/RPCDigi.h> +#include <DataFormats/RPCDigi/interface/RPCDigiCollection.h> +#include <DataFormats/MuonDetId/interface/RPCDetId.h> + +///RPCRecHits +#include <DataFormats/RPCRecHit/interface/RPCRecHitCollection.h> +#include <Geometry/Surface/interface/LocalError.h> +#include <Geometry/Vector/interface/LocalPoint.h> + ///Log messages #include <FWCore/ServiceRegistry/interface/Service.h> #include <FWCore/MessageLogger/interface/MessageLogger.h> -#include "FWCore/Framework/interface/MakerMacros.h" //pe -#include <FWCore/Framework/interface/ESHandle.h>// +#include <stdio.h> +#include <stdlib.h> +#include <map> +#include <string> +#include <cmath> -///Data Format -#include <DataFormats/RPCDigi/interface/RPCDigi.h> -#include <DataFormats/RPCDigi/interface/RPCDigiCollection.h> -#include <DataFormats/MuonDetId/interface/RPCDetId.h> + +#include <DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h> +///Log messages +#include <FWCore/ServiceRegistry/interface/Service.h> +#include <FWCore/MessageLogger/interface/MessageLogger.h> + + +/* Collaborating Class Header */ +#include "FWCore/Framework/interface/MakerMacros.h" // +#include "FWCore/Framework/interface/Frameworkfwd.h"// +#include "FWCore/Framework/interface/Event.h"// +#include "FWCore/ParameterSet/interface/ParameterSet.h"// #include "DataFormats/DTRecHit/interface/DTRecSegment4DCollection.h"// #include "DataFormats/MuonDetId/interface/DTChamberId.h"// +#include "DataFormats/MuonDetId/interface/RPCDetId.h"// +#include "DataFormats/RPCRecHit/interface/RPCRecHitCollection.h" +#include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" +#include "TFile.h" +#include "TH1F.h" +#include "TH2F.h" +#include "TCanvas.h" +/// for DQM #include <Geometry/DTGeometry/interface/DTGeometry.h>// #include <Geometry/RPCGeometry/interface/RPCGeometry.h>// #include <Geometry/CommonTopologies/interface/RectangularStripTopology.h>// #include <Geometry/CommonDetUnit/interface/GeomDet.h>// #include <Geometry/Records/interface/MuonGeometryRecord.h>// -#include <Geometry/Surface/interface/LocalError.h> -#include <Geometry/Vector/interface/LocalPoint.h> +#include <FWCore/Framework/interface/ESHandle.h>// +#include <FWCore/Framework/interface/eventSetupGetImplementation.h>// -#include <cmath> -#include "TFile.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TCanvas.h" +#include <TrackingTools/DetLayers/interface/DetLayer.h>// +#include <RecoMuon/Records/interface/MuonRecoGeometryRecord.h>// +#include <RecoMuon/DetLayers/interface/MuonDetLayerGeometry.h>// class DTStationIndex{ @@ -75,23 +103,11 @@ private: -RPCMonitorEfficiency::RPCMonitorEfficiency( const edm::ParameterSet& pset ){ - std::map<RPCDetId, int> buff; - counter.clear(); - counter.reserve(3); - //std::cout <<" Buff 1"<<std::endl; - counter.push_back(buff); - //std::cout <<" Buff 2"<<std::endl; - counter.push_back(buff); - //std::cout <<" Buff 3"<<std::endl; - counter.push_back(buff); - totalcounter.clear(); - totalcounter.reserve(3); - totalcounter[0]=0; - totalcounter[1]=0; - totalcounter[2]=0; +RPCMonitorEfficiency::RPCMonitorEfficiency( const edm::ParameterSet& pset ):counter(0){ theRecHits4DLabel = pset.getParameter<std::string>("recHits4DLabel"); digiLabel=pset.getParameter<std::string>("digiLabel"); + // HistoOutFile= pset.getParameter<std::string>("HistoOutFile"); + EffSaveRootFile = pset.getUntrackedParameter<bool>("EffSaveRootFile", false); EffSaveRootFileEventsInterval = pset.getUntrackedParameter<int>("EffEventsInterval", 10000); EffRootFileName = pset.getUntrackedParameter<std::string>("EffRootFileName", "RPCEfficiency.root"); @@ -104,43 +120,58 @@ RPCMonitorEfficiency::RPCMonitorEfficiency( const edm::ParameterSet& pset ){ dbe->showDirStructure(); - _idList.clear(); - //ofrej.open("rejected.txt"); + _idList.clear(); } +// void RPCMonitorEfficiency::beginJob(const edm::EventSetup &) +// { +// theFile = new TFile(HistoOutFile.c_str(),"RECREATE"); +// std::cout<<"Begin Job"<<std::endl; +// hPositionX = new TH1F("Histo","Histo",100,0,100); +// } + + void RPCMonitorEfficiency::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup ){ - std::map<RPCDetId, int> buff; + typedef std::pair<const GeomDet*,TrajectoryStateOnSurface> DetWithState; + + counter++; + bool goodStatistic = false; + if(counter%1000 == 0) goodStatistic = true; + std::cout<<"COUNTER = "<< counter<<" "<<counter%500<<" "<<"BOOL = "<<goodStatistic<<" "<<"------------"<<std::endl; + char layerLabel[128]; + //char meId [128]; char meIdRPC [128]; char meIdDT [128]; - float dx=0.,dy=0.,dz=0.,Xo=0.,Yo=0.,X=0.,Y=0.,Z=0.,p1x=0.,p2x=0.,p3x=0.,p4x=0.,p1z=0.,p2z=0.,p3z=0.,p4z=0.,dx3=0.,dy3=0.,dz3=0.,Xo3=0.,Yo3=0.,x3=0.,x4=0.,z3=0.,z4=0.,m3=0.,m4=0.,xc=0.,zc=0.,b3=0.,b4=0.,w3=0.,w4=0.; - - float widestrip=5.; - float widestripsRB4=8.; - float circError=3.; - float angle=0.01; - + char effIdRPC [128]; edm::ESHandle<DTGeometry> dtGeo; iSetup.get<MuonGeometryRecord>().get(dtGeo); edm::ESHandle<RPCGeometry> rpcGeo; iSetup.get<MuonGeometryRecord>().get(rpcGeo); + + // Take the whole det layer geometry + edm::ESHandle<MuonDetLayerGeometry> detLayerGeometry; + iSetup.get<MuonRecoGeometryRecord>().get(detLayerGeometry); + edm::Handle<DTRecSegment4DCollection> all4DSegments; iEvent.getByLabel(theRecHits4DLabel, all4DSegments); edm::Handle<RPCDigiCollection> rpcDigis; iEvent.getByLabel(digiLabel, rpcDigis); + std::map<DTStationIndex,std::set<RPCDetId> > rollstore; - for (TrackingGeometry::DetContainer::const_iterator it=rpcGeo->dets().begin();it<rpcGeo->dets().end();it++){ + for (TrackingGeometry::DetContainer::const_iterator it=rpcGeo->dets().begin(); + it<rpcGeo->dets().end();it++){ RPCRoll* ir = dynamic_cast<RPCRoll*>(*it); RPCDetId rpcId = ir->id(); int region=rpcId.region(); int wheel=rpcId.ring(); int sector=rpcId.sector(); int station=rpcId.station(); - + DTStationIndex ind(region,wheel,sector,station); std::set<RPCDetId> myrolls; @@ -149,490 +180,166 @@ void RPCMonitorEfficiency::analyze(const edm::Event& iEvent, const edm::EventSet } myrolls.insert(rpcId); rollstore[ind]=myrolls; + myrolls.insert(rpcId); + rollstore[ind]=myrolls; } - + bool DTevent = false; + uint32_t id = 0; + char detUnitLabel[128]; + std::map<std::string, MonitorElement*> meMap; + + DTRecSegment4DCollection::const_iterator segment; + + if(all4DSegments->size()>0){ - //std::cout<<"Number of Segments in this event = "<<all4DSegments->size()<<std::endl; - + std::cout<<"\n\n\n Number of Segment in this event = "<<all4DSegments->size()<<std::endl; + + std::map<DTChamberId,int> scounter; - DTRecSegment4DCollection::const_iterator segment; + for (segment = all4DSegments->begin(); segment != all4DSegments->end(); ++segment){ if(segment->dimension()==4){ + scounter[segment->chamberId()]++;//Counting how many segments per DTChamberID, labeling each chamber with an int + }} + //This is the for over the DT Segments!************************************************************* - for (segment = all4DSegments->begin();segment!=all4DSegments->end(); ++segment){ - scounter[segment->chamberId()]++; - } - - //std::cout<<"Loop over all the 4D Segments"<<std::endl; - //loop over all the 4D Segments - - for (segment = all4DSegments->begin(); segment != all4DSegments->end(); ++segment){ - DTChamberId DTId = segment->chamberId(); - //std::cout<<"\t This Segment is in Chamber id: "<<DTId<<std::endl; - //std::cout<<"\t Number of segments in this DT = "<<scounter[DTId]<<std::endl; - //std::cout<<"\t DT Segment Dimension "<<segment->dimension()<<std::endl; - //std::cout<<"\t Is the only in this DT?"<<std::endl; - - //there must be only one segment per Chamber - if(scounter[DTId] == 1){ - //std::cout<<"\t \t yes"<<std::endl; + for (segment = all4DSegments->begin(); segment != all4DSegments->end(); ++segment){ //loop over all the 4D Segments + if(segment->dimension()==4 && scounter[segment->chamberId()] == 1 ){//check if the dimension of the segment is 4 and that there is only one segmentperChamber + + DTChamberId DTId = segment->chamberId(); int dtWheel = DTId.wheel(); int dtStation = DTId.station(); int dtSector = DTId.sector(); - - LocalPoint segmentPosition= segment->localPosition(); - LocalVector segmentDirection=segment->localDirection(); const GeomDet* gdet=dtGeo->idToDet(segment->geographicalId()); const BoundPlane & DTSurface = gdet->surface(); + + std::cout<<"\n\n-----------------++++++++++++++++++++++++++++++++++++Segment in Chamber id: Wh "<<dtWheel<<" St "<<dtStation<<" Se "<<dtSector<<std::endl; + std::cout<<"Number of segments for DT "<<segment->chamberId()<<" = "<<scounter[segment->chamberId()]<<std::endl; //Should print 1 + + std::set<RPCDetId> rls=rollstore[DTStationIndex(0,dtWheel,dtSector,dtStation)]; + + std::cout <<"\n----------------------------------- Inside the Rolls asociated for this Segment"<<std::endl; + + LocalPoint localPoint= segment->localPosition(); + LocalVector localDirection=segment->localDirection(); + std::cout<<"DT Segment Point in DTLocal "<<localPoint<<std::endl; + std::cout<<"DT Segment Direction in DTLocal "<<localDirection<<std::endl; + std::cout<<"DT Segment Dimension "<<segment->dimension()<<std::endl; //should be 4 + float Xo=localPoint.x(); + float Yo=localPoint.y(); + + float dx=localDirection.x(); + float dy=localDirection.y(); + float dz=localDirection.z(); - //check if the dimension of the segment is 4 - - if(segment->dimension()==4){ - Xo=segmentPosition.x(); - Yo=segmentPosition.y(); - dx=segmentDirection.x(); - dy=segmentDirection.y(); - dz=segmentDirection.z(); - //std::cout<<"\t \t Loop over all the rolls asociated to this DT"<<std::endl; - std::set<RPCDetId> rollsForThisDT = - rollstore[DTStationIndex(0,dtWheel,dtSector,dtStation)]; - //Loop over all the rolls - for (std::set<RPCDetId>::iterator iteraRoll = rollsForThisDT.begin();iteraRoll != rollsForThisDT.end(); iteraRoll++){ - const RPCRoll* rollasociated = rpcGeo->roll(*iteraRoll); - //To get the roll's surface - const BoundPlane & RPCSurface = rollasociated->surface(); - //std::cout<<"\t \t RollID: "<<rollasociated->id()<<std::endl; - //std::cout<<"\t \t Doing the extrapolation"<<std::endl; - //std::cout<<"\t \t DT Segment Direction in DTLocal "<<segmentDirection<<std::endl; - //std::cout<<"\t \t DT Segment Point in DTLocal "<<segmentPosition<<std::endl; - - GlobalPoint CenterPointRollGlobal = RPCSurface.toGlobal(LocalPoint(0,0,0)); - //std::cout<<"\t \t Center (0,0,0) of the Roll in Global"<<CenterPointRollGlobal<<std::endl; - - LocalPoint CenterRollinDTFrame = DTSurface.toLocal(CenterPointRollGlobal); - //std::cout<<"\t \t Center (0,0,0) Roll In DTLocal"<<CenterRollinDTFrame<<std::endl; - - float D=CenterRollinDTFrame.z(); - //std::cout<<"\t \t D="<<D<<"cm"<<std::endl; + for (std::set<RPCDetId>::iterator iteraRoll = rls.begin();iteraRoll != rls.end(); iteraRoll++){//Loop over all the rolls + + const RPCRoll* eroll=dynamic_cast<const RPCRoll*> (rpcGeo->idToDetUnit(*iteraRoll)); + const BoundPlane & RPCSurface = eroll->surface(); //To get the roll's surface + + std::cout<<"\n\n~~~~~~~!!!~~~~~"<<eroll->id()<<std::endl; + + + GlobalPoint CenterPointRollGlobal=RPCSurface.toGlobal(LocalPoint(0,0,0)); + //std::cout<<"Center (0,0,0) Roll in Global"<<CenterPointRollGlobal<<std::endl; + + LocalPoint CenterRollinDTFrame = DTSurface.toLocal(CenterPointRollGlobal); + //std::cout<<"Center (0,0,0) Roll In DTLocal"<<CenterRollinDTFrame<<std::endl; + + float D=CenterRollinDTFrame.z(); + //std::cout<<"D="<<D<<"cm"<<std::endl; + + + float X=Xo+dx*D/dz; + float Y=Yo+dy*D/dz; + float Z=D; + + const RectangularStripTopology* top_=dynamic_cast<const RectangularStripTopology*>(&(eroll->topology())); + LocalPoint xmin = top_->localPosition(0.); + LocalPoint xmax = top_->localPosition((float)eroll->nstrips()); + float rsize = fabs( xmax.x()-xmin.x() )*0.5; + float stripl = top_->stripLength(); + + //std::cout<<"X Predicted in DTLocal= "<<X<<"cm"<<std::endl; + //std::cout<<"Y Predicted in DTLocal= "<<Y<<"cm"<<std::endl; + //std::cout<<"Z Predicted in DTLocal= "<<Z<<"cm"<<std::endl; + + GlobalPoint GlobalPointExtrapolated = DTSurface.toGlobal(LocalPoint(X,Y,Z)); + std::cout<<"Point ExtraPolated in Global"<<GlobalPointExtrapolated<< std::endl; + + LocalPoint PointExtrapolatedRPCFrame = RPCSurface.toLocal(GlobalPointExtrapolated); + std::cout<<"Point Extrapolated in RPCLocal"<<PointExtrapolatedRPCFrame<< std::endl; + + if ( fabs(PointExtrapolatedRPCFrame.z()) < 0.01 && fabs(PointExtrapolatedRPCFrame.x()) < rsize && fabs(PointExtrapolatedRPCFrame.y()) < stripl*0.5){ + //conditions to find the right roll to extrapolate - X=Xo+dx*D/dz; - Y=Yo+dy*D/dz; - Z=D; + const float stripPredicted=eroll->strip(LocalPoint(PointExtrapolatedRPCFrame.x(),PointExtrapolatedRPCFrame.y(),0.)); //getting the number of the strip - const RectangularStripTopology* top_= dynamic_cast<const RectangularStripTopology*> (&(rollasociated->topology())); - LocalPoint xmin = top_->localPosition(0.); - LocalPoint xmax = top_->localPosition((float)rollasociated->nstrips()); - float rsize = fabs( xmax.x()-xmin.x() )*0.5; - float stripl = top_->stripLength(); - - //std::cout<<"\t \t X Predicted in DTLocal= "<<X<<"cm"<<std::endl; - //std::cout<<"\t \t Y Predicted in DTLocal= "<<Y<<"cm"<<std::endl; - //std::cout<<"\t \t Z Predicted in DTLocal= "<<Z<<"cm"<<std::endl; + std::cout<<"\nTHE ROLL THAT CONTAINS THE CANDIDATE STRIP IS "<<eroll->id()<<" "<<"(from data) STRIP---> "<<stripPredicted<< std::endl; - GlobalPoint GlobalPointExtrapolated = - DTSurface.toGlobal(LocalPoint(X,Y,Z)); - //std::cout<<"\t \t Point ExtraPolated in Global"<<GlobalPointExtrapolated<< std::endl; + //------------------------------- HISTOGRAM STRIP PREDICTED FROM DT ------------------- - LocalPoint PointExtrapolatedRPCFrame = - RPCSurface.toLocal(GlobalPointExtrapolated); - //std::cout<<"\t \t Point Extrapolated in RPCLocal"<<PointExtrapolatedRPCFrame<< std::endl; - //std::cout<<"\t \t Does the extrapolation go inside this roll?"<<std::endl; - //conditions to find the right roll to extrapolate + RPCDetId detId = eroll->id(); + id = detId.rawId(); + std::cout << "Found Chamber RB "<<detId.station()<<std::endl; - if(fabs(PointExtrapolatedRPCFrame.z()) < 0.01 && fabs(PointExtrapolatedRPCFrame.x()) < rsize && fabs(PointExtrapolatedRPCFrame.y()) < stripl*0.5){ - //std::cout<<"\t \t \t yes"<<std::endl; - //getting the number of the strip - const float stripPredicted = - rollasociated->strip(LocalPoint(PointExtrapolatedRPCFrame.x(),PointExtrapolatedRPCFrame.y(),0.)); - - //std::cout<<"\t \t \t Candidate"<<rollasociated->id()<<" "<<"(from DT Segment) STRIP---> "<<stripPredicted<< std::endl; - - //--------- HISTOGRAM STRIP PREDICTED FROM DT ------------------- - - RPCDetId rollId = rollasociated->id(); - uint32_t id = rollId.rawId(); - - _idList.push_back(id); - - char detUnitLabel[128]; - sprintf(detUnitLabel ,"%d",id); - sprintf(layerLabel ,"layer%d_subsector%d_roll%d",rollId.layer(),rollId.subsector(),rollId.roll()); - - std::map<uint32_t, std::map<std::string,MonitorElement*> >::iterator meItr = meCollection.find(id); - if (meItr == meCollection.end()){ - meCollection[id] = bookDetUnitMEEff(rollId); - //std::cout << "\t \t \t Create new histograms for "<<layerLabel<<std::endl; - } - - std::map<std::string, MonitorElement*> meMap=meCollection[id]; - sprintf(meIdDT,"ExpectedOccupancyFromDT_%s",detUnitLabel); - meMap[meIdDT]->Fill(stripPredicted); - //std::cout << "\t \t \t One for counterPREDICT"<<std::endl; - totalcounter[0]++; - buff=counter[0]; - buff[rollId]++; - counter[0]=buff; - //------------------------------------------------------------------- - - //std::cout<<"\t \t \t We have a Candidate let's see in the digis!"<<std::endl; - - bool anycoincidence=false; - int stripDetected = 0; - RPCDigiCollection::Range rpcRangeDigi=rpcDigis->get(rollasociated->id()); - - - for (RPCDigiCollection::const_iterator digiIt = rpcRangeDigi.first;digiIt!=rpcRangeDigi.second;++digiIt){//loop over the digis in the event - //std::cout<<"\t \t \t \t Digi "<<*digiIt<<std::endl;//print the digis in the event - stripDetected=digiIt->strip(); - //compare the strip Detected with the predicted - if(fabs((float)(stripDetected) - stripPredicted)<widestrip){ - //std::cout <<"\t \t \t \t COINCEDENCE Predict " - // <<stripPredicted<<" Detect " - // <<stripDetected<<std::endl; - anycoincidence=true; - break;//funciona solo para hacerlo mas rapido - //We can not divide two diferents things - } - } - if (anycoincidence) { - sprintf(meIdRPC,"RPCDataOccupancy_%s",detUnitLabel); - meMap[meIdRPC]->Fill(stripPredicted); - totalcounter[1]++; - buff=counter[1]; - buff[rollId]++; - counter[1]=buff; - } - else { - //std::cout <<"\t \t \t \t XXXXX THIS PREDICTION DOESN'T HAVE ANY CORRESPONDENCE WITH THE DATA"<<std::endl; - totalcounter[2]++; - buff=counter[2]; - buff[rollId]++; - counter[2]=buff; - //std::cout << "\t \t \t \t One for counterFAIL"<<std::endl; - //ofrej<<"Wh "<<dtWheel<<"\t St "<<dtStation - // <<"\t Se "<<dtSector<<"\t Event " - // <<iEvent.id().event()<<std::endl; - } + _idList.push_back(id); + sprintf(detUnitLabel ,"%d",id); + sprintf(layerLabel ,"layer%d_subsector%d_roll%d",detId.layer(),detId.subsector(),detId.roll()); + // meCollection[id] = bookDetUnitMEEff(detId); + std::map<uint32_t, std::map<std::string,MonitorElement*> >::iterator meItr = meCollection.find(id); + if (meItr == meCollection.end() || (meCollection.size()==0)){ + meCollection[id] = bookDetUnitMEEff(detId); + std::cout << "Create new histograms for "<<layerLabel<<std::endl; } - else { - //std::cout<<"\t \t \t no"<<std::endl; - }//Condition for the right match - }//loop over all the rolls + + // std::map<std::string, MonitorElement*> meMap=meCollection[id]; + meMap = meCollection[id]; + sprintf(meIdDT,"ExpectedOccupancyFromDT_%s",detUnitLabel); + meMap[meIdDT]->Fill(stripPredicted); +// bool goodStatistic = false; +// std::cout<<"Counter = "<<counter<<" "<<"ENTRIES HISTO = "<<((int)(meMap[meIdDT]->getEntries())/100)%100<<std::endl; - // dedicated RB4 analysis part, that misses DT 4D segments +// if(((int)(meMap[meIdDT]->getEntries())/100)%100 == 0){ +// goodStatistic = true; +// } + //------------------------------- HISTOGRAM STRIP DETECTED WITH RPC -------------------- + + bool anycoincidence=false; + int stripDetected = 0; + RPCDigiCollection::Range rpcRangeDigi=rpcDigis->get(eroll->id()); + + for (RPCDigiCollection::const_iterator digiIt = rpcRangeDigi.first;digiIt!=rpcRangeDigi.second;++digiIt){//loop over the digis in the event + std::cout<<" digi "<<*digiIt<<std::endl;//print the digis in the event + stripDetected=digiIt->strip(); + if(fabs((float)(stripDetected) - stripPredicted)<5.){//compare the strip Detected with the predicted + std::cout <<"************!!!!!!WE HAVE A COINCEDENCE!!!!!!******* Predicted "<<stripPredicted<<" Detected "<<stripDetected<<std::endl; + anycoincidence=true; + } + } + + if(anycoincidence==false){ + std::cout <<"THIS PREDICTION DOESN'T HAVE ANY CORRESPONDENCE WITH THE DATA"<<std::endl; + }else { + sprintf(meIdRPC,"RPCDataOccupancy_%s",detUnitLabel); + meMap[meIdRPC]->Fill(stripPredicted);//We can not divide two diferents things - }else if(segment->dimension()==2&&dtStation==4){ - - LocalVector segmentDirectionMB4=segmentDirection; - LocalPoint segmentPositionMB4=segmentPosition; - - //std::cout<<"\t \t 2D in RB4"<<DTId<<" with D="<<segment->dimension()<<localDirection<<segmentPositionMB4<<std::endl; - bool compatiblesegments=false; - Xo=segmentPositionMB4.x(); - dx=segmentDirectionMB4.x(); - dz=segmentDirectionMB4.z(); - //std::cout<<"\t \t Loop over all the segments"<<std::endl; - DTRecSegment4DCollection::const_iterator segMB3; - - const BoundPlane& DTSurface4 = dtGeo->idToDet(DTId)->surface(); - w4 = DTSurface4.bounds().thickness()*0.5; // along local Z - - for(segMB3=all4DSegments->begin();segMB3!=all4DSegments->end();++segMB3){ - DTChamberId dtid = segMB3->chamberId(); - if(dtid.station()==3){ - const GeomDet* gdet3=dtGeo->idToDet(segMB3->geographicalId()); - const BoundPlane & DTSurface3 = gdet3->surface(); - w3 = DTSurface3.bounds().thickness()*0.5; // along local Z - - dx3=segMB3->localDirection().x(); - dy3=segMB3->localDirection().y(); - dz3=segMB3->localDirection().z(); - - //LocalVector segDirMB4inMB3Frame=DTSurface3.toLocal(DTSurface4.toGlobal(segmentDirectionMB4)); - - if(fabs(dx-dx3)<=angle&&fabs(dz-dz3)<=angle){//same direction? - compatiblesegments=true; - }else{ - //They don't have the same local dir, and the segments in diferent sectors,compatibles with circle? - Xo3=segMB3->localPosition().x(); - Yo3=segMB3->localPosition().y(); - - //Do we have segments compatibles with a muon? - - // pos=seg.position() - // dir=seg.direction() - // dest =pos + dir*height*cos(dir.theta()) - - //std::cout<<"Ancho de MB3 w3="<<w3<<" |Ancho de MB4 w4= "<<w4<<std::endl; - //std::cout<<"Informacion Inicial MB4"<<segment->localDirection()<<" "<<segment->localPosition()<<std::endl; - //std::cout<<"Informacion Inicial MB3"<<segMB3->localDirection()<<" "<<segMB3->localPosition()<<std::endl; - compatiblesegments=false; - - //This in MB3 Local - - p1x=Xo3+dx3*w3/dz3; - p1z=w3; - - p2x=Xo3-dx3*w3/dz3; - p2z=-w3; - - //This in MB4 Local - - p3x=Xo+dx*w4/dz; - p3z=w4; - - p4x=Xo-dx*w4/dz; - p4z=-w4; - - LocalPoint P1=LocalPoint(p1x,0,p1z); - LocalPoint P2=LocalPoint(p2x,0,p2z); - LocalPoint P3=LocalPoint(p3x,0,p3z); - LocalPoint P4=LocalPoint(p4x,0,p4z); - - //std::cout<<"Points in MB3="<<P1<<" --- "<<P2<<std::endl; - //std::cout<<"Points in MB4="<<P3<<" --- "<<P4<<std::endl; - - //Now we have to convert to global - - LocalPoint P1g=P1; - LocalPoint P2g=P2; - - LocalPoint P3g=DTSurface3.toLocal(DTSurface.toGlobal(P3)); - LocalPoint P4g=DTSurface3.toLocal(DTSurface.toGlobal(P4)); - - //std::cout<<"Points in MB3 ="<<P1g<<" --- "<<P2g<<std::endl; - //std::cout<<"Points in MB4 in MB3Frame="<<P3g<<" --- "<<P4g<<std::endl; - - - float dx3g=P1g.x()-P2g.x(); - float dz3g=P1g.z()-P2g.z(); - - float dxg=P3g.x()-P4g.x(); - float dzg=P3g.z()-P4g.z(); - - //std::cout<<"dx3g="<<dx3g<<" dz3g="<<dz3g<<std::endl; - //std::cout<<"dxg="<<dxg<<" dzg="<<dzg<<std::endl; - - m3=-dx3g/dz3g; - m4=-dxg/dzg; - - x3=(P1g.x()+P2g.x())*0.5; - z3=(P1g.z()+P2g.z())*0.5; - - x4=(P3g.x()+P4g.x())*0.5; - z4=(P3g.z()+P4g.z())*0.5; - - b3=z3-m3*x3; - b4=z4-m4*x4; - - if(m3!=m4){ - xc=(b4-b3)/(m3-m4); - zc=m3*xc+b3; - - GlobalPoint Pc=GlobalPoint(xc,0,zc); - - //std::cout<<Pc<<std::endl; - - float distance=fabs((GlobalPoint(P2g.x(),0,P2g.z())-GlobalPoint(Pc.x(),0,Pc.z())).mag()-(GlobalPoint(P3g.x(),0,P3g.z())-GlobalPoint(Pc.x(),0,Pc.z())).mag()); - - if(distance<circError){ - compatiblesegments=true; - //std::cout<<"YES in the same circle... p2 a C="<<P1g<<P2g<<P3g<<P4g<<"Distancia "<<distance<<std::endl; - } - else{ - //std::cout<<"NOT in the same circle... p2 a C="<<P1g<<P2g<<P3g<<P4g<<"Distancia "<<distance<<std::endl; - compatiblesegments=false; - } - } - else{ - //std::cout<<"We have the same slope m3="<<m3<<" m4="<<m4<<std::endl; - if(fabs(b3-b4)<=circError){ - compatiblesegments=true; - //std::cout<<"and the segments are in a line"<<std::endl; - }else{std::cout<<"But we don't have the same intercept b3="<<b3<<" b4="<<b4<<std::endl;} - compatiblesegments=false; - system("sleep 30"); - } - } - - //conditions in MB3 - if(scounter[dtid]==1 && compatiblesegments){ - //std::cout<<"********\t \t \t In the same event there is a segment in RB3 "<<dtid<<" with D="<<segMB3->dimension()<<segMB3->localDirection()<<segMB3->localPosition()<<"scounter "<<scounter[dtid]<<std::endl; - - std::set<RPCDetId> rollsForThisDT = - rollstore[DTStationIndex(0,dtWheel,dtSector,dtStation)]; - //Loop over all the rolls asociated to RB4 - for (std::set<RPCDetId>::iterator iteraRoll=rollsForThisDT.begin();iteraRoll != rollsForThisDT.end(); iteraRoll++){ - const RPCRoll* rollasociated = rpcGeo->roll(*iteraRoll); - //To get the roll's surface - const BoundPlane & RPCSurfaceRB4 = rollasociated->surface(); - - const GeomDet* gdet=dtGeo->idToDet(segMB3->geographicalId()); - const BoundPlane & DTSurfaceMB3 = gdet->surface(); - - //std::cout<<"\t \t \t RollID: should be RB4"<<rollasociated->id()<<std::endl; - //std::cout<<"\t \t \t Making the extrapolation"<<std::endl; - //std::cout<<"\t \t \t DT Segment Direction in MB3 DTLocal "<<segMB3->localDirection()<<std::endl; - //std::cout<<"\t \t \t DT Segment Point in MB3 DTLocal "<<segMB3->localPosition()<<std::endl; - - GlobalPoint CenterPointRollGlobal=RPCSurfaceRB4.toGlobal(LocalPoint(0,0,0)); - //std::cout<<"\t \t \t Center (0,0,0) of the RB4 Roll in Global"<<CenterPointRollGlobal<<std::endl; - - LocalPoint CenterRollinDTFrame = DTSurfaceMB3.toLocal(CenterPointRollGlobal); - //std::cout<<"\t \t \t Center (0,0,0) Roll In DT MB3 Local"<<CenterRollinDTFrame<<std::endl; - - float D=CenterRollinDTFrame.z(); - //std::cout<<"\t \t \t D="<<D<<"cm"<<std::endl; - - X=Xo3+dx3*D/dz3; - Y=Yo3+dy3*D/dz3; - Z=D; - - const RectangularStripTopology* top_=dynamic_cast<const RectangularStripTopology*>(&(rollasociated->topology())); - LocalPoint xmin = top_->localPosition(0.); - LocalPoint xmax = top_->localPosition((float)rollasociated->nstrips()); - float rsize = fabs( xmax.x()-xmin.x() )*0.5; - float stripl = top_->stripLength(); - - //std::cout<<"\t \t \t X Predicted in DT MB3 Local= "<<X<<"cm"<<std::endl; - //std::cout<<"\t \t \t Y Predicted in DT MB3 Local= "<<Y<<"cm"<<std::endl; - //std::cout<<"\t \t \t Z Predicted in DT MB3 Local= "<<Z<<"cm"<<std::endl; - - GlobalPoint GlobalPointExtrapolated = DTSurfaceMB3.toGlobal(LocalPoint(X,Y,Z)); - //std::cout<<"\t \t \t Point ExtraPolated in Global"<<GlobalPointExtrapolated<< std::endl; - - LocalPoint PointExtrapolatedRPCFrame = RPCSurfaceRB4.toLocal(GlobalPointExtrapolated); - //std::cout<<"\t \t \t Point Extrapolated in RPC RB4 Local"<<PointExtrapolatedRPCFrame<< std::endl; - - //std::cout<<"\t \t \t Does the extrapolation go inside this roll?"<<std::endl; - //conditions to find the right roll to extrapolate - if(fabs(PointExtrapolatedRPCFrame.z()) < 0.01 && - fabs(PointExtrapolatedRPCFrame.x()) < rsize && - fabs(PointExtrapolatedRPCFrame.y()) < stripl*0.5){ - - //std::cout<<"\t \t \t \t yes"<<std::endl; - //getting the number of the strip - const float stripPredicted= - rollasociated->strip(LocalPoint(PointExtrapolatedRPCFrame.x(),PointExtrapolatedRPCFrame.y(),0.)); - - //std::cout<<"\t \t \t \t Candidate"<<rollasociated->id()<<" "<<"(from DT Segment) STRIP---> "<<stripPredicted<< std::endl; - - //--------- HISTOGRAM STRIP PREDICTED FROM DT ------------------- - - RPCDetId rollId = rollasociated->id(); - uint32_t id = rollId.rawId(); - - _idList.push_back(id); - - char detUnitLabel[128]; - sprintf(detUnitLabel ,"%d",id); - sprintf(layerLabel ,"layer%d_subsector%d_roll%d",rollId.layer(),rollId.subsector(),rollId.roll()); - - std::map<uint32_t, std::map<std::string,MonitorElement*> >::iterator meItr = meCollection.find(id); - if (meItr == meCollection.end()){ - meCollection[id] = bookDetUnitMEEff(rollId); - std::cout << "\t \t \t \t Create new histograms for "<<layerLabel<<std::endl; - } - - std::map<std::string, MonitorElement*> meMap=meCollection[id]; - sprintf(meIdDT,"ExpectedOccupancyFromDT_%s",detUnitLabel); - meMap[meIdDT]->Fill(stripPredicted); - //std::cout << "\t \t \t \t One for counterPREDICT"<<std::endl; - totalcounter[0]++; - buff=counter[0]; - buff[rollId]++; - counter[0]=buff; - - bool anycoincidence=false; - int stripDetected = 0; - RPCDigiCollection::Range rpcRangeDigi = - rpcDigis->get(rollasociated->id()); - - //loop over the digis in the event - for (RPCDigiCollection::const_iterator digiIt = rpcRangeDigi.first;digiIt!=rpcRangeDigi.second;++digiIt){ - //std::cout<<"\t \t \t \t \t Digi "<<*digiIt<<std::endl;//print the digis in the event - stripDetected=digiIt->strip(); - if(fabs((float)(stripDetected) - stripPredicted)<widestripsRB4){//Detected Vs Predicted - //std::cout <<"\t \t \t \t \t COINCEDENCE Predict "<<stripPredicted<<" Detect "<<stripDetected<<std::endl; - anycoincidence=true; - break;//funciona solo para hacerlo mas rapido - } - } - if (anycoincidence){ - sprintf(meIdRPC,"RPCDataOccupancy_%s",detUnitLabel); - meMap[meIdRPC]->Fill(stripPredicted); - totalcounter[1]++; - buff=counter[1]; - buff[rollId]++; - counter[1]=buff; - } - else{ - totalcounter[2]++; - buff=counter[2]; - buff[rollId]++; - counter[2]=buff; - //std::cout <<"\t \t \t \t \t XXXXX THIS PREDICTION DOESN'T HAVE ANY CORRESPONDENCE WITH THE DATA"<<std::endl; - //std::cout << "\t \t \t \t \t One for counterFAIL"<<std::endl; - //ofrej<<"Wh "<<dtWheel<<"\t St "<<dtStation - // <<"\t Se "<<dtSector<<"\t Event " - // <<iEvent.id().event()<<std::endl; - - } - } - else{ - //std::cout<<"\t \t \t \t no"<<std::endl; - }//Condition for the right match - - }//loop over all the rolls FOR RB3 ------------------------------- - }//Si tenemos solo un segmento en la chamber - }//Condition Segment in MB3 - }//Loop avoer all the segments to see if it is the right MB3 + } } - else{ - //std::cout<<"\t \t Strange Segment"<<std::endl; - }//Is not a 4D Segment neither a 2D in MB4 - } - else { - //std::cout<<"\t \t no"<<std::endl; - }//There is one segment in the chamber? - }//loop over the segments - }else { - //std::cout<<"This Event doesn't have any DT4DSegment"<<std::endl; - }//is ther more than 1 segment in this event? - + } + } + } + } } -void RPCMonitorEfficiency::endJob(void){ - std::map<RPCDetId, int> pred = counter[0]; - std::map<RPCDetId, int> obse = counter[1]; - std::map<RPCDetId, int> reje = counter[2]; - - std::map<RPCDetId, int>::iterator irpc; - for (irpc=pred.begin(); irpc!=pred.end();irpc++){ - RPCDetId id=irpc->first; - int p=pred[id]; - int o=obse[id]; - int r=reje[id]; - assert(p==o+r); - float ef = float(o)/float(p); - float er = sqrt(ef*(1.-ef)/float(p)); - std::cout <<"\n "<<id<<"\t Predicted "<<p<<"\t Observed "<<o<<"\t Eff = "<<ef*100.<<" % +/- "<<er*100.<<" %"; - if(ef<0.8){ - std::cout<<"\t \t Warning!"; - } - } - - float tote = float(totalcounter[1])/float(totalcounter[0]); - float totr = sqrt(tote*(1.-tote)/float(totalcounter[0])); - std::cout <<"\n\n \t \t TOTAL EFFICIENCY \t Predicted "<<totalcounter[1]<<"\t Observed "<<totalcounter[0]<<"\t Eff = "<<tote*100.<<"\t +/- \t"<<totr*100.<<"%"<<std::endl; - std::cout <<totalcounter[1]<<" "<<totalcounter[0]<<" flagcode"<<std::endl; +void RPCMonitorEfficiency::endJob(void) +{ - std::vector<uint32_t>::iterator meIt; for(meIt = _idList.begin(); meIt != _idList.end(); ++meIt){ @@ -647,25 +354,37 @@ void RPCMonitorEfficiency::endJob(void){ std::map<std::string, MonitorElement*> meMap=meCollection[*meIt]; - for(unsigned int i=1;i<=100;++i){ + for(unsigned int i = 1; i <= 100; ++i ){ if(meMap[meIdDT]->getBinContent(i) != 0){ float eff = meMap[meIdRPC]->getBinContent(i)/meMap[meIdDT]->getBinContent(i); float erreff = sqrt(eff*(1-eff)/meMap[meIdDT]->getBinContent(i)); - meMap[effIdRPC]->setBinContent(i,eff*100.); - meMap[effIdRPC]->setBinError(i,erreff*100.); + meMap[effIdRPC]->setBinContent(i,eff); + meMap[effIdRPC]->setBinError(i,erreff); + } } } + if(EffSaveRootFile) dbe->save(EffRootFileName); - // theFile->Write(); - // theile->Close(); - std::cout<<"End Job"<<std::endl; +// theFile->Write(); +// theFile->Close(); + std::cout<<"End Job"<<std::endl; } RPCMonitorEfficiency::~RPCMonitorEfficiency(){} +/*Para agregar despues para chequar que el strip que estamos precidienco tiene sentido! + //Division> to be placed in the appropriate place + //sprintf(meIdRPC,"RPCDataOccupancy_%s",detUnitLabel); + //sprintf(meIdDT,"ExpectedOccupancyFromDT_%s",detUnitLabel); + //sprintf(meId,"EfficienyFromDTExtrapolation_%s",detUnitLabel); + //meMap[meId]->Divide(meMap[meIdRPC], meMap[meIdDT]); + //else {std::cout <<"...... nothing to do in this roll!"<<std::endl;} + //std::cout<<"id: "<<eroll->id()<<" Number of strips "<<eroll->nstrips()<<std::endl; + +*/ diff --git a/DQM/RPCMonitorDigi/src/RPCMonitorSync.cc b/DQM/RPCMonitorDigi/src/RPCMonitorSync.cc deleted file mode 100644 index f3b9e2163d9..00000000000 --- a/DQM/RPCMonitorDigi/src/RPCMonitorSync.cc +++ /dev/null @@ -1,299 +0,0 @@ -/** \file - * - * implementation of RPCMonitorSync class - * - * $Date: 2006/10/20 13:42:20 $ - * $Revision: 0.1 $ - * - * \author Piotr Traczyk - */ - -#include <DQM/RPCMonitorDigi/interface/RPCMonitorSync.h> - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ServiceRegistry/interface/Service.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -// RPC Digi -#include "DataFormats/MuonDetId/interface/RPCDetId.h" -#include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" - -///Log messages -#include <FWCore/ServiceRegistry/interface/Service.h> -#include <FWCore/MessageLogger/interface/MessageLogger.h> - -#include <vector> -#include <ctime> - -using namespace std; -using namespace edm; - -// Detector overview historam booking routines - -MonitorElement *RPCMonitorSync::barrelOffsetHist( char *name, char *title ) { - char htit[128]; - sprintf(htit,"Synchronization offset - %s",title); - dbe->setCurrentFolder("Global"); - MonitorElement *hist = dbe->book2D(name,title,18,1,7,24,1,13); - return hist; -} - -MonitorElement *RPCMonitorSync::endcapOffsetHist( char *name, char *title ) { - char htit[128]; - sprintf(htit,"Synchronization offset - %s",title); - dbe->setCurrentFolder("Global"); - MonitorElement *hist = dbe->book2D(name,title,12,1,4,36,1,7); - return hist; -} - -MonitorElement *RPCMonitorSync::barrelWidthHist( char *name, char *title ) { - char htit[128]; - sprintf(htit,"Synchronization width - %s",title); - dbe->setCurrentFolder("Global"); - MonitorElement *hist = dbe->book2D(name,title,18,1,7,24,1,13); - return hist; -} - -MonitorElement *RPCMonitorSync::endcapWidthHist( char *name, char *title ) { - char htit[128]; - sprintf(htit,"Synchronization width - %s",title); - dbe->setCurrentFolder("Global"); - MonitorElement *hist = dbe->book2D(name,title,12,1,4,36,1,7); - return hist; -} - - -// Class constructor and destructor - -RPCMonitorSync::RPCMonitorSync( const edm::ParameterSet& pset ) -{ - counter=0; - - nameInLog = pset.getUntrackedParameter<std::string>("moduleLogName", "RPC_DQM"); - - saveRootFile = pset.getUntrackedParameter<bool>("SyncDQMSaveRootFile", false); - saveRootFileEventsInterval = pset.getUntrackedParameter<int>("SyncEventsInterval", 10000); - RootFileName = pset.getUntrackedParameter<std::string>("RootFileNameSync", "RPCMonitorSync.root"); - /// get hold of back-end interface - dbe = edm::Service<DaqMonitorBEInterface>().operator->(); - - edm::Service<MonitorDaemon> daemon; - daemon.operator->(); - - dbe->showDirStructure(); -} - -RPCMonitorSync::~RPCMonitorSync(){ - cout << "Destruct RPCMonitorSync..." << endl; -} - - -// Histogram for individual DetUnit - booking routine - -std::map<std::string, MonitorElement*> RPCMonitorSync::bookDetUnitME(RPCDetId & detId) { - - std::map<std::string, MonitorElement*> meMap; - std::string regionName; - std::string ringType; - - if(detId.region() == 0) { - regionName="Barrel"; - ringType="Wheel"; - } else { - ringType="Disk"; - if(detId.region() == -1) regionName="Encap-"; - if(detId.region() == 1) regionName="Encap+"; - } - - char folder[120]; - sprintf(folder,"%s/%s_%d/station_%d/sector_%d",regionName.c_str(),ringType.c_str(), - detId.ring(),detId.station(),detId.sector()); - - dbe->setCurrentFolder(folder); - - // Name components common to current RPDDetId - char detUnitLabel[128]; - char layerLabel[128]; - sprintf(detUnitLabel ,"%d",detId()); - sprintf(layerLabel ,"layer%d_subsector%d_roll%d",detId.layer(),detId.subsector(),detId.roll()); - - char meId [128]; - char meTitle [128]; - - sprintf(meId,"Sync_%s",detUnitLabel); - sprintf(meTitle,"Sychronization_for_%s",layerLabel); - meMap[meId] = dbe->book1D(meId, meTitle, 9, -4.5, 4.5); - - return meMap; -} - - -// Fill histograms and save data - -void RPCMonitorSync::endJob(void) -{ - int station_map[8]={1,2,3,4,5,0,6,0}; // map RPC layer numbers to histogram bins - - MonitorElement *hOffsetMBp1 = barrelOffsetHist("hOffsetMBp1","Barrell Wheel +1"); - MonitorElement *hOffsetMBp2 = barrelOffsetHist("hOffsetMBp2","Barrell Wheel +2"); - MonitorElement *hOffsetMB0 = barrelOffsetHist("hOffsetMB0" ,"Barrell Wheel 0"); - MonitorElement *hOffsetMBm1 = barrelOffsetHist("hOffsetMBm1","Barrell Wheel -1"); - MonitorElement *hOffsetMBm2 = barrelOffsetHist("hOffsetMBm2","Barrell Wheel -2"); - MonitorElement *hOffsetMEp1 = endcapOffsetHist("hOffsetMEp1","Endcap Disk +1"); - MonitorElement *hOffsetMEp2 = endcapOffsetHist("hOffsetMEp2","Endcap Disk +2"); - MonitorElement *hOffsetMEp3 = endcapOffsetHist("hOffsetMEp3","Endcap Disk +3"); - MonitorElement *hOffsetMEm1 = endcapOffsetHist("hOffsetMEm1","Endcap Disk -1"); - MonitorElement *hOffsetMEm2 = endcapOffsetHist("hOffsetMEm2","Endcap Disk -2"); - MonitorElement *hOffsetMEm3 = endcapOffsetHist("hOffsetMEm3","Endcap Disk -3"); - - MonitorElement *hWidthMBp1 = barrelWidthHist("hWidthMBp1","Barrell Wheel +1"); - MonitorElement *hWidthMBp2 = barrelWidthHist("hWidthMBp2","Barrell Wheel +2"); - MonitorElement *hWidthMB0 = barrelWidthHist("hWidthMB0" ,"Barrell Wheel 0"); - MonitorElement *hWidthMBm1 = barrelWidthHist("hWidthMBm1","Barrell Wheel -1"); - MonitorElement *hWidthMBm2 = barrelWidthHist("hWidthMBm2","Barrell Wheel -2"); - MonitorElement *hWidthMEp1 = endcapWidthHist("hWidthMEp1","Endcap Disk +1"); - MonitorElement *hWidthMEp2 = endcapWidthHist("hWidthMEp2","Endcap Disk +2"); - MonitorElement *hWidthMEp3 = endcapWidthHist("hWidthMEp3","Endcap Disk +3"); - MonitorElement *hWidthMEm1 = endcapWidthHist("hWidthMEm1","Endcap Disk -1"); - MonitorElement *hWidthMEm2 = endcapWidthHist("hWidthMEm2","Endcap Disk -2"); - MonitorElement *hWidthMEm3 = endcapWidthHist("hWidthMEm3","Endcap Disk -3"); - - map <uint32_t,timing>::const_iterator ci; - float offset,width; - float xf=0,yf=0; - - for(ci=synchroMap.begin();ci!=synchroMap.end();ci++){ - uint32_t id = ci->first; - RPCDetId detId(id); - - offset = ci->second.offset(); - width = ci->second.width(); - - RPCDetId *tempDetId=new RPCDetId(ci->first); - - cout << "id: " << ci->first << " " << *tempDetId << " offset: " << offset - << " width: " << width << endl; - - if( detId.region()==0 ) { - // Fill barrel histogram - xf=station_map[detId.station()*2+detId.layer()-3]+((float)(detId.roll()-0.5)/3.); - yf=detId.sector()+((float)(detId.subsector()-0.5)/2.); - if ((detId.sector()==4) && (detId.station()==4)) - yf=detId.sector()+((float)(detId.subsector()-0.5)/4.); - - if (detId.ring()==1) hOffsetMBp1->Fill(xf,yf,offset); - if (detId.ring()==2) hOffsetMBp2->Fill(xf,yf,offset); - if (detId.ring()==-1) hOffsetMBm1->Fill(xf,yf,offset); - if (detId.ring()==-2) hOffsetMBm2->Fill(xf,yf,offset); - if (detId.ring()==0) hOffsetMB0->Fill(xf,yf,offset); - if (detId.ring()==1) hWidthMBp1->Fill(xf,yf,width); - if (detId.ring()==2) hWidthMBp2->Fill(xf,yf,width); - if (detId.ring()==-1) hWidthMBm1->Fill(xf,yf,width); - if (detId.ring()==-2) hWidthMBm2->Fill(xf,yf,width); - if (detId.ring()==0) hWidthMB0->Fill(xf,yf,width); - } else { - // Fill endcap histogram - xf=detId.ring() +((float)(detId.roll()-0.5)/4.); - yf=detId.sector()+((float)(detId.subsector()-0.5)/6.); - - if (detId.region()==1) { - if (detId.station()==1) hOffsetMEp1->Fill(xf,yf,offset); - if (detId.station()==2) hOffsetMEp2->Fill(xf,yf,offset); - if (detId.station()==3) hOffsetMEp3->Fill(xf,yf,offset); - if (detId.station()==1) hWidthMEp1->Fill(xf,yf,width); - if (detId.station()==2) hWidthMEp2->Fill(xf,yf,width); - if (detId.station()==3) hWidthMEp3->Fill(xf,yf,width); - } - if (detId.region()==-1) { - if (detId.station()==1) hOffsetMEm1->Fill(xf,yf,offset); - if (detId.station()==2) hOffsetMEm2->Fill(xf,yf,offset); - if (detId.station()==3) hOffsetMEm3->Fill(xf,yf,offset); - if (detId.station()==1) hWidthMEm1->Fill(xf,yf,width); - if (detId.station()==2) hWidthMEm2->Fill(xf,yf,width); - if (detId.station()==3) hWidthMEm3->Fill(xf,yf,width); - } - } // end histogram filling - -// cout << "xf= "<<xf<<" yf= "<<yf<<endl; - - } // end loop over synchroMap - - if(saveRootFile) - dbe->save(RootFileName); - -} - - -// Loop over Digis and read synchronization information - -void RPCMonitorSync::readRPCDAQStrips(const edm::Event& iEvent) { - - timing aTiming; - aTiming.inTime = 0; - for (int i=0;i<4;i++) { - aTiming.early_all[i] = 0; - aTiming.late_all[i] = 0; - } - - char detUnitLabel[128]; - char layerLabel[128]; - char meId [128]; - - edm::Handle<RPCDigiCollection> rpcDigis; -// LogInfo (nameInLog) << " RPC Digis: " << rpcDigis->size() << endl; - iEvent.getByType(rpcDigis); - RPCDigiCollection::DigiRangeIterator rpcDigiCI; - for(rpcDigiCI = rpcDigis->begin();rpcDigiCI!=rpcDigis->end();rpcDigiCI++){ - cout << (*rpcDigiCI).first << endl; - RPCDetId detId=(*rpcDigiCI).first; - uint32_t id=detId(); - - sprintf(detUnitLabel ,"%d",detId()); - sprintf(layerLabel ,"layer%d_subsector%d_roll%d",detId.layer(),detId.subsector(),detId.roll()); - - std::map<uint32_t, std::map<std::string,MonitorElement*> >::iterator meItr = meCollection.find(id); - if (meItr == meCollection.end() || (meCollection.size()==0)) { - meCollection[id]=bookDetUnitME(detId); - } - std::map<std::string, MonitorElement*> meMap=meCollection[id]; - - if(synchroMap.find(id)==synchroMap.end()) { - synchroMap[id] = aTiming; - } - const RPCDigiCollection::Range& range = (*rpcDigiCI).second; - int aBX=4; - for (RPCDigiCollection::const_iterator digiIt = range.first; digiIt!=range.second; ++digiIt){ - if( digiIt->bx()<aBX) aBX=digiIt->bx(); - } - if (abs(aBX)<4) { - if(aBX<0) synchroMap[id].early_all[-aBX]++; - if(aBX==0) synchroMap[id].inTime++; - if(aBX>0) synchroMap[id].late_all[aBX]++; - } - sprintf(meId,"Sync_%s",detUnitLabel); - meMap[meId]->Fill(aBX); - } - if((!(counter%saveRootFileEventsInterval))&&(saveRootFile) ) dbe->save(RootFileName); -} - - -// Process event - -void RPCMonitorSync::analyze( const edm::Event& iEvent, const edm::EventSetup& iSetup ) { - - LogInfo (nameInLog) << "Beginning analyzing event " << counter++; - cout << "=== RPCMonitorSync" << endl; - cout << "--- Run: " << iEvent.id().run() - << " Event: " << iEvent.id().event() - << " time: "<<iEvent.time().value(); - time_t aTime = iEvent.time().value(); - cout<<" "<<ctime(&aTime)<<endl; - - readRPCDAQStrips(iEvent); - - return; -} diff --git a/DQM/RPCMonitorDigi/src/SealModule.cc b/DQM/RPCMonitorDigi/src/SealModule.cc index ddb87306116..aea6c3938ff 100644 --- a/DQM/RPCMonitorDigi/src/SealModule.cc +++ b/DQM/RPCMonitorDigi/src/SealModule.cc @@ -1,10 +1,8 @@ #include "DQM/RPCMonitorDigi/interface/RPCMonitorDigi.h" -#include "DQM/RPCMonitorDigi/interface/RPCMonitorSync.h" #include "DQM/RPCMonitorDigi/interface/RPCMonitorEfficiency.h" #include "PluginManager/ModuleDef.h" #include "FWCore/Framework/interface/MakerMacros.h" DEFINE_SEAL_MODULE(); DEFINE_ANOTHER_FWK_MODULE(RPCMonitorDigi); -DEFINE_ANOTHER_FWK_MODULE(RPCMonitorSync); DEFINE_ANOTHER_FWK_MODULE(RPCMonitorEfficiency); diff --git a/DQM/SiPixelCommon/doc/html/index.html b/DQM/SiPixelCommon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelCommon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelCommon/doc/html/overview.html b/DQM/SiPixelCommon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelCommon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelHistoricInfoClient/doc/html/index.html b/DQM/SiPixelHistoricInfoClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelHistoricInfoClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelHistoricInfoClient/doc/html/overview.html b/DQM/SiPixelHistoricInfoClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelHistoricInfoClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorClient/BuildFile b/DQM/SiPixelMonitorClient/BuildFile deleted file mode 100644 index 8a38347f0ed..00000000000 --- a/DQM/SiPixelMonitorClient/BuildFile +++ /dev/null @@ -1,14 +0,0 @@ - -<use name=FWCore/MessageLogger> -<use name=DQMServices/Components> -<use name=DQMServices/WebComponents> -<use name=DQMServices/ClientConfig> -<use name=boost> -<export> -<lib name=DQMSiPixelMonitorClient> -<use name=FWCore/MessageLogger> -<use name=DQMServices/Components> -<use name=DQMServices/WebComponents> -<use name=DQMServices/ClientConfig> -<use name=boost> -</export> diff --git a/DQM/SiPixelMonitorClient/doc/html/index.html b/DQM/SiPixelMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorClient/doc/html/overview.html b/DQM/SiPixelMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h b/DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h deleted file mode 100644 index 3185dbbc935..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _SiPixelActionExecutor_h_ -#define _SiPixelActionExecutor_h_ - -#include "DQMServices/UI/interface/MonitorUIRoot.h" -#include "DQMServices/Core/interface/MonitorElement.h" -//#include "DQMServices/Examples/interface/SiStripConfigParser.h" -//#include "DQMServices/Examples/interface/SiStripConfigWriter.h" -#include <fstream> -#include <map> -#include <vector> -#include <string> - -class SiPixelActionExecutor { - - public: - typedef std::map<int,std::vector <std::pair <int,float> > > DetMapType; - - SiPixelActionExecutor(); - ~SiPixelActionExecutor(); - - void createSummary(MonitorUserInterface* mui); - -// void setupQTests(MonitorUserInterface * mui); -// void checkQTestResults(MonitorUserInterface * mui); - void createCollation(MonitorUserInterface * mui); - void createTkMap(MonitorUserInterface* mui); - bool readConfiguration(int& tkmap_freq, int& sum_freq); - void readConfiguration(); - void createLayout(MonitorUserInterface * mui); - void fillLayout(MonitorUserInterface * mui); - - private: - MonitorElement* getSummaryME(MonitorUserInterface* mui, std::string me_name); - void getValuesForTkMap(MonitorUserInterface* mui, - std::vector<std::string> me_names, SiPixelActionExecutor::DetMapType& values); - void fillSummary(MonitorUserInterface* mui, std::string dir_name, - std::vector<std::string>& me_names); - void drawMEs(int idet, std::vector<MonitorElement*>& mon_elements, - std::vector<std::pair <int, float> > & values); - -// SiPixelConfigParser* configParser_; -// SiPixelConfigWriter* configWriter_; -}; -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h b/DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h deleted file mode 100644 index 13a44a8d7f8..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef SiPixelConfigParser_H -#define SiPixelConfigParser_H - -/** \class SiPixelConfigParser - * * - * Class that handles the SiPixel Quality Tests - * - * $Date: 2006/10/16 18:14:27 $ - * $Revision: 0.0 $ - * \author Petra Merkel - */ - -#include "DQMServices/ClientConfig/interface/DQMParserBase.h" -#include <vector> -#include <fstream> -#include <string> -#include <map> - - -class SiPixelConfigParser : public DQMParserBase { - - public: - - - // Constructor - SiPixelConfigParser(); - - // Destructor - ~SiPixelConfigParser(); - - // get List of MEs for TrackerMap - bool getMENamesForTrackerMap(std::string& tkmap_name,std::vector<std::string>& me_names); - bool getMENamesForSummary(std::string &structure_name, std::vector<std::string>& me_names); - bool getFrequencyForTrackerMap(int& u_freq); - bool getFrequencyForSummary(int& u_freq); - - private: - -}; - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h b/DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h deleted file mode 100644 index e217e889f13..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef SiPixelConfigWriter_H -#define SiPixelConfigWriter_H - -/** \class SiPixelConfigWriter - * * - * Base class for Parsers used by DQM - * - * - * $Date: 2006/10/16 18:14:27 $ - * $Revision: 0.0 $ - * \author Petra Merkel - */ -#include <xercesc/util/PlatformUtils.hpp> -#include <xercesc/framework/StdOutFormatTarget.hpp> -#include <xercesc/framework/LocalFileFormatTarget.hpp> - -#include <xercesc/util/XMLString.hpp> -#include <xercesc/dom/DOMException.hpp> -#include <xercesc/dom/DOMImplementation.hpp> -#include <xercesc/dom/DOM.hpp> - - - -//using namespace xercesc; - -#include<iostream> -#include<string> -#include<vector> -#include<map> - - - - -class SiPixelConfigWriter{ - - public: - ///Creator - SiPixelConfigWriter(); - ///Destructor - ~SiPixelConfigWriter(); - ///Write XML file - bool init(); - void write(std::string& fname); - void createLayout(std::string& name); - void createRow(); - void createColumn(std::string& element, std::string& name); - - protected: - - - - private: - - xercesc::DOMElement* theTopElement; - xercesc::DOMElement* lastLayout; - xercesc::DOMElement* lastRow; - xercesc::DOMDocument* theDoc ; - xercesc::DOMImplementation* domImpl; - xercesc::DOMWriter* domWriter; - -}; - - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h b/DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h deleted file mode 100644 index 641af294fa1..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef _SiPixelInformationExtractor_h_ -#define _SiPixelInformationExtractor_h_ - -#include "DQMServices/UI/interface/MonitorUIRoot.h" -#include "DQMServices/Core/interface/MonitorElement.h" - - -#include "xgi/include/xgi/Utils.h" -#include "xgi/include/xgi/Method.h" - -#include "TCanvas.h" - -#include <fstream> -#include <sstream> -#include <map> -#include <vector> -#include <string> -#include <map> - -class SiPixelInformationExtractor { - - public: - - SiPixelInformationExtractor(); - ~SiPixelInformationExtractor(); - - void readModuleAndHistoList(MonitorUserInterface* mui,xgi::Output * out); - void plotSingleModuleHistos(MonitorUserInterface * mui, - std::multimap<std::string, std::string>& req_map); - void plotSummaryHistos(MonitorUserInterface * mui, - std::multimap<std::string, std::string>& req_map); - const std::ostringstream& getImage() const; - void readSummaryHistoList(MonitorUserInterface* mui, - std::string& str_name, xgi::Output * out); - - private: - - void fillModuleAndHistoList(MonitorUserInterface * mui, - std::vector<std::string>& modules, std::vector<std::string>& histos); - void selectSingleModuleHistos(MonitorUserInterface * mui, std::string mid, - std::vector<std::string>& names, std::vector<MonitorElement*>& mes); - void selectSummaryHistos(MonitorUserInterface * mui, std::string str_name, - std::vector<std::string>& names, std::vector<MonitorElement*>& mes); - void getItemList(std::multimap<std::string, std::string>& req_map, - std::string item_name, std::vector<std::string>& items); - bool hasItem(std::multimap<std::string, std::string>& req_map, - std::string item_name); - std::string getItemValue(std::multimap<std::string, std::string>& req_map, - std::string item_name); - void fillImageBuffer(TCanvas& c1); - void fillSummaryHistoList(MonitorUserInterface * mui, - std::string& str_name, std::vector<std::string>& histos); - void plotHistos(std::multimap<std::string, std::string>& req_map, - std::vector<MonitorElement*> me_list); - - std::ostringstream pictureBuffer_; -}; -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h b/DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h deleted file mode 100644 index 8bee4b240e4..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef SiPixelQualityTester_H -#define SiPixelQualityTester_H - -/** \class SiPixelQualityTester - * * - * Class that handles the SiPixel Quality Tests - * - * $Date: 2006/10/16 18:14:27 $ - * $Revision: 0.0 $ - * \author Petra Merkel - */ - -#include "DQMServices/UI/interface/MonitorUIRoot.h" -#include "DQMServices/ClientConfig/interface/QTestConfigurationParser.h" -#include <vector> -#include <fstream> -#include <string> -#include <map> - - -class SiPixelQualityTester -{ - public: - - typedef std::map<std::string, std::map<std::string, std::string> > QTestMapType; - typedef std::map<std::string, std::vector<std::string> > MEAssotiateMapType; - - - // Constructor - SiPixelQualityTester(); - - // Destructor - ~SiPixelQualityTester(); - - // Set up Quality Tests - void setupQTests(MonitorUserInterface * mui) ; - - // Read up Quality Test Parameters from text file - void readQualityTests(std::string fname) ; - - // Attaches Quality Tests to ME's - void attachTests(MonitorUserInterface * mui); - - // Configures Test of type ContentsXRangeROOT - void setXRangeTest(MonitorUserInterface * mui, std::string name, - std::map<std::string, std::string>& params); - - // Configures Test of type MeanWithinExpectedROOT - void setMeanWithinExpectedTest(MonitorUserInterface * mui, std::string name, - std::map<std::string, std::string>& params); - - int getMEsUnderTest(std::vector<std::string> & me_names); - private: - QTestMapType theQTestMap; - MEAssotiateMapType theMeAssociateMap; -}; - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelUtility.h b/DQM/SiPixelMonitorClient/interface/SiPixelUtility.h deleted file mode 100644 index e5d8ea57ea0..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelUtility.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef SiPixelUtility_H -#define SiPixelUtility_H - -/** \class SiPixelUtility - * * - * Class that handles the SiPixel Quality Tests - * - * $Date: 2006/10/16 18:14:27 $ - * $Revision: 0 $ - * \author Petra Merkel - */ - -#include <vector> -#include <fstream> -#include <string> -#include <map> - -class SiPixelUtility -{ - public: - - static int getMEList(std::string name, std::vector<std::string>& values); - static bool checkME(std::string element, std::string name, std::string& full_path); - static int getMEList(std::string name, std::string& dir_path, std::vector<std::string>& me_names); - - static void split(const std::string& str, std::vector<std::string>& tokens, - const std::string& delimiters=" "); -}; - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h b/DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h deleted file mode 100644 index 9ca9cf8c715..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef _DQM_SiPixelMonitorClient_SiPixelWebClient_h_ -#define _DQM_SiPixelMonitorClient_SiPixelWebClient_h_ - -/* - This class is the SiPixel client with a web interface. - Such clients inherit the state machine from the DQMBaseClient class - of Components. From the UpdateObserver class of Components, they - inherit the ability to define a function that gets automatically - called when an update is received. -*/ - -#include "DQMServices/Components/interface/DQMBaseClient.h" -#include "DQMServices/Components/interface/Updater.h" -#include "DQMServices/Components/interface/UpdateObserver.h" - -#include "DQMServices/Core/interface/MonitorUserInterface.h" - -#include "DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h" - -#include <vector> -#include <string> -#include <iostream> - - -class SiPixelWebClient : public DQMBaseClient, - public dqm::UpdateObserver -{ -public: - - // You always need to have this line! Do not remove: - XDAQ_INSTANTIATOR(); - - // The class constructor: - SiPixelWebClient(xdaq::ApplicationStub *s); - - // implement the method that outputs the page with the widgets (declared in DQMBaseClient): - void general(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception); - - // the method which answers all HTTP requests of the form ".../Request?RequestID=..." - void handleWebRequest(xgi::Input * in, xgi::Output * out); - - // this obligatory method is called whenever the client enters the "Configured" state: - void configure(); - - // this obligatory method is called whenever the client enters the "Enabled" state: - void newRun(); - - // this obligatory method is called whenever the client enters the "Halted" state: - void endRun(); - - // this obligatory method is called by the Updater component, whenever there is an update - void onUpdate() const; - - -public: - - // this client has a web interface: - SiPixelWebInterface * webInterface_p; - -private: - - void checkCustomRequests() const; - void setupQTest() const; - - int updateFrequencyForTrackerMap_; - int updateFrequencyForSummary_; -}; - -// You always need to have this line! Do not remove: -XDAQ_INSTANTIATOR_IMPL(SiPixelWebClient) - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h b/DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h deleted file mode 100644 index e1610acc294..00000000000 --- a/DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef _DQM_SiPixelMonitorClient_SiPixelWebInterface_h_ -#define _DQM_SiPixelMonitorClient_SiPixelWebInterface_h_ - -/* - This class is an example web interface that can be instantiated in a DQM client. - Such web interfaces inherit the ability to react to widget requests from the - WebInterface class of WebComponents. -*/ - -#include "DQMServices/WebComponents/interface/WebInterface.h" -#include "DQMServices/WebComponents/interface/WebElement.h" -#include "DQMServices/WebComponents/interface/WebPage.h" -#include "DQMServices/Core/interface/MonitorElement.h" -class SiPixelActionExecutor; - -class SiPixelWebInterface : public WebInterface -{ - -public: - - enum SiPixelActionType{NoAction=0, SubscribeAll=1, Summary=2, Collate=3, - QTestResult=4, PersistantTkMap=5, - TemporaryTkMap=6, SaveData=7}; - - SiPixelWebInterface(std::string theContextURL, std::string theApplicationURL, MonitorUserInterface ** _mui_p); - ~SiPixelWebInterface(); - - /* - you need to implement this function if you have widgets that invoke custom-made - methods defined in your client - */ - void handleCustomRequest(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception); - void readSelectedRequest(xgi::Input * in, xgi::Output * out, std::string& choice) throw (xgi::exception::Exception); - void createAll(); - - void configureCustomRequest(xgi::Input * in, xgi::Output * out) throw (xgi::exception::Exception); - void performAction(); - void readConfiguration(int& freq_tkmap, int& freq_sum); - void setupQTests(); - - SiPixelActionType getActionFlag() {return theActionFlag;} - void setActionFlag(SiPixelActionType flag) {theActionFlag = flag;} - -private: - SiPixelActionType theActionFlag; - SiPixelActionExecutor* actionExecutor_; - - std::vector<std::string> tkMapOptions_; - -protected: - -}; - -#endif diff --git a/DQM/SiPixelMonitorClient/interface/TmModule.h b/DQM/SiPixelMonitorClient/interface/TmModule.h deleted file mode 100644 index 82385a4f7a3..00000000000 --- a/DQM/SiPixelMonitorClient/interface/TmModule.h +++ /dev/null @@ -1,40 +0,0 @@ -#include <map> -#include <string> -using namespace std; - - -class TmModule { - public: - TmModule(int idc, int iring, int ilayer); - virtual ~TmModule(); - float posx, posy, posz; - float length, width, thickness, widthAtHalfLength; - int red,green,blue; - float value; - int count; - string text; - string name; - int histNumber; - int getId(){return idModule; } - int getKey(){return layer*100000+ring*1000+idModule; } - bool notInUse(){return notused;} - void setUsed(){notused=false;} - int idModule; - int ring; - int layer; - unsigned int idex; - bool notused; -}; - -class SvgModuleMap { - public: - static map<const int , TmModule *> smoduleMap; - }; - - -class IdModuleMap { - public: - static map<const int , TmModule *> imoduleMap; - }; - - diff --git a/DQM/SiPixelMonitorClient/interface/TrackerMap.h b/DQM/SiPixelMonitorClient/interface/TrackerMap.h deleted file mode 100644 index 394d172b4e8..00000000000 --- a/DQM/SiPixelMonitorClient/interface/TrackerMap.h +++ /dev/null @@ -1,237 +0,0 @@ -#include <string> -#include <iostream> -#include <fstream> -#include <sstream> - -class TmModule; -class EventSetup; -using namespace std; - -class TrackerMap { - public: - TrackerMap(){TrackerMap(" ");}; //!< default constructor - TrackerMap(string s); - ~TrackerMap(); //!< default destructor - - void build(); - void drawModule(TmModule * mod, int key, int layer, bool total); - void print(bool print_total=true,float minval=0., float maxval=0.); - void fill_current_val(int idmod, float current_val ); - void fill(int layer , int ring, int nmod, float x ); - void fill(int idmod, float qty ); - void fillc(int idmod, int red, int green, int blue); - void fillc(int layer,int ring, int nmod, int red, int green, int blue); - void setText(int idmod , string s ); - void setText(int layer, int ring, int nmod , string s ); - - int ndet; //number of detectors - int npart; //number of detectors parts - string title; - double phival(double x, double y){ - double phi; - double phi1=atan(y/x); - phi = phi1; - if(y<0. && x>0) phi = phi1+2.*M_PI; - if(x<0.)phi=phi1+M_PI; - if(fabs(y)<0.000001 && x>0)phi=0; - if(fabs(y)<0.000001&&x<0)phi=M_PI; - if(fabs(x)<0.000001&&y>0)phi=M_PI/2.; - if(fabs(x)<0.000001&&y<0)phi=3.*M_PI/2.; - - return phi; - } - - int getlayerCount(int subdet, int partdet){ - int ncomponent=0; - if(subdet == 1){ //1=pixel - if(partdet == 1 || partdet == 3){ //1-3=encap - ncomponent = 3; - } - else { ncomponent = 3; } //barrel - } - if(subdet== 2){ //2=inner silicon - if(partdet == 1 || partdet == 3){ //1-3=encap - ncomponent = 3; - } - else { ncomponent = 4; } //barrel - } - if(subdet== 3){ //3=outer silicon - if(partdet == 1 || partdet == 3){ //1-3=encap - ncomponent = 9; - } - else { ncomponent = 6; } //barrel - } - return(ncomponent); - } - double xdpixel(double x){ - double res; - res= ((x-xmin)/(xmax-xmin)*xsize)+ix; - return res; - } - double ydpixel(double y){ - double res; - double y1; - y1 = (y-ymin)/(ymax-ymin); - if(nlay>30) res= 2*ysize - (y1*2*ysize)+iy; - else res= ysize - (y1*ysize)+iy; - return res; - } - -void defwindow(int nlay){ - if(posrel){ // separated modules - xmin=-2.;ymin=-2.;xmax=2.;ymax=2.; - if(nlay >12 && nlay < 19){ - xmin=-.40;xmax=.40;ymin=-.40;ymax=.40; - } - if(nlay>30){ - xmin=-0.1;xmax=3.;ymin=-0.1;ymax=8.5; - if(nlay<34){xmin=-0.3;xmax=1.0;} - if(nlay>33&&nlay<38){xmax=2.0;} - if(nlay>37){ymax=8.;}//inner - } - }else{ //overlayed modules - xmin=-1.3;ymin=-1.3;xmax=1.3;ymax=1.3; - if(nlay >12 && nlay < 19){ - xmin=-.20;xmax=.20;ymin=-.20;ymax=.20; - } - if(nlay>30){ - xmin=-1.5;xmax=1.5;ymin=-1.;ymax=28.; - if(nlay<34){xmin=-0.5;xmax=0.5;} - if(nlay>33&&nlay<38){xmin=-1.;xmax=1.;} - } - - } - if(nlay<16){ - ix=0;iy=(15-nlay)*ysize;} - if(nlay>15&&nlay<31){ - ix=3*xsize;iy=(nlay-16)*ysize;} - if(nlay>30){ - if(nlay==31){ix=(int)(1.5*xsize);iy=0;} - if(nlay>31 && nlay%2==0){int il=(nlay-30)/2;ix=xsize;iy=il*2*ysize;} - if(nlay>31 && nlay%2!=0){int il=(nlay-30)/2;ix=2*xsize;iy=il*2*ysize;} - } - } - - int getringCount(int subdet, int partdet, int layer){ - int ncomponent=0; - if(subdet== 1){ //1=pixel - if(partdet== 1 || partdet== 3){ //end-cap - ncomponent = 7; - } - else{ncomponent = 8;} //barrel - } - if(subdet== 2){ //inner-silicon - if(partdet== 1 || partdet== 3){ //end-cap - ncomponent = 3; - } - else{ncomponent = 12;} //barrel - } - if(subdet== 3){ //outer-silicon - if(partdet== 1){ //end-cap-z - if (layer== 1) ncomponent = 4; - if (layer== 2 || layer== 3) ncomponent = 5; - if (layer== 4 || layer== 5 || layer== 6) ncomponent = 6; - if (layer== 7 || layer== 8 || layer== 9) ncomponent = 7; - } - if(partdet== 3){ //endcap+z - if (layer== 9) ncomponent = 4; - if (layer== 8 || layer== 7) ncomponent = 5; - if (layer== 6 || layer== 5 || layer== 4) ncomponent = 6; - if (layer== 3 || layer== 2 || layer== 1) ncomponent = 7; - } - if(partdet== 2){ //barrel - ncomponent = 12; - } - } - return(ncomponent); - } - int getmoduleCount(int subdet, int partdet, int layer, int ring){ - int ncomponent=0; - int spicchif[] ={24,24,40,56,40,56,80}; - int spicchib[] ={20,32,44,30,38,46,56,42,48,54,60,66,74}; - int numero_layer = 0; - - if(partdet == 2){ //barrel - numero_layer = layer-1; - if(subdet== 2){ //inner - numero_layer = numero_layer+3; - } - if(subdet == 3){ //outer - numero_layer = numero_layer+7; - } - ncomponent = spicchib[numero_layer]; - } - if(partdet!= 2){ //endcap - if(subdet== 1)ncomponent=24;//pixel - else - ncomponent = spicchif[ring-1]; - } - return(ncomponent); - } - static int layerno(int subdet,int leftright,int layer){ - if(subdet==6&&leftright==1)return(10-layer); - if(subdet==6&&leftright==2)return(layer+21); - if(subdet==4&&leftright==1)return(4-layer+9); - if(subdet==4&&leftright==2)return(layer+18); - if(subdet==2&&leftright==1)return(4-layer+12); - if(subdet==2&&leftright==2)return(layer+15); - if(subdet==1)return(layer+30); - if(subdet==3)return(layer+33); - if(subdet==5)return(layer+37); - } - - bool isRingStereo(int key){ - int layer=key/100000; - int ring = key - layer*100000; - ring = ring/1000; - if(layer==34 || layer==35 || layer==38 || layer==39) return true; - if(layer<13 || (layer>18&&layer<31)) - if(ring==1 || ring==2 || ring==5)return true; - return false; - } - int nlayer(int det,int part,int lay){ - if(det==3 && part==1) return lay; - if(det==2 && part==1) return lay+9; - if(det==1 && part==1) return lay+12; - if(det==1 && part==3) return lay+15; - if(det==2 && part==3) return lay+18; - if(det==3 && part==3) return lay+21; - if(det==1 && part==2) return lay+30; - if(det==2 && part==2) return lay+33; - if(det==3 && part==2) return lay+37; - return -1; - } - - string layername(int layer){ - string s= " "; - ostringstream ons; - - if(layer < 10) ons << "TEC -z Layer " << layer; - if(layer < 13 && layer > 9) ons << "TID -z Layer " << layer-9; - if(layer < 16 && layer > 12) ons << "FPIX -z Layer " << layer-12; - if(layer < 19 && layer > 15) ons << "FPIX +z Layer " << layer-15; - if(layer < 22 && layer > 18) ons << "TID +z Layer " << layer-18; - if(layer < 31 && layer > 21) ons << "TEC +z Layer " << layer-21; - if(layer < 34 && layer > 30) ons << "TPB Layer " << layer-30; - if(layer < 38 && layer > 33) ons << "TIB Layer " << layer-33; - if(layer > 37) ons << "TOB Layer " << layer-37; - s = ons.str(); - return s; - } - int ntotRing[43]; - int firstRing[43]; - - private: - - float oldz; - int xsize,ysize,ix,iy; - int nlay; - double xmin,xmax,ymin,ymax; - bool posrel; - bool firstcall; - ofstream * svgfile; - ifstream * jsfile; - float minvalue,maxvalue; -}; - - diff --git a/DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc b/DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc deleted file mode 100644 index 67f132aa132..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelActionExecutor.cc +++ /dev/null @@ -1,423 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h" -#include "DQM/SiPixelMonitorClient/interface/TrackerMap.h" -#include "DQM/SiPixelMonitorClient/interface/SiPixelUtility.h" -//#include "DQM/SiPixelMonitorClient/interface/SiStripQualityTester.h" -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include "TText.h" -#include <iostream> -using namespace std; -// -// -- Constructor -// -SiPixelActionExecutor::SiPixelActionExecutor() { - edm::LogInfo("SiPixelActionExecutor") << - " Creating SiPixelActionExecutor " << "\n" ; -// configParser_ = 0; -// configWriter_ = 0; -} -// -// -- Destructor -// -SiPixelActionExecutor::~SiPixelActionExecutor() { - edm::LogInfo("SiPixelActionExecutor") << - " Deleting SiPixelActionExecutor " << "\n" ; -// if (configParser_) delete configParser_; -} -// -// -- Read Configuration File -// -void SiPixelActionExecutor::readConfiguration() { -// if (configParser_ == 0) { -// configParser_ = new SiStripConfigParser(); -// configParser_->getDocument("sistrip_monitorelement_config.xml"); -// } -} -// -// -- Read Configuration File -// -bool SiPixelActionExecutor::readConfiguration(int& tkmap_freq, int& sum_freq) { -// if (configParser_ == 0) { -// configParser_ = new SiStripConfigParser(); -// configParser_->getDocument("sistrip_monitorelement_config.xml"); -// } -// if (!configParser_->getFrequencyForTrackerMap(tkmap_freq)){ -// cout << "SiStripActionExecutor::readConfiguration: Failed to read TrackerMap configuration parameters!! "; -// return false; -// } -// if (!configParser_->getFrequencyForSummary(sum_freq)){ -// cout << "SiStripActionExecutor::readConfiguration: Failed to read Summary configuration parameters!! "; -// return false; -// } - return true; -} -// -// -- Create Tracker Map -// -void SiPixelActionExecutor::createTkMap(MonitorUserInterface* mui) { - string tkmap_name; - vector<string> me_names; -// if (!configParser_->getMENamesForTrackerMap(tkmap_name, me_names)){ -// cout << "SiStripActionExecutor::createTkMap: Failed to read TrackerMap configuration parameters!! "; -// return; -// } - cout << " # of MEs in Tk Map " << me_names.size() << endl; - TrackerMap trackerMap(tkmap_name); - // Get the values for the Tracker Map - mui->cd(); - SiPixelActionExecutor::DetMapType valueMap; - // DaqMonitorBEInterface * bei = mui->getBEInterface(); - // bei->lock(); - getValuesForTkMap(mui, me_names, valueMap); - // bei->unlock(); - int rval = 0; - int gval = 0; - int bval = 0; - for (SiPixelActionExecutor::DetMapType::const_iterator it = valueMap.begin(); - it != valueMap.end(); it++) { - if (it->second.size() < 1) continue; - int istat = 0; - ostringstream comment; - comment << "Mean Value(s) : "; - for (vector<pair <int,float> >::const_iterator iv = it->second.begin(); - iv != it->second.end(); iv++) { - if (iv->first > istat ) istat = iv->first; - comment << iv->second << " : " ; - // Fill Tracker Map with Mean Value of the first element - if (iv == it->second.begin()) trackerMap.fill_current_val(it->first, iv->first); - } - - // Fill Tracker Map with color from the status - if (istat == dqm::qstatus::STATUS_OK) { - rval = 0; gval = 255; bval = 0; - } else if (istat == dqm::qstatus::WARNING) { - rval = 255; gval = 255; bval = 0; - } else if (istat == dqm::qstatus::ERROR) { - rval = 255; gval = 0; bval = 0; - } - cout << " Detector ID : " << it->first - << comment.str() - << " Status : " << istat << endl; - trackerMap.fillc(it->first, rval, gval, bval); - // Fill Tracker Map with Mean Value as Comment - trackerMap.setText(it->first, comment.str()); - } - trackerMap.print(true); - return; -} -// -// -- Browse through monitorable and get values need for TrackerMap -// -void SiPixelActionExecutor::getValuesForTkMap(MonitorUserInterface* mui, - vector<string> me_names, SiPixelActionExecutor::DetMapType & values) { - string currDir = mui->pwd(); - vector<string> contentVec; - mui->getContents(contentVec); - - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - if ((*it).find("module_") == string::npos) continue; - vector<string> contents; - int nval = SiPixelUtility::getMEList((*it), contents); - if (nval == 0) continue; - // get module id - int id = atoi(((*it).substr((*it).find("module_")+7)).c_str()); - vector<MonitorElement*> me_vec; - vector<pair <int, float> > vtemp; - - // browse through monitorable; check if required MEs exist - for (vector<string>::const_iterator ic = contents.begin(); - ic != contents.end(); ic++) { - for (vector<string>::const_iterator im = me_names.begin(); - im != me_names.end(); im++) { - if ((*ic).find((*im)) == string::npos) continue; - - MonitorElement * me = mui->get((*ic)); - if (me) me_vec.push_back(me); - } - } - drawMEs(id, me_vec, vtemp); - values.insert(pair<int,vector <pair <int,float> > >(id, vtemp)); - } -} -// -- Browse through the Folder Structure -// -void SiPixelActionExecutor::createSummary(MonitorUserInterface* mui) { - string structure_name; - vector<string> me_names; -// if (!configParser_->getMENamesForSummary(structure_name, me_names)) { -// cout << "SiStripActionExecutor::createSummary: Failed to read Summary configuration parameters!! "; -// return; -// } - mui->cd(); - fillSummary(mui, structure_name, me_names); - mui->cd(); - createLayout(mui); - string fname = "test.xml"; -// configWriter_->write(fname); -// if (configWriter_) delete configWriter_; -// configWriter_ = 0; -} -// -// -- Browse through the Folder Structure -// -void SiPixelActionExecutor::fillSummary(MonitorUserInterface* mui, - string dir_name,vector<string>& me_names) { - string currDir = mui->pwd(); - if (currDir.find(dir_name) != string::npos) { - vector<MonitorElement*> sum_mes; - for (vector<string>::const_iterator iv = me_names.begin(); - iv != me_names.end(); iv++) { - string tag = "Summary_" + (*iv) + "_in_" - + currDir.substr(currDir.find(dir_name)); - MonitorElement* temp = getSummaryME(mui, tag); - sum_mes.push_back(temp); - } - if (sum_mes.size() == 0) { - cout << " Summary MEs can not be created" << endl; - return; - } - vector<string> subdirs = mui->getSubdirs(); - int ndet = 0; - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - if ( (*it).find("module_") == string::npos) continue; - mui->cd(*it); - ndet++; - vector<string> contents = mui->getMEs(); - for (vector<MonitorElement*>::const_iterator isum = sum_mes.begin(); - isum != sum_mes.end(); isum++) { - for (vector<string>::const_iterator im = contents.begin(); - im != contents.end(); im++) { - string sname = ((*isum)->getName()); - string tname = sname.substr(8,(sname.find("_",8)-8)); - if (((*im)).find(tname) == 0) { - string fullpathname = mui->pwd() + "/" + (*im); - MonitorElement * me = mui->get(fullpathname); - if (me) (*isum)->Fill(ndet*1.0, me->getMean()); - break; - } - } - } - mui->goUp(); - } - } else { - vector<string> subdirs = mui->getSubdirs(); - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - mui->cd(*it); - fillSummary(mui, dir_name, me_names); - mui->goUp(); - } - } -} -// -// -- Get Summary ME -// -MonitorElement* SiPixelActionExecutor::getSummaryME(MonitorUserInterface* mui, - string me_name) { - MonitorElement* me = 0; - // If already booked - vector<string> contents = mui->getMEs(); - for (vector<string>::const_iterator it = contents.begin(); - it != contents.end(); it++) { - if ((*it).find(me_name) == 0) { - string fullpathname = mui->pwd() + "/" + (*it); - me = mui->get(fullpathname); - if (me) { - MonitorElementT<TNamed>* obh1 = - dynamic_cast<MonitorElementT<TNamed>*> (me); - if (obh1) { - TH1F * root_obh1 = dynamic_cast<TH1F *> (obh1->operator->()); - if (root_obh1) root_obh1->Reset(); - } - return me; - } - } - } - DaqMonitorBEInterface * bei = mui->getBEInterface(); - me = bei->book1D(me_name.c_str(), me_name.c_str(),20,0.5,20.5); - return me; -} -// -// -- Draw Monitor Elements -// -void SiPixelActionExecutor::drawMEs(int idet, - vector<MonitorElement*>& mon_elements, vector<pair <int, float> > & values) { - TCanvas canvas("display"); - canvas.Clear(); - if (mon_elements.size() == 2) canvas.Divide(1,2); - if (mon_elements.size() == 3) canvas.Divide(1,3); - if (mon_elements.size() == 4) canvas.Divide(2,2); - int status; - int icol; - string tag; - - for (unsigned int i = 0; i < mon_elements.size(); i++) { - // Mean Value - float mean_val = mon_elements[i]->getMean(); - // Status after comparison to Referece - if (mon_elements[i]->hasError()) { - status = dqm::qstatus::ERROR; - tag = "Error"; - icol = 2; - } else if (mon_elements[i]->hasWarning()) { - status = dqm::qstatus::WARNING; - tag = "Warning"; - icol = 5; - } else { - status = dqm::qstatus::STATUS_OK; - tag = "Ok"; - icol = 3; - } - // Access the Root object and plot - MonitorElementT<TNamed>* ob = - dynamic_cast<MonitorElementT<TNamed>*>(mon_elements[i]); - if (ob) { - canvas.cd(i+1); - TText tt; - tt.SetTextSize(0.15); - tt.SetTextColor(icol); - ob->operator->()->Draw(); - tt.DrawTextNDC(0.6, 0.5, tag.c_str()); - canvas.Update(); - } - values.push_back(pair<int,float>(status, mean_val)); - } - ostringstream name_str; - name_str << idet << ".jpg"; - canvas.SaveAs(name_str.str().c_str()); - -} -// -// -- Setup Quality Tests -// -//void SiStripActionExecutor::setupQTests(MonitorUserInterface * mui) { -// SiStripQualityTester qtester; -// qtester.setupQTests(mui); -//} -// -// -- Check Status of Quality Tests -// -/*void SiStripActionExecutor::checkQTestResults(MonitorUserInterface * mui) { - string currDir = mui->pwd(); - vector<string> contentVec; - mui->getContents(contentVec); - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - vector<string> contents; - int nval = SiStripUtility::getMEList((*it), contents); - if (nval == 0) continue; - for (vector<string>::const_iterator im = contents.begin(); - im != contents.end(); im++) { - MonitorElement * me = mui->get((*im)); - if (me) { - // get all warnings associated with me - vector<QReport*> warnings = me->getQWarnings(); - for(vector<QReport *>::const_iterator it = warnings.begin(); - it != warnings.end(); ++it) { - edm::LogWarning("SiStripQualityTester::checkTestResults") << - " *** Warning for " << me->getName() << - "," << (*it)->getMessage() << "\n"; - - cout << " *** Warning for " << me->getName() << "," - << (*it)->getMessage() << " " << me->getMean() - << " " << me->getRMS() << me->hasWarning() - << endl; - } - // get all errors associated with me - vector<QReport *> errors = me->getQErrors(); - for(vector<QReport *>::const_iterator it = errors.begin(); - it != errors.end(); ++it) { - edm::LogError("SiStripQualityTester::checkTestResults") << - " *** Error for " << me->getName() << - "," << (*it)->getMessage() << "\n"; - - cout << " *** Error for " << me->getName() << "," - << (*it)->getMessage() << " " << me->getMean() - << " " << me->getRMS() - << endl; - } - } - } - } -}*/ -// -// -// -void SiPixelActionExecutor::createCollation(MonitorUserInterface * mui){ - string currDir = mui->pwd(); - - vector<string> contentVec; - mui->getContents(contentVec); - - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - if ((*it).find("module_") == string::npos) continue; - string dir_path; - vector<string> contents; - int nval = SiPixelUtility::getMEList((*it), dir_path, contents); - string coll_dir = "Collector/Collated/" - +dir_path.substr(dir_path.find("SiPixel"),dir_path.size()); - cout << " Here " << coll_dir << " ==> " << endl; - for (vector<string>::iterator ic = contents.begin(); ic != contents.end(); ic++) { - CollateMonitorElement* sum=mui->collate1D((*ic),(*ic),coll_dir); - string me_path = dir_path + (*ic); - mui->add(sum, me_path); - - } - } -} -void SiPixelActionExecutor::createLayout(MonitorUserInterface * mui){ -// if (configWriter_ == 0) { -// configWriter_ = new SiStripConfigWriter(); -// if (!configWriter_->init()) return; -// } - string currDir = mui->pwd(); - if (currDir.find("layer") != string::npos) { - string name = "Default"; -// configWriter_->createLayout(name); -// configWriter_->createRow(); - fillLayout(mui); - } else { - vector<string> subdirs = mui->getSubdirs(); - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - mui->cd(*it); - createLayout(mui); - mui->goUp(); - } - } - -} -void SiPixelActionExecutor::fillLayout(MonitorUserInterface * mui){ - - static int icount = 0; - string currDir = mui->pwd(); - if (currDir.find("string_") != string::npos) { - vector<string> contents = mui->getMEs(); - for (vector<string>::const_iterator im = contents.begin(); - im != contents.end(); im++) { - if ((*im).find("Clusters") != string::npos) { - icount++; - if (icount != 0 && icount%6 == 0) { -// configWriter_->createRow(); - } - ostringstream full_path; - full_path << "test/" << currDir << "/" << *im ; - string element = "monitorable"; - string element_name = full_path.str(); -// configWriter_->createColumn(element, element_name); - } - } - } else { - vector<string> subdirs = mui->getSubdirs(); - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - mui->cd(*it); - fillLayout(mui); - mui->goUp(); - } - } -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelConfigParser.cc b/DQM/SiPixelMonitorClient/src/SiPixelConfigParser.cc deleted file mode 100644 index cea6cffc028..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelConfigParser.cc +++ /dev/null @@ -1,134 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigParser.h" -#include "DQMServices/ClientConfig/interface/ParserFunctions.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include <iostream> -using namespace std; - -// -// -- Constructor -// -SiPixelConfigParser::SiPixelConfigParser() : DQMParserBase() { - edm::LogInfo("SiPixelConfigParser") << - " Creating SiPixelConfigParser " << "\n" ; -} -// -// -- Destructor -// -SiPixelConfigParser::~SiPixelConfigParser() { - edm::LogInfo("SiPixelActionExecutor") << - " Deleting SiPixelConfigParser " << "\n" ; -} -// -// -- Read ME list for the TrackerMap -// -bool SiPixelConfigParser::getMENamesForTrackerMap(string& tkmap_name, - vector<string>& me_names){ - if (!doc) { - cout << " SiPixelConfigParser::Configuration File is not set!!! " << endl; - return false; - } - - me_names.clear(); - unsigned int tkMapNodes = doc->getElementsByTagName(qtxml::_toDOMS("TkMap"))->getLength(); - if (tkMapNodes != 1) return false; - /// Get Node - DOMNode* tkMapNode = doc->getElementsByTagName(qtxml::_toDOMS("TkMap"))->item(0); - //Get QTEST name - if (! tkMapNode) return false; - DOMElement* tkMapElement = static_cast<DOMElement *>(tkMapNode); - if (! tkMapElement) return false; - - tkmap_name = qtxml::_toString(tkMapElement->getAttribute(qtxml::_toDOMS("name"))); - - DOMNodeList * meList - = tkMapElement->getElementsByTagName(qtxml::_toDOMS("MonElement")); - for (unsigned int k = 0; k < meList->getLength(); k++) { - DOMNode* meNode = meList->item(k); - if (!meNode) return false; - DOMElement* meElement = static_cast<DOMElement *>(meNode); - if (!meElement) return false; - string me_name = qtxml::_toString(meElement->getAttribute (qtxml::_toDOMS ("name"))); - me_names.push_back(me_name); - } - if (me_names.size() == 0) return false; - else return true; - -} -// -// -- Read Update Frequency for the TrackerMap -// -bool SiPixelConfigParser::getFrequencyForTrackerMap(int& u_freq){ - if (!doc) { - cout << " SiPixelConfigParser::Configuration File is not set!!! " << endl; - return false; - } - - unsigned int tkMapNodes = doc->getElementsByTagName(qtxml::_toDOMS("TkMap"))->getLength(); - if (tkMapNodes != 1) return false; - /// Get Node - DOMNode* tkMapNode = doc->getElementsByTagName(qtxml::_toDOMS("TkMap"))->item(0); - //Get Node name - if (! tkMapNode) return false; - DOMElement* tkMapElement = static_cast<DOMElement *>(tkMapNode); - if (! tkMapElement) return false; - - u_freq = atoi(qtxml::_toString(tkMapElement->getAttribute(qtxml::_toDOMS("update_frequency"))).c_str()); - return true; -} -// -// -- Get List of MEs for the summary plot and the -// -bool SiPixelConfigParser::getMENamesForSummary(string& structure_name, - vector<string>& me_names) { - if (!doc) { - cout << " SiPixelConfigParser::Configuration File is not set!!! " << endl; - return false; - } - - me_names.clear(); - unsigned int structureNodes = doc->getElementsByTagName(qtxml::_toDOMS("SubStructureLevel"))->getLength(); - if (structureNodes == 0) return false; - /// Get Node - DOMNode* structureNode = doc->getElementsByTagName(qtxml::_toDOMS("SubStructureLevel"))->item(0); - //Get QTEST name - if (! structureNode) return false; - DOMElement* structureElement = static_cast<DOMElement *>(structureNode); - if (! structureElement) return false; - - structure_name = qtxml::_toString(structureElement->getAttribute(qtxml::_toDOMS("name"))); - - DOMNodeList * meList - = structureElement->getElementsByTagName(qtxml::_toDOMS("MonElement")); - for (unsigned int k = 0; k < meList->getLength(); k++) { - DOMNode* meNode = meList->item(k); - if (!meNode) return false; - DOMElement* meElement = static_cast<DOMElement *>(meNode); - if (!meElement) return false; - string me_name = qtxml::_toString(meElement->getAttribute (qtxml::_toDOMS ("name"))); - me_names.push_back(me_name); - } - if (me_names.size() == 0) return false; - else return true; - -} -// -// -- Get List of MEs for the summary plot and the -// -bool SiPixelConfigParser::getFrequencyForSummary(int& u_freq) { - if (!doc) { - cout << " SiPixelConfigParser::Configuration File is not set!!! " << endl; - return false; - } - - unsigned int structureNodes = doc->getElementsByTagName(qtxml::_toDOMS("SubStructureLevel"))->getLength(); - if (structureNodes == 0) return false; - /// Get Node - DOMNode* structureNode = doc->getElementsByTagName(qtxml::_toDOMS("SubStructureLevel"))->item(0); - //Get Node name - if (! structureNode) return false; - DOMElement* structureElement = static_cast<DOMElement *>(structureNode); - if (! structureElement) return false; - - u_freq = atoi(qtxml::_toString(structureElement->getAttribute(qtxml::_toDOMS("name"))).c_str()); - return true; -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelConfigWriter.cc b/DQM/SiPixelMonitorClient/src/SiPixelConfigWriter.cc deleted file mode 100644 index f9dad5cc4ae..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelConfigWriter.cc +++ /dev/null @@ -1,81 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelConfigWriter.h" - - -#include <iostream> -using namespace xercesc; -#include "DQMServices/ClientConfig/interface/ParserFunctions.h" - -using namespace std; -// -// -- Constructor -// -SiPixelConfigWriter::SiPixelConfigWriter() { -} -// -// -- Destructor -// -SiPixelConfigWriter::~SiPixelConfigWriter() { - -} -// -// -- Initialize XML -// -bool SiPixelConfigWriter::init() { - try { - XMLPlatformUtils::Initialize(); - } - catch (const XMLException& toCatch) { - cout << "Problem to initialise XML !!! " << endl; - return false; - } - DOMImplementation* domImpl = DOMImplementationRegistry::getDOMImplementation(qtxml::_toDOMS("Range")); - domWriter = (dynamic_cast<DOMImplementation*>(domImpl))->createDOMWriter(); - domWriter->canSetFeature(XMLUni::fgDOMWRTFormatPrettyPrint, true); - theDoc = domImpl->createDocument(0,qtxml::_toDOMS("Layouts"), 0); - theTopElement = theDoc->getDocumentElement(); - theTopElement->appendChild(theDoc->createTextNode(qtxml::_toDOMS("\n"))); - return true; -} -// -// -- Add an Element -// -void SiPixelConfigWriter::createLayout(string& name) { - lastLayout = theDoc->createElement(qtxml::_toDOMS("layout")); - lastLayout->setAttribute(qtxml::_toDOMS("name"), qtxml::_toDOMS(name)); - theTopElement->appendChild(lastLayout); -} -// -// -- Add an Element -// -void SiPixelConfigWriter::createRow() { - lastLayout->appendChild(theDoc->createTextNode(qtxml::_toDOMS("\n"))); - - lastRow = theDoc->createElement(qtxml::_toDOMS("row")); - lastLayout->appendChild(lastRow); - lastLayout->appendChild(theDoc->createTextNode(qtxml::_toDOMS("\n"))); -} -// -// -- Add an Element with Children -// -void SiPixelConfigWriter::createColumn(string& element, string& name) { - - lastRow->appendChild(theDoc->createTextNode(qtxml::_toDOMS("\n"))); - DOMElement* e1 = theDoc->createElement(qtxml::_toDOMS("column")); - lastRow->appendChild(e1); - - - DOMElement* e2 = theDoc->createElement(qtxml::_toDOMS(element)); - e2->setAttribute(qtxml::_toDOMS("name"),qtxml::_toDOMS(name)); - e1->appendChild(e2); - } -// -// -- Write to File -// -void SiPixelConfigWriter::write(string& fname) { - XMLFormatTarget* formTarget = new LocalFileFormatTarget(fname.c_str()); - domWriter->writeNode(formTarget, *theTopElement); - delete formTarget; - theDoc->release(); - - -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelInformationExtractor.cc b/DQM/SiPixelMonitorClient/src/SiPixelInformationExtractor.cc deleted file mode 100644 index e6b5e1e9a2a..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelInformationExtractor.cc +++ /dev/null @@ -1,341 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelInformationExtractor.h" -#include "DQM/SiPixelMonitorClient/interface/SiPixelUtility.h" -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DQMServices/WebComponents/interface/CgiReader.h" - -#include "TText.h" -#include "TROOT.h" -#include "TPad.h" -#include "TSystem.h" -#include "TString.h" -#include "TImage.h" -#include "TPaveText.h" -#include "TImageDump.h" - -#include <iostream> -using namespace std; - -// -// -- Constructor -// -SiPixelInformationExtractor::SiPixelInformationExtractor() { - edm::LogInfo("SiPixelInformationExtractor") << - " Creating SiPixelInformationExtractor " << "\n" ; -} -// -// -- Destructor -// -SiPixelInformationExtractor::~SiPixelInformationExtractor() { - edm::LogInfo("SiPixelInformationExtractor") << - " Deleting SiPixelInformationExtractor " << "\n" ; - // if (theCanvas) delete theCanvas; -} -// -// -- Fill Histo and Module List -// -void SiPixelInformationExtractor::fillModuleAndHistoList(MonitorUserInterface * mui, vector<string>& modules, vector<string>& histos) { - string currDir = mui->pwd(); - if (currDir.find("module_") != string::npos) { - string mId = currDir.substr(currDir.find("module")+7, 9); - modules.push_back(mId); - if (histos.size() == 0) { - vector<string> contents = mui->getMEs(); - for (vector<string>::const_iterator it = contents.begin(); - it != contents.end(); it++) { - string hname = (*it).substr(0, (*it).find("__det__")); - histos.push_back(hname); - } - } - } else { - vector<string> subdirs = mui->getSubdirs(); - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - mui->cd(*it); - fillModuleAndHistoList(mui, modules, histos); - mui->goUp(); - } - } -} -// -// -- Fill Summary Histo List -// -void SiPixelInformationExtractor::fillSummaryHistoList(MonitorUserInterface * mui, string& str_name, vector<string>& histos){ - string currDir = mui->pwd(); - vector<string> contentVec; - mui->getContents(contentVec); - - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - if ((*it).find(str_name) == string::npos) continue; - if ((*it).find("module_") != string::npos) continue; - vector<string> contents; - int nval = SiPixelUtility::getMEList((*it), contents); - if (nval == 0) continue; - for (vector<string>::const_iterator ic = contents.begin(); - ic != contents.end(); ic++) { - if ((*ic).find("Summary") != string::npos) { - string me_name = (*ic).substr((*ic).find(str_name)+str_name.size()+1); - histos.push_back(me_name); - } - } - } -} -// -// -- Get Selected Monitor Elements -// -void SiPixelInformationExtractor::selectSingleModuleHistos(MonitorUserInterface * mui, string mid, vector<string>& names, vector<MonitorElement*>& mes) { - string currDir = mui->pwd(); - if (currDir.find("module_") != string::npos && - currDir.find(mid) != string::npos ) { - vector<string> contents = mui->getMEs(); - for (vector<string>::const_iterator it = contents.begin(); - it != contents.end(); it++) { - for (vector<string>::const_iterator ih = names.begin(); - ih != names.end(); ih++) { - string temp_s = (*it).substr(0, (*it).find("__")); - // if ((*it).find((*ih)) != string::npos) { - if (temp_s == (*ih)) { - string full_path = currDir + "/" + (*it); - MonitorElement * me = mui->get(full_path.c_str()); - if (me) mes.push_back(me); - } - } - } - if (mes.size() >0) return; - } else { - vector<string> subdirs = mui->getSubdirs(); - for (vector<string>::const_iterator it = subdirs.begin(); - it != subdirs.end(); it++) { - mui->cd(*it); - selectSingleModuleHistos(mui, mid, names, mes); - mui->goUp(); - } - } -} -// -// -- Get Selected Summary Monitor Elements -// -void SiPixelInformationExtractor::selectSummaryHistos(MonitorUserInterface * mui,string str_name, vector<string>& names, vector<MonitorElement*>& mes) { - - vector<string> contentVec; - mui->getContents(contentVec); - - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - if ((*it).find(str_name) == string::npos) continue; - if ((*it).find("module_") != string::npos) continue; - vector<string> contents; - string dir_path; - int nval = SiPixelUtility::getMEList((*it), dir_path, contents); - if (nval == 0) continue; - for (vector<string>::const_iterator ic = contents.begin(); - ic != contents.end(); ic++) { - for (vector<string>::const_iterator im = names.begin(); - im != names.end(); im++) { - string hname = (*im).substr((*im).find_last_of("/")+1); - if ((*ic).find(hname) != string::npos) { - string full_path = dir_path + "/" + (*ic); - MonitorElement * me = mui->get(full_path.c_str()); - if (me) mes.push_back(me); - } - } - } - if ( mes.size() == names.size()) return; - } -} -// -// -- Plot Selected Monitor Elements -// -void SiPixelInformationExtractor::plotSingleModuleHistos(MonitorUserInterface* mui, multimap<string, string>& req_map) { - - vector<string> item_list; - - string mod_id = getItemValue(req_map,"ModId"); - if (mod_id.size() < 9) return; - item_list.clear(); - getItemList(req_map,"histo", item_list); - - vector<MonitorElement*> me_list; - - mui->cd(); - selectSingleModuleHistos(mui, mod_id, item_list, me_list); - mui->cd(); - - plotHistos(req_map,me_list); -} -// -// -- plot Summary Histos -// -void SiPixelInformationExtractor::plotSummaryHistos(MonitorUserInterface * mui, - std::multimap<std::string, std::string>& req_map){ - vector<string> item_list; - - string str_name = getItemValue(req_map,"StructureName"); - if (str_name.size() == 0) return; - item_list.clear(); - getItemList(req_map,"histo", item_list); - - vector<MonitorElement*> me_list; - - mui->cd(); - selectSummaryHistos(mui, str_name, item_list, me_list); - mui->cd(); - - plotHistos(req_map,me_list); -} -// -// plot Histograms in a Canvas -// -void SiPixelInformationExtractor::plotHistos(multimap<string,string>& req_map, - vector<MonitorElement*> me_list){ - if (me_list.size() == 0) return; - TCanvas canvas("TestCanvas", "Test Canvas",600, 600); - canvas.Clear(); - int ncol, nrow; - - float xlow = -1.0; - float xhigh = -1.0; - - if (me_list.size() == 1) { - if (hasItem(req_map,"xmin")) xlow = atof(getItemValue(req_map,"xmin").c_str()); - if (hasItem(req_map,"xmax")) xhigh = atof(getItemValue(req_map,"xmax").c_str()); - ncol = 1; - nrow = 1; - } else { - ncol = atoi(getItemValue(req_map, "cols").c_str()); - nrow = atoi(getItemValue(req_map, "rows").c_str()); - } - canvas.Divide(ncol, nrow); - int i=0; - for (vector<MonitorElement*>::const_iterator it = me_list.begin(); - it != me_list.end(); it++) { - i++; - MonitorElementT<TNamed>* ob = - dynamic_cast<MonitorElementT<TNamed>*>((*it)); - if (ob) { - canvas.cd(i); - // TAxis* xa = ob->operator->()->GetXaxis(); - // xa->SetRangeUser(xlow, xhigh); - ob->operator->()->Draw(); - if (hasItem(req_map,"logy")) { - gPad->SetLogy(1); - } - } - } - canvas.Update(); - fillImageBuffer(canvas); - canvas.Clear(); -} -// -// read the Module And HistoList -// -void SiPixelInformationExtractor::readModuleAndHistoList(MonitorUserInterface* mui, - xgi::Output * out) { - std::vector<std::string> hnames; - std::vector<std::string> mod_names; - fillModuleAndHistoList(mui, mod_names, hnames); - out->getHTTPResponseHeader().addHeader("Content-Type", "text/xml"); - *out << "<?xml version=\"1.0\" ?>" << std::endl; - *out << "<ModuleAndHistoList>" << endl; - *out << "<ModuleList>" << endl; - for (std::vector<std::string>::iterator im = mod_names.begin(); - im != mod_names.end(); im++) { - *out << "<ModuleNum>" << *im << "</ModuleNum>" << endl; - } - *out << "</ModuleList>" << endl; - *out << "<HistoList>" << endl; - - for (std::vector<std::string>::iterator ih = hnames.begin(); - ih != hnames.end(); ih++) { - *out << "<Histo>" << *ih << "</Histo>" << endl; - - } - *out << "</HistoList>" << endl; - *out << "</ModuleAndHistoList>" << endl; - -} -// -// read the Structure And SummaryHistogram List -// -void SiPixelInformationExtractor::readSummaryHistoList(MonitorUserInterface* mui, std::string& str_name, xgi::Output * out) { - - std::vector<std::string> hnames; - fillSummaryHistoList(mui, str_name, hnames); - out->getHTTPResponseHeader().addHeader("Content-Type", "text/xml"); - *out << "<?xml version=\"1.0\" ?>" << std::endl; - *out << "<SummaryHistoList>" << endl; - - for (std::vector<std::string>::iterator ih = hnames.begin(); - ih != hnames.end(); ih++) { - *out << "<SummaryHisto>" << *ih << "</SummaryHisto>" << endl; - } - *out << "</SummaryHistoList>" << endl; -} -// -// Get elements from multi map -// -void SiPixelInformationExtractor::getItemList(multimap<string, string>& req_map, - string item_name,vector<string>& items) { - items.clear(); - for (multimap<string, string>::const_iterator it = req_map.begin(); - it != req_map.end(); it++) { - - if (it->first == item_name) { - items.push_back(it->second); - } - } -} -// -// check a specific item in the map -// -bool SiPixelInformationExtractor::hasItem(multimap<string,string>& req_map, - string item_name){ - multimap<string,string>::iterator pos = req_map.find(item_name); - if (pos != req_map.end()) return true; - return false; -} -// -// check the value of an item in the map -// -string SiPixelInformationExtractor::getItemValue(multimap<string,string>& req_map, - std::string item_name){ - multimap<string,string>::iterator pos = req_map.find(item_name); - string value = " "; - if (pos != req_map.end()) { - value = pos->second; - } - return value; -} -// -// write the canvas in a string -// -void SiPixelInformationExtractor::fillImageBuffer(TCanvas& c1) { - - c1.SetFixedAspectRatio(kTRUE); - c1.SetCanvasSize(520, 440); - // Now extract the image - // 114 - stands for "no write on Close" - TImageDump imgdump("tmp.png", 114); - c1.Paint(); - - // get an internal image which will be automatically deleted - // in the imgdump destructor - TImage *image = imgdump.GetImage(); - - char *buf; - int sz; - image->GetImageBuffer(&buf, &sz); /* raw buffer */ - - pictureBuffer_.str(""); - for (int i = 0; i < sz; i++) - pictureBuffer_ << buf[i]; - - delete [] buf; -} -// -// get the plot -// -const ostringstream& SiPixelInformationExtractor::getImage() const { - return pictureBuffer_; -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelQualityTester.cc b/DQM/SiPixelMonitorClient/src/SiPixelQualityTester.cc deleted file mode 100644 index 864196e16e2..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelQualityTester.cc +++ /dev/null @@ -1,154 +0,0 @@ -/** \file - * - * Implementation of SiPixelQualityTester - * - * $Date: 2006/10/16 18:14:28 $ - * $Revision: 0 $ - * \author Petra Merkel - */ -#include "DQM/SiPixelMonitorClient/interface/SiPixelQualityTester.h" -#include "DQM/SiPixelMonitorClient/interface/SiPixelUtility.h" -#include "DQMServices/QualityTests/interface/QCriterionRoot.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DQMServices/ClientConfig/interface/QTestNames.h" - -#include<iostream> -#include <fstream> -using namespace std; -// -// -- Constructor -// -SiPixelQualityTester::SiPixelQualityTester() { - edm::LogInfo("SiPixelQualityTester") << - " Creating SiPixelQualityTester " << "\n" ; - theQTestMap.clear(); - theMeAssociateMap.clear(); -} -// -// -- Destructor -// -SiPixelQualityTester::~SiPixelQualityTester() { - edm::LogInfo("SiPixelQualityTester") << - " Deleting SiPixelQualityTester " << "\n"; - theQTestMap.clear(); - theMeAssociateMap.clear(); -} -// -// -- Set up Quality Tests -// -void SiPixelQualityTester::setupQTests(MonitorUserInterface* mui) { - if (theQTestMap.size() == 0) { - readQualityTests("sipixel_qualitytest_config.xml"); - } - for (SiPixelQualityTester::QTestMapType::iterator it = theQTestMap.begin(); - it != theQTestMap.end(); it++) { - string qTestName = it->first; - map<string, string> qTestParams = it->second; - string qTestType = qTestParams[dqm::qtest_config::type]; - if (qTestType == dqm::qtest_config::XRangeContent) { - setXRangeTest(mui, qTestName, qTestParams); - } else if (qTestType == "MeanWithinExpectedROOT") { - setMeanWithinExpectedTest(mui, qTestName, qTestParams); - } - } - cout << " Attaching Quality Tests " << endl; - - attachTests(mui); - cout << " Quality Tests attached to MEs properly" << endl; -} -// -// -- Read Test Name and Parameters -// -void SiPixelQualityTester::readQualityTests(string fname) { - // Instantiate the parser and read tests - QTestConfigurationParser qTestParser; - qTestParser.getDocument(fname); - qTestParser.parseQTestsConfiguration(); - theQTestMap = qTestParser.testsList(); - theMeAssociateMap = qTestParser.meToTestsList(); -} -// -// -// -- Attach Quality Tests to ME's -// -void SiPixelQualityTester::attachTests(MonitorUserInterface * mui){ - string currDir = mui->pwd(); - vector<string> contentVec; - mui->getContents(contentVec); - for (vector<string>::iterator it = contentVec.begin(); - it != contentVec.end(); it++) { - vector<string> contents; - int nval = SiPixelUtility::getMEList((*it), contents); - if (nval == 0) continue; - for (vector<string>::const_iterator im = contents.begin(); - im != contents.end(); im++) { - - for (SiPixelQualityTester::MEAssotiateMapType::const_iterator ic = theMeAssociateMap.begin(); ic != theMeAssociateMap.end(); ic++) { - string me_name = ic->first; - if ((*im).find(me_name) != string::npos) { - for (vector<string>::const_iterator iv = ic->second.begin(); - iv != ic->second.end(); iv++) { - mui->useQTest((*im), (*iv)); - } - } - } - } - } -} -// -// -- Set up ContentsXRange test with it's parameters -// -void SiPixelQualityTester::setXRangeTest(MonitorUserInterface * mui, - string name, map<string, string>& params){ - - QCriterion* qc = mui->createQTest(ContentsXRangeROOT::getAlgoName(),name); - - MEContentsXRangeROOT * me_qc = (MEContentsXRangeROOT *) qc; - if (params.size() < 4) return; - cout << " Setting Parameters for " <<ContentsXRangeROOT::getAlgoName() - << endl; - // set allowed range in X-axis (default values: histogram's X-range) - float xmin = atof(params["xmin"].c_str()); - float xmax = atof(params["xmax"].c_str()); - me_qc->setAllowedXRange(xmin, xmax); - //set probability limit for test warning - me_qc->setWarningProb(atof(params["warning"].c_str())); - //set probability limit for test error - me_qc->setErrorProb(atof(params["error"].c_str())); -} -// -// -- Set up MeanWithinExpected test with it's parameters -// -void SiPixelQualityTester::setMeanWithinExpectedTest(MonitorUserInterface* mui, - string name, map<string, string>& params){ - QCriterion* qc = mui->createQTest(MeanWithinExpectedROOT::getAlgoName(),name); - MEMeanWithinExpectedROOT * me_qc = (MEMeanWithinExpectedROOT *) qc; - if (params.size() < 6 ) return; - cout << " Setting Parameters for " <<MeanWithinExpectedROOT::getAlgoName() - << endl; - //set probability limit for test warning - me_qc->setWarningProb(atof(params["warning"].c_str())); - //set probability limit for test error - me_qc->setErrorProb(atof(params["error"].c_str())); - // set Expected Mean - me_qc->setExpectedMean(atof(params["mean"].c_str())); - // set Test Type - if (params["useRMS"] == "1") me_qc->useRMS(); - else if (params["useSigma"] != "0") me_qc->useSigma(atof(params["useSigma"].c_str())); -} -// -// -- Get names of MEs under Quality Test -// -int SiPixelQualityTester::getMEsUnderTest(vector<string>& me_names){ - if (theMeAssociateMap.size() == 0) { - cout << " SiPixelQualityTester::getMEsUnderTest ==> " << - " ME association Map emptyis empty!!! " << endl; - return 0; - } - me_names.clear(); - for (SiPixelQualityTester::MEAssotiateMapType::const_iterator - it = theMeAssociateMap.begin(); it != theMeAssociateMap.end(); it++) { - me_names.push_back(it->first); - } - return me_names.size(); -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelUtility.cc b/DQM/SiPixelMonitorClient/src/SiPixelUtility.cc deleted file mode 100644 index 3f7b3c2914c..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelUtility.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelUtility.h" -using namespace std; -// -// Get a list of MEs in a folder -// -int SiPixelUtility::getMEList(string name, vector<string>& values) { - values.clear(); - string prefix_str = name.substr(0,(name.find(":"))); - prefix_str += "/"; - string temp_str = name.substr(name.find(":")+1); - split(temp_str, values, ","); - for (vector<string>::iterator it = values.begin(); - it != values.end(); it++) (*it).insert(0,prefix_str); - return values.size(); -} -// -// Get a list of MEs in a folder and the path name -// -int SiPixelUtility::getMEList(string name, string& dir_path, vector<string>& values) { - values.clear(); - dir_path = name.substr(0,(name.find(":"))); - dir_path += "/"; - string temp_str = name.substr(name.find(":")+1); - split(temp_str, values, ","); - return values.size(); -} - -// Check if the requested ME exists in a folder -bool SiPixelUtility::checkME(string name, string me_name, string& full_path) { - if (name.find(name) == string::npos) return false; - string prefix_str = name.substr(0,(name.find(":"))); - prefix_str += "/"; - string temp_str = name.substr(name.find(":")+1); - vector<string> values; - split(temp_str, values, ","); - for (vector<string>::iterator it = values.begin(); - it != values.end(); it++) { - if ((*it).find(me_name) != string::npos) { - full_path = prefix_str + (*it); - return true; - } - } - return false; -} -int getMENameList(string name, string& dir_path, string& me_names); -// -// -- Split a given string into a number of strings using given -// delimiters and fill a vector with splitted strings -// -void SiPixelUtility::split(const string& str, vector<string>& tokens, const string& delimiters) { - // Skip delimiters at beginning. - string::size_type lastPos = str.find_first_not_of(delimiters, 0); - - // Find first "non-delimiter". - string::size_type pos = str.find_first_of(delimiters, lastPos); - - while (string::npos != pos || string::npos != lastPos) { - // Found a token, add it to the vector. - tokens.push_back(str.substr(lastPos, pos - lastPos)); - - // Skip delimiters. Note the "not_of" - lastPos = str.find_first_not_of(delimiters, pos); - - // Find next "non-delimiter" - pos = str.find_first_of(delimiters, lastPos); - } -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelWebClient.cc b/DQM/SiPixelMonitorClient/src/SiPixelWebClient.cc deleted file mode 100644 index 797545ae5f3..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelWebClient.cc +++ /dev/null @@ -1,70 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelWebClient.h" - - -SiPixelWebClient::SiPixelWebClient(xdaq::ApplicationStub *stub) - : DQMBaseClient( - stub, // the application stub - do not change - "test", // the name by which the collector identifies the client - "localhost",// the name of the computer hosting the collector - 9090, // the port at which the collector listens - 5, // the delay between reconnect attempts - false // do not act as server - ) -{ - // Instantiate a web interface: - webInterface_p = new SiPixelWebInterface(getContextURL(),getApplicationURL(), & mui_); - - xgi::bind(this, &SiPixelWebClient::handleWebRequest, "Request"); -} - -/* - implement the method that outputs the page with the widgets (declared in DQMBaseClient): -*/ -void SiPixelWebClient::general(xgi::Input * in, xgi::Output * out ) throw (xgi::exception::Exception) -{ - // the web interface should know what to do: - webInterface_p->Default(in, out); -} - - -/* - the method called on all HTTP requests of the form ".../Request?RequestID=..." -*/ -void SiPixelWebClient::handleWebRequest(xgi::Input * in, xgi::Output * out) -{ - // the web interface should know what to do: - webInterface_p->handleRequest(in, out); -} - -/* - this obligatory method is called whenever the client enters the "Configured" state: -*/ -void SiPixelWebClient::configure() -{ - -} - -/* - this obligatory method is called whenever the client enters the "Enabled" state: -*/ -void SiPixelWebClient::newRun() -{ - upd_->registerObserver(this); -} - -/* - this obligatory method is called whenever the client enters the "Halted" state: -*/ -void SiPixelWebClient::endRun() -{ -} - -/* - this obligatory method is called by the Updater component, whenever there is an update -*/ -void SiPixelWebClient::onUpdate() const -{ - // put here the code that needs to be executed on every update: - std::vector<std::string> uplist; - mui_->getUpdatedContents(uplist); -} diff --git a/DQM/SiPixelMonitorClient/src/SiPixelWebInterface.cc b/DQM/SiPixelMonitorClient/src/SiPixelWebInterface.cc deleted file mode 100644 index 512f2253f30..00000000000 --- a/DQM/SiPixelMonitorClient/src/SiPixelWebInterface.cc +++ /dev/null @@ -1,211 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/SiPixelWebInterface.h" -#include "DQM/SiPixelMonitorClient/interface/SiPixelActionExecutor.h" - -#include "DQMServices/WebComponents/interface/Button.h" -#include "DQMServices/WebComponents/interface/CgiWriter.h" -#include "DQMServices/WebComponents/interface/CgiReader.h" -#include "DQMServices/WebComponents/interface/ConfigBox.h" -#include "DQMServices/WebComponents/interface/Navigator.h" -#include "DQMServices/WebComponents/interface/ContentViewer.h" -#include "DQMServices/WebComponents/interface/GifDisplay.h" -#include "DQMServices/WebComponents/interface/Select.h" - -#include <SealBase/Callback.h> -#include <map> -#include <iostream> - - -/* - Create your widgets in the constructor of your web interface -*/ -SiPixelWebInterface::SiPixelWebInterface(std::string theContextURL, std::string theApplicationURL, MonitorUserInterface ** _mui_p) - : WebInterface(theContextURL, theApplicationURL, _mui_p) -{ - theActionFlag = NoAction; - actionExecutor_ = 0; - tkMapOptions_.push_back("Persistant"); - tkMapOptions_.push_back("Temporary"); - - createAll(); - - if (actionExecutor_ == 0) actionExecutor_ = new SiPixelActionExecutor(); -} - - -// -// -- Create default and customised Widgets -// -void SiPixelWebInterface::createAll() { - Navigator * nav = new Navigator(getApplicationURL(), "50px", "50px"); - ContentViewer * cont = new ContentViewer(getApplicationURL(), "180px", "50px"); - GifDisplay * dis = new GifDisplay(getApplicationURL(), "25px","300px", "400px", "550px", "MyGifDisplay"); - - Button * subcrBut = new Button(getApplicationURL(), "320px", "50px", "SubscribeAll", "Subscribe All"); - Button * compBut = new Button(getApplicationURL(), "360px", "50px", "CheckQTResults", "Check QTest Results"); - Button * sumBut = new Button(getApplicationURL(), "400px", "50px", "CreateSummary", "Create Summary"); - Button * collBut = new Button(getApplicationURL(), "440px", "50px", "CollateME", "Collate ME"); - /* Button * tkMapBut1 = new Button(getApplicationURL(), "480px", "50px", "CreateTrackerMap1", "Create Persistant TrackerMap"); - Button * tkMapBut2 = new Button(getApplicationURL(), "480px", "300px", "CreateTrackerMap2", "Create TempTrackerMap");*/ - Button * saveBut = new Button(getApplicationURL(), "480px", "50px", "SaveToFile", "Save To File"); - - Select *selTkMap = new Select(getApplicationURL(), "520px", "50px", "SelectTkMap", "Select Tk Map"); - - selTkMap->setOptionsVector(tkMapOptions_); - - page_p = new WebPage(getApplicationURL()); - page_p->add("navigator", nav); - page_p->add("contentViewer", cont); - page_p->add("gifDisplay", dis); - page_p->add("Sbbutton", subcrBut); - page_p->add("Cbutton", compBut); - page_p->add("Smbutton", sumBut); - page_p->add("SvButton", saveBut); - page_p->add("ClButton", collBut); - /* page_p->add("Tbutton1", tkMapBut1); - page_p->add("Tbutton2", tkMapBut2);*/ - page_p->add("Tselect", selTkMap); - -} -// -// -- Destructor -// -SiPixelWebInterface::~SiPixelWebInterface() { - if (actionExecutor_) delete actionExecutor_; - actionExecutor_ = 0; -} -// -// -- Handles requests from WebElements submitting non-default requests -// -void SiPixelWebInterface::handleCustomRequest(xgi::Input* in,xgi::Output* out) - throw (xgi::exception::Exception) -{ - // put the request information in a multimap... - std::multimap<std::string, std::string> request_multimap; - CgiReader reader(in); - reader.read_form(request_multimap); - - // get the string that identifies the request: - std::string requestID = get_from_multimap(request_multimap, "RequestID"); - cout << " requestID " << requestID << endl; - if (requestID == "SubscribeAll") { - theActionFlag = SubscribeAll; - } else if (requestID == "CheckQTResults") { - theActionFlag = QTestResult; - } else if (requestID == "CreateSummary") { - theActionFlag = Summary; - } else if (requestID == "SaveToFile") { - theActionFlag = SaveData; - } else if (requestID == "CollateME") { - theActionFlag = Collate; - /* } else if (requestID == "CreateTrackerMap1") { - theActionFlag = PersistantTkMap; - } else if (requestID == "CreateTrackerMap2") { - theActionFlag = TemporaryTkMap;*/ - } else if (requestID == "SelectTkMap") { - std::multimap<std::string, std::string> selection_multimap; - std::string choice; - readSelectedRequest(in, out, choice); - if (choice == tkMapOptions_[0]) theActionFlag = PersistantTkMap; - else if (choice == tkMapOptions_[1]) theActionFlag = TemporaryTkMap; - } - configureCustomRequest(in, out); -} -// -// -- Read the option specified in the Select widget -// -void SiPixelWebInterface::readSelectedRequest(xgi::Input * in, xgi::Output * out, std::string& choice) throw (xgi::exception::Exception){ - std::multimap<std::string, std::string> selection_multimap; - CgiReader reader(in); - reader.read_form(selection_multimap); - choice = get_from_multimap(selection_multimap, "Argument"); - -} -// -// -- Schedule Custom Action -// -void SiPixelWebInterface::configureCustomRequest(xgi::Input * in, xgi::Output * out) throw (xgi::exception::Exception){ - seal::Callback action(seal::CreateCallback(this, - &SiPixelWebInterface::performAction)); - (*mui_p)->addCallback(action); -} -// -// -- Setup Quality Tests -// -void SiPixelWebInterface::setupQTests() { -// actionExecutor_->setupQTests((*mui_p)); -} -// -// -- Read Configurations -// -void SiPixelWebInterface::readConfiguration(int& tkmap_freq, int& sum_freq){ - if (actionExecutor_) { - if (actionExecutor_->readConfiguration(tkmap_freq,sum_freq)); - } else { - tkmap_freq = -1; - sum_freq = -1; - } -} -// -// -- Perform action -// -void SiPixelWebInterface::performAction() { - switch (theActionFlag) { - case SiPixelWebInterface::SubscribeAll : - { - cout << " SiPixelWebInterface::subscribeAll " << endl; - (*mui_p)->subscribe("Collector/*"); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::Collate : - { - actionExecutor_->createCollation((*mui_p)); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::PersistantTkMap : - { - system("rm -rf tkmap_files_old/*.jpg; rm -rf tkmap_files_old/*.svg"); - system("rm -rf tkmap_files_old"); - system("mv tkmap_files tkmap_files_old"); - system("mkdir -p tkmap_files"); - actionExecutor_->createTkMap((*mui_p)); - system(" mv *.jpg tkmap_files/. ; mv *.svg tkmap_files/."); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::TemporaryTkMap : - { - system("mkdir -p tkmap_files"); - system("rm -rf tkmap_files/*.jpg; rm -rf tkmap_files/*.svg"); - actionExecutor_->createTkMap((*mui_p)); - system(" mv *.jpg tkmap_files/. ; mv *.svg tkmap_files/."); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::Summary : - { - actionExecutor_->createSummary((*mui_p)); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::QTestResult : - { - //actionExecutor_->checkQTestResults((*mui_p)); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::SaveData : - { - cout << " Saving Monitoring Elements " << endl; - // (*mui_p)->save("SiPixelWebInterface.root", "Collector/Collated",90); - (*mui_p)->save("SiPixelWebInterface.root"); - setActionFlag(SiPixelWebInterface::NoAction); - break; - } - case SiPixelWebInterface::NoAction : - { - break; - } - } -} diff --git a/DQM/SiPixelMonitorClient/src/TmModule.cc b/DQM/SiPixelMonitorClient/src/TmModule.cc deleted file mode 100644 index b999c9153ca..00000000000 --- a/DQM/SiPixelMonitorClient/src/TmModule.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/TmModule.h" -#include <string> -using namespace std; - - -map< const int , TmModule *> -SvgModuleMap::smoduleMap=map<const int , TmModule *>(); - -map< const int , TmModule *> -IdModuleMap::imoduleMap=map<const int , TmModule *>(); - - -TmModule::TmModule(int idc, int ring, int layer){ - idModule = idc; - this->ring=ring; - this->layer = layer; - this->text=""; - notused=true; - histNumber=0; - red=-1; -} -TmModule::~TmModule(){ -} diff --git a/DQM/SiPixelMonitorClient/src/TrackerMap.cc b/DQM/SiPixelMonitorClient/src/TrackerMap.cc deleted file mode 100644 index 68c801f4f70..00000000000 --- a/DQM/SiPixelMonitorClient/src/TrackerMap.cc +++ /dev/null @@ -1,361 +0,0 @@ -#include "DQM/SiPixelMonitorClient/interface/TrackerMap.h" -#include "DQM/SiPixelMonitorClient/interface/TmModule.h" -#include <fstream> -#include <iostream> - -/********************************************************** -Allocate all the modules in a map of TmModule -The filling of the values for each module is done later -when the user starts to fill it. -**********************************************************/ - -TrackerMap::TrackerMap(string s) { - - int ntotmod=0; - xsize=340;ysize=200;ix=0;iy=0; //used to compute the place of each layer in the tracker map - firstcall = true; - minvalue=0.; maxvalue=minvalue; - title=s; - posrel=true; - - ndet = 3; // number of detectors: pixel, inner silicon, outer silicon - npart = 3; // number of detector parts: endcap -z, barrel, endcap +z - - //allocate module map - for (int subdet=1; subdet < ndet+1; subdet++){//loop on subdetectors - for (int detpart=1; detpart < npart+1; detpart++){//loop on subdetectors parts - int nlayers = getlayerCount(subdet,detpart); // compute number of layers - for(int layer=1; layer < nlayers+1; layer++){//loop on layers - int nrings = getringCount(subdet,detpart,layer);// compute number of rings - //fill arrays used to do the loop on the rings - int layer_g = nlayer(subdet,detpart,layer); - ntotRing[layer_g-1]=nrings; - firstRing[layer_g-1]=1; - if(subdet==3 && detpart!=2) firstRing[layer_g-1]= 8-nrings; //special numbering for TEC - for (int ring=firstRing[layer_g-1]; ring < ntotRing[layer_g-1]+firstRing[layer_g-1];ring++){//loop on rings - int nmodules = getmoduleCount(subdet,detpart,layer,ring);// compute number of modules - int key; - TmModule *smodule; - for(int module=1; module < nmodules+1; module++){//loop on modules - smodule = new TmModule(module,ring,layer_g); - key=layer_g*100000+ring*1000+module;//key identifying module - SvgModuleMap::smoduleMap[key]=smodule; - ntotmod++; - } - if(isRingStereo(key))for(int module=1; module < nmodules+1; module++){//loop on stereo modules - smodule = new TmModule(module+100,ring,layer_g); - int key=layer_g*100000+ring*1000+module+100; - SvgModuleMap::smoduleMap[key]=smodule; - ntotmod++; - } - } - } - } - } - build(); -} - -TrackerMap::~TrackerMap() { -} - -void TrackerMap::drawModule(TmModule * mod, int key,int nlay, bool print_total){ - //int x,y; - double phi,r,dx,dy, dy1; - double xp[4],yp[4],xp1,yp1; - double vhbot,vhtop,vhapo; - double rmedio[]={0.041,0.0701,0.0988,0.255,0.340,0.430,0.520,0.610,0.696,0.782,0.868,0.965,1.080}; - double xt1,yt1,xs1=0.,ys1=0.,xt2,yt2,xs2,ys2,pv1,pv2; - int green = 0; - double xd[4],yd[4]; - int np = 4; - //int numrec=0; - int numod=0; - phi = phival(mod->posx,mod->posy); - r = sqrt(mod->posx*mod->posx+mod->posy*mod->posy); - vhbot = mod->width; - vhtop=mod->width; - vhapo=mod->length; - if(nlay < 31){ //endcap - vhbot = mod->widthAtHalfLength/2.-(mod->width/2.-mod->widthAtHalfLength/2.); - vhtop=mod->width/2.; - vhapo=mod->length/2.; - if(nlay >12 && nlay <19){ - if(posrel)r = r+r; - xp[0]=r-vhtop;yp[0]=-vhapo; - xp[1]=r+vhtop;yp[1]=-vhapo; - xp[2]=r+vhtop;yp[2]=vhapo; - xp[3]=r-vhtop;yp[3]=vhapo; - }else{ - if(posrel)r = r + r/3.; - xp[0]=r-vhapo;yp[0]=-vhbot; - xp[1]=r+vhapo;yp[1]=-vhtop; - xp[2]=r+vhapo;yp[2]=vhtop; - xp[3]=r-vhapo;yp[3]=vhbot; - } - for(int j=0;j<4;j++){ - xp1 = xp[j]*cos(phi)-yp[j]*sin(phi); - yp1 = xp[j]*sin(phi)+yp[j]*cos(phi); - xp[j] = xp1;yp[j]=yp1; - } - } else { //barrel - numod=mod->idModule;if(numod>100)numod=numod-100; - int vane = mod->ring; - if(posrel){ - dx = vhapo; - phi=M_PI; - xt1=rmedio[nlay-31]; yt1=-vhtop/2.; - xs1 = xt1*cos(phi)-yt1*sin(phi); - ys1 = xt1*sin(phi)+yt1*cos(phi); - xt2=rmedio[nlay-31]; yt2=vhtop/2.; - xs2 = xt2*cos(phi)-yt2*sin(phi); - ys2 = xt2*sin(phi)+yt2*cos(phi); - dy=phival(xs2,ys2)-phival(xs1,ys1); - dy1 = dy; - if(nlay==31)dy1=0.39; - if(nlay==32)dy1=0.23; - if(nlay==33)dy1=0.16; - xp[0]=vane*(dx+dx/8.);yp[0]=numod*(dy1); - xp[1]=vane*(dx+dx/8.)+dx;yp[1]=numod*(dy1); - xp[2]=vane*(dx+dx/8.)+dx;yp[2]=numod*(dy1)+dy; - xp[3]=vane*(dx+dx/8.);yp[3]=numod*(dy1)+dy; - }else{ - xt1=r; yt1=-vhtop/2.; - xs1 = xt1*cos(phi)-yt1*sin(phi); - ys1 = xt1*sin(phi)+yt1*cos(phi); - xt2=r; yt2=vhtop/2.; - xs2 = xt2*cos(phi)-yt2*sin(phi); - ys2 = xt2*sin(phi)+yt2*cos(phi); - pv1=phival(xs1,ys1); - pv2=phival(xs2,ys2); - if(fabs(pv1-pv2)>M_PI && numod==1)pv1=pv1-2.*M_PI; - if(fabs(pv1-pv2)>M_PI && numod!=1)pv2=pv2+2.*M_PI; - xp[0]=mod->posz-vhapo/2.;yp[0]=4.2*pv1; - xp[1]=mod->posz+vhapo/2.;yp[1]=4.2*pv1; - xp[2]=mod->posz+vhapo/2. ;yp[2]=4.2*pv2; - xp[3]=mod->posz-vhapo/2.;yp[3]=4.2*pv2; - } - } - if(isRingStereo(key)) - { - np = 3; - if(mod->idModule>100 ){for(int j=0;j<3;j++){ - xd[j]=xdpixel(xp[j]);yd[j]=ydpixel(yp[j]); - } - }else { - xd[0]=xdpixel(xp[2]);yd[0]=ydpixel(yp[2]); - xd[1]=xdpixel(xp[3]);yd[1]=ydpixel(yp[3]); - xd[2]=xdpixel(xp[0]);yd[2]=ydpixel(yp[0]); - } - } else { - for(int j=0;j<4;j++){ - xd[j]=xdpixel(xp[j]);yd[j]=ydpixel(yp[j]); - } - } - char buffer [20]; - sprintf(buffer,"%X",mod->idex); - - if(mod->red < 0){ //use count to compute color - green = (mod->value-minvalue)/(maxvalue-minvalue)*256.; - - if (green > 255) green=255; -if(!print_total)mod->value=mod->value*mod->count;//restore mod->value - - if(mod->count > 0) - *svgfile <<"<polygon detid=\""<<mod->idex<<"\" count=\""<<mod->count <<"\" value=\""<<mod->value<<"\" id=\""<<key<<"\" onclick=\"showData(evt);\" onmouseover=\"showData(evt);\" onmouseout=\"showData(evt);\" MESSAGE=\""<<mod->text<<"\" POS=\""<<mod->name<<" Id "<<buffer<<" \" fill=\"rgb(255,"<<255-green<<",0)\" points=\""; - else - *svgfile <<"<polygon detid=\""<<mod->idex<<"\" count=\""<<mod->count <<"\" value=\""<<mod->value<<"\" id=\""<<key<<"\" onclick=\"showData(evt);\" onmouseover=\"showData(evt);\" onmouseout=\"showData(evt);\" MESSAGE=\""<<mod->text<<"\" POS=\""<<mod->name<<" Id "<<buffer<<" \" fill=\"white\" points=\""; - for(int k=0;k<np;k++){ - *svgfile << xd[k] << "," << yd[k] << " " ; - } - *svgfile <<"\" />" <<endl; - } else {//color defined with fillc - if(mod->red>255)mod->red=255; - if(mod->green>255)mod->green=255; - if(mod->blue>255)mod->blue=255; - *svgfile <<"<polygon detid=\""<<mod->idex<<"\" count=\""<<mod->count <<"\" value=\""<<mod->value<<"\" id=\""<<key<<"\" onclick=\"showData(evt);\" onmouseover=\"showData(evt);\" onmouseout=\"showData(evt);\" MESSAGE=\""<<mod->text<<"\" POS=\""<<mod->name<<" Id "<<buffer<<" \" fill=\"rgb("<<mod->red<<","<<mod->green<<","<<mod->blue<<")\" points=\""; - for(int k=0;k<np;k++){ - *svgfile << xd[k] << "," << yd[k] << " " ; - } - *svgfile <<"\" />" <<endl; - } - -} - -//print in svg format tracker map -//print_total = true represent in color the total stored in the module -//print_total = false represent in color the average -void TrackerMap::print(bool print_total, float minval, float maxval){ - minvalue=minval; maxvalue=maxval; - svgfile = new ofstream("svgmap.svg",ios::out); - jsfile = new ifstream("trackermap.txt",ios::in); - - //copy javascript interface from trackermap.txt file - string line; - while (getline( *jsfile, line )) - { - *svgfile << line << endl; - } - // - if(!print_total){ - for (int layer=1; layer < 44; layer++){ - for (int ring=firstRing[layer-1]; ring < ntotRing[layer-1]+firstRing[layer-1];ring++){ - for (int module=1;module<200;module++) { - int key=layer*100000+ring*1000+module; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - if(mod !=0 && !mod->notInUse()){ - mod->value = mod->value / mod->count; - } - } - } - } - } - if(minvalue>=maxvalue){ - minvalue=9999999.; - maxvalue=-9999999.; - for (int layer=1; layer < 44; layer++){ - for (int ring=firstRing[layer-1]; ring < ntotRing[layer-1]+firstRing[layer-1];ring++){ - for (int module=1;module<200;module++) { - int key=layer*100000+ring*1000+module; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - if(mod !=0 && !mod->notInUse()){ - if (minvalue > mod->value)minvalue=mod->value; - if (maxvalue < mod->value)maxvalue=mod->value; - } - } - } - } -} - for (int layer=1; layer < 44; layer++){ - nlay=layer; - defwindow(nlay); - for (int ring=firstRing[layer-1]; ring < ntotRing[layer-1]+firstRing[layer-1];ring++){ - for (int module=1;module<200;module++) { - int key=layer*100000+ring*1000+module; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - if(mod !=0 && !mod->notInUse()){ - drawModule(mod,key,layer,print_total); - } - } - } - } - *svgfile << "</g></svg>"<<endl; - *svgfile << " <text id=\"Title\" class=\"normalText\" x=\"100\" y=\"0\">"<<title<<"</text>"<<endl; - *svgfile << "</svg>"<<endl; - -} - -void TrackerMap::fillc(int idmod, int red, int green, int blue ){ - - TmModule * mod = IdModuleMap::imoduleMap[idmod]; - if(mod!=0){ - mod->red=red; mod->green=green; mod->blue=blue; - return; - } - cout << "**************************error in fill method **************"; -} -void TrackerMap::fillc(int layer, int ring, int nmod, int red, int green, int blue ){ - - int key = layer*10000+ring*1000+nmod; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - - if(mod!=0){ - mod->red=red; mod->green=green; mod->blue=blue; - return; - } - cout << "**************************error in fill method **************"; -} - -void TrackerMap::fill_current_val(int idmod, float current_val ){ - - TmModule * mod = IdModuleMap::imoduleMap[idmod]; - if(mod!=0) mod->value=current_val; - else cout << "**error in fill_current_val method ***"; -} - -void TrackerMap::fill(int idmod, float qty ){ - - TmModule * mod = IdModuleMap::imoduleMap[idmod]; - if(mod!=0){ - mod->value=mod->value+qty; - mod->count++; - return; - } - cout << "**************************error in fill method **************"; -} - -void TrackerMap::fill(int layer, int ring, int nmod, float qty){ - - int key = layer*10000+ring*1000+nmod; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - if(mod!=0){ - mod->value=mod->value+qty; - mod->count++; - } - else cout << "**************************error in SvgModuleMap **************"; -} - -void TrackerMap::setText(int idmod, string s){ - - TmModule * mod = IdModuleMap::imoduleMap[idmod]; - if(mod!=0){ - mod->text=s; - } - else cout << "**************************error in IdModuleMap **************"; -} - - -void TrackerMap::setText(int layer, int ring, int nmod, string s){ - - int key = layer*10000+ring*1000+nmod; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - if(mod!=0){ - mod->text=s; - } - else cout << "**************************error in SvgModuleMap **************"; -} - - -void TrackerMap::build(){ - // ifstream* infile; - - int nmods, pix_sil, fow_bar, ring, nmod, layer; - unsigned int idex; - float posx, posy, posz, length, width, thickness, widthAtHalfLength; - int iModule=0,old_layer=0; - string name,dummys; - - ifstream infile("tracker.dat",ios::in); - while(!infile.eof()) { - infile >> nmods >> pix_sil >> fow_bar >> layer >> ring >> nmod >> posx >> posy - >> posz>> length >> width >> thickness - >> widthAtHalfLength >> idex ; - getline(infile,dummys); //necessary to reach end of record - getline(infile,name); - if(old_layer!=layer){old_layer=layer;iModule=0;} - iModule++; - int key=layer*100000+ring*1000+nmod; - TmModule * mod = SvgModuleMap::smoduleMap[key]; - - - IdModuleMap::imoduleMap[idex]=mod; - - if(mod==0) cout << "error in module "<<key <<endl; - else - { - mod->posx = posx; - mod->posy = posy; - mod->setUsed(); - mod->value=0; - mod->count=0; - mod->posz = posz; - mod->length = length; - mod->width = width; - mod->thickness = thickness; - mod->widthAtHalfLength = widthAtHalfLength; - mod->idex = idex; - mod->name = name; - } - } - infile.close(); -} - diff --git a/DQM/SiPixelMonitorClient/test/.WebLib.js b/DQM/SiPixelMonitorClient/test/.WebLib.js deleted file mode 100644 index c8e80376ec3..00000000000 --- a/DQM/SiPixelMonitorClient/test/.WebLib.js +++ /dev/null @@ -1,81 +0,0 @@ -var http_request = false; - -var view_all_contents = true; - -/* - This function should return the url of the application webpage - without asking the server... -*/ - -function getApplicationURL() -{ - var url = window.location.href; - - // remove the cgi request from the end of the string - var index = url.indexOf("?"); - if (index >= 0) - { - url = url.substring(0, index); - } - - index = url.lastIndexOf("general"); - url = url.substring(0, index); - - // remove the trailing '/' from the end of the string - index = url.lastIndexOf("/"); - if (index == url.length - 1) - { - url = url.substring(0, index); - } - - return url; -} - -function getContextURL() -{ - var app_url = getApplicationURL(); - var index = app_url.lastIndexOf("/"); - return app_url.substring(0, index); -} - - -/* - This function submits a generic request in the form of a url - and calls the receiver_function when the state of the request - changes. -*/ - -function makeRequest(url, receiver_function) -{ - http_request = false; - if (window.XMLHttpRequest) - { - http_request = new XMLHttpRequest(); - if (http_request.overrideMimeType) - { - http_request.overrideMimeType('text/xml'); - } - } - if (!http_request) - { - alert('Giving up :( Cannot create an XMLHTTP instance'); - } - http_request.onreadystatechange = receiver_function; - http_request.open('GET', url, true); - http_request.send(null); - - return; -} - -function dummy() -{ - displayMessages(); -} - - -document.write('<script src="SERVED_DIRECTORY_URL/Navigator.js"><\/script>'); -document.write('<script src="SERVED_DIRECTORY_URL/GifDisplay.js"><\/script>'); -document.write('<script src="SERVED_DIRECTORY_URL/ContentViewer.js"><\/script>'); -document.write('<script src="SERVED_DIRECTORY_URL/ConfigBox.js"><\/script>'); -document.write('<script src="SERVED_DIRECTORY_URL/Select.js"><\/script>'); -document.write('<script src="SERVED_DIRECTORY_URL/Messages.js"><\/script>'); \ No newline at end of file diff --git a/DQM/SiPixelMonitorClient/test/.profile.xml b/DQM/SiPixelMonitorClient/test/.profile.xml deleted file mode 100644 index cdfc6db7826..00000000000 --- a/DQM/SiPixelMonitorClient/test/.profile.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version='1.0'?> -<!-- Order of specification will determine the sequence of installation. all modules are loaded prior instantiation of plugins --> -<xp:Profile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xp="http://xdaq.web.cern.ch/xdaq/xsd/2005/XMLProfile-10"> - - <!-- Compulsory Plugins --> - <xp:Application class="Executive" id="0" group="startup" service="executive" network="local"> - <properties xmlns="urn:xdaq-application:Executive" xsi:type="soapenc:Struct"> - <logUrl xsi:type="xsd:string">console</logUrl> - <logLevel xsi:type="xsd:string">INFO</logLevel> - </properties> - </xp:Application> - - <xp:Module>${XDAQ_ROOT}/lib/linux/x86/libexecutive.so</xp:Module> - - <xp:Application class="PeerTransportHTTP" id="1" group="startup" network="local"> - <properties xmlns="urn:xdaq-application:PeerTransportHTTP" xsi:type="soapenc:Struct"> - <aliasName xsi:type="xsd:string">temporary</aliasName> - <aliasPath xsi:type="xsd:string">.pwd</aliasPath> - </properties> - </xp:Application> - - <xp:Module> ${XDAQ_ROOT}/lib/linux/x86/libpthttp.so </xp:Module> - - <xp:Application class="PeerTransportFifo" id="8" group="startup" network="local"/> - <xp:Module>${XDAQ_ROOT}/lib/linux/x86/libptfifo.so</xp:Module> - - <!-- XRelay --> - <xp:Application class="XRelay" id="4" service="xrelay" group="startup" network="local"/> - <xp:Module>${XDAQ_ROOT}/lib/linux/x86/libxr.so</xp:Module> - - <!-- HyperDAQ --> - <xp:Application class="HyperDAQ" id="3" service="hyperdaq" group="startup" network="local"/> - <xp:Module>${XDAQ_ROOT}/lib/linux/x86/libhyperdaq.so</xp:Module> - - -</xp:Profile> diff --git a/DQM/SiPixelMonitorClient/test/sendCmdToApp.pl b/DQM/SiPixelMonitorClient/test/sendCmdToApp.pl deleted file mode 100644 index 6d548fbd34a..00000000000 --- a/DQM/SiPixelMonitorClient/test/sendCmdToApp.pl +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/perl - -die "Usage sendCmdToApp.pl host port cmdFile\n" if @ARGV != 3; - -$host = $ARGV[0]; -$port = $ARGV[1]; -$cmdFile = $ARGV[2]; - -die "The file \"$cmdFile\" does not exist\n" unless -e $cmdFile; - -$curlCmd = "curl --stderr /dev/null -H \"Content-Type: text/xml\" -H \"Content-Description: SOAP Message\" -H \"SOAPAction: urn:xdaq-application:lid=0\" http://$host:$port -d \@$cmdFile"; - -open CURL, "$curlCmd|"; - -print "Sending command to executive $host:$port "; - -while(<CURL>) { - chomp; - $soapReply .= $_; -} - -if($soapReply =~ m/Response/) { - print "OK\n"; - exit 0; -} elsif($soapReply =~ m/Fault/) { - print "FAULT\n"; - print "$soapReply\n"; - exit 1; -} elsif($soapReply eq "") { - print "NONE\n"; - exit 1; -} else { - print "UNKNOWN response\n"; - print "$soapReply\n"; - exit 1; -} diff --git a/DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml b/DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml deleted file mode 100644 index 67fc5b373a5..00000000000 --- a/DQM/SiPixelMonitorClient/test/sipixel_monitorelement_config.xml +++ /dev/null @@ -1,13 +0,0 @@ -<MonElementConfiguration> -<TkMap name="Summary Map" update_frequency="200"> - <MonElement name="NumberOfDigis"></MonElement> - <MonElement name="NumberOfClusters"></MonElement> - <MonElement name="ClusterWidth"></MonElement> -</TkMap> -<SummaryPlot> -<SubStructureLevel name="string_" update_frequency="300"> - <MonElement name="NumberOfDigis"></MonElement> - <MonElement name="NumberOfClusters"></MonElement> -</SubStructureLevel> -</SummaryPlot> -</MonElementConfiguration> diff --git a/DQM/SiPixelMonitorClient/test/sipixel_qualitytest_config.xml b/DQM/SiPixelMonitorClient/test/sipixel_qualitytest_config.xml deleted file mode 100644 index 7350a86ffa2..00000000000 --- a/DQM/SiPixelMonitorClient/test/sipixel_qualitytest_config.xml +++ /dev/null @@ -1,36 +0,0 @@ -<TESTSCONFIGURATION> -<QTEST name="XrangeWithin:0-2.0" activate="true"> - <TYPE>ContentsXRangeROOT</TYPE> - <PARAM name="error">0.4</PARAM> - <PARAM name="warning">0.6</PARAM> - <PARAM name="xmin">0</PARAM> - <PARAM name="xmax">2.0</PARAM> -</QTEST> -<QTEST name="XrangeWithin:0-2.5" activate="true"> - <TYPE>ContentsXRangeROOT</TYPE> - <PARAM name="error">0.4</PARAM> - <PARAM name="warning">0.6</PARAM> - <PARAM name="xmin">0</PARAM> - <PARAM name="xmax">2.5</PARAM> -</QTEST> -<QTEST name="MeanWithinExpected:RMS" activate="true"> - <TYPE>MeanWithinExpectedROOT</TYPE> - <PARAM name="error">0.05</PARAM> - <PARAM name="warning">0.5</PARAM> - <PARAM name="mean">1.0</PARAM> - <PARAM name="useRMS">1</PARAM> - <PARAM name="useSigma">0</PARAM> - <PARAM name="useRange">0</PARAM> - <PARAM name="xmin">0</PARAM> - <PARAM name="xmax">0</PARAM> -</QTEST> -<LINK name="NumberOfDigis"> - <TestName activate="true">MeanWithinExpected:RMS</TestName> -</LINK> -<LINK name="NumberOfClusters"> - <TestName activate="true">XrangeWithin:0-2.0</TestName> -</LINK> -<LINK name="NrOfClusterizedStrips"> - <TestName activate="true">XrangeWithin:0-2.5</TestName> -</LINK> -</TESTCONFIGURATION> diff --git a/DQM/SiPixelMonitorClient/test/style.css b/DQM/SiPixelMonitorClient/test/style.css deleted file mode 100644 index 0b402321ec5..00000000000 --- a/DQM/SiPixelMonitorClient/test/style.css +++ /dev/null @@ -1,9 +0,0 @@ -body { font-family: arial; - font-size: small } - -table { color: yellow; - background-color: blue; - border-width: 5px; - border-style: groove; - border-color: black; - padding: 10px; } diff --git a/DQM/SiPixelMonitorCluster/doc/html/index.html b/DQM/SiPixelMonitorCluster/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorCluster/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorCluster/doc/html/overview.html b/DQM/SiPixelMonitorCluster/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorCluster/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorDigi/BuildFile b/DQM/SiPixelMonitorDigi/BuildFile deleted file mode 100644 index c99b878153b..00000000000 --- a/DQM/SiPixelMonitorDigi/BuildFile +++ /dev/null @@ -1,20 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=DQMServices/CoreROOT> -<use name=Geometry/CommonDetUnit> -<use name=Geometry/Records> -<use name=Geometry/TrackerGeometryBuilder> -<use name=boost> -<flags SEAL_PLUGIN_NAME="DQMSiPixelMonitorDigi"> -<export> - <lib name=DQMSiPixelMonitorDigi> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=DQMServices/CoreROOT> - <use name=Geometry/CommonDetUnit> - <use name=Geometry/Records> - <use name=Geometry/TrackerGeometryBuilder> - <use name=boost> -</export> diff --git a/DQM/SiPixelMonitorDigi/doc/SiPixelMonitorDigi.doc b/DQM/SiPixelMonitorDigi/doc/SiPixelMonitorDigi.doc deleted file mode 100644 index eaddc543621..00000000000 --- a/DQM/SiPixelMonitorDigi/doc/SiPixelMonitorDigi.doc +++ /dev/null @@ -1,42 +0,0 @@ - -/*! - -\page DQM_SiPixelMonitorDigi Package DQM/SiPixelMonitorDigi - -<center> -<small> - -<!-- @CVS_TAG@ will be substituted at build time, no need to touch --> -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/DQM/SiPixelMonitorDigi/?cvsroot=CMSSW&only_with_tag=@CVS_TAG@>Source code (CVS tag: @CVS_TAG@)</a> - -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/DQM/SiPixelMonitorDigi/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a> -</small> -</center> - -\section desc Description - -This package provides the DQM application for monitoring pixel digis. - -\subsection interface Public interface -<!-- List the classes that are provided for use in other packages (if any) --> - -- SiPixelDigiModule -- SiPixelDigiSource - -\subsection modules Modules -<!-- Describe modules implemented in this package and their parameter set --> - -- SiPixelDigiSource - -\subsection tests Unit tests and examples -<!-- Describe cppunit tests and example configuration files --> -Unknown - -\section status Status and planned development -<!-- e.g. completed, stable, missing features --> -Unknown - -<hr> -Last updated: -@DATE@ Author: V.Chiochia -*/ - diff --git a/DQM/SiPixelMonitorDigi/doc/html/index.html b/DQM/SiPixelMonitorDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorDigi/doc/html/overview.html b/DQM/SiPixelMonitorDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h b/DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h deleted file mode 100644 index 611aec9275e..00000000000 --- a/DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef SiPixelMonitorDigi_SiPixelDigiModule_h -#define SiPixelMonitorDigi_SiPixelDigiModule_h - -#include "DQMServices/Core/interface/MonitorElement.h" - -#include "DataFormats/SiPixelDigi/interface/PixelDigiCollection.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" -#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/Common/interface/EDProduct.h" - -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" - - -#include "FWCore/Framework/interface/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include <boost/cstdint.hpp> - -class SiPixelDigiModule { - - public: - - SiPixelDigiModule(); - - SiPixelDigiModule(uint32_t id); - - ~SiPixelDigiModule(); - - typedef edm::DetSet<PixelDigi>::const_iterator DigiIterator; - - void book(); - - //void fill(const PixelDigiCollection* digiCollection); - void fill(const edm::DetSetVector<PixelDigi> & input); - - private: - uint32_t id_; - MonitorElement* meNDigis_; - MonitorElement* meADC_; - MonitorElement* meCol_; - MonitorElement* meRow_; - -}; -#endif diff --git a/DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h b/DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h deleted file mode 100644 index 120af4d5ee9..00000000000 --- a/DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef SiPixelMonitorDigi_SiPixelDigiSource_h -#define SiPixelMonitorDigi_SiPixelDigiSource_h -// -*- C++ -*- -// -// Package: SiPixelMonitorDigi -// Class : SiPixelDigiSource -// -/** - - Description: <one line class summary> - - Usage: - <usage> - -*/ -// -// Original Author: Vincenzo Chiochia -// Created: -// $Id: SiPixelDigiSource.h,v 1.1 2006/02/15 09:40:46 chiochia Exp $ -// - -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" - -#include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h" - -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" -#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h" -#include "DataFormats/Common/interface/EDProduct.h" - - -#include "FWCore/Framework/interface/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include <boost/cstdint.hpp> - - class SiPixelDigiSource : public edm::EDAnalyzer { - public: - explicit SiPixelDigiSource(const edm::ParameterSet& conf); - ~SiPixelDigiSource(); - - typedef edm::DetSet<PixelDigi>::const_iterator DigiIterator; - - virtual void analyze(const edm::Event&, const edm::EventSetup&); - virtual void beginJob(edm::EventSetup const&) ; - virtual void endJob() ; - - virtual void buildStructure(edm::EventSetup const&); - virtual void bookMEs(); - - private: - edm::ParameterSet conf_; - int eventNo; - DaqMonitorBEInterface* theDMBE; - std::map<uint32_t,SiPixelDigiModule*> thePixelStructure; - }; - -#endif diff --git a/DQM/SiPixelMonitorDigi/src/SiPixelDigiModule.cc b/DQM/SiPixelMonitorDigi/src/SiPixelDigiModule.cc deleted file mode 100644 index 2a23812b26e..00000000000 --- a/DQM/SiPixelMonitorDigi/src/SiPixelDigiModule.cc +++ /dev/null @@ -1,96 +0,0 @@ -#include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiModule.h" - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" - -#include "DataFormats/Common/interface/DetSetVector.h" -#include "DataFormats/DetId/interface/DetId.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigiCollection.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" -#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiPixelDetId/interface/PXBDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXFDetId.h" - -#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" -#include "Geometry/CommonTopologies/interface/PixelTopology.h" - -// Framework -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/ServiceRegistry/interface/Service.h" - -// STL -#include <vector> -#include <memory> -#include <string> -#include <iostream> -#include <boost/cstdint.hpp> -#include <string> -#include <stdlib.h> -// -// Constructors -// -SiPixelDigiModule::SiPixelDigiModule() { - -} - -SiPixelDigiModule::SiPixelDigiModule(uint32_t id): id_(id) { } - -// -// Destructor -// -SiPixelDigiModule::~SiPixelDigiModule() {} - -// -// Book histograms -// -void SiPixelDigiModule::book() { - DaqMonitorBEInterface* theDMBE = edm::Service<DaqMonitorBEInterface>().operator->(); - char hkey[80]; - sprintf(hkey, "ndigis_module_%i",id_); - meNDigis_ = theDMBE->book1D(hkey,"Number of Digis",50,0.,50.); - sprintf(hkey, "adc_module_%i",id_); - meADC_ = theDMBE->book1D(hkey,"Digi charge",500,0.,500.); - sprintf(hkey, "col_module_%i",id_); - meCol_ = theDMBE->book1D(hkey,"Digi column",500,0.,500.); - sprintf(hkey, "row_module_%i",id_); - meRow_ = theDMBE->book1D(hkey,"Digi row",200,0.,200.); -} - -// -// Fill histograms -// -void SiPixelDigiModule::fill(const edm::DetSetVector<PixelDigi>& input) { - - edm::DetSetVector<PixelDigi>::const_iterator isearch = input.find(id_); // search digis of detid - - if( isearch != input.end() ) { // Not at empty iterator - - unsigned int numberOfDigis = 0; - - // Look at digis now - edm::DetSet<PixelDigi>::const_iterator di; - for(di = isearch->data.begin(); di != isearch->data.end(); di++) { - numberOfDigis++; - int adc = di->adc(); // charge - int col = di->column(); // column - int row = di->row(); // row - (meADC_)->Fill((float)adc); - (meCol_)->Fill((float)col); - (meRow_)->Fill((float)row); - /*if(subid==2&&adc>0){ - std::cout<<"Plaquette:"<<side<<" , "<<disk<<" , "<<blade<<" , " - <<panel<<" , "<<zindex<<" ADC="<<adc<<" , COL="<<col<<" , ROW="<<row<<std::endl; - }else if(subid==1&&adc>0){ - std::cout<<"Module:"<<layer<<" , "<<ladder<<" , "<<zindex<<" ADC=" - <<adc<<" , COL="<<col<<" , ROW="<<row<<std::endl; - }*/ - } - (meNDigis_)->Fill((float)numberOfDigis); - //std::cout<<"number of digis="<<numberOfDigis<<std::endl; - - } - - - //std::cout<<"number of detector units="<<numberOfDetUnits<<std::endl; - -} diff --git a/DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc b/DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc deleted file mode 100644 index 7a26dbf2124..00000000000 --- a/DQM/SiPixelMonitorDigi/src/SiPixelDigiSource.cc +++ /dev/null @@ -1,192 +0,0 @@ -// -*- C++ -*- -// -// Package: SiPixelMonitorDigi -// Class: SiPixelDigiSource -// -/**\class - - Description: Pixel DQM source for Digis - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Vincenzo Chiochia -// Created: -// $Id: SiPixelDigiSource.cc,v 1.5 2006/08/01 16:05:17 llista Exp $ -// -// -#include "DQM/SiPixelMonitorDigi/interface/SiPixelDigiSource.h" -// Framework -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "FWCore/Framework/interface/ModuleFactory.h" -// DQM Framework -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -// Geometry -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" -// DataFormats -#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h" -#include "DataFormats/SiPixelDetId/interface/PXBDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXFDetId.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigiCollection.h" -#include "DataFormats/SiPixelDigi/interface/PixelDigi.h" -#include "DataFormats/Common/interface/DetSetVector.h" -// -#include <boost/cstdint.hpp> -#include <string> -#include <stdlib.h> -using namespace std; - -SiPixelDigiSource::SiPixelDigiSource(const edm::ParameterSet& iConfig) -{ - - //now do what ever initialization is needed - theDMBE = edm::Service<DaqMonitorBEInterface>().operator->(); - cout<<endl<<"SiPixelDigiSource::SiPixelDigiSource: BackEnd interface"<<endl; -} - - -SiPixelDigiSource::~SiPixelDigiSource() -{ - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) -} - - -void SiPixelDigiSource::beginJob(const edm::EventSetup& iSetup){ - - std::cout << " SiPixelDigiSource::beginJob - Initialisation ..... " << std::endl; - eventNo = 0; - // Build map - buildStructure(iSetup); - // Book Monitoring Elements - bookMEs(); - -} - - -void SiPixelDigiSource::endJob(void){ - std::cout << " SiPixelDigiSource::endJob - Saving Root File " << std::endl; - theDMBE->save("sourceoutputfile.root"); -} - -//------------------------------------------------------------------ -// Method called for every event -//------------------------------------------------------------------ -void -SiPixelDigiSource::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - eventNo++; - - std::cout << " Processing event: " << eventNo << std::endl; - - // retrieve producer name of input SiPixelDigiCollection - std::string digiProducer = conf_.getUntrackedParameter<std::string>("DigiProducer","siPixelDigis"); - - // get input data - edm::Handle< edm::DetSetVector<PixelDigi> > input; - iEvent.getByLabel(digiProducer, input); - - std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter; - for (struct_iter = thePixelStructure.begin() ; struct_iter != thePixelStructure.end() ; struct_iter++) { - - (*struct_iter).second->fill(*input); - - } - - - // slow down... - usleep(100000); - - -} - -//------------------------------------------------------------------ -// Build data structure -//------------------------------------------------------------------ -void SiPixelDigiSource::buildStructure(const edm::EventSetup& iSetup){ - - // - // Later on the structure will be built from cabling and - // *not* from geometry - // - std::cout <<" *** SiPixelDigiSource::buildStructure" << std::endl; - edm::ESHandle<TrackerGeometry> pDD; - iSetup.get<TrackerDigiGeometryRecord>().get( pDD ); - - std::cout <<" *** Geometry node for TrackerGeom is "<<&(*pDD)<<std::endl; - std::cout <<" *** I have " << pDD->dets().size() <<" detectors"<<std::endl; - std::cout <<" *** I have " << pDD->detTypes().size() <<" types"<<std::endl; - - for(TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++){ - if(dynamic_cast<PixelGeomDetUnit*>((*it))!=0){ - DetId detId = (*it)->geographicalId(); - - if(detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) { - //cout << " ---> Adding Barrel Module " << detId.rawId() << endl; - uint32_t id = detId(); - SiPixelDigiModule* pippo = new SiPixelDigiModule(id); - thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,pippo)); - - } else if(detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) { - //cout << " ---> Adding Endcap Module " << detId.rawId() << endl; - uint32_t id = detId(); - SiPixelDigiModule* pippo = new SiPixelDigiModule(id); - thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,pippo)); - } - - } - } - cout << " *** Pixel Structure Size " << thePixelStructure.size() << endl; -} -//------------------------------------------------------------------ -// Book MEs -//------------------------------------------------------------------ -void SiPixelDigiSource::bookMEs(){ - - std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter; - string rootDir = "Tracker"; - theDMBE->setVerbose(0); - - for(struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++){ - if(DetId::DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) { - int layer = PXBDetId::PXBDetId((*struct_iter).first).layer(); - int ladder = PXBDetId::PXBDetId((*struct_iter).first).ladder(); - int module = PXBDetId::PXBDetId((*struct_iter).first).module(); - - string ssubdet = "PixelBarrel"; - char slayer[80]; sprintf(slayer, "Layer_%i",layer); - char sladder[80]; sprintf(sladder,"Ladder_%02i",ladder); - char smodule[80]; sprintf(smodule,"Module_%i",module); - string sfolder = rootDir + "/" + ssubdet + "/" + slayer + "/" + sladder + "/" + smodule; - theDMBE->setCurrentFolder(sfolder.c_str()); - (*struct_iter).second->book(); - - } else - if(DetId::DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) { - string ssubdet = "PixelEndcap"; - int side = PXFDetId::PXFDetId((*struct_iter).first).side(); - int disk = PXFDetId::PXFDetId((*struct_iter).first).disk(); - int blade = PXFDetId::PXFDetId((*struct_iter).first).blade(); - int panel = PXFDetId::PXFDetId((*struct_iter).first).panel(); - int module = PXFDetId::PXFDetId((*struct_iter).first).module(); - char sside[80]; sprintf(sside, "Side_%i",side); - char sdisk[80]; sprintf(sdisk, "Disk_%i",disk); - char sblade[80]; sprintf(sblade, "Blade_%02i",blade); - char spanel[80]; sprintf(spanel, "Panel_%i",panel); - char smodule[80];sprintf(smodule,"Module_%i",module); - string sfolder = rootDir + "/" + ssubdet + "/" + sside + "/" + sdisk + "/" + sblade + "/" + spanel + "/" + smodule; - theDMBE->setCurrentFolder(sfolder.c_str()); - (*struct_iter).second->book(); - } - } - -} - -//define this as a plug-in -DEFINE_FWK_MODULE(SiPixelDigiSource) diff --git a/DQM/SiPixelMonitorRawData/doc/html/index.html b/DQM/SiPixelMonitorRawData/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorRawData/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorRawData/doc/html/overview.html b/DQM/SiPixelMonitorRawData/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorRawData/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorRecHit/doc/html/index.html b/DQM/SiPixelMonitorRecHit/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorRecHit/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorRecHit/doc/html/overview.html b/DQM/SiPixelMonitorRecHit/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorRecHit/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiPixelMonitorTrack/doc/html/index.html b/DQM/SiPixelMonitorTrack/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiPixelMonitorTrack/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiPixelMonitorTrack/doc/html/overview.html b/DQM/SiPixelMonitorTrack/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiPixelMonitorTrack/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h b/DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h new file mode 100644 index 00000000000..c2bfa9fd766 --- /dev/null +++ b/DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h @@ -0,0 +1,5 @@ +#ifndef DQM_SiStripCommissioningAnalysis_MeanAndStdDev_H +#define DQM_SiStripCommissioningAnalysis_MeanAndStdDev_H + +#endif // DQM_SiStripCommissioningAnalysis_MeanAndStdDev_H + diff --git a/DQM/SiStripCommissioningAnalysis/src/MeanAndStdDev.cc b/DQM/SiStripCommissioningAnalysis/src/MeanAndStdDev.cc new file mode 100644 index 00000000000..bb7f79915ba --- /dev/null +++ b/DQM/SiStripCommissioningAnalysis/src/MeanAndStdDev.cc @@ -0,0 +1,5 @@ +#include "DQM/SiStripCommissioningAnalysis/interface/MeanAndStdDev.h" +#include <iostream> +#include <math.h> + +using namespace std; diff --git a/DQM/SiStripCommissioningDbClients/doc/html/index.html b/DQM/SiStripCommissioningDbClients/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiStripCommissioningDbClients/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiStripCommissioningDbClients/doc/html/overview.html b/DQM/SiStripCommissioningDbClients/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiStripCommissioningDbClients/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiStripHistoricInfoClient/src/SiStripHistoricInfoClient.cc b/DQM/SiStripHistoricInfoClient/src/SiStripHistoricInfoClient.cc index 6c3ba814912..d0d4e81e84b 100644 --- a/DQM/SiStripHistoricInfoClient/src/SiStripHistoricInfoClient.cc +++ b/DQM/SiStripHistoricInfoClient/src/SiStripHistoricInfoClient.cc @@ -8,7 +8,7 @@ // // Original Author: dkcira // Created: Thu Jun 15 09:32:49 CEST 2006 -// $Id: SiStripHistoricInfoClient.cc,v 1.3 2006/09/29 08:11:58 dkcira Exp $ +// $Id: SiStripHistoricInfoClient.cc,v 1.5 2006/12/05 17:46:07 dkcira Exp $ // #include "DQM/SiStripHistoricInfoClient/interface/SiStripHistoricInfoClient.h" @@ -25,6 +25,8 @@ #include "xoap/MessageFactory.h" #include "xoap/Method.h" #include "xoap/SOAPEnvelope.h" +#define TSTORE_NS_URI "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd" //eventually I suppose this will be defined in a header somewhere + using namespace std; using namespace cgicc; @@ -127,8 +129,25 @@ void SiStripHistoricInfoClient::onUpdate() const // int nr_updates = mui_->getNumUpdates(); cout<<"SiStripHistoricInfoClient::onUpdate() : nr_updates="<<nr_updates<<" "<<nr_updates-firstUpdate<<endl; - if(nr_updates==10){ + if(nr_updates==2){ retrievePointersToModuleMEs(); + cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl; + cout<<"SiStripHistoricInfoClient::retrievePointersToModuleMEs ClientPointersToModuleMEs.size()="<<ClientPointersToModuleMEs.size()<<endl; + for(std::map<uint32_t , vector<MonitorElement *> >::iterator imapmes = ClientPointersToModuleMEs.begin(); imapmes != ClientPointersToModuleMEs.end(); imapmes++){ + cout<<" ++++++detid "<<imapmes->first<<endl; + // MEs from pointer map + vector<MonitorElement*> locvec = imapmes->second; + for(vector<MonitorElement*>::const_iterator imep = locvec.begin(); imep != locvec.end() ; imep++){ + cout<<" ++ "<<(*imep)->getName()<<endl; + } + // tagged MEs + DaqMonitorBEInterface * dbe_ = mui_->getBEInterface(); + std::vector<MonitorElement *> taggedMEs = dbe_->get(imapmes->first); + for(std::vector<MonitorElement *>::const_iterator itme = taggedMEs.begin(); itme != taggedMEs.end(); itme++){ + cout<<" -- "<<(*itme)->getName()<<endl; + } + } + cout<<"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"<<endl; } } @@ -199,36 +218,17 @@ void SiStripHistoricInfoClient::retrievePointersToModuleMEs() const{ void SiStripHistoricInfoClient::tstore_connect(){ cout<<"SiStripHistoricInfoClient::tstore_connect() called"<<endl; - -// // create SOAP message -// xoap::MessageReference msg = xoap::createMessage(); -// try { -// xoap::SOAPEnvelope envelope = msg->getSOAPPart().getEnvelope(); -// xoap::SOAPName msgName = envelope.createName( "connect", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); -// xoap::SOAPElement queryElement = envelope.getBody().addBodyElement ( msgName ); -// -// xoap::SOAPName id = envelope.createName("id", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); -// queryElement.addAttribute(id, "urn:tstore-view-SQL:MyParameterisedView"); -// xoap::SOAPName passwordName = envelope.createName("client4histoplot", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); -// queryElement.addAttribute(passwordName, "grape"); -// } -// catch(xoap::exception::Exception& e) { -// //handle exception -// cout<<"SiStripHistoricInfoClient::tstore_connect() SOAP message: failure to create."<<endl; -// } -// -// // send SOAP message -// try { -// xdaq::ApplicationDescriptor * tstoreDescriptor = getApplicationContext()->getApplicationGroup()->getApplicationDescriptor(getApplicationContext()->getContextDescriptor(),120); -// xoap::MessageReference reply = getApplicationContext()->postSOAP(msg, tstoreDescriptor); -// xoap::SOAPBody body = reply->getSOAPPart().getEnvelope().getBody(); -// if (body.hasFault()) { -// //connection could not be opened -// } -// } -// catch (xdaq::exception::Exception& e) { -// //handle exception -// cout<<"SiStripHistoricInfoClient::tstore_connect() SOAP message: failure to send."<<endl; -// } - + xoap::MessageReference msg = xoap::createMessage(); + try { + xoap::SOAPEnvelope envelope = msg->getSOAPPart().getEnvelope(); + xoap::SOAPName msgName = envelope.createName( "connect", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); + xoap::SOAPElement connectElement = envelope.getBody().addBodyElement ( msgName ); + + xoap::SOAPName id = envelope.createName("id", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); + connectElement.addAttribute(id, "urn:tstore-view-SQL:MyParameterisedView"); + xoap::SOAPName passwordName = envelope.createName("password", "tstore", "http://xdaq.web.cern.ch/xdaq/xsd/2006/tstore-10.xsd"); + connectElement.addAttribute(passwordName, "grape"); + }catch(xoap::exception::Exception& e) { + //handle exception + } } diff --git a/DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h b/DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h index 285ccb5223a..fce65f94057 100644 --- a/DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h +++ b/DQM/SiStripMonitorClient/interface/SiStripActionExecutor.h @@ -29,6 +29,7 @@ class SiStripActionExecutor { void fillLayout(MonitorUserInterface * mui); void saveMEs(MonitorUserInterface * mui, std::string fname); bool getCollationFlag(){return collationDone;} + int getTkMapMENames(std::vector<std::string>& names); private: MonitorElement* getSummaryME(MonitorUserInterface* mui, std::string& name); @@ -41,6 +42,7 @@ class SiStripActionExecutor { SiStripConfigParser* configParser_; SiStripConfigWriter* configWriter_; std::vector<std::string> summaryMENames; + std::vector<std::string> tkMapMENames; bool collationDone; }; #endif diff --git a/DQM/SiStripMonitorClient/interface/SiStripUtility.h b/DQM/SiStripMonitorClient/interface/SiStripUtility.h index f0b6cd2ad46..7f27b4e111b 100644 --- a/DQM/SiStripMonitorClient/interface/SiStripUtility.h +++ b/DQM/SiStripMonitorClient/interface/SiStripUtility.h @@ -5,8 +5,8 @@ * * * Class that handles the SiStrip Quality Tests * - * $Date: 2006/05/29 17:12:23 $ - * $Revision: 1.2 $ + * $Date: 2006/08/01 18:14:27 $ + * $Revision: 1.3 $ * \author Suchandra Dutta */ @@ -14,6 +14,8 @@ #include <fstream> #include <string> #include <map> +#include "DQMServices/Core/interface/MonitorElement.h" + class SiStripUtility { @@ -25,6 +27,9 @@ class SiStripUtility static void split(const std::string& str, std::vector<std::string>& tokens, const std::string& delimiters=" "); + static void getStatusColor(int status, int& rval, int&gval, int& bval); + static void getStatusColor(int status, int& icol, std::string& tag); + static int getStatus(MonitorElement* me); }; #endif diff --git a/DQM/SiStripMonitorClient/interface/SiStripWebInterface.h b/DQM/SiStripMonitorClient/interface/SiStripWebInterface.h index 6c5e410a0f8..0166d848179 100644 --- a/DQM/SiStripMonitorClient/interface/SiStripWebInterface.h +++ b/DQM/SiStripMonitorClient/interface/SiStripWebInterface.h @@ -13,10 +13,10 @@ class SiStripWebInterface : public WebInterface public: enum SiStripActionType{NoAction=0, SubscribeAll=1, Summary=2, Collate=3, - QTestResult=4, PersistantTkMap=5, - TemporaryTkMap=6, SaveData=7, - PlotSingleModuleHistos=-8, - PlotSingleHistogram=9}; + QTestResult=4, CreateTkMap=5, + SaveData=6, + PlotSingleModuleHistos=7, + PlotSingleHistogram=8, PlotTkMapHistogram=9}; SiStripWebInterface(std::string theContextURL, std::string theApplicationURL, MonitorUserInterface ** _mui_p); ~SiStripWebInterface(); diff --git a/DQM/SiStripMonitorClient/interface/TrackerMapCreator.h b/DQM/SiStripMonitorClient/interface/TrackerMapCreator.h index 6516a3fed4d..f97e3f8a17f 100644 --- a/DQM/SiStripMonitorClient/interface/TrackerMapCreator.h +++ b/DQM/SiStripMonitorClient/interface/TrackerMapCreator.h @@ -21,12 +21,7 @@ class TrackerMapCreator { private: MonitorElement* getTkMapMe(MonitorUserInterface* mui,std::string& me_name,int ndet); - void getStatusColor(int status, int& rval, int&gval, int& bval); - void getStatusColor(int status, int& icol, std::string& tag); - int getStatus(MonitorElement* me); - - - void drawMEs(int det_id, std::map<MonitorElement*, int>& me_map); + void paintTkMap(int det_id, std::map<MonitorElement*, int>& me_map); TrackerMap* trackerMap; }; diff --git a/DQM/SiStripMonitorClient/src/SiStripActionExecutor.cc b/DQM/SiStripMonitorClient/src/SiStripActionExecutor.cc index 2bee64804b1..121969c09a0 100644 --- a/DQM/SiStripMonitorClient/src/SiStripActionExecutor.cc +++ b/DQM/SiStripMonitorClient/src/SiStripActionExecutor.cc @@ -61,18 +61,18 @@ bool SiStripActionExecutor::readConfiguration(int& tkmap_freq, int& sum_freq) { void SiStripActionExecutor::createTkMap(MonitorUserInterface* mui) { string tkmap_name; vector<string> me_names; - if (!configParser_->getMENamesForTrackerMap(tkmap_name, me_names)){ + if (!configParser_->getMENamesForTrackerMap(tkmap_name, tkMapMENames)){ cout << "SiStripActionExecutor::createTkMap: Failed to read TrackerMap configuration parameters!! "; return; } - cout << " # of MEs in Tk Map " << me_names.size() << endl; + cout << " # of MEs in Tk Map " << tkMapMENames.size() << endl; // Create and Fill the Tracker Map mui->cd(); if (collationDone) mui->cd("Collector/Collated/SiStrip"); TrackerMapCreator tkmap_creator; - tkmap_creator.create(mui, me_names); + tkmap_creator.create(mui, tkMapMENames); mui->cd(); } @@ -395,7 +395,7 @@ void SiStripActionExecutor::saveMEs(MonitorUserInterface* mui, string fname){ if (collationDone) { mui->save(fname,"Collector/Collated"); } else { - mui->save(fname,"Collector",90); + mui->save(fname,mui->pwd(),90); } } void SiStripActionExecutor::fillSummaryHistos(MonitorUserInterface* mui) { @@ -445,7 +445,6 @@ void SiStripActionExecutor::fillHistos(int ival, int istep, if (name.find("Noise") == string::npos && name.find("NoisyStrips") == string::npos && name.find("PedsPerStrip") == string::npos) { - if (ival == 1) cout << name << me_src->getMean() << endl; me->Fill(ival, me_src->getMean()); } else { int nbins = me_src->getNbinsX(); @@ -467,3 +466,14 @@ void SiStripActionExecutor::fillHistos(int ival, int istep, } } } +// +// -- Get TkMap ME names +// +int SiStripActionExecutor::getTkMapMENames(std::vector<std::string>& names) { + if (tkMapMENames.size() == 0) return 0; + for (vector<string>::iterator it = tkMapMENames.begin(); + it != tkMapMENames.end(); it++) { + names.push_back(*it) ; + } + return names.size(); +} diff --git a/DQM/SiStripMonitorClient/src/SiStripClient.cc b/DQM/SiStripMonitorClient/src/SiStripClient.cc index e7ae01099c1..bf876afa35a 100644 --- a/DQM/SiStripMonitorClient/src/SiStripClient.cc +++ b/DQM/SiStripMonitorClient/src/SiStripClient.cc @@ -98,7 +98,7 @@ void SiStripClient::onUpdate() const // Creation of TrackerMap if (updateFrequencyForTrackerMap_ != -1 && nUpdate > 30) { if (nUpdate%updateFrequencyForTrackerMap_ == 1) { - webInterface_p->setActionFlag(SiStripWebInterface::TemporaryTkMap); + webInterface_p->setActionFlag(SiStripWebInterface::CreateTkMap); seal::Callback action(seal::CreateCallback(webInterface_p, &SiStripWebInterface::performAction)); mui_->addCallback(action); diff --git a/DQM/SiStripMonitorClient/src/SiStripInformationExtractor.cc b/DQM/SiStripMonitorClient/src/SiStripInformationExtractor.cc index 525e9b85f50..8ce145bc1bf 100644 --- a/DQM/SiStripMonitorClient/src/SiStripInformationExtractor.cc +++ b/DQM/SiStripMonitorClient/src/SiStripInformationExtractor.cc @@ -184,7 +184,6 @@ void SiStripInformationExtractor::plotSingleModuleHistos(MonitorUserInterface* m if (mod_id.size() < 9) return; item_list.clear(); getItemList(req_map,"histo", item_list); - vector<MonitorElement*> me_list; mui->cd(); @@ -214,8 +213,10 @@ void SiStripInformationExtractor::plotSingleHistogram(MonitorUserInterface * mui // plot Histograms in a Canvas // void SiStripInformationExtractor::plotHistos(multimap<string,string>& req_map, - vector<MonitorElement*> me_list){ - if (me_list.size() == 0) return; + + vector<MonitorElement*> me_list){ + int nhist = me_list.size(); + if (nhist == 0) return; int width = 600; int height = 600; TCanvas canvas("TestCanvas", "Test Canvas"); @@ -225,7 +226,7 @@ void SiStripInformationExtractor::plotHistos(multimap<string,string>& req_map, float xlow = -1.0; float xhigh = -1.0; - if (me_list.size() == 1) { + if (nhist == 1) { if (hasItem(req_map,"xmin")) xlow = atof(getItemValue(req_map,"xmin").c_str()); if (hasItem(req_map,"xmax")) xhigh = atof(getItemValue(req_map,"xmax").c_str()); ncol = 1; @@ -233,6 +234,28 @@ void SiStripInformationExtractor::plotHistos(multimap<string,string>& req_map, } else { ncol = atoi(getItemValue(req_map, "cols").c_str()); nrow = atoi(getItemValue(req_map, "rows").c_str()); + if (ncol*nrow < nhist) { + if (nhist == 2) { + ncol = 1; + nrow = 2; + } else if (nhist == 3) { + ncol = 1; + nrow = 3; + } else if (nhist == 4) { + ncol = 2; + nrow = 3; + } else if (nhist > 4 && nhist <= 10) { + ncol = 2; + nrow = nhist/ncol+1; + } else if (nhist > 10 && nhist <= 20) { + ncol = 3; + nrow = nhist/ncol+1; + } else if (nhist > 20 && nhist <= 40) { + ncol = 4; + nrow = nhist/ncol+1; + } + + } } if (hasItem(req_map,"width")) @@ -246,6 +269,11 @@ void SiStripInformationExtractor::plotHistos(multimap<string,string>& req_map, for (vector<MonitorElement*>::const_iterator it = me_list.begin(); it != me_list.end(); it++) { i++; + int istat = SiStripUtility::getStatus((*it)); + string tag; + int icol; + SiStripUtility::getStatusColor(istat, icol, tag); + MonitorElementT<TNamed>* ob = dynamic_cast<MonitorElementT<TNamed>*>((*it)); if (ob) { @@ -253,6 +281,12 @@ void SiStripInformationExtractor::plotHistos(multimap<string,string>& req_map, // TAxis* xa = ob->operator->()->GetXaxis(); // xa->SetRangeUser(xlow, xhigh); ob->operator->()->Draw(); + if (icol != 1) { + TText tt; + tt.SetTextSize(0.12); + tt.SetTextColor(icol); + tt.DrawTextNDC(0.5, 0.5, tag.c_str()); + } if (hasItem(req_map,"logy")) { gPad->SetLogy(1); } diff --git a/DQM/SiStripMonitorClient/src/SiStripUtility.cc b/DQM/SiStripMonitorClient/src/SiStripUtility.cc index 005f5c119e1..e8ac01d791b 100644 --- a/DQM/SiStripMonitorClient/src/SiStripUtility.cc +++ b/DQM/SiStripMonitorClient/src/SiStripUtility.cc @@ -1,4 +1,5 @@ #include "DQM/SiStripMonitorClient/interface/SiStripUtility.h" +#include "DQMServices/Core/interface/QTestStatus.h" using namespace std; // // Get a list of MEs in a folder @@ -42,7 +43,6 @@ bool SiStripUtility::checkME(string name, string me_name, string& full_path) { } return false; } -int getMENameList(string name, string& dir_path, string& me_names); // // -- Split a given string into a number of strings using given // delimiters and fill a vector with splitted strings @@ -65,3 +65,58 @@ void SiStripUtility::split(const string& str, vector<string>& tokens, const stri pos = str.find_first_of(delimiters, lastPos); } } +// +// -- Get Color code from Status +// +void SiStripUtility::getStatusColor(int status, int& rval, int&gval, int& bval) { + if (status == dqm::qstatus::STATUS_OK) { + rval = 0; gval = 255; bval = 0; + } else if (status == dqm::qstatus::WARNING) { + rval = 255; gval = 255; bval = 0; + } else if (status == dqm::qstatus::ERROR) { + rval = 255; gval = 0; bval = 0; + } else if (status == dqm::qstatus::OTHER) { + rval = 255; gval = 150; bval = 0; + } else { + rval = 0; gval = 0; bval = 255; + } +} +// +// -- Get Color code from Status +// +void SiStripUtility::getStatusColor(int status, int& icol, string& tag) { + if (status == dqm::qstatus::STATUS_OK) { + tag = "Ok"; + icol = 3; + } else if (status == dqm::qstatus::WARNING) { + tag = "Warning"; + icol = 5; + } else if (status == dqm::qstatus::ERROR) { + tag = "Error"; + icol = 2; + } else if (status == dqm::qstatus::OTHER) { + tag = "Other"; + icol = 1; + } else { + tag = " "; + icol = 1; + } +} +// +// -- Get Status of Monitor Element +// +int SiStripUtility::getStatus(MonitorElement* me) { + int status = 0; + if (me->getQReports().size() == 0) { + status = 0; + } else if (me->hasError()) { + status = dqm::qstatus::ERROR; + } else if (me->hasWarning()) { + status = dqm::qstatus::WARNING; + } else if (me->hasOtherReport()) { + status = dqm::qstatus::OTHER; + } else { + status = dqm::qstatus::STATUS_OK; + } + return status; +} diff --git a/DQM/SiStripMonitorClient/src/SiStripWebInterface.cc b/DQM/SiStripMonitorClient/src/SiStripWebInterface.cc index 8ecfce24f37..464248c913b 100644 --- a/DQM/SiStripMonitorClient/src/SiStripWebInterface.cc +++ b/DQM/SiStripMonitorClient/src/SiStripWebInterface.cc @@ -86,10 +86,8 @@ void SiStripWebInterface::handleCustomRequest(xgi::Input* in,xgi::Output* out) else if (requestID == "CollateME") { theActionFlag = Collate; } - else if (requestID == "SelectTkMap") { - std::string choice = get_from_multimap(requestMap_, "Argument"); - if (choice == tkMapOptions_[0]) theActionFlag = PersistantTkMap; - else if (choice == tkMapOptions_[1]) theActionFlag = TemporaryTkMap; + else if (requestID == "CreateTkMap") { + theActionFlag = CreateTkMap; } else if (requestID == "OpenTkMap") { std::string name = "TkMap"; @@ -128,7 +126,10 @@ void SiStripWebInterface::handleCustomRequest(xgi::Input* in,xgi::Output* out) else if (requestID == "PlotSingleHistogram") { theActionFlag = PlotSingleHistogram; } - else if (requestID == "UpdatePlot") { + else if (requestID == "PlotTkMapHistogram") { + theActionFlag = PlotTkMapHistogram; + } + else if (requestID == "UpdatePlot") { out->getHTTPResponseHeader().addHeader("Content-Type", "image/png"); out->getHTTPResponseHeader().addHeader("Pragma", "no-cache"); out->getHTTPResponseHeader().addHeader("Cache-Control", "no-store, no-cache, must-revalidate,max-age=0"); @@ -180,20 +181,13 @@ void SiStripWebInterface::performAction() { actionExecutor_->createCollation((*mui_p)); break; } - case SiStripWebInterface::PersistantTkMap : + case SiStripWebInterface::CreateTkMap : { if (createTkMap()) { tkMapCreated = true; } break; } - case SiStripWebInterface::TemporaryTkMap : - { - if (createTkMap()) { - tkMapCreated = true; - } - break; - } case SiStripWebInterface::Summary : { actionExecutor_->createSummary((*mui_p)); @@ -215,6 +209,18 @@ void SiStripWebInterface::performAction() { infoExtractor_->plotSingleModuleHistos((*mui_p), requestMap_); break; } + case SiStripWebInterface::PlotTkMapHistogram : + { + vector<string> mes; + int nval = actionExecutor_->getTkMapMENames(mes); + if (nval == 0) break; + for (vector<string>::iterator it = mes.begin(); + it != mes.end(); it++) { + requestMap_.insert(pair<string,string>("histo",(*it))); + } + infoExtractor_->plotSingleModuleHistos((*mui_p), requestMap_); + break; + } case SiStripWebInterface::PlotSingleHistogram : { infoExtractor_->plotSingleHistogram((*mui_p), requestMap_); @@ -240,22 +246,10 @@ void SiStripWebInterface::returnReplyXml(xgi::Output * out, const std::string& n } bool SiStripWebInterface::createTkMap() { - if (theActionFlag == SiStripWebInterface::TemporaryTkMap) { - system("mkdir -p tkmap_files"); - system("rm -rf tkmap_files/*.jpg; rm -rf tkmap_files/*.svg"); + if (theActionFlag == SiStripWebInterface::CreateTkMap) { actionExecutor_->createTkMap((*mui_p)); - system(" mv *.jpg tkmap_files/. ; mv *.svg tkmap_files/."); - return true; - } else if (theActionFlag == SiStripWebInterface::PersistantTkMap) { - system("rm -rf tkmap_files_old/*.jpg; rm -rf tkmap_files_old/*.svg"); - system("rm -rf tkmap_files_old"); - system("mv tkmap_files tkmap_files_old"); - system("mkdir -p tkmap_files"); - actionExecutor_->createTkMap((*mui_p)); - system(" mv *.jpg tkmap_files/. ; mv *.svg tkmap_files/."); return true; } else { return false; } - } diff --git a/DQM/SiStripMonitorClient/src/TrackerMapCreator.cc b/DQM/SiStripMonitorClient/src/TrackerMapCreator.cc index e0426f07b35..b4a54a09042 100644 --- a/DQM/SiStripMonitorClient/src/TrackerMapCreator.cc +++ b/DQM/SiStripMonitorClient/src/TrackerMapCreator.cc @@ -53,7 +53,7 @@ void TrackerMapCreator::create(MonitorUserInterface* mui, vector<string>& me_nam if ((*ic).find(me_name) == string::npos) continue; MonitorElement * me = mui->get((*ic)); if (!me) continue; - istat = getStatus(me); + istat = SiStripUtility::getStatus(me); local_mes.insert(pair<MonitorElement*, int>(me, istat)); if (istat > gstat) gstat = istat; MonitorElement* tkmap_me = getTkMapMe(mui,me_name,ndet); @@ -67,21 +67,14 @@ void TrackerMapCreator::create(MonitorUserInterface* mui, vector<string>& me_nam tkmap_gme->Fill(ibin, gstat); tkmap_gme->setBinLabel(ibin, det_id.c_str()); } - drawMEs(atoi(det_id.c_str()), local_mes); + paintTkMap(atoi(det_id.c_str()), local_mes); } trackerMap->print(true); } // // -- Draw Monitor Elements // -void TrackerMapCreator::drawMEs(int det_id, map<MonitorElement*, int>& me_map) { - - TCanvas canvas("display"); - canvas.Clear(); - if (me_map.size() == 2) canvas.Divide(1,2); - if (me_map.size() == 3) canvas.Divide(1,3); - if (me_map.size() == 4) canvas.Divide(2,2); - +void TrackerMapCreator::paintTkMap(int det_id, map<MonitorElement*, int>& me_map) { int icol; string tag; @@ -90,47 +83,24 @@ void TrackerMapCreator::drawMEs(int det_id, map<MonitorElement*, int>& me_map) { int gstatus = 0; MonitorElement* me; - int i = 0; - for (map<MonitorElement*,int>::const_iterator it = me_map.begin(); it != me_map.end(); it++) { - i++; me = it->first; if (!me) continue; float mean = me->getMean(); comment << mean << " : " ; // global status if (it->second > gstatus ) gstatus = it->second; - - getStatusColor(it->second, icol, tag); - - // Access the Root object and plot - MonitorElementT<TNamed>* ob = - dynamic_cast<MonitorElementT<TNamed>*>(me); - if (ob) { - canvas.cd(i); - TText tt; - tt.SetTextSize(0.15); - tt.SetTextColor(icol); - ob->operator->()->Draw(); - tt.DrawTextNDC(0.6, 0.5, tag.c_str()); - canvas.Update(); - } + SiStripUtility::getStatusColor(it->second, icol, tag); } - cout << " Detector ID : " << det_id << " " << comment.str() << " Status : " << gstatus << endl; trackerMap->setText(det_id, comment.str()); int rval, gval, bval; - getStatusColor(gstatus, rval, gval, bval); + SiStripUtility::getStatusColor(gstatus, rval, gval, bval); trackerMap->fillc(det_id, rval, gval, bval); - - - ostringstream name_str; - name_str << det_id << ".jpg"; - canvas.SaveAs(name_str.str().c_str()); } // // -- get Tracker Map ME @@ -150,58 +120,3 @@ MonitorElement* TrackerMapCreator::getTkMapMe(MonitorUserInterface* mui, } return tkmap_me; } -// -// -- Get Color code from Status -// -void TrackerMapCreator::getStatusColor(int status, int& rval, int&gval, int& bval) { - if (status == dqm::qstatus::STATUS_OK) { - rval = 0; gval = 255; bval = 0; - } else if (status == dqm::qstatus::WARNING) { - rval = 255; gval = 255; bval = 0; - } else if (status == dqm::qstatus::ERROR) { - rval = 255; gval = 0; bval = 0; - } else if (status == dqm::qstatus::OTHER) { - rval = 255; gval = 150; bval = 0; - } else { - rval = 0; gval = 0; bval = 255; - } -} -// -// -- Get Color code from Status -// -void TrackerMapCreator::getStatusColor(int status, int& icol, string& tag) { - if (status == dqm::qstatus::STATUS_OK) { - tag = "Ok"; - icol = 3; - } else if (status == dqm::qstatus::WARNING) { - tag = "Warning"; - icol = 5; - } else if (status == dqm::qstatus::ERROR) { - tag = "Error"; - icol = 2; - } else if (status == dqm::qstatus::OTHER) { - tag = "Other"; - icol = 1; - } else { - tag = " "; - icol = 1; - } -} -// -// -- Get Status of Monitor Element -// -int TrackerMapCreator::getStatus(MonitorElement* me) { - int status = 0; - if (me->getQReports().size() == 0) { - status = 0; - } else if (me->hasError()) { - status = dqm::qstatus::ERROR; - } else if (me->hasWarning()) { - status = dqm::qstatus::WARNING; - } else if (me->hasOtherReport()) { - status = dqm::qstatus::OTHER; - } else { - status = dqm::qstatus::STATUS_OK; - } - return status; -} diff --git a/DQM/SiStripMonitorClient/test/.trackermap.txt b/DQM/SiStripMonitorClient/test/.trackermap.txt new file mode 100644 index 00000000000..766129e4fb8 --- /dev/null +++ b/DQM/SiStripMonitorClient/test/.trackermap.txt @@ -0,0 +1,402 @@ +<?xml version="1.0" standalone="no" ?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg width="100%" height="100%" viewBox="0 0 1400 700" xmlns="http://www.w3.org/2000/svg" onload="init(evt)" onresize="myMapApp.resetFactors();" zoomAndPan="disable"> +<script type="text/ecmascript"> <![CDATA[ + //section to contain script code + //global variable to hold reference to svgdocument element + var svgdoc; + var myMapApp = new mapApp(); + var myMainMap; + var myRefMapDragger; + function init(evt) { + //get the svgdocument reference + svgdoc = evt.target.ownerDocument; + + myMapApp.resetFactors(); + myMainMap = new map("mainMap",3000,100,1000,0.6); + //set constraints to draggable rect in reference map + myRefMapDragger = new dragObj("dragRectForRefMap",0,200,510,610,"ul"); + + //colorRegion(); + } + function showData(evt) { + var xlinkns = "http://www.w3.org/1999/xlink"; + var myPoly = evt.target; + var myDynamicTrackerText = svgdoc.getElementById("TrackerText"); + var myDynamicTrackerText1 = svgdoc.getElementById("TrackerText1"); + var myDynamicTrackerMessage = svgdoc.getElementById("TrackerMessage"); + var myTrackerPlot = svgdoc.getElementById("plot"); + if (evt.type == "mouseover") { + var myTracker = myPoly.getAttribute("POS"); + var myTracker1 = " value="+myPoly.getAttribute("value"); + var myMessage = myPoly.getAttribute("MESSAGE"); + myTracker1 = myTracker1+" count="+myPoly.getAttribute("count"); + myDynamicTrackerText.firstChild.setData(myTracker); + myDynamicTrackerText1.firstChild.setData(myTracker1); + myDynamicTrackerMessage.firstChild.setData(myMessage); + } + + if (evt.type == "mouseout") { + myDynamicTrackerText.firstChild.setData("-"); + } + if (evt.type == "click") { + myDynamicTrackerText.firstChild.setData("-"); + var moduleId = myPoly.getAttribute("detid"); + var url_serv = "http://.host:1972/urn:xdaq-application:lid=15/Request?"; + var queryString = "RequestID=PlotTkMapHistogram"; + queryString+= "&ModId=" + moduleId; + var url1 = url_serv + queryString; +// var filename=moduleId+".jpg"; +// myTrackerPlot.setAttributeNS( xlinkns, "xlink:href", filename ) + myTrackerPlot.setAttributeNS( xlinkns, "xlink:href", url1); + + pausecomp(5000); + queryString = "RequestID=UpdatePlot&t="+moduleId; + var url2 = url_serv + queryString; + + myTrackerPlot.setAttributeNS( xlinkns, "xlink:href", url2); + + var myTracker = myPoly.getAttribute("POS"); + myTracker = myTracker+" value="+myPoly.getAttribute("value"); + myTracker = myTracker+" count="+myPoly.getAttribute("count"); + myDynamicTrackerText.firstChild.setData(myTracker); + } + } + function colorRegion() { + var myGroup = svgdoc.getElementById("tracker"); + var children = myGroup.childNodes; + var myModule; + //loop over all children + //for (var i = 0; i < children.length;i++) { + for (var i = 0; i < 10000;i++) { + //check if it is a path-element + if (children.item(i).nodeName == "polygon") { + myModule = children.item(i).getAttribute("MODULE"); + switch (myModule) { + case "stereo": + myColor = "blue"; + break; + case "nostereo": + myColor = "rgb(255,255,0)"; + break; + default: + myColor = "red"; + } + children.item(i).setAttribute("fill",myColor); + } + } + } + //holds data on map + function map(mapName,origWidth,minZoom,maxZoom,zoomFact) { + var mapSVG = svgdoc.getElementById(mapName); + this.mapName = mapName; + this.origWidth = origWidth; + this.minZoom = minZoom; + this.maxZoom = maxZoom; + this.zoomFact = zoomFact; + this.pixXOffset = parseFloat(mapSVG.getAttributeNS(null,"x")); + this.pixYOffset = parseFloat(mapSVG.getAttributeNS(null,"y")); + viewBoxArray = mapSVG.getAttributeNS(null,"viewBox").split(" "); + this.curxOrig = parseFloat(viewBoxArray[0]); + this.curyOrig = parseFloat(viewBoxArray[1]); + this.curWidth = parseFloat(viewBoxArray[2]); + this.curHeight = parseFloat(viewBoxArray[3]); + this.pixWidth = parseFloat(mapSVG.getAttributeNS(null,"width")); + this.pixHeight = parseFloat(mapSVG.getAttributeNS(null,"height")); + this.pixXOrig = parseFloat(mapSVG.getAttributeNS(null,"x")); + this.pixYOrig = parseFloat(mapSVG.getAttributeNS(null,"y")); + this.pixSize = this.curWidth / this.pixWidth; + this.zoomVal = this.origWidth / this.curWidth * 100; + } + map.prototype.newViewBox = function(refRectId,refMapId) { + var myRefRect = svgdoc.getElementById(refRectId); + var myRefMapSVG = svgdoc.getElementById(refMapId); + var viewBoxArray = myRefMapSVG.getAttributeNS(null,"viewBox").split(" "); + var refPixSize = viewBoxArray[2] / myRefMapSVG.getAttributeNS(null,"width"); + this.curxOrig = parseFloat(viewBoxArray[0]) + (myRefRect.getAttributeNS(null,"x") - myRefMapSVG.getAttributeNS(null,"x")) * refPixSize; + this.curyOrig = parseFloat(viewBoxArray[1]) + (myRefRect.getAttributeNS(null,"y") - myRefMapSVG.getAttributeNS(null,"y")) * refPixSize; + this.curWidth = myRefRect.getAttributeNS(null,"width") * refPixSize; + this.curHeight = myRefRect.getAttributeNS(null,"height") * refPixSize; + var myViewBoxString = this.curxOrig + " " + this.curyOrig + " " + this.curWidth + " " + this.curHeight; + this.pixSize = this.curWidth / this.pixWidth; + this.zoomVal = this.origWidth / this.curWidth * 100; + svgdoc.getElementById(this.mapName).setAttributeNS(null,"viewBox",myViewBoxString); + } + //holds data on window size + function mapApp() { + } + //calculate ratio and offset values of app window + mapApp.prototype.resetFactors = function() { + var svgroot = svgdoc.documentElement; + if (!svgroot.getScreenCTM) { + //case for ASV3 and Corel + var viewBoxArray = svgroot.getAttributeNS(null,"viewBox").split(" "); + var myRatio = viewBoxArray[2]/viewBoxArray[3]; + if ((window.innerWidth/window.innerHeight) > myRatio) { //case window is more wide than myRatio + this.scaleFactor = viewBoxArray[3] / window.innerHeight; + } + else { //case window is more tall than myRatio + this.scaleFactor = viewBoxArray[2] / window.innerWidth; + } + this.offsetX = (window.innerWidth - viewBoxArray[2] * 1 / this.scaleFactor) / 2; + this.offsetY = (window.innerHeight - viewBoxArray[3] * 1 / this.scaleFactor) / 2; + } + } + mapApp.prototype.calcCoord = function(coordx,coordy) { + var svgroot = svgdoc.documentElement; + var coords = new Array(); + if (!svgroot.getScreenCTM) { + //case ASV3 a. Corel + coords["x"] = (coordx - this.offsetX) * this.scaleFactor; + coords["y"] = (coordy - this.offsetY) * this.scaleFactor; + } + else { + matrix=svgroot.getScreenCTM(); + coords["x"]= matrix.inverse().a*coordx+matrix.inverse().c*coordy+matrix.inverse().e; + coords["y"]= matrix.inverse().b*coordx+matrix.inverse().d*coordy+matrix.inverse().f; + } + return coords; + } + + //make an element draggable with constraints + function dragObj(dragId,constrXmin,constrXmax,constrYmin,constrYmax,refPoint) { + this.dragId = dragId; + this.constrXmin = constrXmin; + this.constrXmax = constrXmax; + this.constrYmin = constrYmin; + this.constrYmax = constrYmax; + this.refPoint = refPoint; + this.status = "false"; + } + dragObj.prototype.drag = function(evt) { + //works only for rect and use-elements + var myDragElement = evt.target; + if (evt.type == "mousedown") { + var coords = myMapApp.calcCoord(evt.clientX,evt.clientY); + this.curX = coords["x"]; + this.curY = coords["y"]; + this.status = "true"; + } + if (evt.type == "mousemove" && this.status == "true") { + var coords = myMapApp.calcCoord(evt.clientX,evt.clientY); + var newEvtX = coords["x"]; + var newEvtY = coords["y"]; + var bBox = myDragElement.getBBox(); + if (this.refPoint == "ul") { + var toMoveX = bBox.x + newEvtX - this.curX; + var toMoveY = bBox.y + newEvtY - this.curY; + } + else { + //refPoint = center + var toMoveX = bBox.x + bBox.width / 2 + newEvtX - this.curX; + var toMoveY = bBox.y + bBox.height / 2 + newEvtY - this.curY; + } + if ((bBox.x + newEvtX - this.curX) < this.constrXmin) { + if(this.refPoint == "ul") { + toMoveX = this.constrXmin; + } + else { + toMoveX = this.constrXmin + bBox.width / 2; + } + } + if ((bBox.x + newEvtX - this.curX + bBox.width) > this.constrXmax) { + if(this.refPoint == "ul") { + toMoveX = this.constrXmax - bBox.width; + } + else { + toMoveX = this.constrXmax - bBox.width / 2; + } + } + if ((bBox.y + newEvtY - this.curY) < this.constrYmin) { + if(this.refPoint == "ul") { + toMoveY = this.constrYmin; + } + else { + toMoveY = this.constrYmin + bBox.height / 2; + } + } + if ((bBox.y + bBox.height + newEvtY - this.curY) > this.constrYmax) { + if(this.refPoint == "ul") { + toMoveY = this.constrYmax - bBox.height; + } + else { + toMoveY = this.constrYmax - bBox.height / 2; + } + } + myDragElement.setAttributeNS(null,"x",toMoveX); + myDragElement.setAttributeNS(null,"y",toMoveY); + this.curX = newEvtX; + this.curY = newEvtY; + } + if (evt.type == "mouseup" || evt.type == "mouseout") { + this.status = "false"; + } + } + dragObj.prototype.zoom = function(inOrOut) { + var myDragElement = svgdoc.getElementById(this.dragId); + var myOldX = myDragElement.getAttributeNS(null,"x"); + var myOldY = myDragElement.getAttributeNS(null,"y"); + var myOldWidth = myDragElement.getAttributeNS(null,"width"); + var myOldHeight = myDragElement.getAttributeNS(null,"height"); + switch (inOrOut) { + case "in": + var myNewX = parseFloat(myOldX) + myOldWidth / 2 - (myOldWidth * myMainMap.zoomFact * 0.5); + var myNewY = parseFloat(myOldY) + myOldHeight / 2 - (myOldHeight * myMainMap.zoomFact * 0.5); + var myNewWidth = myOldWidth * myMainMap.zoomFact; + var myNewHeight = myOldHeight * myMainMap.zoomFact; + break; + case "out": + var myNewX = parseFloat(myOldX) + myOldWidth / 2 - (myOldWidth * (1 + myMainMap.zoomFact) * 0.5); + var myNewY = parseFloat(myOldY) + myOldHeight / 2 - (myOldHeight * (1 + myMainMap.zoomFact) * 0.5); + var myNewWidth = myOldWidth * (1 + myMainMap.zoomFact); + var myNewHeight = myOldHeight * (1 + myMainMap.zoomFact); + break; + default: + var myNewX = this.constrXmin; + var myNewY = this.constrYmin; + var myNewWidth = this.constrXmax - this.constrXmin; + var myNewHeight = this.constrYmax - this.constrYmin; + break; + } + if (myNewWidth > (this.constrXmax - this.constrXmin)) { + myNewWidth = this.constrXmax - this.constrXmin; + } + if (myNewHeight > (this.constrYmax - this.constrYmin)) { + myNewHeight = this.constrYmax - this.constrYmin; + } + if (myNewX < this.constrXmin) { + myNewX = this.constrXmin; + } + if (myNewY < this.constrYmin) { + myNewY = this.constrYmin; + } + if ((myNewX + myNewWidth) > this.constrXmax) { + myNewX = this.constrXmax - myNewWidth; + } + if ((myNewY + myNewHeight) > this.constrYmax) { + myNewY = this.constrYmax - myNewHeight; + } + myDragElement.setAttributeNS(null,"x",myNewX); + myDragElement.setAttributeNS(null,"y",myNewY); + myDragElement.setAttributeNS(null,"width",myNewWidth); + myDragElement.setAttributeNS(null,"height",myNewHeight); + myMainMap.newViewBox(this.dragId,"referenceMap"); + } + //magnifier glass mouse-over effects + function magnify(evt,scaleFact,inOrOut) { + if (inOrOut == "in") { + if (myMainMap.zoomVal < myMainMap.maxZoom) { + scaleObject(evt,scaleFact); + } + else { + } + } + if (inOrOut == "out") { + if (myMainMap.zoomVal > myMainMap.minZoom) { + scaleObject(evt,scaleFact); + } + else { + } + } + if (inOrOut == "full") { + if (myMainMap.zoomVal > myMainMap.minZoom) { + scaleObject(evt,scaleFact); + } + else { + } + } + if (scaleFact == 1) { + scaleObject(evt,scaleFact); + } + } + //scale an object + function scaleObject(evt,factor) { + //reference to the currently selected object + var element = evt.currentTarget; + var myX = element.getAttributeNS(null,"x"); + var myY = element.getAttributeNS(null,"y"); + var newtransform = "scale(" + factor + ") translate(" + (myX * 1 / factor - myX) + " " + (myY * 1 / factor - myY) +")"; + element.setAttributeNS(null,'transform', newtransform); + } + function zoomIt(inOrOut) { + if (inOrOut == "in") { + if (myMainMap.zoomVal < myMainMap.maxZoom) { + myRefMapDragger.zoom("in"); + } + else { + } + } + if (inOrOut == "out") { + if (myMainMap.zoomVal > myMainMap.minZoom) { + myRefMapDragger.zoom("out"); + } + else { + } + } + if (inOrOut == "full") { + if (myMainMap.zoomVal > myMainMap.minZoom) { + myRefMapDragger.zoom("full"); + } + else { + } + } + } + +function pausecomp(millis) +{ +var inizio = new Date(); +var inizioint=inizio.getTime(); +var intervallo = 0; +while(intervallo<millis){ +var fine = new Date(); +var fineint=fine.getTime(); + intervallo = fineint-inizioint; +} +return; +} + +]]> </script> +<defs> +<!-- section for CSS stylesheet definitions --> +<style type="text/css"><![CDATA[ + .normalText {font-size:20;fill:black;font-weight:bold;} + .dragRect {fill:darkcyan;stroke:none;opacity:0.4;} + ]]></style> + <symbol id="magnifyer" overflow="visible" style="fill:white;stroke:darkcyan;stroke-width:2;" > + <circle r="12" /> + </symbol> + <symbol id="magnifyerZoomOut" overflow="visible" style="fill:white;stroke:darkcyan;stroke-width:2;" > + <use xlink:href="#magnifyer"/> + <line x1="-6" y1="0" x2="6" y2="0" style="stroke:darkcyan;stroke-width:2;"/> + </symbol> + <symbol id="magnifyerZoomIn" overflow="visible"> + <use xlink:href="#magnifyer"/> + <line x1="-6" y1="0" x2="6" y2="0" style="stroke:darkcyan;stroke-width:2;"/> + <line x1="0" y1="-6" x2="0" y2="6" style="stroke:darkcyan;stroke-width:2;"/> + </symbol> + <symbol id="magnifyerFull" overflow="visible"> + <use xlink:href="#magnifyer"/> + <line x1="-2" y1="0" x2="4" y2="0" style="stroke:darkcyan;stroke-width:2;"/> + <line x1="-2" y1="-6" x2="-4" y2="6" style="stroke:darkcyan;stroke-width:2;"/> + <line x1="-2" y1="-6" x2="5" y2="-6" style="stroke:darkcyan;stroke-width:2;"/> + </symbol> +</defs> +<svg id="referenceMap" x="0" y="510" viewBox="0 0 3000 1600" width="180" height="100" pointer-events="none"> + <use xlink:href="#tracker" /> +</svg> +<rect id="dragRectForRefMap" class="dragRect" x="0" y="510" width="180" height="100" onmousedown="myRefMapDragger.drag(evt)" onmousemove="myRefMapDragger.drag(evt)" onmouseup="myRefMapDragger.drag(evt);myMainMap.newViewBox('dragRectForRefMap','referenceMap')" /> + + <g id="navigatorElements" class="normalText"> + <text x="220" y="530">Zoom</text> + <!--istanziare il simbolo--> + <use id="zoomOut" x="230" y="560" xlink:href="#magnifyerZoomOut" onclick="zoomIt('out');" onmouseover="magnify(evt,1.2,'out');" onmouseout="magnify(evt,1,'out');" /> + <use id="zoomIn" x="270" y="560" xlink:href="#magnifyerZoomIn" onclick="zoomIt('in');" onmouseover="magnify(evt,1.2,'in');" onmouseout="magnify(evt,1,'in');"/> + <use id="zoomFull" x="310" y="560" xlink:href="#magnifyerFull" onclick="zoomIt('full');" onmouseover="magnify(evt,1.2,'full');" onmouseout="magnify(evt,1,'full');"/> + <text id="TrackerText" x="350" y="530"> - </text> + <text id="TrackerText1" x="350" y="565"> - </text> + <text id="TrackerMessage" x="350" y="600"> - </text> + </g> +<image id="plot" x="900" y="10" width="420" height="400" /> +<svg id="mainMap" x="0" y="0" viewBox="0 0 3000 1600" width="900" height="500"> +<rect fill="lightblue" stroke="none" x="0" y="0" width="3000" height="1600" /> +<g id="tracker" transform="translate(10,1500) rotate(270)" style="fill:none;stroke:black;stroke-width:0;"> diff --git a/DQM/SiStripMonitorClient/test/Online.html b/DQM/SiStripMonitorClient/test/Online.html index ea852526516..5b59393c25a 100644 --- a/DQM/SiStripMonitorClient/test/Online.html +++ b/DQM/SiStripMonitorClient/test/Online.html @@ -73,18 +73,13 @@ onClick="CheckQualityTestResults()" type="submit"> </input> - <label id="tkmap" - style="width:22%;margin-left:2%"> - Create TkMap: - </label> - <select name="TrackerMap" - id="create_tkmap" - style="width:18%;text-align:left;margin-right:2%" - onchange="CreateTrackerMap()"> - <option value="Temporary" SELECTED> Temporary </option> - <option value="Persistant"> Persistant </option> - - </select> + <input name="UpdateTrackerMap" + id="create_tkmap" + value="Create Tk Map" + style="width:23%;margin-left:2%;margin-bottom:1%;margin-top:1%;margin-right:2%" + onClick="CreateTrackerMap()" + type="submit"> + </input> </fieldset> </div> <div id="dhtmlgoodies_tabView1" style="float=right:width:50%;padding:0.1% 0%"> @@ -198,10 +193,10 @@ style="width:20%;height:5%;text-align;margin-right:2%"> <option value="SiStrip/MechanicalView/TIB" SELECTED> TIB </option> <option value="SiStrip/MechanicalView/TOB"> TOB </option> - <option value="SiStrip/MechanicalView/TEC/side_1"> TECF </option> - <option value="SiStrip/MechanicalView/TID/side_1"> TIDF </option> - <option value="SiStrip/MechanicalView/TEC/side_2"> TECB </option> - <option value="SiStrip/MechanicalView/TID/side_2"> TIDB </option> + <option value="SiStrip/MechanicalView/TEC/side_2"> TECF </option> + <option value="SiStrip/MechanicalView/TID/side_2"> TIDF </option> + <option value="SiStrip/MechanicalView/TEC/side_1"> TECB </option> + <option value="SiStrip/MechanicalView/TID/side_1"> TIDB </option> </select> <input name="listsummary" id="list_summary" @@ -230,10 +225,10 @@ style="width:20%;height:5%;text-align;margin-right:2%"> <option value="SiStrip/MechanicalView/TIB" SELECTED> TIB </option> <option value="SiStrip/MechanicalView/TOB"> TOB </option> - <option value="SiStrip/MechanicalView/TEC/side_1"> TECF </option> - <option value="SiStrip/MechanicalView/TID/side_1"> TIDF </option> - <option value="SiStrip/MechanicalView/TEC/side_2"> TECB </option> - <option value="SiStrip/MechanicalView/TID/side_2"> TIDB </option> + <option value="SiStrip/MechanicalView/TEC/side_2"> TECF </option> + <option value="SiStrip/MechanicalView/TID/side_2"> TIDF </option> + <option value="SiStrip/MechanicalView/TEC/side_1"> TECB </option> + <option value="SiStrip/MechanicalView/TID/side_1"> TIDB </option> </select> <input name="listalarm" id="read_alarm" diff --git a/DQM/SiStripMonitorClient/test/StartAll b/DQM/SiStripMonitorClient/test/StartAll index 17b03eff3f2..72f6d952120 100755 --- a/DQM/SiStripMonitorClient/test/StartAll +++ b/DQM/SiStripMonitorClient/test/StartAll @@ -1,12 +1,47 @@ #!/bin/sh +function usage() { +cat <<EOF + + execute the script in the following way : + + ./StartAll RUN_TYPE + + where + - RUN_TYPE (DQM sources you want to activate): ped/digi/digi_cluster + + Example 1 : ./StartAll ped + Example 2 : ./StartAll digi_cluster + +EOF +} +if [ $# -lt 1 ]; then + usage; exit 1; +fi +./StopAll +COLLECTORNAME=`/bin/hostname` +echo "The hostname is = " $COLLECTORNAME eval `scramv1 runtime -sh` xterm -T "DQM Collector" -sb -sl 100 -e DQMCollector & -export PRODUCER_PATH=${CMSSW_BASE}/src/DQM/SiStripMonitorCluster/test -cd ${PRODUCER_PATH} -xterm -T "DQM Producer(Source)" -sb -sl 30000 -e cmsRun DQM_digicluster.cfg & +source_type=$1 +echo $source_type +if [ "$source_type" == "ped" ]; then + cp sistrip_monitorelement_config_ped.xml sistrip_monitorelement_config.xml + cp sistrip_qualitytest_config_ped.xml sistrip_qualitytest_config.xml + export PRODUCER_PATH=${CMSSW_BASE}/src/DQM/SiStripMonitorPedestals/test + cd ${PRODUCER_PATH} + export CORAL_AUTH_PATH=/afs/cern.ch/cms/DB/conddb + xterm -T "DQM Producer(Source)" -sb -sl 30000 -e ./PedsMonWithDB.csh & +elif [ "$source_type" == "digi_cluster" ]; then + cp sistrip_monitorelement_config_cluster_digi.xml sistrip_monitorelement_config.xml + cp sistrip_qualitytest_config_cluster_digi.xml sistrip_qualitytest_config.xml + export PRODUCER_PATH=${CMSSW_BASE}/src/DQM/SiStripMonitorCluster/test + cd ${PRODUCER_PATH} + perl -pi.bak -e "s#localhost#$COLLECTORNAME#g" OnlyDQM.cfg + xterm -T "DQM Producer(Source)" -sb -sl 30000 -e cmsRun OnlyDQM.cfg & +fi export CONSUMER_PATH=${CMSSW_BASE}/src/DQM/SiStripMonitorClient/test cd ${CONSUMER_PATH} -setup.sh -startMonitorClient +./setup.sh $COLLECTORNAME +./startMonitorClient diff --git a/DQM/SiStripMonitorClient/test/StopAll b/DQM/SiStripMonitorClient/test/StopAll new file mode 100755 index 00000000000..997761437a8 --- /dev/null +++ b/DQM/SiStripMonitorClient/test/StopAll @@ -0,0 +1,7 @@ +!/bin/sh +killall DQMCollector +killall cmsRun +killall xdaq.exe +\rm -r SiStripClient.xml +\rm -r profile.xml +\rm -r startMonitorClient diff --git a/DQM/SiStripMonitorClient/test/embedded_svg.html b/DQM/SiStripMonitorClient/test/embedded_svg.html index 717d102a46e..9877856b316 100644 --- a/DQM/SiStripMonitorClient/test/embedded_svg.html +++ b/DQM/SiStripMonitorClient/test/embedded_svg.html @@ -1,7 +1,7 @@ <html> <head><title>SVG embedded in a html page</title></head> <body> -<embed src="tkmap_files/svgmap.svg" width="1100" height="600" wmode="transparent" +<embed src="svgmap.svg" width="1100" height="600" wmode="transparent" type="image/svg+xml" /> </object> </body> diff --git a/DQM/SiStripMonitorClient/test/setup.sh b/DQM/SiStripMonitorClient/test/setup.sh index 178d3c90aef..c5005ffc961 100755 --- a/DQM/SiStripMonitorClient/test/setup.sh +++ b/DQM/SiStripMonitorClient/test/setup.sh @@ -41,7 +41,7 @@ sed -e "s/.portn/1972/g" -e "s/.host/${HOSTNAME}/g" -e "s/.pwd/${TEST_PATH}/g" - sed -e "s/.portn/1972/g" -e "s/.host/${HOSTNAME}/g" -e "s/.pwd/${TEST_PATH}/g" -e "s/.libpath/${MWC_LIB}/g" .startMonitorClient > startMonitorClient sed -e "s@SERVED_DIRECTORY_URL@${SERVED_DIR}@g" .WebLib.js > WebLib.js - +sed -e "s@.host@${HOSTNAME}@g" .trackermap.txt > trackermap.txt chmod 751 profile.xml chmod 751 SiStripClient.xml diff --git a/DQM/SiStripMonitorHardware/doc/html/index.html b/DQM/SiStripMonitorHardware/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiStripMonitorHardware/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiStripMonitorHardware/doc/html/overview.html b/DQM/SiStripMonitorHardware/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiStripMonitorHardware/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/SiStripMonitorPedestals/test/PedsMonWithDB.csh b/DQM/SiStripMonitorPedestals/test/PedsMonWithDB.csh index 8d09a450872..a3056d3a843 100755 --- a/DQM/SiStripMonitorPedestals/test/PedsMonWithDB.csh +++ b/DQM/SiStripMonitorPedestals/test/PedsMonWithDB.csh @@ -1,7 +1,11 @@ #!/bin/tcsh eval `scramv1 runtime -csh` SealPluginRefresh -source /afs/cern.ch/project/oracle/script/setoraenv.csh -s 10201 +# For Onine DB ( NOT Default) +#setenv TNS_ADMIN /afs/cern.ch/project/oracle/admin +#source /afs/cern.ch/project/oracle/script/setoraenv.csh -s 10201 +# For Offline Condition DB +setenv CORAL_AUTH_PATH /afs/cern.ch/cms/DB/conddb cmsRun PedsMonWithDB.cfg diff --git a/DQM/SiStripMonitorTrack/doc/html/index.html b/DQM/SiStripMonitorTrack/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/SiStripMonitorTrack/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/SiStripMonitorTrack/doc/html/overview.html b/DQM/SiStripMonitorTrack/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/SiStripMonitorTrack/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/TrackerCommon/doc/html/index.html b/DQM/TrackerCommon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/TrackerCommon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/TrackerCommon/doc/html/overview.html b/DQM/TrackerCommon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/TrackerCommon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/TrackingMonitor/doc/html/index.html b/DQM/TrackingMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/TrackingMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/TrackingMonitor/doc/html/overview.html b/DQM/TrackingMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/TrackingMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/TrigXMonitor/doc/html/index.html b/DQM/TrigXMonitor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/TrigXMonitor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/TrigXMonitor/doc/html/overview.html b/DQM/TrigXMonitor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/TrigXMonitor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQM/TrigXMonitorClient/doc/html/index.html b/DQM/TrigXMonitorClient/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQM/TrigXMonitorClient/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQM/TrigXMonitorClient/doc/html/overview.html b/DQM/TrigXMonitorClient/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQM/TrigXMonitorClient/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/Alignment/doc/html/index.html b/DQMOffline/Alignment/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/Alignment/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/Alignment/doc/html/overview.html b/DQMOffline/Alignment/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/Alignment/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/CalibCalo/doc/html/index.html b/DQMOffline/CalibCalo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/CalibCalo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/CalibCalo/doc/html/overview.html b/DQMOffline/CalibCalo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/CalibCalo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/CalibMuon/doc/html/index.html b/DQMOffline/CalibMuon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/CalibMuon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/CalibMuon/doc/html/overview.html b/DQMOffline/CalibMuon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/CalibMuon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/CalibTracker/doc/html/index.html b/DQMOffline/CalibTracker/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/CalibTracker/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/CalibTracker/doc/html/overview.html b/DQMOffline/CalibTracker/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/CalibTracker/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/Configuration/doc/html/index.html b/DQMOffline/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/Configuration/doc/html/overview.html b/DQMOffline/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/EGamma/doc/html/index.html b/DQMOffline/EGamma/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/EGamma/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/EGamma/doc/html/overview.html b/DQMOffline/EGamma/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/EGamma/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/Ecal/doc/html/index.html b/DQMOffline/Ecal/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/Ecal/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/Ecal/doc/html/overview.html b/DQMOffline/Ecal/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/Ecal/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/JetMET/doc/html/index.html b/DQMOffline/JetMET/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/JetMET/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/JetMET/doc/html/overview.html b/DQMOffline/JetMET/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/JetMET/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/Muon/doc/html/index.html b/DQMOffline/Muon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/Muon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/Muon/doc/html/overview.html b/DQMOffline/Muon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/Muon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/PFTau/doc/html/index.html b/DQMOffline/PFTau/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/PFTau/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/PFTau/doc/html/overview.html b/DQMOffline/PFTau/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/PFTau/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/RecoB/doc/html/index.html b/DQMOffline/RecoB/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/RecoB/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/RecoB/doc/html/overview.html b/DQMOffline/RecoB/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/RecoB/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMOffline/Trigger/doc/html/index.html b/DQMOffline/Trigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMOffline/Trigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMOffline/Trigger/doc/html/overview.html b/DQMOffline/Trigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMOffline/Trigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DQMServices/ClientConfig/src/QTestConfigure.cc b/DQMServices/ClientConfig/src/QTestConfigure.cc index 35406e0fcff..2ab9d95e68b 100644 --- a/DQMServices/ClientConfig/src/QTestConfigure.cc +++ b/DQMServices/ClientConfig/src/QTestConfigure.cc @@ -2,11 +2,12 @@ * * Implementation of QTestConfigure * - * $Date: 2006/07/20 16:04:59 $ - * $Revision: 1.2 $ + * $Date: 2006/05/09 21:28:37 $ + * $Revision: 1.1 $ * \author Ilaria Segoni */ #include "DQMServices/ClientConfig/interface/QTestConfigure.h" +#include "DQMServices/ClientConfig/interface/QTestNames.h" #include "DQMServices/QualityTests/interface/QCriterionRoot.h" bool QTestConfigure::enableTests(std::map<std::string, std::map<std::string, std::string> > tests,MonitorUserInterface * mui){ @@ -19,13 +20,13 @@ bool QTestConfigure::enableTests(std::map<std::string, std::map<std::string, std std::map<std::string, std::string> params= itr->second; std::string testName = itr->first; - std::string testType = params["type"]; + std::string testType = params[dqm::qtest_config::type]; - if(!std::strcmp(testType.c_str(),ContentsXRangeROOT::getAlgoName().c_str())) this->EnableXRangeTest(testName, params,mui); - if(!std::strcmp(testType.c_str(),ContentsYRangeROOT::getAlgoName().c_str())) this->EnableYRangeTest(testName, params,mui); - if(!std::strcmp(testType.c_str(),DeadChannelROOT::getAlgoName().c_str())) this->EnableDeadChannelTest(testName, params,mui); - if(!std::strcmp(testType.c_str(),NoisyChannelROOT::getAlgoName().c_str())) this->EnableNoisyChannelTest(testName, params,mui); - if(!std::strcmp(testType.c_str(),MeanWithinExpectedROOT::getAlgoName().c_str())) this->EnableMeanWithinExpectedTest(testName, params,mui); + if(!std::strcmp(testType.c_str(),dqm::qtest_config::XRangeContent.c_str())) this->EnableXRangeTest(testName, params,mui); + if(!std::strcmp(testType.c_str(),dqm::qtest_config::YRangeContent.c_str())) this->EnableYRangeTest(testName, params,mui); + if(!std::strcmp(testType.c_str(),dqm::qtest_config::DeadChannel.c_str())) this->EnableDeadChannelTest(testName, params,mui); + if(!std::strcmp(testType.c_str(),dqm::qtest_config::NoisyChannel.c_str())) this->EnableNoisyChannelTest(testName, params,mui); + if(!std::strcmp(testType.c_str(),dqm::qtest_config::MeanInExpectedValue.c_str())) this->EnableMeanWithinExpectedTest(testName, params,mui); } return false; diff --git a/DQMServices/ClientConfig/src/QTestParameterNames.cc b/DQMServices/ClientConfig/src/QTestParameterNames.cc index 07baa115bbe..74c3848ef44 100644 --- a/DQMServices/ClientConfig/src/QTestParameterNames.cc +++ b/DQMServices/ClientConfig/src/QTestParameterNames.cc @@ -2,23 +2,23 @@ * * Implementation of QTestParameterNames * - * $Date: 2006/05/09 21:28:37 $ - * $Revision: 1.1 $ + * $Date: 2006/05/04 10:27:29 $ + * $Revision: 1.2 $ * \author Ilaria Segoni */ #include<iostream> #include "DQMServices/ClientConfig/interface/QTestParameterNames.h" -#include "DQMServices/QualityTests/interface/QCriterionRoot.h" +#include "DQMServices/ClientConfig/interface/QTestNames.h" QTestParameterNames::QTestParameterNames(){ - this->constructMap(ContentsXRangeROOT::getAlgoName(), "xmin", "xmax"); - this->constructMap(ContentsYRangeROOT::getAlgoName(), "ymin", "ymax"); - this->constructMap(DeadChannelROOT::getAlgoName(), "threshold"); - this->constructMap(NoisyChannelROOT::getAlgoName(), "tolerance", "neighbours"); - this->constructMap(MeanWithinExpectedROOT::getAlgoName(), "mean","useRMS","useSigma","useRange","xmin","xmax"); + this->constructMap(dqm::qtest_config::XRangeContent, "xmin", "xmax"); + this->constructMap(dqm::qtest_config::YRangeContent, "ymin", "ymax"); + this->constructMap(dqm::qtest_config::DeadChannel, "threshold"); + this->constructMap(dqm::qtest_config::NoisyChannel, "tolerance", "neighbours"); + this->constructMap(dqm::qtest_config::MeanInExpectedValue, "mean","useRMS","useSigma","useRange","xmin","xmax"); } diff --git a/DQMServices/Diagnostic/doc/html/index.html b/DQMServices/Diagnostic/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DQMServices/Diagnostic/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DQMServices/Diagnostic/doc/html/overview.html b/DQMServices/Diagnostic/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DQMServices/Diagnostic/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Alignment/doc/html/index.html b/DataFormats/Alignment/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/Alignment/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/Alignment/doc/html/overview.html b/DataFormats/Alignment/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/Alignment/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/BeamSpot/doc/html/index.html b/DataFormats/BeamSpot/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/BeamSpot/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/BeamSpot/doc/html/overview.html b/DataFormats/BeamSpot/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/BeamSpot/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/CLHEP/doc/html/index.html b/DataFormats/CLHEP/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/CLHEP/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/CLHEP/doc/html/overview.html b/DataFormats/CLHEP/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/CLHEP/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/CSCDigi/interface/CSCALCTDigi.h b/DataFormats/CSCDigi/interface/CSCALCTDigi.h index d99df3b6090..f1d14535cb0 100644 --- a/DataFormats/CSCDigi/interface/CSCALCTDigi.h +++ b/DataFormats/CSCDigi/interface/CSCALCTDigi.h @@ -5,8 +5,8 @@ * * Digi for ALCT trigger primitives. * - * $Date: 2006/06/01 07:45:44 $ - * $Revision: 1.8 $ + * $Date: 2006/05/16 15:22:57 $ + * $Revision: 1.7 $ * * \author N. Terentiev, CMU */ @@ -68,7 +68,7 @@ class CSCALCTDigi { void print() const; private: - + friend class testCSCDigis; uint16_t valid_ ; uint16_t quality_ ; uint16_t accel_ ; diff --git a/DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h b/DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h index d2c3bbcbbb6..76f0f202929 100644 --- a/DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h +++ b/DataFormats/CSCDigi/interface/CSCCFEBStatusDigi.h @@ -5,8 +5,8 @@ * * Digi for CSC CFEB status. * - * $Date: 2006/09/06 14:04:19 $ - * $Revision: 1.1 $ + * $Date:$ + * $Revision:$ * * \author N. Terentiev, CMU * @@ -80,6 +80,7 @@ public: void print() const; private: + friend class testCSCCFEBStatusDigis; uint16_t cfebnmb_; uint16_t L1AOverlap_; diff --git a/DataFormats/CSCDigi/interface/CSCCLCTDigi.h b/DataFormats/CSCDigi/interface/CSCCLCTDigi.h index 628a63981ee..b5da8962609 100644 --- a/DataFormats/CSCDigi/interface/CSCCLCTDigi.h +++ b/DataFormats/CSCDigi/interface/CSCCLCTDigi.h @@ -5,8 +5,8 @@ * * Digi for CLCT trigger primitives. * - * $Date: 2006/06/20 10:26:42 $ - * $Revision: 1.8 $ + * $Date: 2006/06/01 07:45:44 $ + * $Revision: 1.7 $ * * \author N. Terentiev, CMU */ @@ -89,7 +89,7 @@ class CSCCLCTDigi { void print() const; private: - + friend class testCSCDigis; uint16_t valid_ ; uint16_t quality_ ; uint16_t pattern_ ; diff --git a/DataFormats/CSCDigi/interface/CSCComparatorDigi.h b/DataFormats/CSCDigi/interface/CSCComparatorDigi.h index b05d2c371f9..f03bd147ba2 100644 --- a/DataFormats/CSCDigi/interface/CSCComparatorDigi.h +++ b/DataFormats/CSCDigi/interface/CSCComparatorDigi.h @@ -5,72 +5,66 @@ * * Digi for CSC Comparators. * - * $Date: 2006/05/16 15:22:57 $ - * $Revision: 1.6 $ + * $Date: 2006/04/06 11:18:25 $ + * $Revision: 1.5 $ * * \author M. Schmitt, Northwestern * */ #include <boost/cstdint.hpp> -#include <iosfwd> -#include <vector> class CSCComparatorDigi{ public: - /// Construct from the strip number and the ADC readings. - CSCComparatorDigi (int strip, int comparator, int timeBinWord); + // Construct from the strip number and the ADC readings. + CSCComparatorDigi (int strip, int comparator, int timeBin); - /// Default construction. + // Default construction. CSCComparatorDigi (); - /// Digis are equal if they are on the same strip and have same Comparator data + // Digis are equal if they are on the same strip and have same Comparator data bool operator==(const CSCComparatorDigi& digi) const; - /// sort by time first, then by strip + // sort by time first, then by strip bool operator<(const CSCComparatorDigi& digi) const; - /// Get the strip number - int getStrip() const { return strip_; } + // Get the strip number + int getStrip() const; - /// Get Comparator readings - int getComparator() const { return comparator_; } + // Get Comparator readings + int getComparator() const; - /// Return the word with each bit corresponding to a time bin - int getTimeBinWord() const { return timeBinWord_; } - - /// Return bin number of first time bin which is ON. Counts from 0. int getTimeBin() const; - /** Return vector of the bin numbers for which time bins are ON. - * e.g. if bits 0 and 13 fired, then this vector will contain the values 0 and 13 - */ - std::vector<int> getTimeBinsOn() const; - - /// Set the strip number + // Set the strip number void setStrip(int strip); - /// Set Comparator data + // Set Comparator data void setComparator (int comparator); - /// Print content of digi + // Print content of digi void print() const; private: + friend class testCSCComparatorDigis; - uint16_t strip_; - uint16_t comparator_; - uint16_t timeBinWord_; + uint16_t strip; + uint16_t comparator; + uint16_t timeBin; }; -/// Output operator -std::ostream & operator<<(std::ostream & o, const CSCComparatorDigi& digi); - +#include<iostream> +// needed by COBRA +inline std::ostream & operator<<(std::ostream & o, const CSCComparatorDigi& digi) { + return o << " " << digi.getStrip() + << " " << digi.getComparator() + << " " << digi.getTimeBin(); +} #endif diff --git a/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h b/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h index 416cd851b42..ab3191eeff1 100644 --- a/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h +++ b/DataFormats/CSCDigi/interface/CSCCorrelatedLCTDigi.h @@ -5,8 +5,8 @@ * * Digi for Correlated LCT trigger primitives. * - * $Date: 2006/06/23 14:29:57 $ - * $Revision: 1.8 $ + * $Date: 2006/06/01 07:48:09 $ + * $Revision: 1.7 $ * * \author L. Gray, UF */ @@ -76,6 +76,7 @@ class CSCCorrelatedLCTDigi private: + friend class testCSCDigis; uint16_t valid; uint16_t quality; uint16_t keywire; diff --git a/DataFormats/CSCDigi/interface/CSCDCCFormatStatusDigi.h b/DataFormats/CSCDigi/interface/CSCDCCFormatStatusDigi.h index 9b1a119c9d3..05cc54dce28 100644 --- a/DataFormats/CSCDigi/interface/CSCDCCFormatStatusDigi.h +++ b/DataFormats/CSCDigi/interface/CSCDCCFormatStatusDigi.h @@ -5,8 +5,8 @@ * * Digi for CSC DCC/DDU Format status. * - * $Date: 2006/09/08 15:39:41 $ - * $Revision: 1.1 $ + * $Date:$ + * $Revision:$ * * \author N. Terentiev, CMU * @@ -61,6 +61,7 @@ public: void print() const; private: + friend class testCSCDCCFormatStatusDigis; uint16_t dccnmb_; uint16_t ddunmb_; diff --git a/DataFormats/CSCDigi/interface/CSCRPCDigi.h b/DataFormats/CSCDigi/interface/CSCRPCDigi.h index 259ef748b70..a9552fe9273 100644 --- a/DataFormats/CSCDigi/interface/CSCRPCDigi.h +++ b/DataFormats/CSCDigi/interface/CSCRPCDigi.h @@ -5,8 +5,8 @@ * * Digi for RPC data coming thru RAT-ALCT-DDU. * - * $Date: 2006/05/16 15:22:57 $ - * $Revision: 1.5 $ + * $Date: 2006/04/06 11:18:25 $ + * $Revision: 1.4 $ * * \author N. Terentiev, CMU */ @@ -37,7 +37,7 @@ public: private: - + friend class testCSCDigis; uint16_t rpc_; uint16_t pad_; uint16_t bxn_; diff --git a/DataFormats/CSCDigi/interface/CSCStripDigi.h b/DataFormats/CSCDigi/interface/CSCStripDigi.h index f5fcb012925..ba8b8b843e6 100644 --- a/DataFormats/CSCDigi/interface/CSCStripDigi.h +++ b/DataFormats/CSCDigi/interface/CSCStripDigi.h @@ -5,8 +5,8 @@ * * Digi for CSC Cathode Strips. * - * $Date: 2006/05/16 15:22:57 $ - * $Revision: 1.12 $ + * $Date: 2006/05/16 15:08:41 $ + * $Revision: 1.11 $ * * \author M. Schmitt, Northwestern * @@ -56,6 +56,7 @@ public: void print() const; private: + friend class testCSCStripDigis; uint16_t strip; std::vector<int> ADCCounts; diff --git a/DataFormats/CSCDigi/interface/CSCWireDigi.h b/DataFormats/CSCDigi/interface/CSCWireDigi.h index 7e7756a0865..97c91e50c36 100644 --- a/DataFormats/CSCDigi/interface/CSCWireDigi.h +++ b/DataFormats/CSCDigi/interface/CSCWireDigi.h @@ -39,7 +39,7 @@ public: private: - + friend class testCSCDigis; //@@ Do we really want friend access for a test? uint16_t wire_; uint16_t tbinb_; diff --git a/DataFormats/CSCDigi/src/CSCComparatorDigi.cc b/DataFormats/CSCDigi/src/CSCComparatorDigi.cc index fb346a3ed18..f25761b6e0e 100644 --- a/DataFormats/CSCDigi/src/CSCComparatorDigi.cc +++ b/DataFormats/CSCDigi/src/CSCComparatorDigi.cc @@ -1,32 +1,30 @@ /** \file * - * $Date: 2006/05/25 15:11:36 $ - * $Revision: 1.6 $ + * $Date: 2006/04/06 11:18:37 $ + * $Revision: 1.5 $ * * \author M.Schmitt, Northwestern */ #include <DataFormats/CSCDigi/interface/CSCComparatorDigi.h> #include <iostream> -#include <algorithm> -#include <iterator> +#include <bitset> using namespace std; // Constructors -CSCComparatorDigi::CSCComparatorDigi( int strip, int comparator, int timeBinWord ) - : strip_( strip ), comparator_( comparator ), timeBinWord_( timeBinWord ) { +CSCComparatorDigi::CSCComparatorDigi (int istrip, int icomparator, int itimeBin){ + strip = istrip; + comparator = icomparator; + timeBin = itimeBin; } -CSCComparatorDigi::CSCComparatorDigi() - : strip_( 0 ), comparator_( 0 ), timeBinWord_( 0 ) { +CSCComparatorDigi::CSCComparatorDigi (){ + strip = comparator = timeBin =0; } // Comparison - -//@@ op== doesn't care about the time data. Does that make sense?! - bool CSCComparatorDigi::operator == (const CSCComparatorDigi& digi) const { if ( getStrip() != digi.getStrip() ) return false; @@ -35,11 +33,6 @@ CSCComparatorDigi::operator == (const CSCComparatorDigi& digi) const { } -//@@ op< is a little tricky too... -// - 'true' means the compared digis have the same time bin and strip LHS < strip RHS, -// - 'false' means either the times are different OR -// the times are the same but strip LHS !< strip RHS. - bool CSCComparatorDigi::operator<(const CSCComparatorDigi& digi) const { bool result = true; @@ -48,69 +41,31 @@ CSCComparatorDigi::operator<(const CSCComparatorDigi& digi) const { result = (getStrip() < digi.getStrip()); } else { - result = false; + result = (getTimeBin() == digi.getTimeBin()); } return result; } // Getters - -int CSCComparatorDigi::getTimeBin() const { - // Find first bin which fired, counting from 0 - uint16_t tbit=1; - int tbin=-1; - for(int i=0;i<16;++i) { - if(tbit & timeBinWord_) { - tbin=i; - break; - } - tbit=tbit<<1; - } - return tbin; -} - -std::vector<int> CSCComparatorDigi::getTimeBinsOn() const { - std::vector<int> tbins; - uint16_t tbit = timeBinWord_; - const uint16_t one=1; - for(int i=0;i<16;++i) { - if(tbit & one) tbins.push_back(i); - tbit=tbit>>1; - if(tbit==0) break; // end already if no more bits set - } - return tbins; -} +int CSCComparatorDigi::getStrip() const { return strip; } +int CSCComparatorDigi::getComparator() const { return comparator; } +int CSCComparatorDigi::getTimeBin() const {return timeBin; } // Setters -//@@ No way to set time word? - -void CSCComparatorDigi::setStrip(int strip) { - strip_ = strip; +void CSCComparatorDigi::setStrip(int istrip) { + strip = istrip; } -void CSCComparatorDigi::setComparator(int comparator) { - comparator_ = comparator; +void CSCComparatorDigi::setComparator(int icomparator) { + comparator = icomparator; } -// Output - +// Debug void CSCComparatorDigi::print() const { - std::cout << "CSCComparatorDigi strip: " << getStrip() - << " comparator: " << getComparator() - << " first time bin: "<< getTimeBin() << std::endl; - std::cout << " time bins on:"; - std::vector<int> tbins=getTimeBinsOn(); - std::copy( tbins.begin(), tbins.end(), - std::ostream_iterator<int>( std::cout, " ")); - std::cout << std::endl; + cout << "CSC Comparator strip: " << getStrip() + << " Comparator: " << getComparator() + << " Time Bin: "<< getTimeBin() << endl; } -//@@ Doesn't print all time bins -std::ostream & operator<<(std::ostream & o, const CSCComparatorDigi& digi) { - return o << " " << digi.getStrip() - << " " << digi.getComparator() - << " " << digi.getTimeBin(); -} - diff --git a/DataFormats/CSCDigi/src/CSCWireDigi.cc b/DataFormats/CSCDigi/src/CSCWireDigi.cc index c29354933ad..2e7aaceef69 100644 --- a/DataFormats/CSCDigi/src/CSCWireDigi.cc +++ b/DataFormats/CSCDigi/src/CSCWireDigi.cc @@ -3,8 +3,8 @@ * Digi for CSC anode wires. * Based on modified DTDigi. * - * $Date: 2006/09/04 09:20:51 $ - * $Revision: 1.5 $ + * $Date: 2006/09/03 15:41:03 $ + * $Revision: 1.4 $ * * \author N. Terentiev, CMU */ @@ -30,10 +30,17 @@ CSCWireDigi::CSCWireDigi (){ /// return tbin number (obsolete, use getTimeBin() instead) int CSCWireDigi::getBeamCrossingTag() const { - return getTimeBin(); + uint16_t tbit=1; + int tbin=-1; + for(int i=0;i<16;i++) { + if(tbit & tbinb_) tbin=i; + if(tbin>-1) break; + tbit=tbit<<1; + } + return tbin; } /// return first tbin ON number -int CSCWireDigi::getTimeBin() const { +int CSCWireDigi::getTimeBin() const { uint16_t tbit=1; int tbin=-1; for(int i=0;i<16;i++) { diff --git a/DataFormats/CSCDigi/test/testCSCDigis.cpp b/DataFormats/CSCDigi/test/testCSCDigis.cpp index d1b0f16ed2d..2748775a306 100644 --- a/DataFormats/CSCDigi/test/testCSCDigis.cpp +++ b/DataFormats/CSCDigi/test/testCSCDigis.cpp @@ -3,8 +3,8 @@ * Test suit for CSCDigi. * Based on testDTDigis.cpp * - * $Date: 2006/11/16 16:55:12 $ - * $Revision: 1.12 $ + * $Date:$ + * $Revision:$ * * \author N. Terentiev, CMU (for CSCWireDigi, CSCRPCDigi, * CSCALCTDigi, CSCCLCTDigi) @@ -12,7 +12,7 @@ * \author A. Tumanov, Rice U. */ -static const char CVSId[] = "$Id: testCSCDigis.cpp,v 1.12 2006/11/16 16:55:12 ptc Exp $"; +static const char CVSId[] = "$Id: testCSCDigis.cpp,v 1.10 2006/09/06 14:06:09 teren Exp $"; #include <cppunit/extensions/HelperMacros.h> #include <DataFormats/MuonDetId/interface/CSCDetId.h> @@ -100,7 +100,7 @@ void testCSCDigis::fillCSCWireDigi(CSCWireDigiCollection & collection){ std::vector<CSCWireDigi> digivec; for (int i=10; i<11; ++i){ int wire=i; - int tbin=104; // Time bins 3,5,6 - Bits 3,5,6 ON i.e. 64+32+8 = 1101000 in binary + int tbin=104; /// (Time bins 3,5,6 - Bits 3,5,6 ON) CSCWireDigi digi(wire,tbin); digivec.push_back(digi); } @@ -124,7 +124,7 @@ void testCSCDigis::fillCSCComparatorDigi(CSCComparatorDigiCollection & collectio for (int i=10; i<11; ++i){ int aStrip = i; int aComparator = 2; - int aTbin = 6; // time bin word 0...110 (16-bits) bits 1 and 2 ON + int aTbin = 1; CSCComparatorDigi digi(aStrip, aComparator, aTbin); digivec.push_back(digi); } @@ -378,26 +378,28 @@ void testCSCDigis::readCSCWireDigi(CSCWireDigiCollection & collection){ int count=0; CSCWireDigiCollection::DigiRangeIterator detUnitIt; - for (detUnitIt=collection.begin(); detUnitIt!=collection.end(); ++detUnitIt) { + for (detUnitIt=collection.begin(); + detUnitIt!=collection.end(); + ++detUnitIt){ - const CSCDetId& id = (*detUnitIt).first; - const CSCWireDigiCollection::Range& range =(*detUnitIt).second; - - for (CSCWireDigiCollection::const_iterator digiIt=range.first; digiIt!=range.second; ++digiIt) { + const CSCDetId& id = (*detUnitIt).first; - count++; - CPPUNIT_ASSERT((*digiIt).getWireGroup()==10); - CPPUNIT_ASSERT((*digiIt).getTimeBin()==3); - printf("CSC Wire - endcap station ring csc layer wire tbin: %3d %3d %3d %3d %3d %3d %3d\n", - id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(), - (*digiIt).getWireGroup(),(*digiIt).getTimeBin()); - std::cout << " CSC Time Bins On "; - std::vector<int> tbins=(*digiIt).getTimeBinsOn(); - for(unsigned int i=0; i<tbins.size();++i) std::cout<<tbins[i]<<" "; - std::cout<<std::endl; - }// for digis in layer - }// end of for (detUnitIt=... - + const CSCWireDigiCollection::Range& range =(*detUnitIt).second; + for (CSCWireDigiCollection::const_iterator digiIt = + range.first; digiIt!=range.second; + ++digiIt){ + + count++; + CPPUNIT_ASSERT((*digiIt).getWireGroup()==10); + CPPUNIT_ASSERT((*digiIt).getTimeBin()==3); + printf("CSC Wire - endcap station ring csc plane wire tbin: %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).getWireGroup(),(*digiIt).getTimeBin()); +std::cout << " CSC Time Bins On "; +std::vector<int> tbins=(*digiIt).getTimeBinsOn(); +for(unsigned int i=0; i<tbins.size();i++) std::cout<<tbins[i]<<" "; +std::cout<<std::endl; + + }// for digis in layer + }// end of for (detUnitIt=... printf("CSC Wire count: %3d \n", count); } @@ -405,28 +407,24 @@ void testCSCDigis::readCSCComparatorDigi(CSCComparatorDigiCollection & collectio int count=0; CSCComparatorDigiCollection::DigiRangeIterator detUnitIt; - for (detUnitIt=collection.begin(); detUnitIt!=collection.end(); ++detUnitIt) { + for (detUnitIt=collection.begin(); + detUnitIt!=collection.end(); + ++detUnitIt){ const CSCDetId& id = (*detUnitIt).first; - const CSCComparatorDigiCollection::Range& range = (*detUnitIt).second; - for (CSCComparatorDigiCollection::const_iterator digiIt=range.first; digiIt!=range.second; ++digiIt) { + const CSCComparatorDigiCollection::Range& range = (*detUnitIt).second; + for (CSCComparatorDigiCollection::const_iterator digiIt = + range.first; digiIt!=range.second; ++digiIt){ count++; CPPUNIT_ASSERT((*digiIt).getComparator()==2); CPPUNIT_ASSERT((*digiIt).getStrip()==10); - CPPUNIT_ASSERT((*digiIt).getTimeBin()==1); // time bin word=6 means bit 1 should be first! - printf("CSCComparatorDigi - endcap station ring csc layer strip comparator: %3d %3d %3d %3d %3d %3d %3d %3d\n", - id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(), - (*digiIt).getStrip(), (*digiIt).getComparator(), (*digiIt).getTimeBin()); - std::cout << " CSCComparatorDigi - time bins ON: "; - std::vector<int> tbins=(*digiIt).getTimeBinsOn(); - for(unsigned int i=0; i<tbins.size();++i) std::cout<<tbins[i]<<" "; - std::cout<<std::endl; - + printf("CSC Comparator - endcap station ring csc plane strip comparator: %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).getStrip(),(*digiIt).getComparator()); + }// for digis in layer }// end of for (detUnitIt=... - printf("CSCComparatorDigi count: %3d \n", count); + printf("CSC Comparator count: %3d \n", count); } @@ -446,7 +444,7 @@ void testCSCDigis::readCSCStripDigi(CSCStripDigiCollection & collection){ range.first; digiIt!=range.second; ++digiIt){ count++; CPPUNIT_ASSERT((*digiIt).getStrip()==10); - printf("CSC Strip - endcap station ring csc layer: %3d %3d %3d %3d %3d strip: %3d ADC: %4d %4d %4d %4d %4d %4d %4d %4d\n", + printf("CSC Strip - endcap station ring csc plane: %3d %3d %3d %3d %3d strip: %3d ADC: %4d %4d %4d %4d %4d %4d %4d %4d\n", id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(), (*digiIt).getStrip(), (*digiIt).getADCCounts()[0], @@ -483,7 +481,7 @@ void testCSCDigis::readCSCRPCDigi(CSCRPCDigiCollection & collection){ CPPUNIT_ASSERT((*digiIt).getRpc()==5); CPPUNIT_ASSERT((*digiIt).getBXN()==1); - printf("RPC digi - endcap station ring csc layer: %3d %3d %3d %3d %3d %3d %4d \n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).getRpc(),(*digiIt).getBXN()); + printf("RPC digi - endcap station ring csc plane: %3d %3d %3d %3d %3d %3d %4d \n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).getRpc(),(*digiIt).getBXN()); }// for digis in layer }// end of for (detUnitIt=... @@ -515,7 +513,7 @@ void testCSCDigis::readCSCALCTDigi(CSCALCTDigiCollection & collection){ CPPUNIT_ASSERT((*digiIt).getBX()==4); CPPUNIT_ASSERT((*digiIt).getTrknmb()==1); - printf("CSC ALCT - endcap station ring csc layer valid quality accel pattern wire bx track: %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).isValid(),(*digiIt).getQuality(),(*digiIt).getAccelerator(),(*digiIt).getCollisionB(),(*digiIt).getKeyWG(),(*digiIt).getBX(),(*digiIt).getTrknmb()); + printf("CSC ALCT - endcap station ring csc plane valid quality accel pattern wire bx track: %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).isValid(),(*digiIt).getQuality(),(*digiIt).getAccelerator(),(*digiIt).getCollisionB(),(*digiIt).getKeyWG(),(*digiIt).getBX(),(*digiIt).getTrknmb()); }// for digis in layer }// end of for (detUnitIt=... printf("CSC ALCT count: %3d \n", count); @@ -547,7 +545,7 @@ void testCSCDigis::readCSCCLCTDigi(CSCCLCTDigiCollection & collection){ CPPUNIT_ASSERT((*digiIt).getBX()==3); CPPUNIT_ASSERT((*digiIt).getTrknmb()==1); - printf("CSC CLCT - endcap station ring csc layer valid quality pattern striptype bend strip cfeb bx tracknmb %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).isValid(),(*digiIt).getQuality(),(*digiIt).getPattern(),(*digiIt).getStripType(),(*digiIt).getBend(),(*digiIt).getStrip(),(*digiIt).getCFEB(),(*digiIt).getBX(), (*digiIt).getTrknmb()); + printf("CSC CLCT - endcap station ring csc plane valid quality pattern striptype bend strip cfeb bx tracknmb %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n",id.endcap(),id.station(),id.ring(),id.chamber(),id.layer(),(*digiIt).isValid(),(*digiIt).getQuality(),(*digiIt).getPattern(),(*digiIt).getStripType(),(*digiIt).getBend(),(*digiIt).getStrip(),(*digiIt).getCFEB(),(*digiIt).getBX(), (*digiIt).getTrknmb()); }// for digis in layer }// end of for (detUnitIt=... diff --git a/DataFormats/CSCRecHit/interface/CSCSegment.h b/DataFormats/CSCRecHit/interface/CSCSegment.h index e62dc8cc30c..9d094cd362f 100644 --- a/DataFormats/CSCRecHit/interface/CSCSegment.h +++ b/DataFormats/CSCRecHit/interface/CSCSegment.h @@ -6,7 +6,7 @@ * This is 4-dimensional since it has an origin (x,y) and a direction (x,y) * in the local coordinate system of the chamber. * - * $Date: 2006/07/03 15:13:01 $ + * $Date: 2006/09/26 09:01:44 $ * \author Matteo Sani * \author Rick Wilkinson * \author Tim Cox @@ -42,10 +42,10 @@ public: LocalVector localDirection() const { return theLocalDirection; } LocalError localDirectionError() const ; - /// Parameters of the segment, for the track fit: (x,y,dx/dy,dy/dz) + /// Parameters of the segment, for the track fit in the order (dx/dz, dy/dz, x, y ) AlgebraicVector parameters() const; - /// Covariance matrix fo parameters() + /// Covariance matrix of parameters() AlgebraicSymMatrix parametersError() const { return theCovMatrix; } /// The projection matrix relates the trajectory state parameters to the segment parameters(). diff --git a/DataFormats/CSCRecHit/interface/CSCStripHit.h b/DataFormats/CSCRecHit/interface/CSCStripHit.h deleted file mode 100644 index 02f5af6059b..00000000000 --- a/DataFormats/CSCRecHit/interface/CSCStripHit.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef DataFormats_CSCStripHit_H -#define DataFormats_CSCStripHit_H - -/** - * \class CSCStripHit - * - * Yields the position in terms of 1/2 strip # of a 1-D reconstructed - * strip hit in one layer of an Endcap Muon CSC. - * - * - * \author Dominique Fortin - UCR - * - */ - -#include <DataFormats/MuonDetId/interface/CSCDetId.h> -#include <vector> -#include <iosfwd> - -class CSCStripHit -{ - -public: - - typedef std::vector<float> StripHitADCContainer; - - - CSCStripHit(); - CSCStripHit( const CSCDetId& id, const float& sHitPos, const int& tmax, - const int& clusterSize, const StripHitADCContainer& s_adc ); - - ~CSCStripHit(); - - /// CSCStripHit base class interface - CSCStripHit* clone() const { return new CSCStripHit( *this ); } - - /// Strip Hit posion in terms of DetId - CSCDetId cscDetId() const { return theDetId; } - - /// Strip hit position expressed in terms of 1/2 strip # - float sHitPos() const { return theStripHitPosition; } - - /// Strip hit maximum time bin - int tmax() const { return theStripHitTmax; } - - /// Number of strips in cluster to produce strip hit - int clusterSize() const { return theStripHitClusterSize; } - - - /// the ADC counts for each of the strip within cluster - const StripHitADCContainer& s_adc() const { return theStripHitADCs; } - - - -private: - CSCDetId theDetId; - float theStripHitPosition; - int theStripHitTmax; - int theStripHitClusterSize; - StripHitADCContainer theStripHitADCs; - -}; - - - -#endif - diff --git a/DataFormats/CSCRecHit/interface/CSCStripHitCollection.h b/DataFormats/CSCRecHit/interface/CSCStripHitCollection.h deleted file mode 100644 index b3fda24635b..00000000000 --- a/DataFormats/CSCRecHit/interface/CSCStripHitCollection.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef DataFormats_CSCStripHitCollection_H -#define DataFormats_CSCStripHitCollection_H - - -/** \class CSCStripHitCollection - * - * The collection of CSCStripHit's. - * - * \author Dominique Fortin - UCR - */ -#include <DataFormats/MuonDetId/interface/CSCDetId.h> -#include <DataFormats/CSCRecHit/interface/CSCStripHit.h> - -#include <DataFormats/Common/interface/RangeMap.h> -#include <DataFormats/Common/interface/ClonePolicy.h> -#include <DataFormats/Common/interface/OwnVector.h> - - -typedef edm::RangeMap <CSCDetId, edm::OwnVector<CSCStripHit> > CSCStripHitCollection; - -#endif diff --git a/DataFormats/CSCRecHit/interface/CSCWireHit.h b/DataFormats/CSCRecHit/interface/CSCWireHit.h deleted file mode 100644 index 77a9460f2c0..00000000000 --- a/DataFormats/CSCRecHit/interface/CSCWireHit.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef DataFormats_CSCWireHit_H -#define DataFormats_CSCWireHit_H - -/** - * \class CSCSWireHit - * - * Yields the position in terms wire group # of a 1-D reconstructed - * wire hit in one layer of an Endcap Muon CSC. - * - * - * \author Dominique Fortin - UCR - * - */ - -#include <DataFormats/MuonDetId/interface/CSCDetId.h> -#include <vector> -#include <iosfwd> - -class CSCWireHit -{ - -public: - - CSCWireHit(); - CSCWireHit( const CSCDetId& id, const float& wHitPos, const int& tmax ); - - ~CSCWireHit(); - - /// CSCWireHit base class interface - CSCWireHit* clone() const { return new CSCWireHit( *this ); } - - /// Position of the wire hit in CSC - CSCDetId cscDetId() const { return theDetId; } - - /// The wire hit position expressed in terms of wire # - float wHitPos() const { return theWireHitPosition; } - - /// The timing for the wire hit - int tmax() const { return theWireHitTmax; } - -private: - CSCDetId theDetId; - float theWireHitPosition; - int theWireHitTmax; -}; - - - -#endif - diff --git a/DataFormats/CSCRecHit/interface/CSCWireHitCollection.h b/DataFormats/CSCRecHit/interface/CSCWireHitCollection.h deleted file mode 100644 index 793b7423f34..00000000000 --- a/DataFormats/CSCRecHit/interface/CSCWireHitCollection.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef DataFormats_CSCWireHitCollection_H -#define DataFormats_CSCWireHitCollection_H - - -/** \class CSCWireHitCollection - * - * The collection of CSCWireHit's. - * - * \author Dominique Fortin - UCR - */ -#include <DataFormats/MuonDetId/interface/CSCDetId.h> -#include <DataFormats/CSCRecHit/interface/CSCWireHit.h> - -#include <DataFormats/Common/interface/RangeMap.h> -#include <DataFormats/Common/interface/ClonePolicy.h> -#include <DataFormats/Common/interface/OwnVector.h> - -typedef edm::RangeMap <CSCDetId, edm::OwnVector<CSCWireHit> > CSCWireHitCollection; - -#endif diff --git a/DataFormats/CSCRecHit/src/CSCSegment.cc b/DataFormats/CSCRecHit/src/CSCSegment.cc index a72b216fc1f..7fd8b603b3a 100644 --- a/DataFormats/CSCRecHit/src/CSCSegment.cc +++ b/DataFormats/CSCRecHit/src/CSCSegment.cc @@ -1,6 +1,6 @@ /** \file CSCSegment.cc * - * $Date: 2006/07/03 15:13:02 $ + * $Date: 2006/09/26 09:01:51 $ * \author Matteo Sani */ @@ -49,12 +49,16 @@ LocalError CSCSegment::localDirectionError() const { AlgebraicVector CSCSegment::parameters() const { - // (x,y,dx/dz,dy/dz) + // For consistency with DT and what we require for the TrackingRecHit interface, + // the order of the parameters in the returned vector should be (dx/dz, dy/dz, x, z) + AlgebraicVector result(4); - result[2] = theOrigin.x(); - result[3] = theOrigin.y(); + result[0] = theLocalDirection.x()/theLocalDirection.z(); result[1] = theLocalDirection.y()/theLocalDirection.z(); + result[2] = theOrigin.x(); + result[3] = theOrigin.y(); + return result; } diff --git a/DataFormats/CSCRecHit/src/CSCStripHit.cc b/DataFormats/CSCRecHit/src/CSCStripHit.cc deleted file mode 100644 index 2bea744d73c..00000000000 --- a/DataFormats/CSCRecHit/src/CSCStripHit.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include <DataFormats/CSCRecHit/interface/CSCStripHit.h> -#include <iostream> - -CSCStripHit::CSCStripHit() : - theDetId(), - theStripHitPosition(), - theStripHitTmax(), - theStripHitClusterSize(), - theStripHitADCs() -{} - -CSCStripHit::CSCStripHit( const CSCDetId& id, const float& sHitPos, const int& tmax, - const int& clusterSize, const StripHitADCContainer& s_adc) : - theDetId( id ), - theStripHitPosition( sHitPos ), - theStripHitTmax( tmax ), - theStripHitClusterSize( clusterSize ), - theStripHitADCs( s_adc ) -{} - -CSCStripHit::~CSCStripHit() {} - - diff --git a/DataFormats/CSCRecHit/src/CSCWireHit.cc b/DataFormats/CSCRecHit/src/CSCWireHit.cc deleted file mode 100644 index 3114b7f4a8a..00000000000 --- a/DataFormats/CSCRecHit/src/CSCWireHit.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include <DataFormats/CSCRecHit/interface/CSCWireHit.h> -#include <iostream> - -CSCWireHit::CSCWireHit() : - theDetId(), - theWireHitPosition(), - theWireHitTmax() -{} - -CSCWireHit::CSCWireHit( const CSCDetId& id, const float& wHitPos, const int& tmax) : - theDetId( id ), - theWireHitPosition( wHitPos ), - theWireHitTmax ( tmax ) -{} - -CSCWireHit::~CSCWireHit() {} - - diff --git a/DataFormats/CSCRecHit/src/classes.h b/DataFormats/CSCRecHit/src/classes.h index 8da47c6f89f..003e276f005 100644 --- a/DataFormats/CSCRecHit/src/classes.h +++ b/DataFormats/CSCRecHit/src/classes.h @@ -1,9 +1,6 @@ #include <DataFormats/CSCRecHit/interface/CSCRecHit2D.h> #include <DataFormats/CSCRecHit/interface/CSCRecHit2DCollection.h> -#include <DataFormats/CSCRecHit/interface/CSCStripHit.h> -#include <DataFormats/CSCRecHit/interface/CSCStripHitCollection.h> -#include <DataFormats/CSCRecHit/interface/CSCWireHit.h> -#include <DataFormats/CSCRecHit/interface/CSCWireHitCollection.h> + #include <DataFormats/CSCRecHit/interface/CSCSegment.h> #include <DataFormats/CSCRecHit/interface/CSCSegmentCollection.h> @@ -17,20 +14,6 @@ namespace{ } } -namespace{ - namespace { - CSCStripHitCollection dc0; - edm::Wrapper<CSCStripHitCollection> dwc0; - } -} - -namespace{ - namespace { - CSCStripHitCollection dc2; - edm::Wrapper<CSCWireHitCollection> dwc2; - } -} - namespace{ namespace { CSCSegmentCollection seg; diff --git a/DataFormats/CSCRecHit/src/classes_def.xml b/DataFormats/CSCRecHit/src/classes_def.xml index a5a1438b1ac..0569550188c 100644 --- a/DataFormats/CSCRecHit/src/classes_def.xml +++ b/DataFormats/CSCRecHit/src/classes_def.xml @@ -8,18 +8,6 @@ <class name="edm::RangeMap<CSCDetId,edm::OwnVector<CSCRecHit2D,edm::ClonePolicy<CSCRecHit2D> >,edm::ClonePolicy<CSCRecHit2D> >"/> <class name="edm::Wrapper<edm::RangeMap<CSCDetId,edm::OwnVector<CSCRecHit2D,edm::ClonePolicy<CSCRecHit2D> >,edm::ClonePolicy<CSCRecHit2D> > >"/> - <class name="CSCStripHit"/> - <class name="std::vector<CSCStripHit*>"/> - <class name="edm::OwnVector<CSCStripHit,edm::ClonePolicy<CSCStripHit> >"/> - <class name="edm::RangeMap<CSCDetId,edm::OwnVector<CSCStripHit,edm::ClonePolicy<CSCStripHit> >,edm::ClonePolicy<CSCStripHit> >"/> - <class name="edm::Wrapper<edm::RangeMap<CSCDetId,edm::OwnVector<CSCStripHit,edm::ClonePolicy<CSCStripHit> >,edm::ClonePolicy<CSCStripHit> > >"/> - - <class name="CSCWireHit"/> - <class name="std::vector<CSCWireHit*>"/> - <class name="edm::OwnVector<CSCWireHit,edm::ClonePolicy<CSCWireHit> >"/> - <class name="edm::RangeMap<CSCDetId,edm::OwnVector<CSCWireHit,edm::ClonePolicy<CSCWireHit> >,edm::ClonePolicy<CSCWireHit> >"/> - <class name="edm::Wrapper<edm::RangeMap<CSCDetId,edm::OwnVector<CSCWireHit,edm::ClonePolicy<CSCWireHit> >,edm::ClonePolicy<CSCWireHit> > >"/> - <class name="RecSegment"/> <class name="std::vector<CSCSegment*>"/> <class name="CLHEP::HepSymMatrix"/> @@ -34,12 +22,7 @@ <class name="edm::OwnVector<CSCRecHit2D, edm::ClonePolicy<CSCRecHit2D> >"> <method name="sort"/> </class> - <class name="edm::OwnVector<CSCStripHit, edm::ClonePolicy<CSCStripHit> >"> - <method name="sort"/> - </class> - <class name="edm::OwnVector<CSCWireHit, edm::ClonePolicy<CSCWireHit> >"> - <method name="sort"/> - </class> + <class name="edm::OwnVector<CSCSegment, edm::ClonePolicy<CSCSegment> >"> <method name="sort"/> </class> diff --git a/DataFormats/CaloRecHit/TagLog b/DataFormats/CaloRecHit/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/DataFormats/CastorReco/doc/html/index.html b/DataFormats/CastorReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/CastorReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/CastorReco/doc/html/overview.html b/DataFormats/CastorReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/CastorReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Common/interface/AssociationMap.h b/DataFormats/Common/interface/AssociationMap.h index 8e2ae4c2ccf..8a1216bcba2 100755 --- a/DataFormats/Common/interface/AssociationMap.h +++ b/DataFormats/Common/interface/AssociationMap.h @@ -6,7 +6,7 @@ * * \author Luca Lista, INFN * - * $Id: AssociationMap.h,v 1.27 2006/10/30 23:07:52 wmtan Exp $ + * $Id: AssociationMap.h,v 1.28 2006/11/16 20:44:44 wmtan Exp $ * */ #include "DataFormats/Common/interface/RefVector.h" @@ -106,6 +106,8 @@ namespace edm { if ( f == map_.end() ) return 0; return Tag::size( f->second ); } + /// return ref-prod structure + const ref_type & refProd() const { return ref_; } /// post insert action void post_insert() { Tag::sort( map_ ); } diff --git a/DataFormats/Common/src/classes_def.xml b/DataFormats/Common/src/classes_def.xml index 44f12b27f1d..0005c308072 100644 --- a/DataFormats/Common/src/classes_def.xml +++ b/DataFormats/Common/src/classes_def.xml @@ -62,6 +62,7 @@ <class name="edm::Wrapper<unsigned short>"/> <class name="edm::Wrapper<char>"/> <class name="edm::Wrapper<unsigned char>"/> + <class name="edm::Wrapper<bool>"/> <class name="edm::Wrapper<std::vector<std::basic_string<char> > >"/> <class name="edm::Wrapper<std::vector<float> >"/> <class name="edm::Wrapper<std::vector<double> >"/> diff --git a/DataFormats/EgammaTrackReco/doc/html/index.html b/DataFormats/EgammaTrackReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/EgammaTrackReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/EgammaTrackReco/doc/html/overview.html b/DataFormats/EgammaTrackReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/EgammaTrackReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/FP420Cluster/doc/html/index.html b/DataFormats/FP420Cluster/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/FP420Cluster/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/FP420Cluster/doc/html/overview.html b/DataFormats/FP420Cluster/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/FP420Cluster/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/FP420Digi/doc/html/index.html b/DataFormats/FP420Digi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/FP420Digi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/FP420Digi/doc/html/overview.html b/DataFormats/FP420Digi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/FP420Digi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/FWLite/doc/html/index.html b/DataFormats/FWLite/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/FWLite/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/FWLite/doc/html/overview.html b/DataFormats/FWLite/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/FWLite/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/GeometryCommonDetAlgo/doc/html/index.html b/DataFormats/GeometryCommonDetAlgo/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/GeometryCommonDetAlgo/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/GeometryCommonDetAlgo/doc/html/overview.html b/DataFormats/GeometryCommonDetAlgo/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/GeometryCommonDetAlgo/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/GeometrySurface/doc/html/index.html b/DataFormats/GeometrySurface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/GeometrySurface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/GeometrySurface/doc/html/overview.html b/DataFormats/GeometrySurface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/GeometrySurface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/GeometryVector/doc/html/index.html b/DataFormats/GeometryVector/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/GeometryVector/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/GeometryVector/doc/html/overview.html b/DataFormats/GeometryVector/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/GeometryVector/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/GsfTrackReco/doc/html/index.html b/DataFormats/GsfTrackReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/GsfTrackReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/GsfTrackReco/doc/html/overview.html b/DataFormats/GsfTrackReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/GsfTrackReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/HcalCalibObjects/doc/html/index.html b/DataFormats/HcalCalibObjects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/HcalCalibObjects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/HcalCalibObjects/doc/html/overview.html b/DataFormats/HcalCalibObjects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/HcalCalibObjects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/HcalIsolatedTrack/doc/html/index.html b/DataFormats/HcalIsolatedTrack/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/HcalIsolatedTrack/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/HcalIsolatedTrack/doc/html/overview.html b/DataFormats/HcalIsolatedTrack/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/HcalIsolatedTrack/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/HeavyIonEvent/doc/html/index.html b/DataFormats/HeavyIonEvent/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/HeavyIonEvent/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/HeavyIonEvent/doc/html/overview.html b/DataFormats/HeavyIonEvent/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/HeavyIonEvent/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/HepMCCandidate/interface/GenParticleCandidate.h b/DataFormats/HepMCCandidate/interface/GenParticleCandidate.h index 0baef307a92..338f088ecf7 100755 --- a/DataFormats/HepMCCandidate/interface/GenParticleCandidate.h +++ b/DataFormats/HepMCCandidate/interface/GenParticleCandidate.h @@ -6,7 +6,7 @@ * * \author: Luca Lista, INFN * - * \version $Id: GenParticleCandidate.h,v 1.7 2006/11/13 12:42:56 llista Exp $ + * \version $Id: GenParticleCandidate.h,v 1.8 2006/11/14 08:56:42 llista Exp $ */ #include "DataFormats/Candidate/interface/CompositeRefCandidate.h" @@ -33,7 +33,7 @@ namespace reco { /// get candidate mother CandidateRef mother() const { return mother_; } /// set mother reference - void setMother( const CandidateRef & ref ) const { mother_ = ref; } + void setMother( const CandidateRef & ref ) { mother_ = ref; } private: /// checp overlap with another candidate @@ -43,7 +43,7 @@ namespace reco { /// status code int status_; /// reference to mother - mutable CandidateRef mother_; + CandidateRef mother_; }; /// PDG id component tag diff --git a/DataFormats/HepMCCandidate/src/GenParticleCandidate.cc b/DataFormats/HepMCCandidate/src/GenParticleCandidate.cc index 51c257b0de9..18b7ce49d99 100755 --- a/DataFormats/HepMCCandidate/src/GenParticleCandidate.cc +++ b/DataFormats/HepMCCandidate/src/GenParticleCandidate.cc @@ -1,4 +1,4 @@ -// $Id: GenParticleCandidate.cc,v 1.2 2006/11/02 10:23:57 llista Exp $ +// $Id: GenParticleCandidate.cc,v 1.3 2006/11/13 12:42:57 llista Exp $ #include "DataFormats/HepMCCandidate/interface/GenParticleCandidate.h" #include <CLHEP/HepMC/GenParticle.h> #include <CLHEP/HepMC/GenVertex.h> @@ -15,7 +15,7 @@ GenParticleCandidate::GenParticleCandidate( const HepMC::GenParticle * p ) : const HepMC::GenVertex * v = p->production_vertex(); if ( v != 0 ) { HepGeom::Point3D<double> vtx = v->point3d(); - vertex_ = Point( vtx.x() * 10. , vtx.y() * 10. , vtx.z() * 10. ); + vertex_ = Point( vtx.x() / 10. , vtx.y() / 10. , vtx.z() / 10. ); } else { vertex_.SetXYZ( 0, 0, 0 ); } diff --git a/DataFormats/HepMCCandidate/src/classes_def.xml b/DataFormats/HepMCCandidate/src/classes_def.xml index 385131db2dc..5290574ab8a 100755 --- a/DataFormats/HepMCCandidate/src/classes_def.xml +++ b/DataFormats/HepMCCandidate/src/classes_def.xml @@ -1,8 +1,6 @@ <lcgdict> <class name="reco::HepMCCandidate" /> - <class name="reco::GenParticleCandidate"> - <field name="mother_" transient="true" /> - </class> + <class name="reco::GenParticleCandidate" /> <class name="std::vector<reco::GenParticleCandidate>"/> <class name="edm::Wrapper<std::vector<reco::GenParticleCandidate> >"/> </lcgdict> diff --git a/DataFormats/Histograms/doc/html/index.html b/DataFormats/Histograms/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/Histograms/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/Histograms/doc/html/overview.html b/DataFormats/Histograms/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/Histograms/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/JetReco/interface/BasicJet.h b/DataFormats/JetReco/interface/BasicJet.h index 3816cdff1cf..067689f8f1e 100755 --- a/DataFormats/JetReco/interface/BasicJet.h +++ b/DataFormats/JetReco/interface/BasicJet.h @@ -1,7 +1,7 @@ #ifndef JetReco_BasicJet_h #define JetReco_BasicJet_h -/** \class reco::BasicJet +/** \class BasicJet * * \short Jets made from CaloTowers * @@ -11,7 +11,7 @@ * * \author Fedor Ratnikov, UMd * - * \version $Id: BasicJet.h,v 1.1 2006/07/19 21:41:27 fedor Exp $ + * \version $Id: BasicJet.h,v 1.16 2006/06/27 23:15:06 fedor Exp $ ************************************************************/ diff --git a/DataFormats/JetReco/interface/CaloJet.h b/DataFormats/JetReco/interface/CaloJet.h index b9e2cb89751..1a234765226 100755 --- a/DataFormats/JetReco/interface/CaloJet.h +++ b/DataFormats/JetReco/interface/CaloJet.h @@ -1,7 +1,7 @@ #ifndef JetReco_CaloJet_h #define JetReco_CaloJet_h -/** \class reco::CaloJet +/** \class CaloJet * * \short Jets made from CaloTowers * @@ -18,7 +18,7 @@ * * \version May 3, 2006, F.Ratnikov, include all different * energy components separately - * \version $Id: CaloJet.h,v 1.16 2006/06/27 23:15:06 fedor Exp $ + * \version $Id: CaloJet.h,v 1.15 2006/06/01 19:23:50 fedor Exp $ ************************************************************/ diff --git a/DataFormats/JetReco/interface/GenJet.h b/DataFormats/JetReco/interface/GenJet.h index 4c3907230b7..48cef0f6b50 100644 --- a/DataFormats/JetReco/interface/GenJet.h +++ b/DataFormats/JetReco/interface/GenJet.h @@ -1,7 +1,7 @@ #ifndef JetReco_GenJet_h #define JetReco_GenJet_h -/** \class reco::GenJet +/** \class GenJet * * \short Jets made from MC generator particles * @@ -12,7 +12,7 @@ * \author Fedor Ratnikov, UMd * * \version Original March 31, 2006 by F.R. - * \version $Id: GenJet.h,v 1.6 2006/06/27 23:15:06 fedor Exp $ + * \version $Id: GenJet.h,v 1.5 2006/06/01 19:23:50 fedor Exp $ ************************************************************/ diff --git a/DataFormats/JetReco/interface/Jet.h b/DataFormats/JetReco/interface/Jet.h index 8f5d7d68433..d8654390f29 100644 --- a/DataFormats/JetReco/interface/Jet.h +++ b/DataFormats/JetReco/interface/Jet.h @@ -1,7 +1,7 @@ #ifndef JetReco_Jet_h #define JetReco_Jet_h - /** \class reco::Jet + /** \class Jet * * \short Base class for all types of Jets * @@ -12,7 +12,7 @@ * * \version Original: April 22, 2005 by Fernando Varela Rodriguez. * \version May 23, 2006 by F.R. - * \version $Id: Jet.h,v 1.7 2006/07/21 19:23:14 fedor Exp $ + * \version $Id: Jet.h,v 1.6 2006/06/27 23:15:06 fedor Exp $ ************************************************************/ #include "DataFormats/Candidate/interface/CompositeRefCandidate.h" diff --git a/DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h b/DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h index 7510cd04aca..104cbcc2e2f 100644 --- a/DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h +++ b/DataFormats/L1CaloTrigger/interface/L1CaloRegionDetId.h @@ -6,8 +6,8 @@ /** \class L1CaloRegionDetId * Cell identifier class for L1 Calo Trigger Regions (4x4 trigger tower sums) * - * $Date: 2006/07/06 12:38:11 $ - * $Revision: 1.8 $ + * $Date: 2006/07/07 19:18:13 $ + * $Revision: 1.9 $ * \author Jim Brooke */ @@ -61,16 +61,22 @@ class L1CaloRegionDetId : public DetId { unsigned rctCrate() const; /// return RCT card number (0-6) - unsigned rctCard() const; /// TODO - check + unsigned rctCard() const; /// return RCT region index (0-1 for barrel, 0-7 for HF) - unsigned rctRegion() const; /// TODO - check + unsigned rctRegion() const; /// return local RCT eta index (0-10) - unsigned rctEta() const { return (ieta()<11 ? 10-ieta() : ieta()-11); } /// TODO - check this is correct + unsigned rctEta() const { return (ieta()<11 ? 10-ieta() : ieta()-11); } /// return local RCT phi index (0-1) - unsigned rctPhi() const { return (iphi()%2); } /// TODO - check this is correct + unsigned rctPhi() const { return (iphi()%2); } + + /// return GCT output eta value (includes sign at bit 4) + unsigned gctEta() const { return (((rctEta() % 7) & 0x7) | (ieta()<11 ? 0x8 : 0)); } + + /// return GCT output phi value + unsigned gctPhi() const { return iphi() & 0x1f; } }; diff --git a/DataFormats/L1GlobalCaloTrigger/src/L1GctEmCand.cc b/DataFormats/L1GlobalCaloTrigger/src/L1GctEmCand.cc index cc367aa6003..d3352d646ea 100644 --- a/DataFormats/L1GlobalCaloTrigger/src/L1GctEmCand.cc +++ b/DataFormats/L1GlobalCaloTrigger/src/L1GctEmCand.cc @@ -35,7 +35,7 @@ L1GctEmCand::L1GctEmCand(unsigned rank, unsigned eta, unsigned phi, bool iso) : L1GctEmCand::L1GctEmCand(L1CaloEmCand& c) : m_iso(c.isolated()) { - construct(c.rank(), c.regionId().ieta(), c.regionId().iphi()); + construct(c.rank(), c.regionId().gctEta(), c.regionId().gctPhi()); } // destructor diff --git a/DataFormats/L1GlobalCaloTrigger/src/L1GctJetCand.cc b/DataFormats/L1GlobalCaloTrigger/src/L1GctJetCand.cc index 06c5b61afff..2d2aa46440e 100644 --- a/DataFormats/L1GlobalCaloTrigger/src/L1GctJetCand.cc +++ b/DataFormats/L1GlobalCaloTrigger/src/L1GctJetCand.cc @@ -62,7 +62,7 @@ L1CaloRegionDetId L1GctJetCand::regionId() const { // get global eta unsigned eta; if ( !isForward() ) { - eta = ( etaSign()==1 ? 11-(etaIndex()&0x7) : (etaIndex()&0x7)+11 ); + eta = ( etaSign()==1 ? 10-(etaIndex()&0x7) : (etaIndex()&0x7)+11 ); } else { eta = ( etaSign()==1 ? 3-(etaIndex()&0x7) : (etaIndex()&0x7)+18 ); diff --git a/DataFormats/LaserAlignment/doc/html/index.html b/DataFormats/LaserAlignment/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/LaserAlignment/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/LaserAlignment/doc/html/overview.html b/DataFormats/LaserAlignment/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/LaserAlignment/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Luminosity/doc/html/index.html b/DataFormats/Luminosity/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/Luminosity/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/Luminosity/doc/html/overview.html b/DataFormats/Luminosity/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/Luminosity/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Math/src/classes.h b/DataFormats/Math/src/classes.h index 28832b63f0c..8d27986a4f1 100755 --- a/DataFormats/Math/src/classes.h +++ b/DataFormats/Math/src/classes.h @@ -2,31 +2,177 @@ #include "DataFormats/Math/interface/LorentzVector.h" #include "DataFormats/Math/interface/Vector3D.h" #include "DataFormats/Math/interface/Point3D.h" +#include "DataFormats/Math/interface/Vector.h" +#include "DataFormats/Math/interface/Error.h" #include "DataFormats/Common/interface/Wrapper.h" #include <vector> namespace { namespace { - std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<Double32_t> > > vv1; - std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<float> > > vvf1; - std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::CylindricalEta3D<Double32_t> > > vv2; - std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::CylindricalEta3D<float> > > vvf2; - std::vector<ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<Double32_t> > > vp1; - std::vector<ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<float> > > vpf1; - std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<Double32_t> > > vl1; - std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<float> > > vlf1; - std::vector<ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiE4D<Double32_t> > > vl2; - std::vector<ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiE4D<float> > > vlf2; - - edm::Wrapper<std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<Double32_t> > > > wvv1; - edm::Wrapper<std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::Cartesian3D<float> > > > wvvf1; - edm::Wrapper<std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::CylindricalEta3D<Double32_t> > > > wvv2; - edm::Wrapper<std::vector<ROOT::Math::DisplacementVector3D<ROOT::Math::CylindricalEta3D<float> > > > wvvf2; - edm::Wrapper<std::vector<ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<Double32_t> > > > wvp1; - edm::Wrapper<std::vector<ROOT::Math::PositionVector3D<ROOT::Math::Cartesian3D<float> > > > wvpf1; - edm::Wrapper<std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<Double32_t> > > > wvl1; - edm::Wrapper<std::vector<ROOT::Math::LorentzVector<ROOT::Math::PxPyPzE4D<float> > > > wvlf1; - edm::Wrapper<std::vector<ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiE4D<Double32_t> > > > wvl2; - edm::Wrapper<std::vector<ROOT::Math::LorentzVector<ROOT::Math::PtEtaPhiE4D<float> > > > wvlf2; + math::XYZVector v1; + math::XYZVectorD vd1; + math::XYZVectorF vf1; + math::RhoEtaPhiVector v2; + math::RhoEtaPhiVectorD vd2; + math::RhoEtaPhiVectorF vf2; + math::RThetaPhiVector v3; + math::RThetaPhiVectorD vd3; + math::RThetaPhiVectorF vf3; + math::XYZPoint p1; + math::XYZPointD pd1; + math::XYZPointF pf1; + math::PtEtaPhiELorentzVector l1; + math::PtEtaPhiELorentzVectorD ld1; + math::PtEtaPhiELorentzVectorF lf1; + math::XYZTLorentzVector l2; + math::XYZTLorentzVectorD ld2; + math::XYZTLorentzVectorF lf2; + + math::LocalPoint lp1; + math::GlobalPoint gp1; + math::LocalVector lv1; + math::GlobalVector gv1; + + std::vector<math::XYZVector> vv1; + std::vector<math::XYZVectorD> vvd1; + std::vector<math::XYZVectorF> vvf1; + std::vector<math::RhoEtaPhiVector> vv2; + std::vector<math::RhoEtaPhiVectorD> vvd2; + std::vector<math::RhoEtaPhiVectorF> vvf2; + std::vector<math::RThetaPhiVector> vv3; + std::vector<math::RThetaPhiVectorD> vvd3; + std::vector<math::RThetaPhiVectorF> vvf3; + std::vector<math::XYZPoint> vp1; + std::vector<math::XYZPointD> vpd1; + std::vector<math::XYZPointF> vpf1; + std::vector<math::PtEtaPhiELorentzVector> vl1; + std::vector<math::PtEtaPhiELorentzVectorD> vld1; + std::vector<math::PtEtaPhiELorentzVectorF> vlf1; + std::vector<math::XYZTLorentzVector> vl2; + std::vector<math::XYZTLorentzVectorD> vld2; + std::vector<math::XYZTLorentzVectorF> vlf2; + + edm::Wrapper<math::XYZVector> wv1; + edm::Wrapper<math::XYZVectorD> wvd1; + edm::Wrapper<math::XYZVectorF> wvf1; + edm::Wrapper<math::RhoEtaPhiVector> wv2; + edm::Wrapper<math::RhoEtaPhiVectorD> wvd2; + edm::Wrapper<math::RhoEtaPhiVectorF> wvf2; + edm::Wrapper<math::RThetaPhiVector> wv3; + edm::Wrapper<math::RThetaPhiVectorD> wvd3; + edm::Wrapper<math::RThetaPhiVectorF> wvf3; + edm::Wrapper<math::XYZPoint> wp1; + edm::Wrapper<math::XYZPointD> wpd1; + edm::Wrapper<math::XYZPointF> wpf1; + edm::Wrapper<math::PtEtaPhiELorentzVector> wl1; + edm::Wrapper<math::PtEtaPhiELorentzVectorD> wld1; + edm::Wrapper<math::PtEtaPhiELorentzVectorF> wlf1; + edm::Wrapper<math::XYZTLorentzVector> wl2; + edm::Wrapper<math::XYZTLorentzVectorD> wld2; + edm::Wrapper<math::XYZTLorentzVectorF> wlf2; + + edm::Wrapper<std::vector<math::XYZVector> > wvv1; + edm::Wrapper<std::vector<math::XYZVectorD> > wvvd1; + edm::Wrapper<std::vector<math::XYZVectorF> > wvvf1; + edm::Wrapper<std::vector<math::RhoEtaPhiVector> > wvv2; + edm::Wrapper<std::vector<math::RhoEtaPhiVectorD> > wvvd2; + edm::Wrapper<std::vector<math::RhoEtaPhiVectorF> > wvvf2; + edm::Wrapper<std::vector<math::RThetaPhiVector> > wvv3; + edm::Wrapper<std::vector<math::RThetaPhiVectorD> > wvvd3; + edm::Wrapper<std::vector<math::RThetaPhiVectorF> > wvvf3; + edm::Wrapper<std::vector<math::XYZPoint> > wvp1; + edm::Wrapper<std::vector<math::XYZPointD> > wvpd1; + edm::Wrapper<std::vector<math::XYZPointF> > wvpf1; + edm::Wrapper<std::vector<math::PtEtaPhiELorentzVector> > wvl1; + edm::Wrapper<std::vector<math::PtEtaPhiELorentzVectorD> > wvld1; + edm::Wrapper<std::vector<math::PtEtaPhiELorentzVectorF> > wvlf1; + edm::Wrapper<std::vector<math::XYZTLorentzVector> > wvl2; + edm::Wrapper<std::vector<math::XYZTLorentzVectorD> > wvld2; + edm::Wrapper<std::vector<math::XYZTLorentzVectorF> > wvlf2; + + math::Vector<1>::type vV1; + math::Vector<2>::type vV2; + math::Vector<3>::type vV3; + math::Vector<4>::type vV4; + math::Vector<5>::type vV5; + math::Vector<6>::type vV6; + math::VectorD<1>::type vVd1; + math::VectorD<2>::type vVd2; + math::VectorD<3>::type vVd3; + math::VectorD<4>::type vVd4; + math::VectorD<5>::type vVd5; + math::VectorD<6>::type vVd6; + math::VectorF<1>::type vVf1; + math::VectorF<2>::type vVf2; + math::VectorF<3>::type vVf3; + math::VectorF<4>::type vVf4; + math::VectorF<5>::type vVf5; + math::VectorF<6>::type vVf6; + + math::Error<1>::type e1; + math::Error<2>::type e2; + math::Error<3>::type e3; + math::Error<4>::type e4; + math::Error<5>::type e5; + math::Error<6>::type e6; + math::ErrorD<1>::type ed1; + math::ErrorD<2>::type ed2; + math::ErrorD<3>::type ed3; + math::ErrorD<4>::type ed4; + math::ErrorD<5>::type ed5; + math::ErrorD<6>::type ed6; + math::ErrorF<1>::type ef1; + math::ErrorF<2>::type ef2; + math::ErrorF<3>::type ef3; + math::ErrorF<4>::type ef4; + math::ErrorF<5>::type ef5; + math::ErrorF<6>::type ef6; + + std::vector<math::Error<1>::type> ve1; + std::vector<math::Error<2>::type> ve2; + std::vector<math::Error<3>::type> ve3; + std::vector<math::Error<4>::type> ve4; + std::vector<math::Error<5>::type> ve5; + std::vector<math::Error<6>::type> ve6; + + edm::Wrapper<math::Error<1>::type> we1; + edm::Wrapper<math::Error<2>::type> we2; + edm::Wrapper<math::Error<3>::type> we3; + edm::Wrapper<math::Error<4>::type> we4; + edm::Wrapper<math::Error<5>::type> we5; + edm::Wrapper<math::Error<6>::type> we6; + + edm::Wrapper<std::vector<math::Error<1>::type> > wve1; + edm::Wrapper<std::vector<math::Error<2>::type> > wve2; + edm::Wrapper<std::vector<math::Error<3>::type> > wve3; + edm::Wrapper<std::vector<math::Error<4>::type> > wve4; + edm::Wrapper<std::vector<math::Error<5>::type> > wve5; + edm::Wrapper<std::vector<math::Error<6>::type> > wve6; + + ROOT::Math::MatRepSym<Double32_t, 1> sm1; + ROOT::Math::MatRepSym<Double32_t, 2> sm2; + ROOT::Math::MatRepSym<Double32_t, 3> sm3; + ROOT::Math::MatRepSym<Double32_t, 4> sm4; + ROOT::Math::MatRepSym<Double32_t, 5> sm5; + ROOT::Math::MatRepSym<Double32_t, 6> sm6; + ROOT::Math::MatRepSym<double, 1> smd1; + ROOT::Math::MatRepSym<double, 2> smd2; + ROOT::Math::MatRepSym<double, 3> smd3; + ROOT::Math::MatRepSym<double, 4> smd4; + ROOT::Math::MatRepSym<double, 5> smd5; + ROOT::Math::MatRepSym<double, 6> smd6; + ROOT::Math::MatRepSym<float, 1> smf1; + ROOT::Math::MatRepSym<float, 2> smf2; + ROOT::Math::MatRepSym<float, 3> smf3; + ROOT::Math::MatRepSym<float, 4> smf4; + ROOT::Math::MatRepSym<float, 5> smf5; + ROOT::Math::MatRepSym<float, 6> smf6; + + ROOT::Math::RowOffsets<1> ro1; + ROOT::Math::RowOffsets<2> ro2; + ROOT::Math::RowOffsets<3> ro3; + ROOT::Math::RowOffsets<4> ro4; + ROOT::Math::RowOffsets<5> ro5; + ROOT::Math::RowOffsets<6> ro6; } } diff --git a/DataFormats/Math/src/classes_def.xml b/DataFormats/Math/src/classes_def.xml index 1d94dc26bbb..b68e03c4cad 100755 --- a/DataFormats/Math/src/classes_def.xml +++ b/DataFormats/Math/src/classes_def.xml @@ -1,5 +1,15 @@ <lcgdict> <selection> + <class pattern="ROOT::Math::PtEtaPhiE4D<*>" /> + <class pattern="ROOT::Math::PxPyPzE4D<*>" /> + <class pattern="ROOT::Math::Cartesian3D<*>" /> + <class pattern="ROOT::Math::CylindricalEta3D<*>" /> + <class pattern="ROOT::Math::Polar3D<*>" /> + <class pattern="ROOT::Math::LorentzVector<*>" /> + <class pattern="ROOT::Math::DisplacementVector3D<*>" /> + <class pattern="ROOT::Math::PositionVector3D<*>" /> + <class pattern="ROOT::Math::SMatrix<*>" /> + <class pattern="ROOT::Math::SVector<*>" /> <class pattern="std::vector<ROOT::Math::*>" /> <class pattern="edm::Wrapper<*>" /> </selection> diff --git a/DataFormats/MuonDetId/interface/CSCDetId.h b/DataFormats/MuonDetId/interface/CSCDetId.h index 504e0ee0099..afc9f591cc6 100644 --- a/DataFormats/MuonDetId/interface/CSCDetId.h +++ b/DataFormats/MuonDetId/interface/CSCDetId.h @@ -39,8 +39,7 @@ public: /// Construct from fully qualified identifier. /// Input values are required to be within legal ranges, otherwise an - /// exception is thrown.<br> - /// iendcap: 1=forward (+Z), 2=backward(-Z) + /// exception is thrown. CSCDetId( int iendcap, int istation, int iring, int ichamber, int ilayer ); @@ -71,7 +70,7 @@ public: return ( (id_>>START_CHAMBER) & MASK_CHAMBER ); } /** - * Return Ring label. + * Return %Ring label. * */ int ring() const { @@ -89,7 +88,7 @@ public: return ( (id_>>START_STATION) & MASK_STATION ); } /** - * Return Endcap label. 1=forward (+Z); 2=backward (-Z) + * Return Endcap label. * */ int endcap() const { diff --git a/DataFormats/MuonSeed/doc/html/index.html b/DataFormats/MuonSeed/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/MuonSeed/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/MuonSeed/doc/html/overview.html b/DataFormats/MuonSeed/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/MuonSeed/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/ParticleFlowCandidate/doc/html/index.html b/DataFormats/ParticleFlowCandidate/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/ParticleFlowCandidate/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/ParticleFlowCandidate/doc/html/overview.html b/DataFormats/ParticleFlowCandidate/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/ParticleFlowCandidate/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/ParticleFlowReco/src/PFRecHit.cc b/DataFormats/ParticleFlowReco/src/PFRecHit.cc index fbe8afe1175..ebe705003db 100644 --- a/DataFormats/ParticleFlowReco/src/PFRecHit.cc +++ b/DataFormats/ParticleFlowReco/src/PFRecHit.cc @@ -107,6 +107,13 @@ void PFRecHit::setNeighbours( const vector<PFRecHit*>& neighbours ) { neighbours4_.clear(); neighbours8_.clear(); + neighboursIds4_.reserve( PFRecHit::nNeighbours_ ); + neighboursIds8_.reserve( PFRecHit::nNeighbours_ ); + neighbours4_.reserve( PFRecHit::nNeighbours_ ); + neighbours8_.reserve( PFRecHit::nNeighbours_ ); + + + // neighboursIds_.reserve(nNeighbours_); // neighbours_.reserve(nNeighbours_); diff --git a/DataFormats/PatCandidates/doc/html/index.html b/DataFormats/PatCandidates/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/PatCandidates/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/PatCandidates/doc/html/overview.html b/DataFormats/PatCandidates/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/PatCandidates/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/PixelMatchTrackReco/doc/html/index.html b/DataFormats/PixelMatchTrackReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/PixelMatchTrackReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/PixelMatchTrackReco/doc/html/overview.html b/DataFormats/PixelMatchTrackReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/PixelMatchTrackReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Provenance/doc/html/index.html b/DataFormats/Provenance/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/Provenance/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/Provenance/doc/html/overview.html b/DataFormats/Provenance/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/Provenance/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/RecoCandidate/BuildFile b/DataFormats/RecoCandidate/BuildFile index 5fd6871901f..4d1903e793f 100755 --- a/DataFormats/RecoCandidate/BuildFile +++ b/DataFormats/RecoCandidate/BuildFile @@ -2,8 +2,6 @@ <use name=DataFormats/VertexReco> <use name=DataFormats/TrackReco> <use name=DataFormats/CaloTowers> -<use name=DataFormats/HCalRecHit> -<use name=DataFormats/CaloRecHit> <use name=DataFormats/Candidate> <use name=DataFormats/Common> <export> @@ -12,8 +10,6 @@ <use name=DataFormats/VertexReco> <use name=DataFormats/TrackReco> <use name=DataFormats/CaloTowers> - <use name=DataFormats/HCalRecHit> - <use name=DataFormats/CaloRecHit> <use name=DataFormats/Candidate> <use name=DataFormats/Common> </export> diff --git a/DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h b/DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h deleted file mode 100755 index 7e6ec455b60..00000000000 --- a/DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef RecoCandidate_CaloRecHitCandidate_h -#define RecoCandidate_CaloRecHitCandidate_h -/** \class reco::CaloRecHitCandidate - * - * Reco Candidates with a CaloRecHit component - * - * \author Luca Lista, INFN - * - * \version $Id: CaloRecHitCandidate.h,v 1.4 2006/10/26 09:14:55 llista Exp $ - * - */ -#include "DataFormats/RecoCandidate/interface/RecoCandidate.h" -#include "DataFormats/CaloRecHit/interface/CaloRecHit.h" -#include "DataFormats/Common/interface/RefToBase.h" - -namespace reco { - - class CaloRecHitCandidate : public LeafCandidate { - public: - typedef edm::RefToBase<CaloRecHit> CaloRecHitRef; - /// default constructor - CaloRecHitCandidate() : LeafCandidate() { } - /// constructor from values - CaloRecHitCandidate( const LorentzVector & p4, Charge q = 0, const Point & vtx = Point( 0, 0, 0 ) ) : - LeafCandidate( q, p4, vtx ) { } - /// destructor - virtual ~CaloRecHitCandidate(); - /// returns a clone of the candidate - virtual CaloRecHitCandidate * clone() const; - /// set CaloRecHit reference - void setCaloRecHit( const CaloRecHitRef & r ) { caloRecHit_ = r; } - /// reference to a CaloRecHit - CaloRecHitRef caloRecHit() const { return caloRecHit_; } - - private: - /// check overlap with another candidate - virtual bool overlap( const Candidate & ) const; - /// reference to a CaloRecHit - CaloRecHitRef caloRecHit_; - }; - /// get default Track component - GET_DEFAULT_CANDIDATE_COMPONENT( CaloRecHitCandidate, edm::RefToBase<CaloRecHit>, caloRecHit ) - -} - -#endif diff --git a/DataFormats/RecoCandidate/src/CaloRecHitCandidate.cc b/DataFormats/RecoCandidate/src/CaloRecHitCandidate.cc deleted file mode 100755 index a8be5bcce5b..00000000000 --- a/DataFormats/RecoCandidate/src/CaloRecHitCandidate.cc +++ /dev/null @@ -1,18 +0,0 @@ -// $Id: CaloRecHitCandidate.cc,v 1.5 2006/05/31 12:45:46 llista Exp $ -#include "DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h" - -using namespace reco; - -CaloRecHitCandidate::~CaloRecHitCandidate() { } - -CaloRecHitCandidate * CaloRecHitCandidate::clone() const { - return new CaloRecHitCandidate( * this ); -} - -bool CaloRecHitCandidate::overlap( const Candidate & c ) const { - const CaloRecHitCandidate * o = dynamic_cast<const CaloRecHitCandidate *>( & c ); - if ( o == 0 ) return false; - if ( caloRecHit().isNull() ) return false; - if ( o->caloRecHit().isNull() ) return false; - return ( caloRecHit() != o->caloRecHit() ); -} diff --git a/DataFormats/RecoCandidate/src/classes.h b/DataFormats/RecoCandidate/src/classes.h index a949aa2dc35..6e6d3628ebf 100755 --- a/DataFormats/RecoCandidate/src/classes.h +++ b/DataFormats/RecoCandidate/src/classes.h @@ -3,8 +3,6 @@ #include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h" #include "DataFormats/RecoCandidate/interface/RecoCaloTowerCandidate.h" #include "DataFormats/RecoCandidate/interface/RecoEcalCandidateIsolation.h" -#include "DataFormats/RecoCandidate/interface/CaloRecHitCandidate.h" -#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/Common/interface/RefToBase.h" @@ -22,6 +20,7 @@ namespace { edm::RefProd<reco::RecoEcalCandidateCollection> rp2; edm::RefVector<reco::RecoEcalCandidateCollection> rv2; + std::map<unsigned int, float> m3; reco::RecoEcalCandidateIsolationMap v3; edm::Wrapper<reco::RecoEcalCandidateIsolationMap> w3; edm::helpers::Key<edm::RefProd<reco::RecoEcalCandidateCollection > > h3; @@ -29,10 +28,5 @@ namespace { edm::reftobase::Holder<reco::Candidate, reco::RecoEcalCandidateRef> rb1; edm::reftobase::Holder<reco::Candidate, reco::RecoChargedCandidateRef> rb2; - edm::reftobase::Holder<CaloRecHit, HBHERecHitRef> rb4; - edm::reftobase::Holder<CaloRecHit, HORecHitRef > rb5; - edm::reftobase::Holder<CaloRecHit, HFRecHitRef> rb6; - edm::reftobase::Holder<CaloRecHit, ZDCRecHitRef> rb7; - edm::RefToBase<CaloRecHit> rbh3; } } diff --git a/DataFormats/RecoCandidate/src/classes_def.xml b/DataFormats/RecoCandidate/src/classes_def.xml index 85c2efb239e..041eeea2c33 100755 --- a/DataFormats/RecoCandidate/src/classes_def.xml +++ b/DataFormats/RecoCandidate/src/classes_def.xml @@ -3,9 +3,6 @@ <class name="reco::RecoChargedCandidate" /> <class name="reco::RecoEcalCandidate" /> <class name="reco::RecoCaloTowerCandidate"/> - <class name="edm::RefToBase<CaloRecHit>" /> - <class name="reco::CaloRecHitCandidate"/> - <class name="std::vector<reco::RecoChargedCandidate>"/> <class name="edm::Wrapper<std::vector<reco::RecoChargedCandidate> >"/> <class name="edm::Ref<std::vector<reco::RecoChargedCandidate>,reco::RecoChargedCandidate,edm::refhelper::FindUsingAdvance<std::vector<reco::RecoChargedCandidate>,reco::RecoChargedCandidate> >"/> @@ -20,17 +17,15 @@ <class name="edm::reftobase::Holder<reco::Candidate, edm::Ref<std::vector<reco::RecoEcalCandidate>,reco::RecoEcalCandidate,edm::refhelper::FindUsingAdvance<std::vector<reco::RecoEcalCandidate>,reco::RecoEcalCandidate> > >" /> <class name="edm::reftobase::Holder<reco::Candidate, edm::Ref<std::vector<reco::RecoChargedCandidate>,reco::RecoChargedCandidate,edm::refhelper::FindUsingAdvance<std::vector<reco::RecoChargedCandidate>,reco::RecoChargedCandidate> > >" /> <class name="edm::reftobase::BaseHolder<reco::Candidate>" /> - <class name="edm::reftobase::Holder<CaloRecHit,edm::Ref<edm::SortedCollection<ZDCRecHit,edm::StrictWeakOrdering<ZDCRecHit> >,ZDCRecHit,edm::refhelper::FindUsingAdvance<edm::SortedCollection<ZDCRecHit,edm::StrictWeakOrdering<ZDCRecHit> >,ZDCRecHit> > >" /> - <class name="edm::reftobase::Holder<CaloRecHit,edm::Ref<edm::SortedCollection<HFRecHit,edm::StrictWeakOrdering<HFRecHit> >,HFRecHit,edm::refhelper::FindUsingAdvance<edm::SortedCollection<HFRecHit,edm::StrictWeakOrdering<HFRecHit> >,HFRecHit> > >" /> - <class name="edm::reftobase::Holder<CaloRecHit,edm::Ref<edm::SortedCollection<HORecHit,edm::StrictWeakOrdering<HORecHit> >,HORecHit,edm::refhelper::FindUsingAdvance<edm::SortedCollection<HORecHit,edm::StrictWeakOrdering<HORecHit> >,HORecHit> > >" /> - <class name="edm::reftobase::Holder<CaloRecHit,edm::Ref<edm::SortedCollection<HBHERecHit,edm::StrictWeakOrdering<HBHERecHit> >,HBHERecHit,edm::refhelper::FindUsingAdvance<edm::SortedCollection<HBHERecHit,edm::StrictWeakOrdering<HBHERecHit> >,HBHERecHit> > >" /> - <class name="edm::reftobase::BaseHolder<CaloRecHit>" /> - <class name="edm::AssociationMap<edm::OneToValue<std::vector<reco::RecoEcalCandidate>, float, unsigned int> >"> - <field name="transientMap_" transient="true" /> + <class name="std::map<unsigned int, float>"/> + <class name="edm::AssociationMap<edm::OneToValue<std::vector<reco::RecoEcalCandidate>, float, unsigned int > >"> + <field name="transientMap_" transient="true" /> </class> - <class name="edm::Wrapper<edm::AssociationMap<edm::OneToValue<std::vector<reco::RecoEcalCandidate>, float, unsigned int> > >" /> + <class name="edm::Wrapper<edm::AssociationMap<edm::OneToValue<std::vector<reco::RecoEcalCandidate>, float, unsigned int > > >" /> <class name="edm::helpers::Key<edm::RefProd<std::vector<reco::RecoEcalCandidate> > >" /> + + </lcgdict> diff --git a/DataFormats/RoadSearchSeed/doc/html/index.html b/DataFormats/RoadSearchSeed/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/RoadSearchSeed/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/RoadSearchSeed/doc/html/overview.html b/DataFormats/RoadSearchSeed/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/RoadSearchSeed/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/Scalers/doc/html/index.html b/DataFormats/Scalers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/Scalers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/Scalers/doc/html/overview.html b/DataFormats/Scalers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/Scalers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/SiPixelRawData/doc/html/index.html b/DataFormats/SiPixelRawData/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/SiPixelRawData/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/SiPixelRawData/doc/html/overview.html b/DataFormats/SiPixelRawData/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/SiPixelRawData/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/SiPixelRawData/doc/tex/RawDataFormat.tex b/DataFormats/SiPixelRawData/doc/tex/RawDataFormat.tex deleted file mode 100644 index e6d30156caf..00000000000 --- a/DataFormats/SiPixelRawData/doc/tex/RawDataFormat.tex +++ /dev/null @@ -1,66 +0,0 @@ -\section{Pixel Data Format}\label{sec:Pixel} -%% Danek Kotlinski, first version from 25/5/05 -The pixel Front End Driver (FED) readout board will read -data from 36 input links, build events, and send the event -packets through the S-link to the DAQ. -During the event building it has to reconstruct pixel -addresses from the 6-level analog signals. This procedure -requires a set of pre-programmed threshold levels. - -Each FED will send to the DAQ a data packet starting with the standard -packet header and ending with the standard packet trailer. -The header includes a bit field identifying uniquely the FED. -Between the header and the trailer there will be a variable number of -32-bit data words, with one pixel stored per word. -The format of the 32-bit word is: -\begin{itemize} -\item 6-bit Link id, defines the input link to the FED (0-35); -\item 5-bit ROC id, defines the ROC within one link (0-23); -\item 5-bit Double-Column id, define the double column within -on ROC (0-25); -\item 8-bit Pixel id, define the pixel address within on -Double-Column (0-179); -\item 8-bit ADC value, the signal amplitude, extracted from a -10-bit ADC. -\end{itemize} -Table~\ref{tab:pix1} summarizes the pixel format. - -Note that in our data format the source id (FED number) is not -included. We depend on the source id included in the DAQ S-link -header. This header should be available in the code which will -transform the raw data format to the format used in the reconstruction -code. - -% Pixel data format -\begin{table}[htb] - \caption{Pixel readout format}\label{tab:pix1} - \begin{bittabular}{32} - & \bitNumFourByte - \bitline{pixel&\field{6}{LINK-ID}&\field{5}{ROC-ID}&\field{5}{DCOL-ID}& - \field{8}{PIX-ID} & \field{8}{ADC}} - \bitline{ & 5&4&3&2&1&0 & 4&3&2&1&0 & 4&3&2&1&0 & 7&6&5&4&3&2&1&0 & - 7&6&5&4&3&2&1&0} - %% & \bitNumFourByte - \end{bittabular} -\end{table} - -Based on this format the FED data volume in bytes is calculated as -4 * (3 + number-of-pixels). -The pixel barrel readout has been arranged in such a way to -approximately fit the requirement of 2.0~kB per FED at high luminosity. -For the low luminosity pp collisions, the pixel data volume for -the barrel FEDs will be around 0.6~kB per event. -The difference between various FEDs should be around 10\%. -For the pixel endcaps the data volume per FED will be smaller, -about 1.8(0.55) kB per event at high(low) luminosity. - -When reading data over VME an alternative "raw" data format -is foreseen in addition to the standard one. This format -will be only used during the level calibration procedure -performed in a XDAQ client application and will never be used -in ORCA. - -%%% Local Variables: -%%% mode: latex -%%% TeX-master: "DataFormats" -%%% End: diff --git a/DataFormats/StdDictionaries/doc/html/index.html b/DataFormats/StdDictionaries/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/StdDictionaries/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/StdDictionaries/doc/html/overview.html b/DataFormats/StdDictionaries/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/StdDictionaries/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/TauReco/doc/html/index.html b/DataFormats/TauReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/TauReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/TauReco/doc/html/overview.html b/DataFormats/TauReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/TauReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/TrackingSeed/BuildFile b/DataFormats/TrackingSeed/BuildFile deleted file mode 100644 index 06ba27d78d4..00000000000 --- a/DataFormats/TrackingSeed/BuildFile +++ /dev/null @@ -1,7 +0,0 @@ -<use name=DataFormats/Common> -<use name=DataFormats/TrackerRecHit2D> -<export> - <lib name=DataFormatsTrackingSeed> - <use name=DataFormats/Common> - <use name=DataFormats/TrackerRecHit2D> -</export> diff --git a/DataFormats/TrackingSeed/doc/html/index.html b/DataFormats/TrackingSeed/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/TrackingSeed/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/TrackingSeed/doc/html/overview.html b/DataFormats/TrackingSeed/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/TrackingSeed/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/TrackingSeed/interface/TrackingSeed.h b/DataFormats/TrackingSeed/interface/TrackingSeed.h deleted file mode 100644 index d5ab3d57f81..00000000000 --- a/DataFormats/TrackingSeed/interface/TrackingSeed.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef DATAFORMATS_TRACKINGSEED_H -#define DATAFORMATS_TRACKINGSEED_H - -// -// Package: DataFormats/TrackingSeed -// Class: TrackingSeed -// -// Description: TrackingSeed represents the -// initial trajectory for -// track reconstruction -// -// Original Author: Oliver Gutsche, gutsche@fnal.gov -// Created: Sat Jan 14 22:00:00 UTC 2006 -// -// $Author: stevew $ -// $Date: 2006/02/07 18:07:58 $ -// $Revision: 1.2 $ -// - -#include <vector> -#include "DataFormats/TrackerRecHit2D/interface/BaseSiStripRecHit2DLocalPos.h" -#include "DataFormats/Common/interface/Ref.h" - -class TrackingSeed { - -public: - - typedef std::vector<BaseSiStripRecHit2DLocalPos const*>::iterator iterator; - typedef std::vector<BaseSiStripRecHit2DLocalPos const*>::const_iterator const_iterator; - - TrackingSeed() {} - - inline void addHit(BaseSiStripRecHit2DLocalPos const *input) { detHits_.push_back(input); } - - inline iterator begin() { return detHits_.begin();} - inline iterator end() { return detHits_.end();} - - inline const_iterator begin() const { return detHits_.begin();} - inline const_iterator end() const { return detHits_.end();} - - inline unsigned int size() const { return detHits_.size(); } - -private: - - std::vector<BaseSiStripRecHit2DLocalPos const*> detHits_; - -}; - -#endif // DATAFORMATS_TRACKINGSEED_H diff --git a/DataFormats/TrackingSeed/interface/TrackingSeedCollection.h b/DataFormats/TrackingSeed/interface/TrackingSeedCollection.h deleted file mode 100644 index b278f5a3f22..00000000000 --- a/DataFormats/TrackingSeed/interface/TrackingSeedCollection.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef DATAFORMATS_TRACKINGSEEDCOLLECTION_H -#define DATAFORMATS_TRACKINGSEEDCOLLECTION_H - -// -// Package: DataFormats/TrackingSeed -// Class: TrackingSeedCollection -// -// Description: Collection for TrackingSeed -// -// Original Author: Oliver Gutsche, gutsche@fnal.gov -// Created: Sat Jan 14 22:00:00 UTC 2006 -// -// $Author: gutsche $ -// $Date: 2006/01/14 22:00:00 $ -// $Revision: 1.1 $ -// - -#include <vector> -#include "DataFormats/TrackingSeed/interface/TrackingSeed.h" - -typedef std::vector<TrackingSeed> TrackingSeedCollection; - -#endif // - - diff --git a/DataFormats/TrackingSeed/interface/TrackingSeedCollectionfwd.h b/DataFormats/TrackingSeed/interface/TrackingSeedCollectionfwd.h deleted file mode 100644 index baa30c5a7d2..00000000000 --- a/DataFormats/TrackingSeed/interface/TrackingSeedCollectionfwd.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef DATAFORMATS_TRACKINGSEEDCOLLECTIONFWD_H -#define DATAFORMATS_TRACKINGSEEDCOLLECTIONFWD_H - -// -// Package: DataFormats/TrackingSeed -// Class: TrackingSeedCollectionfwd -// -// Description: TrackingSeedCollectionfwd -// -// Original Author: Oliver Gutsche, gutsche@fnal.gov -// Created: Sat Jan 14 22:00:00 UTC 2006 -// -// $Author: gutsche $ -// $Date: 2006/01/14 22:00:00 $ -// $Revision: 1.1 $ -// - -class TrackingSeedCollection; -#endif // DATAFORMATS_TRACKINGSEEDCOLLECTION_H diff --git a/DataFormats/TrackingSeed/interface/TrackingSeedfwd.h b/DataFormats/TrackingSeed/interface/TrackingSeedfwd.h deleted file mode 100644 index 9df57f967e7..00000000000 --- a/DataFormats/TrackingSeed/interface/TrackingSeedfwd.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef DATAFORMATS_TRACKINGSEEDFWD_H -#define DATAFORMATS_TRACKINGSEEDFWD_H - -// -// Package: DataFormats/TrackingSeed -// Class: TrackingSeedfwd -// -// Description: TrackingSeedfwd -// -// Original Author: Oliver Gutsche, gutsche@fnal.gov -// Created: Sat Jan 14 22:00:00 UTC 2006 -// -// $Author: gutsche $ -// $Date: 2006/01/14 22:00:00 $ -// $Revision: 1.1 $ -// - -class TrackingSeed; -#endif // DATAFORMATS_TRACKINGSEEDFWD_H diff --git a/DataFormats/TrackingSeed/src/classes.h b/DataFormats/TrackingSeed/src/classes.h deleted file mode 100755 index 8a3b56e7382..00000000000 --- a/DataFormats/TrackingSeed/src/classes.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef TRACKINGSEED_CLASSES_H -#define TRACKINGSEED_CLASSES_H - -#include "DataFormats/TrackingSeed/interface/TrackingSeedCollection.h" -#include "DataFormats/Common/interface/Wrapper.h" -#include <vector> - -namespace { - namespace { - edm::Wrapper<TrackingSeedCollection> trackingSeedCollectionWrapper; - } -} - -#endif // TRACKINGSEED_CLASSES_H diff --git a/DataFormats/TrackingSeed/src/classes_def.xml b/DataFormats/TrackingSeed/src/classes_def.xml deleted file mode 100755 index 98565518b35..00000000000 --- a/DataFormats/TrackingSeed/src/classes_def.xml +++ /dev/null @@ -1,5 +0,0 @@ -<lcgdict> - <class name="TrackingSeed"/> - <class name="std::vector<TrackingSeed>"/> - <class name="edm::Wrapper<std::vector<TrackingSeed> >"/> -</lcgdict> diff --git a/DataFormats/V0Candidate/doc/html/index.html b/DataFormats/V0Candidate/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/V0Candidate/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/V0Candidate/doc/html/overview.html b/DataFormats/V0Candidate/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/V0Candidate/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DataFormats/VZero/BuildFile b/DataFormats/VZero/BuildFile index 8ca0c554a34..77da685ea49 100644 --- a/DataFormats/VZero/BuildFile +++ b/DataFormats/VZero/BuildFile @@ -1,10 +1,12 @@ <use name=DataFormats/Math> <use name=DataFormats/Common> +<use name=DataFormats/VertexReco> <use name=FWCore/Utilities> <flags LCGDICT_ARGS="--deep"> <export> <lib name=DataFormatsVZero> <use name=DataFormats/Math> <use name=DataFormats/Common> + <use name=DataFormats/VertexReco> <use name=FWCore/Utilities> </export> diff --git a/DataFormats/VertexReco/interface/Vertex.h b/DataFormats/VertexReco/interface/Vertex.h index d170eec8a05..800749d1ad9 100755 --- a/DataFormats/VertexReco/interface/Vertex.h +++ b/DataFormats/VertexReco/interface/Vertex.h @@ -7,17 +7,14 @@ * * \author Luca Lista, INFN * - * \version $Id: Vertex.h,v 1.22 2006/10/06 12:24:39 walten Exp $ + * \version $Id: Vertex.h,v 1.20 2006/09/17 13:25:11 vanlaer Exp $ * */ #include <Rtypes.h> #include "DataFormats/Math/interface/Error.h" #include "DataFormats/Math/interface/Point3D.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/TrackReco/interface/Track.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" -#include "DataFormats/Common/interface/AssociationMap.h" -// #include "DataFormats/Common/interface/OneToValue.h" #include <iostream> namespace reco { @@ -43,15 +40,13 @@ namespace reco { /// constructor from values Vertex( const Point &, const Error &, double chi2, double ndof, size_t size ); /// add a reference to a Track - void add( const TrackRef & r, double w=1.0 ); - void removeTracks(); - double trackWeight ( const TrackRef & r ) const; + void add( const TrackRef & r ) { tracks_.push_back( r ); } /// first iterator over tracks - track_iterator tracks_begin() const; + track_iterator tracks_begin() const { return tracks_.begin(); } /// last iterator over tracks - track_iterator tracks_end() const; + track_iterator tracks_end() const { return tracks_.end(); } /// number of tracks - size_t tracksSize() const; + size_t tracksSize() const { return tracks_.size(); } /// chi-squares double chi2() const { return chi2_; } /** Number of degrees of freedom @@ -83,6 +78,17 @@ namespace reco { << std::endl; return covariance_[ idx( i, j ) ]; } + /// (i, j)-th element of error matrix, i, j = 0, ... 2 + double & error( int i, int j ) { + std::cout << "reco::Vertex::error(i, j) & NON-CONST, use covariance(i, j)" + << std::endl; + return covariance_[ idx( i, j ) ]; + } + /// (i, j)-th element of error matrix, i, j = 0, ... 2 + double & covariance( int i, int j ) { + std::cout << "reco::Vertex::covariance(i, j) & NON-CONST, use covariance(i, j)" << std::endl; + return covariance_[ idx( i, j ) ]; + } double covariance( int i, int j ) const { return covariance_[ idx( i, j ) ]; } @@ -93,9 +99,6 @@ namespace reco { /// fill SMatrix void fill( CovarianceMatrix & v ) const; - private: - void createTracks() const; - private: /// chi-sqared Double32_t chi2_; @@ -106,8 +109,7 @@ namespace reco { /// covariance matrix (3x3) as vector Double32_t covariance_[ size ]; /// reference to tracks - mutable TrackRefVector tracks_; - edm::AssociationMap< edm::OneToValue<reco::TrackCollection, double> > weights_; + TrackRefVector tracks_; /// position index index idx( index i, index j ) const { int a = ( i <= j ? i : j ), b = ( i <= j ? j : i ); diff --git a/DataFormats/VertexReco/src/Vertex.cc b/DataFormats/VertexReco/src/Vertex.cc index 98891a4afb3..485e926d72c 100755 --- a/DataFormats/VertexReco/src/Vertex.cc +++ b/DataFormats/VertexReco/src/Vertex.cc @@ -1,5 +1,5 @@ #include "DataFormats/VertexReco/interface/Vertex.h" -// $Id: Vertex.cc,v 1.6 2006/07/20 14:34:40 llista Exp $ +// $Id: Vertex.cc,v 1.5 2006/07/18 15:56:58 llista Exp $ using namespace reco; using namespace std; @@ -18,48 +18,3 @@ void Vertex::fill( Error & err ) const { for( index j = 0; j <= i; ++ j ) err( i, j ) = covariance_[ idx ++ ]; } - -size_t Vertex::tracksSize() const -{ - return weights_.size(); -} - -track_iterator Vertex::tracks_begin() const -{ - if ( !(tracks_.size() ) ) createTracks(); - return tracks_.begin(); - // return weights_.keys().begin(); -} - -void Vertex::createTracks() const -{ - for ( edm::AssociationMap < edm::OneToValue<reco::TrackCollection, double> >::const_iterator - i=weights_.begin(); i!=weights_.end() ; ++i ) - { - tracks_.push_back ( i->key ); - } -} - -track_iterator Vertex::tracks_end() const -{ - if ( !(tracks_.size() ) ) createTracks(); - return tracks_.end(); - // return weights_.keys().end(); -} - -void Vertex::add ( const TrackRef & r, double w ) -{ - // tracks_.push_back ( r ); // FIXME should be removed - weights_.insert(r,w); -} - -void Vertex::removeTracks() -{ - weights_.clear(); - tracks_.clear(); -} - -double Vertex::trackWeight ( const TrackRef & r ) const -{ - return weights_.find(r)->val; -} diff --git a/DataFormats/VertexReco/src/classes.h b/DataFormats/VertexReco/src/classes.h index 6c977e4984a..659b65e6d05 100755 --- a/DataFormats/VertexReco/src/classes.h +++ b/DataFormats/VertexReco/src/classes.h @@ -1,18 +1,14 @@ #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" -#include "DataFormats/Common/interface/AssociationMap.h" #include <vector> -#include <map> namespace { namespace { - reco::Vertex rv1; std::vector<reco::Vertex> v1; edm::Wrapper<std::vector<reco::Vertex> > wc1; edm::Ref<std::vector<reco::Vertex> > r1; edm::RefProd<std::vector<reco::Vertex> > rp1; - edm::RefVector<std::vector<reco::Vertex> > rvv1; + edm::RefVector<std::vector<reco::Vertex> > rv1; } } diff --git a/DataFormats/VertexReco/src/classes_def.xml b/DataFormats/VertexReco/src/classes_def.xml index f7d97e5c07c..517bf521239 100755 --- a/DataFormats/VertexReco/src/classes_def.xml +++ b/DataFormats/VertexReco/src/classes_def.xml @@ -5,5 +5,4 @@ <class name="edm::Ref<std::vector<reco::Vertex>, reco::Vertex, edm::refhelper::FindUsingAdvance<std::vector<reco::Vertex>, reco::Vertex> >" /> <class name="edm::RefProd<std::vector<reco::Vertex> >" /> <class name="edm::RefVector<std::vector<reco::Vertex>, reco::Vertex, edm::refhelper::FindUsingAdvance<std::vector<reco::Vertex>, reco::Vertex> >" /> - <class name="reco::TrackRefVector" /> </lcgdict> diff --git a/DataFormats/WrappedStdDictionaries/doc/html/index.html b/DataFormats/WrappedStdDictionaries/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DataFormats/WrappedStdDictionaries/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DataFormats/WrappedStdDictionaries/doc/html/overview.html b/DataFormats/WrappedStdDictionaries/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DataFormats/WrappedStdDictionaries/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DetectorDescription/Core/interface/DDComparator.h b/DetectorDescription/Core/interface/DDComparator.h index 79ba87bd901..d69678f4df1 100644 --- a/DetectorDescription/Core/interface/DDComparator.h +++ b/DetectorDescription/Core/interface/DDComparator.h @@ -20,20 +20,12 @@ public: hIndex_(0), sMax_(s.size()), sIndex_(0), - hLp_(), sLp_(), sCopyno_(0), - absResult_(true) + absResult_(hMax_>0 && sMax_>0 ) { // it makes only sense to compare if both std::vectors have at least one entry each. - if (hMax_>0 && sMax_>0 ) { - hLp_ = hist_[0].logicalPart(); - sLp_ = partsel_[0].lp_; - } - else { - absResult_=false; - } - //std::cout << std::endl << std::endl << "COMPARATOR CREATED" << std::endl << std::endl; + //std::cout << std::endl << std::endl << "COMPARATOR CREATED" << std::endl << std::endl; //DCOUT('U', "Comparator():\n hist=" << h << "\n PartSel=" << s); } @@ -52,7 +44,7 @@ private: const DDPartSelection & partsel_; DDGeoHistory::size_type hMax_, hIndex_; DDPartSelection::size_type sMax_, sIndex_; - DDLogicalPart hLp_, sLp_; + DDLogicalPart sLp_; /* lpredir_type * hLp_; lpredir_type * sLp_; diff --git a/DetectorDescription/Core/interface/DDD.h b/DetectorDescription/Core/interface/DDD.h index 179f7733ccd..6aa665a0141 100644 --- a/DetectorDescription/Core/interface/DDD.h +++ b/DetectorDescription/Core/interface/DDD.h @@ -41,5 +41,5 @@ namespace DD { // the parser // typedef DDLParser Parser; -}; +} #endif // DD_DDD_H_GRD diff --git a/DetectorDescription/Core/interface/DDExpandedNode.h b/DetectorDescription/Core/interface/DDExpandedNode.h index 7bbe4840528..16b27cec662 100644 --- a/DetectorDescription/Core/interface/DDExpandedNode.h +++ b/DetectorDescription/Core/interface/DDExpandedNode.h @@ -28,19 +28,22 @@ public: bool operator==(const DDExpandedNode & n) const; //! the LogicalPart describing this node - const DDLogicalPart & logicalPart() const; + const DDLogicalPart & logicalPart() const { return logp_; } + //! absolute translation of this node - const DDTranslation & absTranslation() const; + const DDTranslation & absTranslation() const { return trans_; } - //! absolute rotation of this node - const DDRotationMatrix & absRotation() const; + //! absolute rotation of this node + const DDRotationMatrix & absRotation() const { return rot_; } + //! copy number of this node int copyno() const; //! sibling number of this node - int siblingno() const; + int siblingno() const { return siblingno_; } + const DDPosData * posdata() const { return posd_; } @@ -53,6 +56,7 @@ private: }; + //! function object to compare to ExpandedNodes /** compares (for STL usage) two DDExpandedNodes for diff --git a/DetectorDescription/OnlineDBLoader/TagLog b/DetectorDescription/OnlineDBLoader/TagLog new file mode 100644 index 00000000000..698dfcc7e25 --- /dev/null +++ b/DetectorDescription/OnlineDBLoader/TagLog @@ -0,0 +1,7 @@ +** V00-00-01 [Mon Nov 14 18:22:06 2005] +Changed some common files between DGD loading and EMDB loading. +Put a README.EMDB to describe how I did the loading to EMDB. + +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/DiffractiveForwardAnalysis/Configuration/doc/html/index.html b/DiffractiveForwardAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DiffractiveForwardAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DiffractiveForwardAnalysis/Configuration/doc/html/overview.html b/DiffractiveForwardAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DiffractiveForwardAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/DiffractiveForwardAnalysis/Skimming/doc/html/index.html b/DiffractiveForwardAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/DiffractiveForwardAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/DiffractiveForwardAnalysis/Skimming/doc/html/overview.html b/DiffractiveForwardAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/DiffractiveForwardAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Documentation/CodingRules/TagLog b/Documentation/CodingRules/TagLog new file mode 100644 index 00000000000..2a05a194e7e --- /dev/null +++ b/Documentation/CodingRules/TagLog @@ -0,0 +1,6 @@ +** V00-00-00 [Thu Oct 27 16:02:01 2005] +Adding CodingRules to Documentation. + +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/Documentation/PhysicsTools/Makefile b/Documentation/PhysicsTools/Makefile deleted file mode 100644 index f17df8a90b9..00000000000 --- a/Documentation/PhysicsTools/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -all: document.pdf - -document.dvi: document.tex Makefile memarticle.cls - latex document.tex - latex document.tex - latex document.tex - -document.ps: document.dvi - dvips -o document.ps document.dvi - -document.pdf: document.ps - ps2pdf document.ps - -clean: - rm -f document.out document.toc document.aux document.log document.dvi document.ps document.tex.bak document.tex~ Makefile~ - -clobber: clean - rm -f document.pdf - - diff --git a/Documentation/PhysicsTools/TagLog b/Documentation/PhysicsTools/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Documentation/PhysicsTools/colornames.sty b/Documentation/PhysicsTools/colornames.sty deleted file mode 100644 index 93b73f950cd..00000000000 --- a/Documentation/PhysicsTools/colornames.sty +++ /dev/null @@ -1,364 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{colornames}[2004/02/25 (Walter E Brown)] -\RequirePackage{color} - -\definecolor{AliceBlue} {rgb} {0.94,0.97,1.00} -\definecolor{AntiqueWhite} {rgb} {0.98,0.92,0.84} -\definecolor{Aqua} {rgb} {0.00,1.00,1.00} -\definecolor{Aquamarine} {rgb} {0.50,1.00,0.83} -\definecolor{Azure} {rgb} {0.94,1.00,1.00} -\definecolor{Beige} {rgb} {0.96,0.96,0.86} -\definecolor{Bisque} {rgb} {1.00,0.89,0.77} -\definecolor{Black} {rgb} {0.00,0.00,0.00} -\definecolor{BlanchedAlmond} {rgb} {1.00,0.92,0.80} -\definecolor{Blue} {rgb} {0.00,0.00,1.00} -\definecolor{BlueViolet} {rgb} {0.54,0.17,0.89} -\definecolor{Brown} {rgb} {0.65,0.16,0.16} -\definecolor{BurlyWood} {rgb} {0.87,0.72,0.53} -\definecolor{CadetBlue} {rgb} {0.37,0.62,0.63} -\definecolor{Chartreuse} {rgb} {0.50,1.00,0.00} -\definecolor{Chocolate} {rgb} {0.82,0.41,0.12} -\definecolor{Coral} {rgb} {1.00,0.50,0.31} -\definecolor{CornflowerBlue} {rgb} {0.39,0.58,0.93} -\definecolor{Cornsilk} {rgb} {1.00,0.97,0.86} -\definecolor{Crimson} {rgb} {0.86,0.08,0.24} -\definecolor{Cyan} {rgb} {0.00,1.00,1.00} -\definecolor{DarkBlue} {rgb} {0.00,0.00,0.55} -\definecolor{DarkCyan} {rgb} {0.00,0.55,0.55} -\definecolor{DarkGoldenrod} {rgb} {0.72,0.53,0.04} -\definecolor{DarkGray} {rgb} {0.66,0.66,0.66} -\definecolor{DarkGreen} {rgb} {0.00,0.39,0.00} -\definecolor{DarkKhaki} {rgb} {0.74,0.72,0.42} -\definecolor{DarkMagenta} {rgb} {0.55,0.00,0.55} -\definecolor{DarkOliveGreen} {rgb} {0.33,0.42,0.18} -\definecolor{DarkOrange} {rgb} {1.00,0.55,0.00} -\definecolor{DarkOrchid} {rgb} {0.60,0.20,0.80} -\definecolor{DarkRed} {rgb} {0.55,0.00,0.00} -\definecolor{DarkSalmon} {rgb} {0.91,0.59,0.48} -\definecolor{DarkSeaGreen} {rgb} {0.56,0.74,0.56} -\definecolor{DarkSlateBlue} {rgb} {0.28,0.24,0.55} -\definecolor{DarkSlateGray} {rgb} {0.18,0.31,0.31} -\definecolor{DarkTurquoise} {rgb} {0.00,0.81,0.82} -\definecolor{DarkViolet} {rgb} {0.58,0.00,0.83} -\definecolor{DeepPink} {rgb} {1.00,0.08,0.58} -\definecolor{DeepSkyBlue} {rgb} {0.00,0.75,1.00} -\definecolor{DimGray} {rgb} {0.41,0.41,0.41} -\definecolor{DodgerBlue} {rgb} {0.12,0.56,1.00} -\definecolor{FireBrick} {rgb} {0.70,0.13,0.13} -\definecolor{FloralWhite} {rgb} {1.00,0.98,0.94} -\definecolor{ForestGreen} {rgb} {0.13,0.55,0.13} -\definecolor{Fuchsia} {rgb} {1.00,0.00,1.00} -\definecolor{Gainsboro} {rgb} {0.86,0.86,0.86} -\definecolor{GhostWhite} {rgb} {0.97,0.97,1.00} -\definecolor{Gold} {rgb} {1.00,0.84,0.00} -\definecolor{Goldenrod} {rgb} {0.85,0.65,0.13} -\definecolor{Gray} {rgb} {0.50,0.50,0.50} -\definecolor{Green} {rgb} {0.00,0.50,0.00} -\definecolor{GreenYellow} {rgb} {0.68,1.00,0.18} -\definecolor{Honeydew} {rgb} {0.94,1.00,0.94} -\definecolor{HotPink} {rgb} {1.00,0.41,0.71} -\definecolor{IndianRed} {rgb} {0.80,0.36,0.36} -\definecolor{Indigo} {rgb} {0.29,0.00,0.51} -\definecolor{Ivory} {rgb} {1.00,1.00,0.94} -\definecolor{Khaki} {rgb} {0.94,0.90,0.55} -\definecolor{Lavender} {rgb} {0.90,0.90,0.98} -\definecolor{LavenderBlush} {rgb} {1.00,0.94,0.96} -\definecolor{LawnGreen} {rgb} {0.49,0.99,0.00} -\definecolor{LemonChiffon} {rgb} {1.00,0.98,0.80} -\definecolor{LightBlue} {rgb} {0.68,0.85,0.90} -\definecolor{LightCoral} {rgb} {0.94,0.50,0.50} -\definecolor{LightCyan} {rgb} {0.88,1.00,1.00} -\definecolor{LightGoldenrodYellow} {rgb} {0.98,0.98,0.82} -\definecolor{LightGrey} {rgb} {0.83,0.83,0.83} -\definecolor{LightGreen} {rgb} {0.56,0.93,0.56} -\definecolor{LightPink} {rgb} {1.00,0.71,0.76} -\definecolor{LightSalmon} {rgb} {1.00,0.63,0.48} -\definecolor{LightSeaGreen} {rgb} {0.13,0.70,0.67} -\definecolor{LightSkyBlue} {rgb} {0.53,0.81,0.98} -\definecolor{LightSlateBlue} {rgb} {0.52,0.44,1.00} -\definecolor{LightSlateGray} {rgb} {0.47,0.53,0.60} -\definecolor{LightSteelBlue} {rgb} {0.69,0.77,0.87} -\definecolor{LightYellow} {rgb} {1.00,1.00,0.88} -\definecolor{Lime} {rgb} {0.00,1.00,0.00} -\definecolor{LimeGreen} {rgb} {0.20,0.80,0.20} -\definecolor{Linen} {rgb} {0.98,0.94,0.90} -\definecolor{Magenta} {rgb} {1.00,0.00,1.00} -\definecolor{Maroon} {rgb} {0.50,0.00,0.00} -\definecolor{MediumAquaMarine} {rgb} {0.40,0.80,0.67} -\definecolor{MediumBlue} {rgb} {0.00,0.00,0.80} -\definecolor{MediumOrchid} {rgb} {0.73,0.33,0.83} -\definecolor{MediumPurple} {rgb} {0.58,0.44,0.85} -\definecolor{MediumSeaGreen} {rgb} {0.24,0.70,0.44} -\definecolor{MediumSlateBlue} {rgb} {0.48,0.41,0.93} -\definecolor{MediumSpringGreen} {rgb} {0.00,0.98,0.60} -\definecolor{MediumTurquoise} {rgb} {0.28,0.82,0.80} -\definecolor{MediumVioletRed} {rgb} {0.78,0.08,0.52} -\definecolor{MidnightBlue} {rgb} {0.10,0.10,0.44} -\definecolor{MintCream} {rgb} {0.96,1.00,0.98} -\definecolor{MistyRose} {rgb} {1.00,0.89,0.88} -\definecolor{Moccasin} {rgb} {1.00,0.89,0.71} -\definecolor{NavajoWhite} {rgb} {1.00,0.87,0.68} -\definecolor{Navy} {rgb} {0.00,0.00,0.50} -\definecolor{OldLace} {rgb} {0.99,0.96,0.90} -\definecolor{Olive} {rgb} {0.50,0.50,0.00} -\definecolor{OliveDrab} {rgb} {0.42,0.56,0.14} -\definecolor{Orange} {rgb} {1.00,0.65,0.00} -\definecolor{OrangeRed} {rgb} {1.00,0.27,0.00} -\definecolor{Orchid} {rgb} {0.85,0.44,0.84} -\definecolor{PaleGoldenrod} {rgb} {0.93,0.91,0.67} -\definecolor{PaleGreen} {rgb} {0.60,0.98,0.60} -\definecolor{PaleTurquoise} {rgb} {0.69,0.93,0.93} -\definecolor{PaleVioletRed} {rgb} {0.85,0.44,0.58} -\definecolor{PapayaWhip} {rgb} {1.00,0.94,0.84} -\definecolor{PeachPuff} {rgb} {1.00,0.85,0.73} -\definecolor{Peru} {rgb} {0.80,0.52,0.25} -\definecolor{Pink} {rgb} {1.00,0.75,0.80} -\definecolor{Plum} {rgb} {0.87,0.63,0.87} -\definecolor{PowderBlue} {rgb} {0.69,0.88,0.90} -\definecolor{Purple} {rgb} {0.50,0.00,0.50} -\definecolor{Red} {rgb} {1.00,0.00,0.00} -\definecolor{RosyBrown} {rgb} {0.74,0.56,0.56} -\definecolor{RoyalBlue} {rgb} {0.25,0.41,0.88} -\definecolor{SaddleBrown} {rgb} {0.55,0.27,0.07} -\definecolor{Salmon} {rgb} {0.98,0.50,0.45} -\definecolor{SandyBrown} {rgb} {0.96,0.64,0.38} -\definecolor{SeaGreen} {rgb} {0.18,0.55,0.34} -\definecolor{SeaShell} {rgb} {1.00,0.96,0.93} -\definecolor{Sienna} {rgb} {0.63,0.32,0.18} -\definecolor{Silver} {rgb} {0.75,0.75,0.75} -\definecolor{SkyBlue} {rgb} {0.53,0.81,0.92} -\definecolor{SlateBlue} {rgb} {0.42,0.35,0.80} -\definecolor{SlateGray} {rgb} {0.44,0.50,0.56} -\definecolor{Snow} {rgb} {1.00,0.98,0.98} -\definecolor{SpringGreen} {rgb} {0.00,1.00,0.50} -\definecolor{SteelBlue} {rgb} {0.27,0.51,0.71} -\definecolor{Tan} {rgb} {0.82,0.71,0.55} -\definecolor{Teal} {rgb} {0.00,0.50,0.50} -\definecolor{Thistle} {rgb} {0.85,0.75,0.85} -\definecolor{Tomato} {rgb} {1.00,0.39,0.28} -\definecolor{Turquoise} {rgb} {0.25,0.88,0.82} -\definecolor{Violet} {rgb} {0.93,0.51,0.93} -\definecolor{VioletRed} {rgb} {0.82,0.13,0.56} -\definecolor{Wheat} {rgb} {0.96,0.87,0.70} -\definecolor{White} {rgb} {1.00,1.00,1.00} -\definecolor{WhiteSmoke} {rgb} {0.96,0.96,0.96} -\definecolor{Yellow} {rgb} {1.00,1.00,0.00} -\definecolor{YellowGreen} {rgb} {0.60,0.80,0.20} - - - -%% This is file `dvipsnam.def' - - -\DefineNamedColor{named}{Apricot} {cmyk}{0,0.32,0.52,0} -\DefineNamedColor{named}{Aquamarine} {cmyk}{0.82,0,0.30,0} -\DefineNamedColor{named}{Bittersweet} {cmyk}{0,0.75,1,0.24} -\DefineNamedColor{named}{Black} {cmyk}{0,0,0,1} -\DefineNamedColor{named}{BlueGreen} {cmyk}{0.85,0,0.33,0} -\DefineNamedColor{named}{BlueViolet} {cmyk}{0.86,0.91,0,0.04} -\DefineNamedColor{named}{Blue} {cmyk}{1,1,0,0} -\DefineNamedColor{named}{BrickRed} {cmyk}{0,0.89,0.94,0.28} -\DefineNamedColor{named}{Brown} {cmyk}{0,0.81,1,0.60} -\DefineNamedColor{named}{BurntOrange} {cmyk}{0,0.51,1,0} -\DefineNamedColor{named}{CadetBlue} {cmyk}{0.62,0.57,0.23,0} -\DefineNamedColor{named}{CarnationPink} {cmyk}{0,0.63,0,0} -\DefineNamedColor{named}{Cerulean} {cmyk}{0.94,0.11,0,0} -\DefineNamedColor{named}{CornflowerBlue}{cmyk}{0.65,0.13,0,0} -\DefineNamedColor{named}{Cyan} {cmyk}{1,0,0,0} -\DefineNamedColor{named}{Dandelion} {cmyk}{0,0.29,0.84,0} -\DefineNamedColor{named}{DarkOrchid} {cmyk}{0.40,0.80,0.20,0} -\DefineNamedColor{named}{Emerald} {cmyk}{1,0,0.50,0} -\DefineNamedColor{named}{ForestGreen} {cmyk}{0.91,0,0.88,0.12} -\DefineNamedColor{named}{Fuchsia} {cmyk}{0.47,0.91,0,0.08} -\DefineNamedColor{named}{Goldenrod} {cmyk}{0,0.10,0.84,0} -\DefineNamedColor{named}{Gray} {cmyk}{0,0,0,0.50} -\DefineNamedColor{named}{GreenYellow} {cmyk}{0.15,0,0.69,0} -\DefineNamedColor{named}{Green} {cmyk}{1,0,1,0} -\DefineNamedColor{named}{JungleGreen} {cmyk}{0.99,0,0.52,0} -\DefineNamedColor{named}{Lavender} {cmyk}{0,0.48,0,0} -\DefineNamedColor{named}{LimeGreen} {cmyk}{0.50,0,1,0} -\DefineNamedColor{named}{Magenta} {cmyk}{0,1,0,0} -\DefineNamedColor{named}{Mahogany} {cmyk}{0,0.85,0.87,0.35} -\DefineNamedColor{named}{Maroon} {cmyk}{0,0.87,0.68,0.32} -\DefineNamedColor{named}{Melon} {cmyk}{0,0.46,0.50,0} -\DefineNamedColor{named}{MidnightBlue} {cmyk}{0.98,0.13,0,0.43} -\DefineNamedColor{named}{Mulberry} {cmyk}{0.34,0.90,0,0.02} -\DefineNamedColor{named}{NavyBlue} {cmyk}{0.94,0.54,0,0} -\DefineNamedColor{named}{OliveGreen} {cmyk}{0.64,0,0.95,0.40} -\DefineNamedColor{named}{OrangeRed} {cmyk}{0,1,0.50,0} -\DefineNamedColor{named}{Orange} {cmyk}{0,0.61,0.87,0} -\DefineNamedColor{named}{Orchid} {cmyk}{0.32,0.64,0,0} -\DefineNamedColor{named}{Peach} {cmyk}{0,0.50,0.70,0} -\DefineNamedColor{named}{Periwinkle} {cmyk}{0.57,0.55,0,0} -\DefineNamedColor{named}{PineGreen} {cmyk}{0.92,0,0.59,0.25} -\DefineNamedColor{named}{Plum} {cmyk}{0.50,1,0,0} -\DefineNamedColor{named}{ProcessBlue} {cmyk}{0.96,0,0,0} -\DefineNamedColor{named}{Purple} {cmyk}{0.45,0.86,0,0} -\DefineNamedColor{named}{RawSienna} {cmyk}{0,0.72,1,0.45} -\DefineNamedColor{named}{RedOrange} {cmyk}{0,0.77,0.87,0} -\DefineNamedColor{named}{RedViolet} {cmyk}{0.07,0.90,0,0.34} -\DefineNamedColor{named}{Red} {cmyk}{0,1,1,0} -\DefineNamedColor{named}{Rhodamine} {cmyk}{0,0.82,0,0} -\DefineNamedColor{named}{RoyalBlue} {cmyk}{1,0.50,0,0} -\DefineNamedColor{named}{RoyalPurple} {cmyk}{0.75,0.90,0,0} -\DefineNamedColor{named}{RubineRed} {cmyk}{0,1,0.13,0} -\DefineNamedColor{named}{Salmon} {cmyk}{0,0.53,0.38,0} -\DefineNamedColor{named}{SeaGreen} {cmyk}{0.69,0,0.50,0} -\DefineNamedColor{named}{Sepia} {cmyk}{0,0.83,1,0.70} -\DefineNamedColor{named}{SkyBlue} {cmyk}{0.62,0,0.12,0} -\DefineNamedColor{named}{SpringGreen} {cmyk}{0.26,0,0.76,0} -\DefineNamedColor{named}{Tan} {cmyk}{0.14,0.42,0.56,0} -\DefineNamedColor{named}{TealBlue} {cmyk}{0.86,0,0.34,0.02} -\DefineNamedColor{named}{Thistle} {cmyk}{0.12,0.59,0,0} -\DefineNamedColor{named}{Turquoise} {cmyk}{0.85,0,0.20,0} -\DefineNamedColor{named}{VioletRed} {cmyk}{0,0.81,0,0} -\DefineNamedColor{named}{Violet} {cmyk}{0.79,0.88,0,0} -\DefineNamedColor{named}{White} {cmyk}{0,0,0,0} -\DefineNamedColor{named}{WildStrawberry}{cmyk}{0,0.96,0.39,0} -\DefineNamedColor{named}{YellowGreen} {cmyk}{0.44,0,0.74,0} -\DefineNamedColor{named}{YellowOrange} {cmyk}{0,0.42,1,0} -\DefineNamedColor{named}{Yellow} {cmyk}{0,0,1,0} - - -\newcommand{\AliceBlue }{\color{AliceBlue }} -\newcommand{\AntiqueWhite }{\color{AntiqueWhite }} -\newcommand{\Aqua }{\color{Aqua }} -\newcommand{\Aquamarine }{\color{Aquamarine }} -\newcommand{\Azure }{\color{Azure }} -\newcommand{\Beige }{\color{Beige }} -\newcommand{\Bisque }{\color{Bisque }} -\newcommand{\Black }{\color{Black }} -\newcommand{\BlanchedAlmond }{\color{BlanchedAlmond }} -\newcommand{\Blue }{\color{Blue }} -\newcommand{\BlueViolet }{\color{BlueViolet }} -\newcommand{\Brown }{\color{Brown }} -\newcommand{\BurlyWood }{\color{BurlyWood }} -\newcommand{\CadetBlue }{\color{CadetBlue }} -\newcommand{\Chartreuse }{\color{Chartreuse }} -\newcommand{\Chocolate }{\color{Chocolate }} -\newcommand{\Coral }{\color{Coral }} -\newcommand{\CornflowerBlue }{\color{CornflowerBlue }} -\newcommand{\Cornsilk }{\color{Cornsilk }} -\newcommand{\Crimson }{\color{Crimson }} -\newcommand{\Cyan }{\color{Cyan }} -\newcommand{\DarkBlue }{\color{DarkBlue }} -\newcommand{\DarkCyan }{\color{DarkCyan }} -\newcommand{\DarkGoldenrod }{\color{DarkGoldenrod }} -\newcommand{\DarkGray }{\color{DarkGray }} -\newcommand{\DarkGreen }{\color{DarkGreen }} -\newcommand{\DarkKhaki }{\color{DarkKhaki }} -\newcommand{\DarkMagenta }{\color{DarkMagenta }} -\newcommand{\DarkOliveGreen }{\color{DarkOliveGreen }} -\newcommand{\DarkOrange }{\color{DarkOrange }} -\newcommand{\DarkOrchid }{\color{DarkOrchid }} -\newcommand{\DarkRed }{\color{DarkRed }} -\newcommand{\DarkSalmon }{\color{DarkSalmon }} -\newcommand{\DarkSeaGreen }{\color{DarkSeaGreen }} -\newcommand{\DarkSlateBlue }{\color{DarkSlateBlue }} -\newcommand{\DarkSlateGray }{\color{DarkSlateGray }} -\newcommand{\DarkTurquoise }{\color{DarkTurquoise }} -\newcommand{\DarkViolet }{\color{DarkViolet }} -\newcommand{\DeepPink }{\color{DeepPink }} -\newcommand{\DeepSkyBlue }{\color{DeepSkyBlue }} -\newcommand{\DimGray }{\color{DimGray }} -\newcommand{\DodgerBlue }{\color{DodgerBlue }} -\newcommand{\FireBrick }{\color{FireBrick }} -\newcommand{\FloralWhite }{\color{FloralWhite }} -\newcommand{\ForestGreen }{\color{ForestGreen }} -\newcommand{\Fuchsia }{\color{Fuchsia }} -\newcommand{\Gainsboro }{\color{Gainsboro }} -\newcommand{\GhostWhite }{\color{GhostWhite }} -\newcommand{\Gold }{\color{Gold }} -\newcommand{\Goldenrod }{\color{Goldenrod }} -\newcommand{\Gray }{\color{Gray }} -\newcommand{\Green }{\color{Green }} -\newcommand{\GreenYellow }{\color{GreenYellow }} -\newcommand{\Honeydew }{\color{Honeydew }} -\newcommand{\HotPink }{\color{HotPink }} -\newcommand{\IndianRed }{\color{IndianRed }} -\newcommand{\Indigo }{\color{Indigo }} -\newcommand{\Ivory }{\color{Ivory }} -\newcommand{\Khaki }{\color{Khaki }} -\newcommand{\Lavender }{\color{Lavender }} -\newcommand{\LavenderBlush }{\color{LavenderBlush }} -\newcommand{\LawnGreen }{\color{LawnGreen }} -\newcommand{\LemonChiffon }{\color{LemonChiffon }} -\newcommand{\LightBlue }{\color{LightBlue }} -\newcommand{\LightCoral }{\color{LightCoral }} -\newcommand{\LightCyan }{\color{LightCyan }} -\newcommand{\LightGoldenrodYellow }{\color{LightGoldenrodYellow }} -\newcommand{\LightGrey }{\color{LightGrey }} -\newcommand{\LightGreen }{\color{LightGreen }} -\newcommand{\LightPink }{\color{LightPink }} -\newcommand{\LightSalmon }{\color{LightSalmon }} -\newcommand{\LightSeaGreen }{\color{LightSeaGreen }} -\newcommand{\LightSkyBlue }{\color{LightSkyBlue }} -\newcommand{\LightSlateBlue }{\color{LightSlateBlue }} -\newcommand{\LightSlateGray }{\color{LightSlateGray }} -\newcommand{\LightSteelBlue }{\color{LightSteelBlue }} -\newcommand{\LightYellow }{\color{LightYellow }} -\newcommand{\Lime }{\color{Lime }} -\newcommand{\LimeGreen }{\color{LimeGreen }} -\newcommand{\Linen }{\color{Linen }} -\newcommand{\Magenta }{\color{Magenta }} -\newcommand{\Maroon }{\color{Maroon }} -\newcommand{\MediumAquaMarine }{\color{MediumAquaMarine }} -\newcommand{\MediumBlue }{\color{MediumBlue }} -\newcommand{\MediumOrchid }{\color{MediumOrchid }} -\newcommand{\MediumPurple }{\color{MediumPurple }} -\newcommand{\MediumSeaGreen }{\color{MediumSeaGreen }} -\newcommand{\MediumSlateBlue }{\color{MediumSlateBlue }} -\newcommand{\MediumSpringGreen }{\color{MediumSpringGreen }} -\newcommand{\MediumTurquoise }{\color{MediumTurquoise }} -\newcommand{\MediumVioletRed }{\color{MediumVioletRed }} -\newcommand{\MidnightBlue }{\color{MidnightBlue }} -\newcommand{\MintCream }{\color{MintCream }} -\newcommand{\MistyRose }{\color{MistyRose }} -\newcommand{\Moccasin }{\color{Moccasin }} -\newcommand{\NavajoWhite }{\color{NavajoWhite }} -\newcommand{\Navy }{\color{Navy }} -\newcommand{\OldLace }{\color{OldLace }} -\newcommand{\Olive }{\color{Olive }} -\newcommand{\OliveDrab }{\color{OliveDrab }} -\newcommand{\Orange }{\color{Orange }} -\newcommand{\OrangeRed }{\color{OrangeRed }} -\newcommand{\Orchid }{\color{Orchid }} -\newcommand{\PaleGoldenrod }{\color{PaleGoldenrod }} -\newcommand{\PaleGreen }{\color{PaleGreen }} -\newcommand{\PaleTurquoise }{\color{PaleTurquoise }} -\newcommand{\PaleVioletRed }{\color{PaleVioletRed }} -\newcommand{\PapayaWhip }{\color{PapayaWhip }} -\newcommand{\PeachPuff }{\color{PeachPuff }} -\newcommand{\Peru }{\color{Peru }} -\newcommand{\Pink }{\color{Pink }} -\newcommand{\Plum }{\color{Plum }} -\newcommand{\PowderBlue }{\color{PowderBlue }} -\newcommand{\Purple }{\color{Purple }} -\newcommand{\Red }{\color{Red }} -\newcommand{\RosyBrown }{\color{RosyBrown }} -\newcommand{\RoyalBlue }{\color{RoyalBlue }} -\newcommand{\SaddleBrown }{\color{SaddleBrown }} -\newcommand{\Salmon }{\color{Salmon }} -\newcommand{\SandyBrown }{\color{SandyBrown }} -\newcommand{\SeaGreen }{\color{SeaGreen }} -\newcommand{\SeaShell }{\color{SeaShell }} -\newcommand{\Sienna }{\color{Sienna }} -\newcommand{\Silver }{\color{Silver }} -\newcommand{\SkyBlue }{\color{SkyBlue }} -\newcommand{\SlateBlue }{\color{SlateBlue }} -\newcommand{\SlateGray }{\color{SlateGray }} -\newcommand{\Snow }{\color{Snow }} -\newcommand{\SpringGreen }{\color{SpringGreen }} -\newcommand{\SteelBlue }{\color{SteelBlue }} -\newcommand{\Tan }{\color{Tan }} -\newcommand{\Teal }{\color{Teal }} -\newcommand{\Thistle }{\color{Thistle }} -\newcommand{\Tomato }{\color{Tomato }} -\newcommand{\Turquoise }{\color{Turquoise }} -\newcommand{\Violet }{\color{Violet }} -\newcommand{\VioletRed }{\color{VioletRed }} -\newcommand{\Wheat }{\color{Wheat }} -\newcommand{\White }{\color{White }} -\newcommand{\WhiteSmoke }{\color{WhiteSmoke }} -\newcommand{\Yellow }{\color{Yellow }} -\newcommand{\YellowGreen }{\color{YellowGreen }} diff --git a/Documentation/PhysicsTools/cpplistings.sty b/Documentation/PhysicsTools/cpplistings.sty deleted file mode 100644 index 2503425196c..00000000000 --- a/Documentation/PhysicsTools/cpplistings.sty +++ /dev/null @@ -1,112 +0,0 @@ -%====================================================================== -% -% cpplistings - provide for listings and inline snippets of C++ code -% -%====================================================================== -% -% To produce an inline code snippet: -% \cppcode[option]{code} -% Uses \cppfgcolor and style=cppstyle -% -% To produce a listing of code: -% \begin{cpplisting}[option] -% ... -% \end{cpplisting} -% Uses \cppfgcolor, \cppbgcolor, style=cpplistingstyle, and style=cppstyle -% -%====================================================================== - - -%---------------------------------------------------------------------- -% Package identification: - -\def\filedesc{C++ listings} -\def\filedate{2004/02/28} -\def\fileauth{W. E. Brown<wb at fnal dot gov>} - - -%---------------------------------------------------------------------- -% Package boilerplate: - -\NeedsTeXFormat{LaTeX2e}% - [1995/12/01] - -\ProvidesPackage{cpplistings} - [\filedate\space\filedesc\space(\fileauth)] - -% Exit if the style file is already loaded -\ifx \cpplistingsloaded\relax \endinput\else\let\cpplistingsloaded\relax\fi - - -%---------------------------------------------------------------------- -% Prerequisite packages and initial configuration: - -\RequirePackage{color} -\RequirePackage{colornames} - -\RequirePackage{listings} -\lstloadlanguages{[ISO]C++} - - -%---------------------------------------------------------------------- -% Color customization: - -\newcommand{\cppbgcolor}% applies to listings only - {\color[gray]{.9}} - -\newcommand{\cppfgcolor}% applies to listings and inline snippets - {\color{Navy}} - - -%---------------------------------------------------------------------- -% Styles: - -\lstdefinestyle{cpplistingstyle}% applies to listings only - { backgroundcolor = \cppbgcolor - , breaklines = false - , emptylines = 1 - , escapeinside = {(*@}{@*)} - , frame = none - , framexleftmargin = .35em - , numberblanklines = false - , numbersep = 10pt - , numberstyle = \tiny - , numbers = left - , tabsize = 2 - , xleftmargin = 2em - } - -\lstdefinestyle{cppstyle}% applies to listings and inline snippets - { basicstyle = \ttfamily\cppfgcolor - , commentstyle = \itshape\cppfgcolor - , identifierstyle = \cppfgcolor - , keywordstyle = %\bfseries\cppfgcolor - , stringstyle = \cppfgcolor - } - - -%---------------------------------------------------------------------- -% Language definition: - -\lstdefinelanguage{isocpp} - [ISO]{C++} - { style = cppstyle } - - -%---------------------------------------------------------------------- -% C++ code display: - -\newcommand{\cppcode}[2][]% inline snippets - {\lstinline[language=isocpp,#1]{#2}} - -\lstnewenvironment{cpplisting}[1][]% listings - { \lstset - { language = isocpp - , style = cpplistingstyle - , #1 - } } - {} - - -%====================================================================== -\endinput diff --git a/Documentation/PhysicsTools/doc/html/index.html b/Documentation/PhysicsTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Documentation/PhysicsTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Documentation/PhysicsTools/doc/html/overview.html b/Documentation/PhysicsTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Documentation/PhysicsTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Documentation/PhysicsTools/document.tex b/Documentation/PhysicsTools/document.tex deleted file mode 100755 index 17017c54c77..00000000000 --- a/Documentation/PhysicsTools/document.tex +++ /dev/null @@ -1,806 +0,0 @@ -\newcommand{\docnumber}{} -\documentclass[draftmode]{memarticle} -\usepackage{hyperref} - -\RCS $Revision: 0.2$ - -\newcommand{\doctitle}% - {Strategy for a Common Physics Software Infrastructure} - -\newcommand{\shorttitle}% - {\doctitle} - -\newcommand{\authors}% - { Stefano Argir\`o, Luca Lista~\footnote{editor}, Yana Osborne } - -\hypersetup% - { pdfauthor={}% - , pdftitle={\doctitle}% - , pdfkeywords={}% - , pdfsubject={}% - } - -\tightlists - -\begin{document} -\topmatter - -\chapter{Introduction} - -This documents aims at defining the basic requirements -to establish a Software Infrastructure for Physics Data Analysis. - -\chapter{Physics Analysis Patterns} - -CMS Analysts come from a large variety of different experiences. -Different people, analyzing different analysis channels will require -very different usage of the data for their analysis. -For this reason, the Physics Analysis Software Infrastructure has to provide -a good level of flexibility and generality to accommodate many -different uses. -At the same time, the patterns provided by the Physics Analysis -software infrastructure must avoid anarchic proliferation of -software tools that would become unmanageable. -Software written for data analysis -brings into CMS system very valuable experiences. -Reusing the software produced in a specific context for other -purposes, and integrating it in official software releases -must be as easy as possible. - -The learning curve for newcomers should be as short as possible. -Learning how to write a simple analysis application -should require a small amount of time in order to introduce -newcomers quickly and effectively. ``How-to web'' pages should -be provided in connection to software releases. - -\section{Analysis Modularity and Use of the Framework} - -Physics Analysis proceeds via subsequent steps. ``Building blocks'' -are identified, and more complex objects are built on top of -them. For instance, the search for -$H\rightarrow Z Z\rightarrow \mu^+\mu^-\mu^+\mu^-$ will require: -\begin{itemize} -\item{} identifying muon candidates; -\item{} reconstructing Z candidates starting from muon candidates; -\item{} reconstructing Higgs candidates starting from Z candidates. -\end{itemize} -This process clearly identifies three products: muon candidates, -Z candidate, Higgs candidate, and three processes to reconstruct -them. These are well mapped into three Framework modules -(producers) that add in the Event three different products -(the candidates collections). - -Using the Framework properly for analysis enhances modularity -and allows to separate analysis processes into single units -that can be reused for different applications. - -\section{Analysis Products as Software Deliverables} - -Experience from past experiments shows that it is a successful -practice to define Physics Analysis Deliverables that can be -reused for different analyses in different contexts. -A deliverable should consist of two components: -\begin{itemize} -\item{} a set of Event Data Products (e.g.: collections of -candidates) -\item{} a set of Framework modules to produce the specific products -\end{itemize} -Examples could be selections of muons or electrons of different -efficiency {\em vs} purity, composite candidates from decay -chains (e.g.: $Z\rightarrow \mu^+\mu^-$, $B_s\rightarrow J/\psi\phi$, -$J/\psi\rightarrow e^+e^-, \mu^+\mu^-$, etc.), but also -event-based information like missing $E_t$, etc. that can be -put into the Event for access by modules downstream the -event processing path. - -A ``Deliverable'' (i.e.: a set of event products and the modules -to generate it) can be developed initially for specialized cases, -then can be generalized, officially released and adopted in general -for wider usage. -Of course, not all analysis modules used in any channels are due to become -official Deliverables. - -Widely used analysis products need to be characterized in term of -performances (could be efficiency, misidentification rate, resolution, -sets of correction to apply to Monte Carlo, etc.) that can be essential -for use in concrete analyses, and should be provided in a controlled, -documented and official way. -This requires organizing Physics Tools Groups active -on the most important and widely used Analysis -Software Tools, committed to provide -official Physics Analysis Deliverables. - -This approach has a number of benefits in a very large community as -an LHC experiment: -\begin{itemize} -\item{} Analysis using specific products will be pushed to use -official ``building blocks''. This provides the analysis with -reliability of the adopted tools, easy access to product -characterization, which are important for performance and systematics studies and robustness of the final result. -\item{} People working on Physics Tools will feel motivated -because their products will be part of many official analyses, and could possibly become tools for discoveries. -\item{} Physics Tools as part of official software -releases will provide two types of components: -one or more products available in the Event, and -one or more producer modules that able to produce such products. -When possible and required, the products will be accessible -in persistent format; otherwise, will be -easily reproducible by the provided producers. - -\item{} Performing new analyses will be effective, without the need -to restart from scratch, since the basic ``building blocks'' will -be readily available. -\end{itemize} - -Physics Software Tools must be well documented with examples and -references available and organized in web pages, in order to minimize -the learning curve for new users. - -\chapter{Physics Software Model} - -This section will discuss some of the software requirements to -satisfy a general set of typical patterns of data -processing for Physics Analysis. - -\section{Patterns of Data Access} - -A typical analysis will proceed in subsequent steps of -data reduction. Those can proceed either centrally -at Tier-1 or Tier-2~\cite{CMSCM}, starting from one or few selected -main streams, in a scheduled and organized way, -or ``locally'' at Tier-2, Tier-3 in a more ``user driven'' way. - -\subsection{Events Skimming} - -Data reduction means the following things: -\begin{itemize} -\item{} select a subset of the events satisfying a specified preselection; -\item{} select a subset of the information (i.e.: Event Data Products) -to be stored to the output collection; -\item{} possibly, add more Event Data Product that could -be the output of CPU-expensive processing steps that the user -doesn't want to repeat in further analysis processing steps. -\end{itemize} -Such processes can proceed in a different number of steps, according -to Physics Groups needs, and different ``granularities'' according -to needs and organizations of different groups and different analysts. - -The Software Infrastructure should leave freedom to choose the most -efficient strategy for each analysis channel. Once the strategy is defined, -the centralized part of the organization of data processing -has to proceed in an organized and controlled way. - -We give the name ``skims'' to the subsequent steps of data reduction. -Performing deeper level of skims from a centrally produced skim can be -referred to as sub-skimming or re-skimming. - -\subsection{Event Directories or Shallow Copies} - -Fast event access can be performed using a concept known -as {\em event directories} or, in a more general way, as -{\em shallow copies}. This has the benefit of categorizing -events into selected collections, saving the disk space -required to host {\em deep copies}. Those -data structures should be accessible with the same interface -as normal event collections. Event Directories or Shallow Copies -require the implementation of the concept of pointer to events in -external data files. - -It would be desirable to manage Shallow Copy collections with the -same functionality as normal {\em deep copy} skims, i.e.: add -selected component in extended collections, though ``borrowing'' -the content of the rest of the event from pointed events, possibility -to perform re-skimming. - -\section{A Flexible Event Model} -\label{sec:ntuples} -The data content of the Event should be extremely flexible. -Analysis users tend to produce ntuple (more precisely, root-tree) dumps -that try to replace the Event Data Model if they don't find -in the Framework the required data access performance, both in term -of speed and flexibility of the content. - -We should aim at avoiding large ntules dumps as much as we can. CMS Event Data -Model is based on POOL/ROOT I/O; interactive inspection capability is built-in -to the system, so ntuple-like content should naturally and easily become -part of the Event Data Model itself. The interactive browsability of the -Event data files can actually provide in the Event Data Model itself with all -the capabilities formerly requested to the ntuple. - -In order make ntuple dumps external to the EDM unattractive, -it should be possible to the user -to add to the Event either simple objects, even native types -(\cppcode{int}, \cppcode{float}, ...), and collections -of reconstructed particle candidate defined by the user -using the same interface as official collections. - -If this goal is achieved, a single and consistent data reduction -process will lead step by step from DST to AOD to TAG, and eventually to -ntuples and histograms, without need to change technology when -moving from Event-based content to User-defined analysis object content. - -This would also lead to a significant reduction of overall disk -space needs for the experiments, and funding agencies will -appreciate. - -\section{Package Organization} - -The organization into packages of the classes needed -in the Physics Software Infrastructure have to be -devised carefully in terms of dependencies, in order -to allow several kinds of access in an efficient manner. -At least interactive access via ROOT, -with or without loading (light) external libraries, -and batch production mode access should be provided. -Similar guidelines as for reconstruction products hold -for the Analysis Software as well. - -\section{Persistent Data Types} - -Persistent data representation should have minimal -dependencies on external libraries, and should not -depend on external services (\cppcode{EventSetup}), in order to -allow a light interactive access. - -\section{Analysis Basic Types} - -This section describes the basic data types -that can be required by the majority of Physics Analysis -software. - -The aim of the Analysis Software Infrastructure -should be to provide all or almost all the required -functionality for analysis without the need for -the user to define custom data types. -In this way non-expert analysts don't need -to define new classes, other than modules -that will contain the algorithmic part. -Nevertheless, defining new data types should be -allowed, as natural extension of a data analysis in -a more mature stage, and for advanced analysts, with -good software technology skills. Also, if new types of general interest are -developed, it should be easy to integrate them -as general tools. - -\subsection{Analysis Object Data (AOD)} - -Data Analysis requires access to subdetector information. -In Analysis stages that require fast data access, -it may not be possible to access all the DST information. -The subdetector information should be available for -analysis in a compact way. -The exact definition -of Analysis Object Data for different subdetectors -may be subject of optimizations and changes in time, -so we may expect an evolution of those data types -even after the start of data taking. -Navigation from AOD to corresponding DST objects should -be supported. - -\subsection{Particle Candidates} -Users would largely benefit from having a uniform access to information -common to all reconstructed particles, either when -directly reconstructed from detector information -or from a decay chain. A uniform interface should -provide access to kinematic information (4-momentum, vertex, -possibly error matrices required to perform -geometric-kinematic constrained fits) and navigation -among constituents of decay chains. - -Those objects are called {\em Candidates}. Candidates -can be built in principle on top of either DST or AOD, -in the sense that they could be built from, and all navignation -into, DST or AOD subsystem objects. For this reason, -Candidates could be component and should -be an event component that sits on top of them. For most -of the real analysis cases, anyway, it is reasonable to -think to use candidates built on top of AOD, in order -to maximise the anaysis performance. Candidates built -on DST could be useful in a development phase, where AOD -are not yet defined, while prototypes of DST are available. - -Particle assignment (i.e.: the particle type for the -specific assumed hypothesis) could also be important, and -can be considered for inclusion. This could be useful, -for instance, to analyze in a fast way collections of -decay chains containing {\em leptons} identifying which decays -contain {\em muons} and which {\em electrons}. - -%Having particle -%could also allow to create a candidate -%structure for Monte Carlo information uniform to -%the candidate structure in data, but this is -%a matter of choice. - -A possible approach would be to identify candidate -collections via different candidate types (e.g.: \cppcode{ZCandidate}, -\cppcode{HiggsCandidate}, etc.). The experience from -Beta toolkit for BaBar experiment~\cite{Beta} shows -that a single class (or better, a single polymorphic -class hierarchy) can be appropriate for all cases, -and gives users a much more uniform ground, -reduces the number of concepts that have to be -learned, and turns out to be much more effective. -For this reason, we consider a single candidate class to be better -than many candidate classes. -This would also induce access patterns to the -Event Data Model that are more driven by names -than by types (the latter being the case of reconstruction), -since most of the particle collections -will basically just be \cppcode{vector<Candidate>}. -See also section~\ref{sec:edm}. - -Candidate collections need to be persistable, -in order to avoid re-doing the combinatorial -analysis that is frequently CPU expensive. - -\subsection{User Data} -\label{sec:userdata} -Users need to add their own data to the Event when -producing reduced data sets (or skims) either to -persist quantities that require large processing time, -or to produce ntuple-like formats for interactive -access (see section~\ref{sec:ntuples}). - -User Data~\cite{UserData} -can be associated to the whole event, or to event product, -typically but not exclusively, to candidate. -A typical application could consist in associating -some isolation quantity to a lepton. In a -simplified example where this variable is just a -\cppcode{double}, the user may want to plot -interactively the value of -the isolation {\em vs} the $p_t$ of the lepton. -This possibility should be supported by -the Analysis Software Infrastructure in -a way that is consistent with the general Event Data Model. - -User Data are important not only for interactive analysis, -but in subsequents phases of skimming to avoid the need -to perform the same computation multiple times. -The access to User Data in batch should -also be defined in order to perform effective -batch processing. - -\section{Transient Services for Data Analysis} - -Performing constrained fits, combining multiple candidates, -computing recalibrated AOD, are tasks that can be done -by transient classes that encapsulate algorithms. -Those algorithms should be implemented in a way consistent -with the overall data model for Physics Analysis, -in particular with the Candidate class interface. - -External services may be required to access -``physics calibration quantities'' -(e.g.: tables for efficiency and -misidentification rates, Monte Carlo correction factors -needed to implement realistic simulation at Candidate -level, etc.). -Those quantities may vary with time according to -detector conditions, and should be stored in the -conditions database. -Analyses requiring access to such quantities -require a fast access to the conditions database -that could also be accessed from Tier-2 and Tier-3 sites. - -\section{Reusable Framework Modules} - -Framework modules (producers) are required to store -new products in the Event. Typical cases can be -selectors (to store collections of selected data objects -from a given source collection), composition or -combinatorial analysis, etc. -Such modules should be provided in a general way -and should be readily usable by the user without the -definition of new classes, at least for the basic -functionality. - -For instance, it should be possible to produce -a collection of Higgs candidate from -$H\rightarrow Z Z\rightarrow \mu^+\mu^-\mu^+\mu^-$ -just instantiating a composition module for the -decay $Z\rightarrow \mu^+\mu^-$ which has a muon -candidate collection as source, and a module -for the decay $H\rightarrow Z Z$ which has -the $Z$ collection produced by the previous -combinatorial module as source. $H\rightarrow Z Z*$, -with a virtual Z, would be a variation with two -different $Z$ and $Z*$ collections as sources. -Trivial checks, like avoiding considering -the same $\mu$ candidate twice in the same $H$ decay -should be avoided automatically by the combiner modules. - -\section{Monte Carlo Truth tools} - -It would be very helpful to develop Monte Carlo truth -matching tools that provide HepMC particles at the generator -level associated to reconstructed particle candidates including -also particles reconstructed from a decay chain. -For reconstructed decay chains (e.g.: $Z\rightarrow\mu^+\mu^-$) -requesting the MC truth associated to the $Z$ candidate -should check the following: -\begin{itemize} -\item check MC matches to $\mu^+$ and $\mu^-$ -\item check for a common parent particle -\item check that the common parent has no other daughters -\item return the MC truth associated to the $Z$ if -matches and checks are successful, invalid reference -otherwise. -\end{itemize} - -\chapter{Requirements to the Event Data Model} -\label{sec:edm} -The Analysis Model described above puts a few requirements -to the Event Data Model (EDM) which would be an addition to the -features presented in the Road Map document~\cite{roadmap}. - -\section{Polymorphic Collections in the EDM} -Collections of Candidates should be exchanged among Framework -modules via EDM, and possibly be persisted. - -An implementation of Candidate avoiding polymorphism is -possible, basically implementing all possible required persistent -references, keeping null values for those not required. -This could result in a significant disk space overhead, -in particular for composite Candidates that would hold -references to subdetector informations (AOD). - -Candidate objects could be organized according to a -Composite Pattern~\cite{dp}, where Candidates representing -particles with subsequent decays (e.g.: $Z\rightarrow e^+e^-$) -are {\em composite} objects, Candidates representing reconstructed -particles ($e^+$ and $e^-$ in the previous decay) are the {\em leafs} -of the model. -Collections of polymorphic objects are supported by the EDM from version -1.30 of the Road Map document~\cite{roadmap}. However, polymorphic -collections give problems with bare ROOT interactive -browsability. - -The issue of polymorphic Candidate collection has to be -addressed, and the implications to the user understood -in term of functionality and performances. - -\section{Generic Data Products} - -Section~\ref{sec:userdata} presented the need for user-defined -quantities to be added to the event persistently. This in order -to replace large ntuple dumps for the final steps of -interactive data analysis. With this approach, the Event should be -the final persistent support to interactive data analysis. A similar scheme -is also supported in Ref.~\cite{roadmap}. - -In order to provide a flexible user definition of -the Event content, the Event Data Model should provide -sufficient flexibility in its content. -The simplest example one can imagine is the storage of a few -persistent \cppcode{double} and \cppcode{int} variables -in the event (say, the missing $E_t$, the absolute value -of the missing $p_t$, and the number of isolated electrons and -muons $N_e$, $N_\mu$). - -To do this, two additional requirements have to be put on -the current EDM: -\begin{itemize} -\item{} Objects of generic type can be put into the Event. The current -version of the EDM restricts this possibility, and only products -inheriting from the base class {EDProduct} can be put in the Event. -This is clearly not possible for native types like \cppcode{int}, -\cppcode{double} in the previous example, or other simple types like -Lorentz-Vectors, Spatial points, etc. Defining specific types -(e.g.: \cppcode{UserData<int>}, \cppcode{UserData<double>}, -\cppcode{UserData<LorentzVector>}, ...) is possible, but would -lead to one extra level of indirection. - -\item{} Multiple products (i.e.: branches) of the same type -can be put in the Event by the same producer. At the moment, the -same producer can put in the Event multiple products only of -they are all of different types. The reason is that the type is -used, together with the module label, as product identifier, -namely as ROOT branch name. -This limitation prevents a user to store within the same -Framework module both $E_t$ and $p_t$, or both $N_e$ and $N_\mu$. -Adding more objects of the same identifier would require specifying -a branch name alternative to the one univoquely identified by the pair -(object type, module labeler). Alternative branch names would also -allow compact label that are desirable for a fast interactive analysis, -where users just type the label names from the ROOT CINT interactive prompt. -\end{itemize} - -\chapter{Development plan} - -The main guidelines for Physics Analysis development plan -are the milestones set for the overall CPT project. -The following are the most relevant for the development of the -Physics Analysis tools: - -\begin{itemize} -\item{CPT-208} {\em October 2005}: First version high-level physics algorithms/objects -using re-engineered EDM/FW. -\item{CPT-210} {\em November 2005}: Demonstration of an analysis application for -the Physics TDR using the re-engineered EDM/FW. -\item{CPT-402} {\em March 2006}: Detector and Physics Reconstruction (DST) for the CSA-2006 -\item{CPT-404} {\em June 2006}: Calibration, alignment, analysis and visualization ready for -CSA-2006 -\item{CPT-502} {\em December 2006}: Demonstrate performance of HLT/offline reconstruction, -alignment, visualization -\item{CPT-504} {\em February 2007}: Software Complete HLT, reconstruction, simulation -calibration, alignment, visualization, analysis -\end{itemize} - -The following two Sections mainly describes the plan for -the Analysis Module; Visualization part is described -in Section (\ref{sec:visualization}). - -\section{Short-term milestones (2005)} -In order to fulfill milestone CPT-210, we have to proceed fast toward -a first, even preliminary definition of high level objects (DST), -in order to start developing a first simplified version of the AOD -and Candidate objects. This allows to start developing examples -of modular analysis. One of the simplest channel, still able to -demonstrate the structure and advantages of a modular analysis -approach using the Framework and EDM, could the the study of -Higgs boson decaying into four leptons. The basic ingredients -are the definition of tracks, and the identification of muons -and/or electrons. - -Collections of signal and background event can be converted~\cite{converter} from -ORCA production into EDM-compiant DST format, on top of which the -new analysis chain can be exercised. - -The development of Candidate objects can proceed in parallel. -A prototype using ORCA/COBRA has already been developed~\cite{candroto} with -a limited set of functionality. It can be further optimized, and -ported to an EDM-compliant form. Given the short timescale, Candidate -objects can be first implemented on the basis of DST components, then be -migrated to lighter AOD objects when available. This should not induce -any change in their structure, given Candidates ``generic'' dependency -on AOD or DST. - -The following short-term plan is still preliminary. -\renewcommand{\labelenumi}{\Roman{enumi}.} -\renewcommand{\labelenumii}{(\arabic{enumii})} -\renewcommand{\labelenumiii}{\arabic{enumiii}.} -\renewcommand{\labelenumiv}{\arabic{enumiii}.\arabic{enumiv}.} -\renewcommand{\theenumi}{\Roman{enumi}} -\renewcommand{\theenumii}{\arabic{enumii}} -\renewcommand{\theenumiii}{\arabic{enumiii}} -\renewcommand{\theenumiv}{.\arabic{enumiv}} - -\begin{enumerate} - \item Definition of High Level Data Types - \begin{enumerate} - \item DST (from Reconstruction) \label{enum:dst} - Depends on: - plans from Task Forces - Integration of EventSetup Services (Geom, B-field,...)\\ - due by: {\em October 2005} - \item AOD \label{enum:aod} - Minimal info needed for analysis to be identified. - Depends on: - DST (\ref{enum:dst}) \\ - plan a first version available for: {\em CPT-210} ({\em November 2005}) - \item Particle Candidate types \label{enum:candidates} - basic architecture can start shortly (based on the - prototype developed on CARF, once ported to EDM). - Realistic use can be tested only with - AOD (\ref{enum:aod}); could be used initially - with DST (\ref{enum:dst}) as alternative.\\ - Plan a first version on: {\em September 2005} - \item User-Defined Data - Requires integration of ntuple-like data content within - the Event Data Model. - The feasibility has to be discussed with the EDM team, - since it depends on EDM extensions. - \begin{enumerate} - \item User Data associated to event (generic ntuple branches)\label{enum:userdataev}. \\ - would be desirable by: {\em October 2005} - \end{enumerate} - \end{enumerate} - \item Common analysis Framework modules \label{enum:commonmodules} - Should be taken from real analyis examples. One of the first - examples could be $H\rightarrow 4 \ell$. \\ - Plan a first version for: {\em CPT-210} ({\em November 2005}). - First modules could be: - \begin{enumerate} - \item Combinatorial analysis - \item Products Selectors - \end{enumerate} - \item Examples of analysis within the new Framework - will evolve continuously. - Can start with - first implementations of Particle - Candidates (\ref{enum:candidates}), - first versions of common combinatorial modules - (\ref{enum:commonmodules}). - Should be integrated with documentation and tutorials.\\ - Plan a first version available for {\em CPT-210}({\em November 2005}) - \begin{enumerate} - \item Documentation: - should provide easy-to-use examples, how-to web pages. - It is essential for newcomers and for the success of - the model. Should be an ongoing effort. - \end{enumerate} -\end{enumerate} - -\section {Medium-term milestones (2006)} - -The following milestones are less precisely defined -that the short-term ones from the previous section. - -\begin{enumerate} - \item Definition of High Level Data Types - \begin{enumerate} - \item User-Defined Data - \begin{enumerate} - \item User Data associated to other Analysis Products: - Identify which kind of container; - identify which root-interactive use patterns - (es: plot isolation vs lepton $p_t$). \\ - Plan for initial implementation: {\em January 2006}, - would be desirable for {\em CPT-402} ({\em March 2006}) - \end{enumerate} - \item Tag "bits" for fast selection: - Could technically be the same format as: - Event User Data (\ref{enum:userdataev}). \\ - Would be desirable for {\em CPT-402} ({\em March 2006}) - \end{enumerate} - \item Integration of existing manipulation tools - \begin{enumerate} - \item Constrained mass/vertex fitters.\\ - Plan a first version available for: {\em January 2006} - \end{enumerate} - \item Event Directory: - equivalent to "shallow copy" collections. Requires the - implementation and management of pointers to events from - different files.). \\ - Plan for {\em CPT-404} ({\em June 2006}) -\end{enumerate} - - -\section{Visualization} -\label{sec:visualization} - -This section describes visualization milestones and -deliverables for the period from mid 2005 to mid 2006. These have been -determined by an iterative process from the requests and feedback of -the SW and PRS groups. This section does not cover existing features -of the current CMS visualization tools (e.g. IGUANA-based -applications) nor does it supplant the design, reference and user -documentation. - -In the second half of 2005 the visualization development will be -concentrating on creating a solid foundation upon which -the currently available interactive applications -can be migrated to the new EDM and framework. This will include -development of the visualization sub-framework, integration of new -generic graphics toolkits (e.g. ROOT) and migration of the existing -visualization components to the newly ported to the EDM/FW CMS -software. First functional applications will be deployed in the -context of the Cosmic Challenge to provide a detector, event and -histogram displays for the detector groups. - -In parallel with the new development based on the new EDM and -framework currently available ORCA and OSCAR based applications will -be maintained to allow the PRS groups continue their work on the -Physics TDR especially what concerns creating a picture gallery for -the volume II. - -In 2006, the main focus will be very much on functionality needed for -the CSA-2006. The solid IGUANA foundations will be exploited to -broaden the applications provided by IGUANA to the PRS groups, -particularly: - -\begin{enumerate} - \item Visualization for simulation, fast simulation, detector - geometry description and Geant4; - \item Visualization for detector and physics reconstruction - including visualization of the high level objects (DST), the - simplified version of the AOD and Candidate objects; - \item Visualization for on-line: detector display, event display and - histogram display. - \end{enumerate} - -The following milestones -and level 3 tasks have been agreed upon: - -\begin{enumerate} - \item {\em June - July 2005} ORCA-based detector display and event - display complete for the Physics TDR. - - \item {\em June - August 2005} Ongoing development toward - integration of a detector and event display with new EDM/framework - and a histogram display with DQM software (ROOT+IGUANA based GUI for - DQM histograms). - - This task assumes that July version of CMSSW will include basic - functionality of the framework needed for interactive event access, - the event data (rechits and digis) for tests produced in the new - format, foundation utilities, basic services, generators, geometry - services, interfaces to DDD for simulation and reconstruction, EvF - and low-level detector data defined, documented and released, - generally all the infrastructure is put in place: Web pages, release - procedures and release plan. - - \item {\em CPT-203: September 2005} First version of event - processing applications for Cosmic Challenge - - Rudimentary detector and event display based on new EDM and - framework demonstrating an ability to load and display detector - geometry and low-level event data. - - Demonstrate communication with an EventProcessor, access to rec hits - and digis, use of the geometry service. Reading of the rechits and - digis will be done from a file produced by other applications. - - This task assumes that August version of CMSSW will include complete - detector-specific interfaces to DDD, local-to-global coordinates - conversion from a geometry service, EvF and low-level detector data, - digis, rechits, raw2digi converters, more complete framework - functionality, all SW ported which is needed for digitization. - - \item {\em September - October 2005} Picture gallery for the Physics - TDR. - - \item {\em October - November 2005} Deployment of detector display, - event display and histogram display (ROOT+IGUANA based GUI for DQM - histograms) for Cosmic Challenge. - - \item {\em CPT-211 Dec 05} Software and Detector procedures ready - for Cosmic Challenge - Detector display, event display and histogram display ready for - Cosmic challenge. - - \item {\em January - February 2006} Debugging of the software for - validation of the pre-challenge production. - Detector display, event display and histogram display for simulation - and digitization of pre-challenge production of CSA-2006 - samples. (Depends on CPT-401). - - \item {\em March - May 2006} Preparation for CSA-2006. - Detector display, event display and histogram display for - reconstruction of pre-challenge production of CSA-2006 - samples. (Depends on CPT-403). - - \item {\em CPT-405: June 2006} ...analysis and visualization ready - for CSA-2006 - Detector display, event display and histogram display ready for - CSA-2006. Complete the addition of key missing functionality needed - for CSA-2006. - \end{enumerate} - -% ---------------------------------------------------------------- -\begin{thebibliography}{99} - -\bibitem{CMSCM} C.~Grandi, D.~Stickland, L.~Taylor, \textit{ed.}, -\textbf{The CMS Computing Model}, {\em CERN-LHCC-2004-035/G-083}, {\em CMS~Note 2004-031}. - -\bibitem{Beta} R.J.Jacobsen, -\textbf{BaBar's Beta Toolkit}, Proceedings of CHEP97, Berlin, April 7-11, 1997. - -\bibitem{UserData} G.De Nardo, L.Lista, -\textbf{User Defined Data in the New Analysis Model of the BaBar Experiment}, -proceedings of IEEE 2003 Nuclear Science Symposium and Medical Imaging Conference, -{\em SLAC-PUB-11099}. - -\bibitem{roadmap} ``The EDM design team'', -\textbf{CMS Core Software Re-engineering Roadmap}, Rev. 1.30, -{\em http://www.uscms.org/LPC/lpc\_offl/RoadMap.pdf} - -\bibitem{dp} E. Gamma, R. Helm, R. Johnson, J. Vlissides -\textbf{Design Patterns}, Addison-Wesley. 1995. {\em ISBN 0-201-63361-2}. - -\bibitem{converter} L.Lista, DST conversion: -{\em \special{html:<a href="http://people.na.infn.it/~lista/dst/">}http://people.na.infn.it/$\sim$ lista/dst\special{html:</a>}/} - -\bibitem{candroto} F.Fabozzi, AOD/Candidates prototype: -presentation at APROM meeting, 22 October 2004: -{\em http://agenda.cern.ch/fullAgenda.php?ida=a044194}\\ -L.Lista, AOD/Candidates prototype: -presentation at RPROM meeting, 26 July 2004: -{\em http://agenda.cern.ch/fullAgenda.php?ida=a043344} - -\end{thebibliography} - -% ---------------------------------------------------------------- -\end{document} diff --git a/Documentation/PhysicsTools/listings.cfg b/Documentation/PhysicsTools/listings.cfg deleted file mode 100644 index 0d630e0df43..00000000000 --- a/Documentation/PhysicsTools/listings.cfg +++ /dev/null @@ -1,45 +0,0 @@ -%% -%% This is file `listings.cfg', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% lstdrvrs-1.3.dtx (with options: `config') -%% -%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz -%% and/or any other author listed elsewhere in this file. -%% -%% This file is distributed under the terms of the LaTeX Project Public -%% License from CTAN archives in directory macros/latex/base/lppl.txt. -%% Either version 1.0 or, at your option, any later version. -%% -%% This file is completely free and comes without any warranty. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\ProvidesFile{listings.cfg}[2004/09/05 1.3 listings configuration] -\def\lstlanguagefiles - {lstlang0.sty,lstlang1.sty,lstlang2.sty,lstlang3.sty} -\lstset{defaultdialect=[R/3 6.10]ABAP, - defaultdialect=[95]Ada, - defaultdialect=[68]Algol, - defaultdialect=[gnu]Awk, - defaultdialect=[ANSI]C, - defaultdialect=[light]Caml, - defaultdialect=[1985]Cobol, - defaultdialect=[ISO]C++, - defaultdialect=[95]Fortran, - defaultdialect=[3.0]Mathematica, - defaultdialect=[OMG]OCL, - defaultdialect=[Standard]Pascal, - defaultdialect=[67]Simula, - defaultdialect=[plain]TeX, - defaultdialect=[97]VRML} -\lstalias[]{TclTk}[tk]{tcl} -\lstalias[6.1]{ABAP}[R/3 6.10]{ABAP} -\lstalias[3.1]{ABAP}[R/3 3.1C]{ABAP} -\lstalias[4.6]{ABAP}[R/3 4.6C]{ABAP} -\endinput -%% -%% End of file `listings.cfg'. diff --git a/Documentation/PhysicsTools/listings.sty b/Documentation/PhysicsTools/listings.sty deleted file mode 100644 index 9cae950103c..00000000000 --- a/Documentation/PhysicsTools/listings.sty +++ /dev/null @@ -1,2002 +0,0 @@ -%% -%% This is file `listings.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% listings-1.3.dtx (with options: `kernel') -%% -%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf. -%% -%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed -%% elsewhere in this file. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\def\filedate{2004/09/07} -\def\fileversion{1.3} -\NeedsTeXFormat{LaTeX2e} -\AtEndOfPackage{\ProvidesPackage{listings} - [\filedate\space\fileversion\space(Carsten Heinz)]} -\def\lst@CheckVersion#1{\edef\reserved@a{#1}% - \ifx\lst@version\reserved@a \expandafter\@gobble - \else \expandafter\@firstofone \fi} -\let\lst@version\fileversion -\def\lst@InputCatcodes{% - \makeatletter \catcode`\"12% - \catcode`\^^@\active - \catcode`\^^I9% - \catcode`\^^L9% - \catcode`\^^M9% - \catcode`\%14% - \catcode`\~\active} -\def\lst@RestoreCatcodes#1{% - \ifx\relax#1\else - \noexpand\catcode`\noexpand#1\the\catcode`#1\relax - \expandafter\lst@RestoreCatcodes - \fi} -\edef\lst@RestoreCatcodes{% - \noexpand\lccode`\noexpand\/`\noexpand\/% - \lst@RestoreCatcodes\"\^^I\^^M\~\^^@\relax} -\lst@InputCatcodes -\AtEndOfPackage{\lst@RestoreCatcodes} -\def\@lst{lst} -\def\lst@IfSubstring#1#2{% - \def\lst@temp##1#1##2##3\relax{% - \ifx \@empty##2\expandafter\@secondoftwo - \else \expandafter\@firstoftwo \fi}% - \expandafter\lst@temp#2#1\@empty\relax} -\def\lst@IfOneOf#1\relax#2{% - \def\lst@temp##1,#1,##2##3\relax{% - \ifx \@empty##2\expandafter\@secondoftwo - \else \expandafter\@firstoftwo \fi}% - \expandafter\lst@temp\expandafter,#2,#1,\@empty\relax} -\def\lst@DeleteKeysIn#1#2{% - \expandafter\lst@DeleteKeysIn@\expandafter#1#2,\relax,} -\def\lst@DeleteKeysIn@#1#2,{% - \ifx\relax#2\@empty - \expandafter\@firstoftwo\expandafter\lst@RemoveCommas - \else - \ifx\@empty#2\@empty\else - \def\lst@temp##1,#2,##2{% - ##1% - \ifx\@empty##2\@empty\else - \expandafter\lst@temp\expandafter,% - \fi ##2}% - \edef#1{\expandafter\lst@temp\expandafter,#1,#2,\@empty}% - \fi - \fi - \lst@DeleteKeysIn@#1} -\def\lst@RemoveCommas#1{\edef#1{\expandafter\lst@RC@#1\@empty}} -\def\lst@RC@#1{\ifx,#1\expandafter\lst@RC@ \else #1\fi} -\def\lst@ReplaceIn#1#2{% - \expandafter\lst@ReplaceIn@\expandafter#1#2\@empty\@empty} -\def\lst@ReplaceInArg#1#2{\lst@ReplaceIn@#1#2\@empty\@empty} -\def\lst@ReplaceIn@#1#2#3{% - \ifx\@empty#3\relax\else - \def\lst@temp##1#2##2{% - \ifx\@empty##2% - \lst@lAddTo#1{##1}% - \else - \lst@lAddTo#1{##1#3}\expandafter\lst@temp - \fi ##2}% - \let\@tempa#1\let#1\@empty - \expandafter\lst@temp\@tempa#2\@empty - \expandafter\lst@ReplaceIn@\expandafter#1% - \fi} -\providecommand*\@gobblethree[3]{} -\def\lst@GobbleNil#1\@nil{} -\def\lst@Swap#1#2{#2#1} -\def\lst@true{\let\lst@if\iftrue} -\def\lst@false{\let\lst@if\iffalse} -\lst@false -\def\lst@IfNextCharsArg#1{% - \def\lst@tofind{#1}\lst@IfNextChars\lst@tofind} -\def\lst@IfNextChars#1#2#3{% - \let\lst@tofind#1\def\@tempa{#2}\def\@tempb{#3}% - \let\lst@eaten\@empty \lst@IfNextChars@} -\def\lst@IfNextChars@{\expandafter\lst@IfNextChars@@\lst@tofind\relax} -\def\lst@IfNextChars@@#1#2\relax#3{% - \def\lst@tofind{#2}\lst@lAddTo\lst@eaten{#3}% - \ifx#1#3% - \ifx\lst@tofind\@empty - \let\lst@next\@tempa - \else - \let\lst@next\lst@IfNextChars@ - \fi - \expandafter\lst@next - \else - \expandafter\@tempb - \fi} -\def\lst@IfNextCharActive#1#2#3{% - \begingroup \lccode`\~=`#3\lowercase{\endgroup - \ifx~}#3% - \def\lst@next{#1}% - \else - \def\lst@next{#2}% - \fi \lst@next #3} -\def\lst@for#1\do#2{% - \def\lst@forbody##1{#2}% - \@for\lst@forvar:=#1\do - {\expandafter\lst@forbody\expandafter{\lst@forvar}}} -\def\lst@MakeActive#1{% - \let\lst@temp\@empty \lst@MakeActive@#1% - \relax\relax\relax\relax\relax\relax\relax\relax\relax} -\begingroup -\catcode`\^^@=\active \catcode`\^^A=\active \catcode`\^^B=\active -\catcode`\^^C=\active \catcode`\^^D=\active \catcode`\^^E=\active -\catcode`\^^F=\active \catcode`\^^G=\active \catcode`\^^H=\active -\gdef\lst@MakeActive@#1#2#3#4#5#6#7#8#9{\let\lst@next\relax - \ifx#1\relax - \else \lccode`\^^@=`#1% - \ifx#2\relax - \lowercase{\lst@lAddTo\lst@temp{^^@}}% - \else \lccode`\^^A=`#2% - \ifx#3\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A}}% - \else \lccode`\^^B=`#3% - \ifx#4\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B}}% - \else \lccode`\^^C=`#4% - \ifx#5\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C}}% - \else \lccode`\^^D=`#5% - \ifx#6\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D}}% - \else \lccode`\^^E=`#6% - \ifx#7\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E}}% - \else \lccode`\^^F=`#7% - \ifx#8\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F}}% - \else \lccode`\^^G=`#8% - \ifx#9\relax - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F^^G}}% - \else \lccode`\^^H=`#9% - \lowercase{\lst@lAddTo\lst@temp{^^@^^A^^B^^C^^D^^E^^F^^G^^H}}% - \let\lst@next\lst@MakeActive@ - \fi \fi \fi \fi \fi \fi \fi \fi \fi - \lst@next} -\endgroup -\def\lst@DefActive#1#2{\lst@MakeActive{#2}\let#1\lst@temp} -\def\lst@DefOther#1#2{% - \begingroup \def#1{#2}\escapechar\m@ne \expandafter\endgroup - \expandafter\lst@DefOther@\meaning#1\relax#1} -\def\lst@DefOther@#1>#2\relax#3{\edef#3{\zap@space#2 \@empty}} -\def\lst@InsideConvert#1{% - \lst@ifmathescape - \lst@InsideConvert@e#1$\@nil - \lst@if - \lst@InsideConvert@ey#1\@nil - \else - \lst@InsideConvert@#1 \@empty - \expandafter\@gobbletwo - \fi - \expandafter\lst@next - \else - \lst@InsideConvert@#1 \@empty - \fi} -\begingroup \lccode`\~=`\ \relax \lowercase{% -\gdef\lst@InsideConvert@#1 #2{% - \lst@MakeActive{#1}% - \ifx\@empty#2% - \lst@lExtend\lst@arg{\lst@temp}% - \else - \lst@lExtend\lst@arg{\lst@temp~}% - \expandafter\lst@InsideConvert@ - \fi #2} -}\endgroup -\def\lst@InsideConvert@e#1$#2\@nil{% - \ifx\@empty#2\@empty \lst@false \else \lst@true \fi} -\def\lst@InsideConvert@ey#1$#2$#3\@nil{% - \lst@InsideConvert@#1 \@empty - \lst@lAddTo\lst@arg{% - \lst@ifdropinput\else - \lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken - \setbox\@tempboxa=\hbox\bgroup$\lst@escapebegin - #2% - \lst@escapeend$\egroup \lst@CalcLostSpaceAndOutput - \lst@whitespacefalse - \fi}% - \def\lst@next{\lst@InsideConvert{#3}}% -} -\def\lst@XConvert{\@ifnextchar\bgroup \lst@XConvertArg\lst@XConvert@} -\def\lst@XConvertArg#1{% - {\lst@false \let\lst@arg\@empty - \lst@XConvert#1\@nil - \global\let\@gtempa\lst@arg}% - \lst@lExtend\lst@arg{\expandafter{\@gtempa}}% - \lst@XConvertNext} -\def\lst@XConvert@#1{% - \ifx\@nil#1\else - \begingroup\lccode`\~=`#1\lowercase{\endgroup - \lst@lAddTo\lst@arg~}% - \expandafter\lst@XConvertNext - \fi} -\def\lst@XConvertNext{% - \lst@if \expandafter\lst@XConvertX - \else \expandafter\lst@XConvert \fi} -\def\lst@XConvertX#1{% - \ifx\@nil#1\else - \lst@XConvertX@#1\relax - \expandafter\lst@XConvert - \fi} -\def\lst@XConvertX@#1#2\relax{% - \begingroup\lccode`\~=`#1\lowercase{\endgroup - \lst@XCConvertX@@~}{#2}} -\def\lst@XCConvertX@@#1#2{\lst@lAddTo\lst@arg{{#1#2}}} -\def\lst@Require#1#2#3#4#5{% - \begingroup - \aftergroup\lst@true - \ifx\@empty#3\@empty\else - \def\lst@prefix{#2}\let\lst@require\@empty - \edef\lst@temp{\expandafter\zap@space#3 \@empty}% - \lst@for\lst@temp\do{% - \ifx\@empty##1\@empty\else \lstKV@OptArg[]{##1}{% - #4[####1]{####2}% - \@ifundefined{\@lst\lst@prefix @\lst@malias $\lst@oalias}% - {\edef\lst@require{\lst@require,\lst@malias $\lst@oalias}}% - {}}% - \fi}% - \global\let\lst@loadaspects\@empty - \lst@InputCatcodes - \ifx\lst@require\@empty\else - \lst@for{#5}\do{% - \ifx\lst@require\@empty\else - \InputIfFileExists{##1}{}{}% - \fi}% - \fi - \ifx\lst@require\@empty\else - \PackageError{Listings}{Couldn't load requested #1}% - {The following #1s weren't loadable:^^J\@spaces - \lst@require^^JThis may cause errors in the sequel.}% - \aftergroup\lst@false - \fi - \ifx\lst@loadaspects\@empty\else - \lst@RequireAspects\lst@loadaspects - \fi - \fi - \endgroup} -\def\lst@IfRequired[#1]#2{% - \lst@NormedDef\lst@temp{[#1]#2}% - \expandafter\lst@IfRequired@\lst@temp\relax} -\def\lst@IfRequired@[#1]#2\relax#3{% - \lst@IfOneOf #2$#1\relax\lst@require - {\lst@DeleteKeysIn@\lst@require#2$#1,\relax,% - \global\expandafter\let - \csname\@lst\lst@prefix @#2$#1\endcsname\@empty - #3}} -\let\lst@require\@empty -\def\lst@NoAlias[#1]#2{% - \lst@NormedDef\lst@oalias{#1}\lst@NormedDef\lst@malias{#2}} -\gdef\lst@LAS#1#2#3#4#5#6#7{% - \lst@Require{#1}{#2}{#3}#4#5% - #4#3% - \@ifundefined{lst#2@\lst@malias$\lst@oalias}% - {\PackageError{Listings}% - {#1 \ifx\@empty\lst@oalias\else \lst@oalias\space of \fi - \lst@malias\space undefined}% - {The #1 is not loadable. \@ehc}}% - {#6\csname\@lst#2@\lst@malias $\lst@oalias\endcsname #7}} -\def\lst@RequireAspects#1{% - \lst@Require{aspect}{asp}{#1}\lst@NoAlias\lstaspectfiles} -\let\lstloadaspects\lst@RequireAspects -\@ifundefined{lstaspectfiles} - {\newcommand\lstaspectfiles{lstmisc0.sty,lstmisc.sty}}{} -\gdef\lst@DefDriver#1#2#3#4{% - \@ifnextchar[{\lst@DefDriver@{#1}{#2}#3#4}% - {\lst@DefDriver@{#1}{#2}#3#4[]}} -\gdef\lst@DefDriver@#1#2#3#4[#5]#6{% - \def\lst@name{#1}\let\lst@if#4% - \lst@NormedDef\lst@driver{\@lst#2@#6$#5}% - \lst@IfRequired[#5]{#6}{\begingroup \lst@true}% - {\begingroup}% - \lst@setcatcodes - \@ifnextchar[{\lst@XDefDriver{#1}#3}{\lst@DefDriver@@#3}} -\gdef\lst@DefDriver@@#1#2{% - \lst@if - \global\@namedef{\lst@driver}{#1{#2}}% - \fi - \endgroup - \@ifnextchar[\lst@XXDefDriver\@empty} -\gdef\lst@XXDefDriver[#1]{% - \ifx\@empty#1\@empty\else - \lst@if - \lstloadaspects{#1}% - \else - \@ifundefined{\lst@driver}{}% - {\xdef\lst@loadaspects{\lst@loadaspects,#1}}% - \fi - \fi} -\gdef\lst@XDefDriver#1#2[#3]#4#5{\lst@DefDriver@@#2{also#1=[#3]#4,#5}} -\let\lst@UserCommand\gdef -\newcommand*\lst@BeginAspect[2][]{% - \def\lst@curraspect{#2}% - \ifx \lst@curraspect\@empty - \expandafter\lst@GobbleAspect - \else - \let\lst@next\@empty - \lst@IfRequired[]{#2}% - {\lst@RequireAspects{#1}% - \lst@if\else \let\lst@next\lst@GobbleAspect \fi}% - {\let\lst@next\lst@GobbleAspect}% - \expandafter\lst@next - \fi} -\def\lst@EndAspect{% - \csname\@lst patch@\lst@curraspect\endcsname - \let\lst@curraspect\@empty} -\long\def\lst@GobbleAspect#1\lst@EndAspect{\let\lst@curraspect\@empty} -\def\lst@Key#1#2{% - \@ifnextchar[{\lstKV@def{#1}{#2}}% - {\def\lst@temp{\lst@Key@{#1}{#2}} - \afterassignment\lst@temp - \global\@namedef{KV@\@lst @#1}####1}} -\def\lstKV@def#1#2[#3]{% - \global\@namedef{KV@\@lst @#1@default\expandafter}\expandafter - {\csname KV@\@lst @#1\endcsname{#3}}% - \def\lst@temp{\lst@Key@{#1}{#2}}\afterassignment\lst@temp - \global\@namedef{KV@\@lst @#1}##1} -\def\lst@Key@#1#2{% - \ifx\relax#2\@empty\else - \begingroup \globaldefs\@ne - \csname KV@\@lst @#1\endcsname{#2}% - \endgroup - \fi} -\def\lst@UseHook#1{\csname\@lst hk@#1\endcsname} -\def\lst@AddToHook{\lst@ATH@\iffalse\lst@AddTo} -\def\lst@AddToHookExe{\lst@ATH@\iftrue\lst@AddTo} -\def\lst@AddToHookAtTop{\lst@ATH@\iffalse\lst@AddToAtTop} -\long\def\lst@ATH@#1#2#3#4{% - \@ifundefined{\@lst hk@#3}{% - \expandafter\gdef\csname\@lst hk@#3\endcsname{}}{}% - \expandafter#2\csname\@lst hk@#3\endcsname{#4}% - \def\lst@temp{#4}% - #1% \iftrue|false - \begingroup \globaldefs\@ne \lst@temp \endgroup - \fi} -\long\def\lst@AddTo#1#2{% - \expandafter\gdef\expandafter#1\expandafter{#1#2}} -\def\lst@AddToAtTop#1#2{\def\lst@temp{#2}% - \expandafter\expandafter\expandafter\gdef - \expandafter\expandafter\expandafter#1% - \expandafter\expandafter\expandafter{\expandafter\lst@temp#1}} -\def\lst@lAddTo#1#2{\expandafter\def\expandafter#1\expandafter{#1#2}} -\def\lst@Extend#1#2{% - \expandafter\lst@AddTo\expandafter#1\expandafter{#2}} -\def\lst@lExtend#1#2{% - \expandafter\lst@lAddTo\expandafter#1\expandafter{#2}} -\RequirePackage{keyval}[1997/11/10] -\def\lstKV@TwoArg#1#2{\gdef\@gtempa##1##2{#2}\@gtempa#1{}{}} -\def\lstKV@ThreeArg#1#2{\gdef\@gtempa##1##2##3{#2}\@gtempa#1{}{}{}} -\def\lstKV@FourArg#1#2{\gdef\@gtempa##1##2##3##4{#2}\@gtempa#1{}{}{}{}} -\def\lstKV@OptArg[#1]#2#3{% - \gdef\@gtempa[##1]##2{#3}\lstKV@OptArg@{#1}#2\@} -\def\lstKV@OptArg@#1{\@ifnextchar[\lstKV@OptArg@@{\lstKV@OptArg@@[#1]}} -\def\lstKV@OptArg@@[#1]#2\@{\@gtempa[#1]{#2}} -\def\lstKV@XOptArg[#1]#2#3{% - \global\let\@gtempa#3\lstKV@OptArg@{#1}#2\@} -\def\lstKV@CSTwoArg#1#2{% - \gdef\@gtempa##1,##2,##3\relax{#2}% - \@gtempa#1,,\relax} -\def\lstKV@SetIf#1{\lstKV@SetIf@#1\relax} -\def\lstKV@SetIf@#1#2\relax#3{\lowercase{% - \expandafter\let\expandafter#3% - \csname if\ifx #1t}true\else false\fi\endcsname} -\def\lstKV@SwitchCases#1#2#3{% - \def\lst@temp##1\\#1&##2\\##3##4\@nil{% - \ifx\@empty##3% - #3% - \else - ##2% - \fi - }% - \lst@temp\\#2\\#1&\\\@empty\@nil} -\lst@UserCommand\lstset{\begingroup \lst@setcatcodes \lstset@} -\def\lstset@#1{\endgroup \ifx\@empty#1\@empty\else\setkeys{lst}{#1}\fi} -\def\lst@setcatcodes{\makeatletter \catcode`\==12\relax} -\def\lst@NewMode#1{% - \ifx\@undefined#1% - \lst@mode\lst@newmode\relax \advance\lst@mode\@ne - \xdef\lst@newmode{\the\lst@mode}% - \global\chardef#1=\lst@mode - \lst@mode\lst@nomode - \fi} -\newcount\lst@mode -\def\lst@newmode{\m@ne}% init -\lst@NewMode\lst@nomode % init (of \lst@mode :-) -\def\lst@UseDynamicMode{% - \@tempcnta\lst@dynamicmode\relax \advance\@tempcnta\@ne - \edef\lst@dynamicmode{\the\@tempcnta}% - \expandafter\lst@Swap\expandafter{\expandafter{\lst@dynamicmode}}} -\lst@AddToHook{InitVars}{\let\lst@dynamicmode\lst@newmode} -\def\lst@EnterMode#1#2{% - \bgroup \lst@mode=#1\relax #2% - \lst@FontAdjust - \lst@lAddTo\lst@entermodes{\lst@EnterMode{#1}{#2}}} -\lst@AddToHook{InitVars}{\let\lst@entermodes\@empty} -\let\lst@entermodes\@empty % init -\def\lst@LeaveMode{% - \ifnum\lst@mode=\lst@nomode\else - \egroup \expandafter\lsthk@EndGroup - \fi} -\lst@AddToHook{EndGroup}{}% init -\def\lst@InterruptModes{% - \lst@Extend\lst@modestack{\expandafter{\lst@entermodes}}% - \lst@LeaveAllModes} -\lst@AddToHook{InitVars}{\global\let\lst@modestack\@empty} -\def\lst@ReenterModes{% - \ifx\lst@modestack\@empty\else - \lst@LeaveAllModes - \global\let\@gtempa\lst@modestack - \global\let\lst@modestack\@empty - \expandafter\lst@ReenterModes@\@gtempa\relax - \fi} -\def\lst@ReenterModes@#1#2{% - \ifx\relax#2\@empty - \gdef\@gtempa##1{#1}% - \expandafter\@gtempa - \else - \lst@AddTo\lst@modestack{{#1}}% - \expandafter\lst@ReenterModes@ - \fi - {#2}} -\def\lst@LeaveAllModes{% - \ifnum\lst@mode=\lst@nomode - \expandafter\lsthk@EndGroup - \else - \expandafter\egroup\expandafter\lst@LeaveAllModes - \fi} -\lst@AddToHook{ExitVars}{\lst@LeaveAllModes} -\lst@NewMode\lst@Pmode -\lst@NewMode\lst@GPmode -\def\lst@modetrue{\let\lst@ifmode\iftrue \lsthk@ModeTrue} -\let\lst@ifmode\iffalse % init -\lst@AddToHook{ModeTrue}{}% init -\def\lst@Lmodetrue{\let\lst@ifLmode\iftrue} -\let\lst@ifLmode\iffalse % init -\lst@AddToHook{EOL}{\@whilesw \lst@ifLmode\fi \lst@LeaveMode} -\def\lst@NormedDef#1#2{\lowercase{\edef#1{\zap@space#2 \@empty}}} -\def\lst@NormedNameDef#1#2{% - \lowercase{\edef\lst@temp{\zap@space#1 \@empty}% - \expandafter\xdef\csname\lst@temp\endcsname{\zap@space#2 \@empty}}} -\def\lst@GetFreeMacro#1{% - \@tempcnta\z@ \def\lst@freemacro{#1\the\@tempcnta}% - \lst@GFM@} -\def\lst@GFM@{% - \expandafter\ifx \csname\lst@freemacro\endcsname \relax - \edef\lst@freemacro{\csname\lst@freemacro\endcsname}% - \else - \advance\@tempcnta\@ne - \expandafter\lst@GFM@ - \fi} -\newbox\lst@gtempboxa -\newtoks\lst@token \newcount\lst@length -\def\lst@ResetToken{\lst@token{}\lst@length\z@} -\lst@AddToHook{InitVarsBOL}{\lst@ResetToken \let\lst@lastother\@empty} -\lst@AddToHook{EndGroup}{\lst@ResetToken \let\lst@lastother\@empty} -\def\lst@lettertrue{\let\lst@ifletter\iftrue} -\def\lst@letterfalse{\let\lst@ifletter\iffalse} -\lst@AddToHook{InitVars}{\lst@letterfalse} -\def\lst@Append#1{\advance\lst@length\@ne - \lst@token=\expandafter{\the\lst@token#1}} -\def\lst@AppendOther{% - \lst@ifletter \lst@Output\lst@letterfalse \fi - \futurelet\lst@lastother\lst@Append} -\def\lst@AppendLetter{% - \lst@ifletter\else \lst@OutputOther\lst@lettertrue \fi - \lst@Append} -\def\lst@SaveToken{% - \global\let\lst@gthestyle\lst@thestyle - \global\let\lst@glastother\lst@lastother - \xdef\lst@RestoreToken{\noexpand\lst@token{\the\lst@token}% - \noexpand\lst@length\the\lst@length\relax - \noexpand\let\noexpand\lst@thestyle - \noexpand\lst@gthestyle - \noexpand\let\noexpand\lst@lastother - \noexpand\lst@glastother}} -\def\lst@IfLastOtherOneOf#1{\lst@IfLastOtherOneOf@ #1\relax} -\def\lst@IfLastOtherOneOf@#1{% - \ifx #1\relax - \expandafter\@secondoftwo - \else - \ifx\lst@lastother#1% - \lst@IfLastOtherOneOf@t - \else - \expandafter\expandafter\expandafter\lst@IfLastOtherOneOf@ - \fi - \fi} -\def\lst@IfLastOtherOneOf@t#1\fi\fi#2\relax{\fi\fi\@firstoftwo} -\newdimen\lst@currlwidth % \global -\newcount\lst@column \newcount\lst@pos % \global -\lst@AddToHook{InitVarsBOL} - {\global\lst@currlwidth\z@ \global\lst@pos\z@ \global\lst@column\z@} -\def\lst@CalcColumn{% - \@tempcnta\lst@column - \advance\@tempcnta\lst@length - \advance\@tempcnta-\lst@pos} -\newdimen\lst@lostspace % \global -\lst@AddToHook{InitVarsBOL}{\global\lst@lostspace\z@} -\def\lst@UseLostSpace{\ifdim\lst@lostspace>\z@ \lst@InsertLostSpace \fi} -\def\lst@InsertLostSpace{% - \lst@Kern\lst@lostspace \global\lst@lostspace\z@} -\def\lst@InsertHalfLostSpace{% - \global\lst@lostspace.5\lst@lostspace \lst@Kern\lst@lostspace} -\newdimen\lst@width -\lst@Key{basewidth}{0.6em,0.45em}{\lstKV@CSTwoArg{#1}% - {\def\lst@widthfixed{##1}\def\lst@widthflexible{##2}% - \ifx\lst@widthflexible\@empty - \let\lst@widthflexible\lst@widthfixed - \fi - \def\lst@temp{\PackageError{Listings}% - {Negative value(s) treated as zero}% - \@ehc}% - \let\lst@error\@empty - \ifdim \lst@widthfixed<\z@ - \let\lst@error\lst@temp \let\lst@widthfixed\z@ - \fi - \ifdim \lst@widthflexible<\z@ - \let\lst@error\lst@temp \let\lst@widthflexible\z@ - \fi - \lst@error}} -\lst@AddToHook{FontAdjust} - {\lst@width=\lst@ifflexible\lst@widthflexible - \else\lst@widthfixed\fi \relax} -\lst@Key{fontadjust}{false}[t]{\lstKV@SetIf{#1}\lst@iffontadjust} -\def\lst@FontAdjust{\lst@iffontadjust \lsthk@FontAdjust \fi} -\lst@AddToHook{InitVars}{\lsthk@FontAdjust} -\def\lst@OutputBox#1{\lst@alloverstyle{\box#1}} -\def\lst@alloverstyle#1{#1}% init -\def\lst@Kern#1{% - \setbox\z@\hbox{{\lst@currstyle{\kern#1}}}% - \global\advance\lst@currlwidth \wd\z@ - \lst@OutputBox\z@} -\def\lst@CalcLostSpaceAndOutput{% - \global\advance\lst@lostspace \lst@length\lst@width - \global\advance\lst@lostspace-\wd\@tempboxa - \global\advance\lst@currlwidth \wd\@tempboxa - \global\advance\lst@pos -\lst@length - \setbox\@tempboxa\hbox{\let\lst@OutputBox\box - \ifdim\lst@lostspace>\z@ \lst@leftinsert \fi - \box\@tempboxa - \ifdim\lst@lostspace>\z@ \lst@rightinsert \fi}% - \lst@OutputBox\@tempboxa \lsthk@PostOutput} -\lst@AddToHook{PostOutput}{}% init -\def\lst@OutputToken{% - \lst@TrackNewLines \lst@OutputLostSpace - \lst@ifgobbledws - \lst@gobbledwhitespacefalse - \lst@@discretionary - \fi - \lst@CheckMerge - {\lst@thestyle{\lst@FontAdjust - \setbox\@tempboxa\lst@hbox - {\lsthk@OutputBox - \lst@lefthss - \expandafter\lst@FillOutputBox\the\lst@token\@empty - \lst@righthss}% - \lst@CalcLostSpaceAndOutput}}% - \lst@ResetToken} -\lst@AddToHook{OutputBox}{}% init -\def\lst@gobbledwhitespacetrue{\global\let\lst@ifgobbledws\iftrue} -\def\lst@gobbledwhitespacefalse{\global\let\lst@ifgobbledws\iffalse} -\lst@AddToHookExe{InitBOL}{\lst@gobbledwhitespacefalse}% init -\def\lst@Delay#1{% - \lst@CheckDelay - #1% - \lst@GetOutputMacro\lst@delayedoutput - \edef\lst@delayed{\the\lst@token}% - \edef\lst@delayedlength{\the\lst@length}% - \lst@ResetToken} -\def\lst@Merge#1{% - \lst@CheckMerge - #1% - \edef\lst@merged{\the\lst@token}% - \edef\lst@mergedlength{\the\lst@length}% - \lst@ResetToken} -\def\lst@MergeToken#1#2{% - \advance\lst@length#2% - \lst@lExtend#1{\the\lst@token}% - \expandafter\lst@token\expandafter{#1}% - \let#1\@empty} -\def\lst@CheckDelay{% - \ifx\lst@delayed\@empty\else - \lst@GetOutputMacro\@gtempa - \ifx\lst@delayedoutput\@gtempa - \lst@MergeToken\lst@delayed\lst@delayedlength - \else - {\lst@ResetToken - \lst@MergeToken\lst@delayed\lst@delayedlength - \lst@delayedoutput}% - \let\lst@delayed\@empty - \fi - \fi} -\def\lst@CheckMerge{% - \ifx\lst@merged\@empty\else - \lst@MergeToken\lst@merged\lst@mergedlength - \fi} -\let\lst@delayed\@empty % init -\let\lst@merged\@empty % init -\def\lst@column@fixed{% - \lst@flexiblefalse - \lst@width\lst@widthfixed\relax - \let\lst@OutputLostSpace\lst@UseLostSpace - \let\lst@FillOutputBox\lst@FillFixed - \let\lst@hss\hss - \def\lst@hbox{\hbox to\lst@length\lst@width}} -\def\lst@FillFixed#1{#1\lst@FillFixed@} -\def\lst@FillFixed@#1{% - \ifx\@empty#1\else \lst@hss#1\expandafter\lst@FillFixed@ \fi} -\def\lst@column@flexible{% - \lst@flexibletrue - \lst@width\lst@widthflexible\relax - \let\lst@OutputLostSpace\lst@UseLostSpace - \let\lst@FillOutputBox\@empty - \let\lst@hss\@empty - \let\lst@hbox\hbox} -\def\lst@column@fullflexible{% - \lst@column@flexible - \def\lst@OutputLostSpace{\lst@ifnewline \lst@UseLostSpace\fi}% - \let\lst@leftinsert\@empty - \let\lst@rightinsert\@empty} -\def\lst@outputpos#1#2\relax{% - \def\lst@lefthss{\lst@hss}\let\lst@righthss\lst@lefthss - \let\lst@rightinsert\lst@InsertLostSpace - \ifx #1c% - \let\lst@leftinsert\lst@InsertHalfLostSpace - \else\ifx #1r% - \let\lst@righthss\@empty - \let\lst@leftinsert\lst@InsertLostSpace - \let\lst@rightinsert\@empty - \else - \let\lst@lefthss\@empty - \let\lst@leftinsert\@empty - \ifx #1l\else \PackageWarning{Listings}% - {Unknown positioning for output boxes}% - \fi - \fi\fi} -\def\lst@flexibletrue{\let\lst@ifflexible\iftrue} -\def\lst@flexiblefalse{\let\lst@ifflexible\iffalse} -\lst@Key{columns}{[c]fixed}{\lstKV@OptArg[]{#1}{% - \ifx\@empty##1\@empty\else \lst@outputpos##1\relax\relax \fi - \expandafter\let\expandafter\lst@arg - \csname\@lst @column@##2\endcsname - \lst@arg - \ifx\lst@arg\relax - \PackageWarning{Listings}{Unknown column format `##2'}% - \else - \lst@ifflexible - \let\lst@columnsflexible\lst@arg - \else - \let\lst@columnsfixed\lst@arg - \fi - \fi}} -\let\lst@columnsfixed\lst@column@fixed % init -\let\lst@columnsflexible\lst@column@flexible % init -\lst@Key{flexiblecolumns}\relax[t]{% - \lstKV@SetIf{#1}\lst@ifflexible - \lst@ifflexible \lst@columnsflexible - \else \lst@columnsfixed \fi} -\newcount\lst@newlines -\lst@AddToHook{InitVars}{\global\lst@newlines\z@} -\lst@AddToHook{InitVarsBOL}{\global\advance\lst@newlines\@ne} -\def\lst@NewLine{% - \ifx\lst@OutputBox\@gobble\else - \par\noindent \hbox{}% - \fi - \global\advance\lst@newlines\m@ne - \lst@newlinetrue} -\def\lst@newlinetrue{\global\let\lst@ifnewline\iftrue} -\lst@AddToHookExe{PostOutput}{\global\let\lst@ifnewline\iffalse}% init -\def\lst@TrackNewLines{% - \ifnum\lst@newlines>\z@ - \lsthk@OnNewLine - \lst@DoNewLines - \fi} -\lst@AddToHook{OnNewLine}{}% init -\lst@Key{emptylines}\maxdimen{% - \@ifstar{\lst@true\@tempcnta\@gobble#1\relax\lst@GobbleNil}% - {\lst@false\@tempcnta#1\relax\lst@GobbleNil}#1\@nil - \advance\@tempcnta\@ne - \edef\lst@maxempty{\the\@tempcnta\relax}% - \let\lst@ifpreservenumber\lst@if} -\def\lst@DoNewLines{ - \@whilenum\lst@newlines>\lst@maxempty \do - {\lst@ifpreservenumber - \lsthk@OnEmptyLine - \global\advance\c@lstnumber\lst@advancelstnum - \fi - \global\advance\lst@newlines\m@ne}% - \@whilenum \lst@newlines>\@ne \do - {\lsthk@OnEmptyLine \lst@NewLine}% - \ifnum\lst@newlines>\z@ \lst@NewLine \fi} -\lst@AddToHook{OnEmptyLine}{}% init -\lst@Key{identifierstyle}{}{\def\lst@identifierstyle{#1}} -\lst@AddToHook{EmptyStyle}{\let\lst@identifierstyle\@empty} -\def\lst@GotoTabStop{% - \ifnum\lst@newlines=\z@ - \setbox\@tempboxa\hbox{\lst@outputspace}% - \setbox\@tempboxa\hbox to\wd\@tempboxa{{\lst@currstyle{\hss}}}% - \lst@CalcLostSpaceAndOutput - \else - \global\advance\lst@lostspace \lst@length\lst@width - \global\advance\lst@column\lst@length \lst@length\z@ - \fi} -\def\lst@OutputOther{% - \lst@CheckDelay - \ifnum\lst@length=\z@\else - \let\lst@thestyle\lst@currstyle - \lsthk@OutputOther - \lst@OutputToken - \fi} -\lst@AddToHook{OutputOther}{}% init -\let\lst@currstyle\relax % init -\def\lst@Output{% - \lst@CheckDelay - \ifnum\lst@length=\z@\else - \ifx\lst@currstyle\relax - \let\lst@thestyle\lst@identifierstyle - \else - \let\lst@thestyle\lst@currstyle - \fi - \lsthk@Output - \lst@OutputToken - \fi - \let\lst@lastother\relax} -\lst@AddToHook{Output}{}% init -\def\lst@GetOutputMacro#1{% - \lst@ifletter \global\let#1\lst@Output - \else \global\let#1\lst@OutputOther\fi} -\def\lst@PrintToken{% - \lst@ifletter \lst@Output \lst@letterfalse - \else \lst@OutputOther \let\lst@lastother\@empty \fi} -\def\lst@XPrintToken{% - \lst@PrintToken \lst@CheckMerge - \ifnum\lst@length=\z@\else \lst@PrintToken \fi} -\def\lst@BeginDropOutput#1{% - \xdef\lst@BDOnewlines{\the\lst@newlines}% - \global\let\lst@BDOifnewline\lst@ifnewline - \lst@EnterMode{#1}% - {\lst@modetrue - \let\lst@OutputBox\@gobble - \aftergroup\lst@BDORestore}} -\def\lst@BDORestore{% - \global\lst@newlines\lst@BDOnewlines - \global\let\lst@ifnewline\lst@BDOifnewline} -\let\lst@EndDropOutput\lst@LeaveMode -\def\lst@ProcessLetter{\lst@whitespacefalse \lst@AppendLetter} -\def\lst@ProcessOther{\lst@whitespacefalse \lst@AppendOther} -\def\lst@ProcessDigit{% - \lst@whitespacefalse - \lst@ifletter \expandafter\lst@AppendLetter - \else \expandafter\lst@AppendOther\fi} -\def\lst@whitespacetrue{\global\let\lst@ifwhitespace\iftrue} -\def\lst@whitespacefalse{\global\let\lst@ifwhitespace\iffalse} -\lst@AddToHook{InitVarsBOL}{\lst@whitespacetrue} -\lst@Key{tabsize}{8} - {\ifnum#1>\z@ \def\lst@tabsize{#1}\else - \PackageError{Listings}{Strict positive integer expected}% - {You can't use `#1' as tabsize. \@ehc}% - \fi} -\lst@Key{showtabs}f[t]{\lstKV@SetIf{#1}\lst@ifshowtabs} -\lst@Key{tab}{\kern.06em\hbox{\vrule\@height.3ex}% - \hrulefill\hbox{\vrule\@height.3ex}} - {\def\lst@tab{#1}} -\def\lst@ProcessTabulator{% - \lst@XPrintToken \lst@whitespacetrue - \global\advance\lst@column -\lst@pos - \@whilenum \lst@pos<\@ne \do - {\global\advance\lst@pos\lst@tabsize}% - \lst@length\lst@pos - \lst@PreGotoTabStop} -\def\lst@PreGotoTabStop{% - \lst@ifshowtabs - \lst@TrackNewLines - \setbox\@tempboxa\hbox to\lst@length\lst@width - {{\lst@currstyle{\hss\lst@tab}}}% - \lst@CalcLostSpaceAndOutput - \else - \lst@ifkeepspaces - \@tempcnta\lst@length \lst@length\z@ - \@whilenum \@tempcnta>\z@ \do - {\lst@AppendOther\lst@outputspace - \advance\@tempcnta\m@ne}% - \lst@OutputOther - \else - \lst@GotoTabStop - \fi - \fi - \lst@length\z@ \global\lst@pos\z@} -\def\lst@outputspace{\ } -\def\lst@visiblespace{\lst@ttfamily{\char32}\textvisiblespace} -\lst@Key{showspaces}{false}[t]{\lstKV@SetIf{#1}\lst@ifshowspaces} -\lst@Key{keepspaces}{false}[t]{\lstKV@SetIf{#1}\lst@ifkeepspaces} -\lst@AddToHook{Init} - {\lst@ifshowspaces - \let\lst@outputspace\lst@visiblespace - \lst@keepspacestrue - \fi} -\def\lst@keepspacestrue{\let\lst@ifkeepspaces\iftrue} -\def\lst@ProcessSpace{% - \lst@ifkeepspaces - \lst@whitespacetrue - \lst@PrintToken - \lst@AppendOther\lst@outputspace - \lst@PrintToken - \else \ifnum\lst@newlines=\z@ - \lst@AppendSpecialSpace - \else \ifnum\lst@length=\z@ - \global\advance\lst@lostspace\lst@width - \global\advance\lst@pos\m@ne - \lst@whitespacetrue - \else - \lst@AppendSpecialSpace - \fi - \fi \fi} -\def\lst@AppendSpecialSpace{% - \lst@ifwhitespace - \lst@PrintToken - \global\advance\lst@lostspace\lst@width - \global\advance\lst@pos\m@ne - \lst@gobbledwhitespacetrue - \else - \lst@whitespacetrue - \lst@PrintToken - \lst@AppendOther\lst@outputspace - \lst@PrintToken - \fi} -\lst@Key{formfeed}{\bigbreak}{\def\lst@formfeed{#1}} -\def\lst@ProcessFormFeed{% - \lst@XPrintToken - \ifnum\lst@newlines=\z@ - \lst@EOLUpdate \lsthk@InitVarsBOL - \fi - \lst@formfeed - \lst@whitespacetrue} -\def\lst@Def#1{\lccode`\~=#1\lowercase{\def~}} -\def\lst@Let#1{\lccode`\~=#1\lowercase{\let~}} -\lst@AddToAtTop{\try@load@fontshape}{\def\space{ }} -\def\lst@SelectStdCharTable{% - \lst@Def{9}{\lst@ProcessTabulator}% - \lst@Def{12}{\lst@ProcessFormFeed}% - \lst@Def{32}{\lst@ProcessSpace}} -\def\lst@CCPut#1#2{% - \ifnum#2=\z@ - \expandafter\@gobbletwo - \else - \lccode`\~=#2\lccode`\/=#2\lowercase{\lst@CCPut@~{#1/}}% - \fi - \lst@CCPut#1} -\def\lst@CCPut@#1#2{\lst@lAddTo\lst@SelectStdCharTable{\def#1{#2}}} -\lst@CCPut \lst@ProcessOther - {"21}{"22}{"28}{"29}{"2B}{"2C}{"2E}{"2F} - {"3A}{"3B}{"3D}{"3F}{"5B}{"5D} - \z@ -\lst@CCPut \lst@ProcessDigit - {"30}{"31}{"32}{"33}{"34}{"35}{"36}{"37}{"38}{"39} - \z@ -\lst@CCPut \lst@ProcessLetter - {"40}{"41}{"42}{"43}{"44}{"45}{"46}{"47} - {"48}{"49}{"4A}{"4B}{"4C}{"4D}{"4E}{"4F} - {"50}{"51}{"52}{"53}{"54}{"55}{"56}{"57} - {"58}{"59}{"5A} - {"61}{"62}{"63}{"64}{"65}{"66}{"67} - {"68}{"69}{"6A}{"6B}{"6C}{"6D}{"6E}{"6F} - {"70}{"71}{"72}{"73}{"74}{"75}{"76}{"77} - {"78}{"79}{"7A} - \z@ -\def\lst@CCPutMacro#1#2#3{% - \ifnum#2=\z@ \else - \begingroup\lccode`\~=#2\relax \lccode`\/=#2\relax - \lowercase{\endgroup\expandafter\lst@CCPutMacro@ - \csname\@lst @um/\expandafter\endcsname - \csname\@lst @um/@\endcsname /~}#1{#3}% - \expandafter\lst@CCPutMacro - \fi} -\def\lst@CCPutMacro@#1#2#3#4#5#6{% - \lst@lAddTo\lst@SelectStdCharTable{\def#4{#5#1}}% - \def#1{\lst@UM#3}% - \def#2{#6}} -\def\lst@UM#1{\csname\@lst @um#1@\endcsname} -\lst@CCPutMacro - \lst@ProcessOther {"23}\# - \lst@ProcessLetter{"24}\textdollar - \lst@ProcessOther {"25}\% - \lst@ProcessOther {"26}\& - \lst@ProcessOther {"27}{\lst@ifupquote \textquotesingle - \else \char39\relax \fi} - \lst@ProcessOther {"2A}{\lst@ttfamily*\textasteriskcentered} - \lst@ProcessOther {"2D}{\lst@ttfamily{-{}}{$-$}} - \lst@ProcessOther {"3C}{\lst@ttfamily<\textless} - \lst@ProcessOther {"3E}{\lst@ttfamily>\textgreater} - \lst@ProcessOther {"5C}{\lst@ttfamily{\char92}\textbackslash} - \lst@ProcessOther {"5E}\textasciicircum - \lst@ProcessLetter{"5F}{\lst@ttfamily{\char95}\textunderscore} - \lst@ProcessOther {"60}{\lst@ifupquote \textasciigrave - \else \char96\relax \fi} - \lst@ProcessOther {"7B}{\lst@ttfamily{\char123}\textbraceleft} - \lst@ProcessOther {"7C}{\lst@ttfamily|\textbar} - \lst@ProcessOther {"7D}{\lst@ttfamily{\char125}\textbraceright} - \lst@ProcessOther {"7E}\textasciitilde - \lst@ProcessOther {"7F}- - \@empty\z@\@empty -\def\lst@ttfamily#1#2{\ifx\f@family\ttdefault#1\relax\else#2\fi} -\lst@AddToHook{Init}{\edef\ttdefault{\ttdefault}} -\lst@Key{upquote}{false}[t]{\lstKV@SetIf{#1}\lst@ifupquote - \lst@ifupquote - \@ifundefined{textasciigrave}% - {\let\KV@lst@upquote\@gobble - \lstKV@SetIf f\lst@ifupquote \@gobble\fi - \PackageError{Listings}{Option `upquote' requires `textcomp' - package.\MessageBreak The option has been disabled}% - {Add \string\usepackage{textcomp} to your preamble.}}% - {}% - \fi} -\AtBeginDocument{% - \@ifpackageloaded{upquote}{\RequirePackage{textcomp}% - \lstset{upquote}}{}% - \@ifpackageloaded{upquote2}{\lstset{upquote}}{}} -\def\lst@activecharstrue{\let\lst@ifactivechars\iftrue} -\def\lst@activecharsfalse{\let\lst@ifactivechars\iffalse} -\lst@activecharstrue -\def\lst@SelectCharTable{% - \lst@SelectStdCharTable - \lst@ifactivechars - \catcode9\active \catcode12\active \catcode13\active - \@tempcnta=32\relax - \@whilenum\@tempcnta<128\do - {\catcode\@tempcnta\active\advance\@tempcnta\@ne}% - \fi - \lst@ifec \lst@DefEC \fi - \let\do\lst@do@noligs \verbatim@nolig@list - \lsthk@SelectCharTable - \lst@DeveloperSCT -\lst@DefRange - \ifx\lst@Backslash\relax\else - \lst@LetSaveDef{"5C}\lsts@backslash\lst@Backslash - \fi} -\lst@Key{SelectCharTable}{}{\def\lst@DeveloperSCT{#1}} -\lst@Key{MoreSelectCharTable}\relax{\lst@lAddTo\lst@DeveloperSCT{#1}} -\lst@AddToHook{SetLanguage}{\let\lst@DeveloperSCT\@empty} -\def\lst@do@noligs#1{% - \begingroup \lccode`\~=`#1\lowercase{\endgroup - \lst@do@noligs@~}} -\def\lst@do@noligs@#1{% - \expandafter\expandafter\expandafter\def - \expandafter\expandafter\expandafter#1% - \expandafter\expandafter\expandafter{\expandafter\lst@NoLig#1}} -\def\lst@NoLig{\advance\lst@length\m@ne \lst@Append\lst@nolig} -\def\lst@nolig{\lst@UM\@empty}% -\@namedef{\@lst @um@}{\leavevmode\kern\z@} -\def\lst@SaveOutputDef#1#2{% - \begingroup \lccode`\~=#1\relax \lowercase{\endgroup - \def\lst@temp##1\def~##2##3\relax}{% - \global\expandafter\let\expandafter#2\@gobble##2\relax}% - \expandafter\lst@temp\lst@SelectStdCharTable\relax} -\lst@SaveOutputDef{"5C}\lstum@backslash -\lst@Key{extendedchars}{true}[t]{\lstKV@SetIf{#1}\lst@ifec} -\def\lst@DefEC{% - \lst@CCECUse \lst@ProcessLetter - ^^80^^81^^82^^83^^84^^85^^86^^87^^88^^89^^8a^^8b^^8c^^8d^^8e^^8f% - ^^90^^91^^92^^93^^94^^95^^96^^97^^98^^99^^9a^^9b^^9c^^9d^^9e^^9f% - ^^a0^^a1^^a2^^a3^^a4^^a5^^a6^^a7^^a8^^a9^^aa^^ab^^ac^^ad^^ae^^af% - ^^b0^^b1^^b2^^b3^^b4^^b5^^b6^^b7^^b8^^b9^^ba^^bb^^bc^^bd^^be^^bf% - ^^c0^^c1^^c2^^c3^^c4^^c5^^c6^^c7^^c8^^c9^^ca^^cb^^cc^^cd^^ce^^cf% - ^^d0^^d1^^d2^^d3^^d4^^d5^^d6^^d7^^d8^^d9^^da^^db^^dc^^dd^^de^^df% - ^^e0^^e1^^e2^^e3^^e4^^e5^^e6^^e7^^e8^^e9^^ea^^eb^^ec^^ed^^ee^^ef% - ^^f0^^f1^^f2^^f3^^f4^^f5^^f6^^f7^^f8^^f9^^fa^^fb^^fc^^fd^^fe^^ff% - ^^00} -\def\lst@CCECUse#1#2{% - \ifnum`#2=\z@ - \expandafter\@gobbletwo - \else - \ifnum\catcode`#2=\active - \lccode`\~=`#2\lccode`\/=`#2\lowercase{\lst@CCECUse@#1~/}% - \else - \lst@ifactivechars \catcode`#2=\active \fi - \lccode`\~=`#2\lccode`\/=`#2\lowercase{\def~{#1/}}% - \fi - \fi - \lst@CCECUse#1} -\def\lst@CCECUse@#1#2#3{% - \expandafter\def\csname\@lst @EC#3\endcsname{\lst@UM#3}% - \expandafter\let\csname\@lst @um#3@\endcsname #2% - \edef#2{\noexpand#1% - \expandafter\noexpand\csname\@lst @EC#3\endcsname}} -\lst@AddToHook{Init} - {\let\lsts@nfss@catcodes\nfss@catcodes - \let\nfss@catcodes\lst@nfss@catcodes} -\def\lst@nfss@catcodes{% - \lst@makeletter - ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\relax - \@makeother (\@makeother )\@makeother ,\@makeother :\@makeother\&% - \@makeother 0\@makeother 1\@makeother 2\@makeother 3\@makeother 4% - \@makeother 5\@makeother 6\@makeother 7\@makeother 8\@makeother 9% - \@makeother =\lsts@nfss@catcodes} -\def\lst@makeletter#1{% - \ifx\relax#1\else\catcode`#111\relax \expandafter\lst@makeletter\fi} -\lst@Key{useoutput}{2}{\edef\lst@useoutput{\ifcase#10 0\or 1\else 2\fi}} -\lst@AddToHook{Init} -{\edef\lst@OrgOutput{\the\output}% -\ifcase\lst@useoutput\relax -\or - \output{\global\setbox\lst@gtempboxa\box\@cclv - \expandafter\egroup - \lst@SaveToken - \lst@InterruptModes - \setbox\@cclv\box\lst@gtempboxa - \bgroup\lst@OrgOutput\egroup - \bgroup - \aftergroup\pagegoal\aftergroup\vsize - \aftergroup\lst@ReenterModes\aftergroup\lst@RestoreToken}% -\else - \output{\lst@RestoreOrigCatcodes - \lst@ifec \lst@RestoreOrigExtendedCatcodes \fi - \lst@OrgOutput}% -\fi} -\def\lst@GetChars#1#2#3{% - \let#1\@empty - \@tempcnta#2\relax \@tempcntb#3\relax - \loop \ifnum\@tempcnta<\@tempcntb\relax - \lst@lExtend#1{\expandafter\catcode\the\@tempcnta=}% - \lst@lExtend#1{\the\catcode\@tempcnta\relax}% - \ifnum\the\catcode\@tempcnta=\active - \begingroup\lccode`\~=\@tempcnta - \lowercase{\endgroup - \lst@lExtend#1{\expandafter\let\expandafter~\csname - lstecs@\the\@tempcnta\endcsname}% - \expandafter\let\csname lstecs@\the\@tempcnta\endcsname~}% - \fi - \advance\@tempcnta\@ne - \repeat} -\def\lst@ScanChars{% - \lst@GetChars\lst@RestoreOrigCatcodes\@ne {128}% - \lst@GetChars\lst@RestoreOrigExtendedCatcodes{128}{256}} -\lst@Key{rescanchars}\relax{\lst@ScanChars} -\AtBeginDocument{\lst@ScanChars} -\lst@Key{alsoletter}\relax{% - \lst@DoAlso{#1}\lst@alsoletter\lst@ProcessLetter} -\lst@Key{alsodigit}\relax{% - \lst@DoAlso{#1}\lst@alsodigit\lst@ProcessDigit} -\lst@Key{alsoother}\relax{% - \lst@DoAlso{#1}\lst@alsoother\lst@ProcessOther} -\lst@AddToHook{SelectCharTable} - {\lst@alsoother \lst@alsodigit \lst@alsoletter} -\lst@AddToHookExe{SetLanguage}% init - {\let\lst@alsoletter\@empty - \let\lst@alsodigit\@empty - \let\lst@alsoother\@empty} -\def\lst@DoAlso#1#2#3{% - \lst@DefOther\lst@arg{#1}\let#2\@empty - \expandafter\lst@DoAlso@\expandafter#2\expandafter#3\lst@arg\relax} -\def\lst@DoAlso@#1#2#3{% - \ifx\relax#3\expandafter\@gobblethree \else - \begingroup \lccode`\~=`#3\relax \lowercase{\endgroup - \def\lst@temp##1\def~##2##3\relax{% - \edef\lst@arg{\def\noexpand~{\noexpand#2\expandafter - \noexpand\@gobble##2}}}}% - \expandafter\lst@temp\lst@SelectStdCharTable\relax - \lst@lExtend#1{\lst@arg}% - \fi - \lst@DoAlso@#1#2} -\def\lst@SaveDef#1#2{% - \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~}} -\def\lst@DefSaveDef#1#2{% - \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\def~}} -\def\lst@LetSaveDef#1#2{% - \begingroup \lccode`\~=#1\relax \lowercase{\endgroup\let#2~\let~}} -\def\lst@CDef#1{\lst@CDef@#1} -\def\lst@CDef@#1#2#3#4{\lst@CDefIt#1{#2}{#3}{#4#2#3}#4} -\def\lst@CDefX#1{\lst@CDefX@#1} -\def\lst@CDefX@#1#2#3{\lst@CDefIt#1{#2}{#3}{}} -\def\lst@CDefIt#1#2#3#4#5#6#7#8{% - \ifx\@empty#2\@empty - \def#1{#6\def\lst@next{#7#4#8}\lst@next}% - \else \ifx\@empty#3\@empty - \def#1##1{% - #6% - \ifx##1#2\def\lst@next{#7#4#8}\else - \def\lst@next{#5##1}\fi - \lst@next}% - \else - \def#1{% - #6% - \lst@IfNextCharsArg{#2#3}{#7#4#8}% - {\expandafter#5\lst@eaten}}% - \fi \fi} -\def\lst@CArgX#1#2\relax{% - \lst@DefActive\lst@arg{#1#2}% - \expandafter\lst@CArg\lst@arg\relax} -\def\lst@CArg#1#2\relax{% - \lccode`\/=`#1\lowercase{\def\lst@temp{/}}% - \lst@GetFreeMacro{lst@c\lst@temp}% - \expandafter\lst@CArg@\lst@freemacro#1#2\@empty\@empty\relax} -\def\lst@CArg@#1#2#3#4\@empty#5\relax#6{% - \let#1#2% - \ifx\@empty#3\@empty - \def\lst@next{#6{#2{}{}}}% - \else - \def\lst@next{#6{#2#3{#4}}}% - \fi - \lst@next #1} -\def\lst@CArgEmpty#1\@empty{#1} -\lst@Key{excludedelims}\relax - {\lsthk@ExcludeDelims \lst@NormedDef\lst@temp{#1}% - \expandafter\lst@for\lst@temp\do - {\expandafter\let\csname\@lst @ifex##1\endcsname\iftrue}} -\def\lst@DelimPrint#1#2{% - #1% - \begingroup - \lst@mode\lst@nomode \lst@modetrue - #2\lst@XPrintToken - \endgroup - \lst@ResetToken - \fi} -\def\lst@DelimOpen#1#2#3#4#5#6\@empty{% - \lst@TrackNewLines \lst@XPrintToken - \lst@DelimPrint#1{#6}% - \lst@EnterMode{#4}{\def\lst@currstyle#5}% - \lst@DelimPrint{#1#2}{#6}% - #3} -\def\lst@DelimClose#1#2#3\@empty{% - \lst@TrackNewLines \lst@XPrintToken - \lst@DelimPrint{#1#2}{#3}% - \lst@LeaveMode - \lst@DelimPrint{#1}{#3}} -\def\lst@BeginDelim{\lst@DelimOpen\iffalse\else{}} -\def\lst@EndDelim{\lst@DelimClose\iffalse\else} -\def\lst@BeginIDelim{\lst@DelimOpen\iffalse{}{}} -\def\lst@EndIDelim{\lst@DelimClose\iffalse{}} -\lst@AddToHook{SelectCharTable}{\lst@DefDelims} -\lst@AddToHookExe{SetLanguage}{\let\lst@DefDelims\@empty} -\def\lst@Delim#1{% - \lst@false \let\lst@cumulative\@empty \let\lst@arg\@empty - \@ifstar{\@ifstar{\lst@Delim@{#1}}% - {\let\lst@cumulative\relax - \lst@Delim@{#1}}}% - {\lst@true\lst@Delim@{#1}}} -\def\lst@Delim@#1[#2]{% - \gdef\lst@delimtype{#2}% - \@ifnextchar[\lst@Delim@sty - {\lst@Delim@sty[#1]}} -\def\lst@Delim@sty[#1]{% - \def\lst@delimstyle{#1}% - \ifx\@empty#1\@empty\else - \lst@Delim@sty@ #1\@nil - \fi - \@ifnextchar[\lst@Delim@option - \lst@Delim@delim} -\def\lst@Delim@option[#1]{\def\lst@arg{[#1]}\lst@Delim@delim} -\def\lst@Delim@sty@#1#2\@nil{% - \if\relax\noexpand#1\else - \edef\lst@delimstyle{\expandafter\noexpand - \csname\@lst @\lst@delimstyle\endcsname}% - \fi} -\def\lst@Delim@delim#1\relax#2#3#4#5#6#7#8{% - \ifx #4\@empty \lst@Delim@delall{#2}\fi - \ifx\@empty#1\@empty - \ifx #4\@nil - \@ifundefined{\@lst @#2DM@\lst@delimtype}% - {\lst@Delim@delall{#2@\lst@delimtype}}% - {\lst@Delim@delall{#2DM@\lst@delimtype}}% - \fi - \else - \expandafter\lst@Delim@args\expandafter - {\lst@delimtype}{#1}{#5}#6{#7}{#8}#4% - \let\lst@delim\@empty - \expandafter\lst@IfOneOf\lst@delimtype\relax#3% - {\@ifundefined{\@lst @#2DM@\lst@delimtype}% - {\lst@lExtend\lst@delim{\csname\@lst @#2@\lst@delimtype - \expandafter\endcsname\lst@arg}}% - {\lst@lExtend\lst@delim{\expandafter\lst@UseDynamicMode - \csname\@lst @#2DM@\lst@delimtype - \expandafter\endcsname\lst@arg}}% - \ifx #4\@nil - \let\lst@temp\lst@DefDelims \let\lst@DefDelims\@empty - \expandafter\lst@Delim@del\lst@temp\@empty\@nil\@nil\@nil - \else - \lst@lExtend\lst@DefDelims\lst@delim - \fi}% - {\PackageError{Listings}{Illegal type `\lst@delimtype'}% - {#2 types are #3.}}% - \fi} -\def\lst@Delim@args#1#2#3#4#5#6#7{% - \begingroup - \lst@false \let\lst@next\lst@XConvert - \@ifnextchar #4{\xdef\lst@delimtype{\expandafter\@gobble - \lst@delimtype}% - #5\lst@next#2\@nil - \lst@lAddTo\lst@arg{\@empty#6}% - \lst@GobbleNil}% - {\lst@next#2\@nil - \lst@lAddTo\lst@arg{\@empty#3}% - \lst@GobbleNil}% - #1\@nil - \global\let\@gtempa\lst@arg - \endgroup - \let\lst@arg\@gtempa - \ifx #7\@nil\else - \expandafter\lst@Delim@args@\expandafter{\lst@delimstyle}% - \fi} -\def\lst@Delim@args@#1{% - \lst@if - \lst@lAddTo\lst@arg{{{#1}\lst@modetrue}}% - \else - \ifx\lst@cumulative\@empty - \lst@lAddTo\lst@arg{{{}#1}}% - \else - \lst@lAddTo\lst@arg{{{#1}}}% - \fi - \fi} -\def\lst@Delim@del#1\@empty#2#3#4{% - \ifx #2\@nil\else - \def\lst@temp{#1\@empty#2#3}% - \ifx\lst@temp\lst@delim\else - \lst@lAddTo\lst@DefDelims{#1\@empty#2#3{#4}}% - \fi - \expandafter\lst@Delim@del - \fi} -\def\lst@Delim@delall#1{% - \begingroup - \edef\lst@delim{\expandafter\string\csname\@lst @#1\endcsname}% - \lst@false \global\let\@gtempa\@empty - \expandafter\lst@Delim@delall@\lst@DefDelims\@empty - \endgroup - \let\lst@DefDelims\@gtempa} -\def\lst@Delim@delall@#1{% - \ifx #1\@empty\else - \ifx #1\lst@UseDynamicMode - \lst@true - \let\lst@next\lst@Delim@delall@do - \else - \def\lst@next{\lst@Delim@delall@do#1}% - \fi - \expandafter\lst@next - \fi} -\def\lst@Delim@delall@do#1#2\@empty#3#4#5{% - \expandafter\lst@IfSubstring\expandafter{\lst@delim}{\string#1}% - {}% - {\lst@if \lst@AddTo\@gtempa\lst@UseDynamicMode \fi - \lst@AddTo\@gtempa{#1#2\@empty#3#4{#5}}}% - \lst@false \lst@Delim@delall@} -\gdef\lst@DefDelimB#1#2#3#4#5#6#7#8{% - \lst@CDef{#1}#2% - {#3}% - {\let\lst@bnext\lst@CArgEmpty - \lst@ifmode #4\else - #5% - \def\lst@bnext{#6{#7}{#8}}% - \fi - \lst@bnext}% - \@empty} -\gdef\lst@DefDelimE#1#2#3#4#5#6#7{% - \lst@CDef{#1}#2% - {#3}% - {\let\lst@enext\lst@CArgEmpty - \ifnum #7=\lst@mode% - #4% - \let\lst@enext#6% - \else - #5% - \fi - \lst@enext}% - \@empty} -\lst@AddToHook{Init}{\let\lst@bnext\relax \let\lst@enext\relax} -\gdef\lst@DefDelimBE#1#2#3#4#5#6#7#8#9{% - \lst@CDef{#1}#2% - {#3}% - {\let\lst@bnext\lst@CArgEmpty - \ifnum #7=\lst@mode - #4% - \let\lst@bnext#9% - \else - \lst@ifmode\else - #5% - \def\lst@bnext{#6{#7}{#8}}% - \fi - \fi - \lst@bnext}% - \@empty} -\gdef\lst@delimtypes{s,l} -\gdef\lst@DelimKey#1#2{% - \lst@Delim{}#2\relax - {Delim}\lst@delimtypes #1% - {\lst@BeginDelim\lst@EndDelim} - i\@empty{\lst@BeginIDelim\lst@EndIDelim}} -\lst@Key{delim}\relax{\lst@DelimKey\@empty{#1}} -\lst@Key{moredelim}\relax{\lst@DelimKey\relax{#1}} -\lst@Key{deletedelim}\relax{\lst@DelimKey\@nil{#1}} -\gdef\lst@DelimDM@l#1#2\@empty#3#4#5{% - \lst@CArg #2\relax\lst@DefDelimB{}{}{}#3{#1}{#5\lst@Lmodetrue}} -\gdef\lst@DelimDM@s#1#2#3\@empty#4#5#6{% - \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}% - \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}} -\def\lst@ReplaceInput#1{\lst@CArgX #1\relax\lst@CDefX{}{}} -\def\lst@Literatekey#1\@nil@{\let\lst@ifxliterate\lst@if - \def\lst@literate{#1}} -\lst@Key{literate}{}{\@ifstar{\lst@true \lst@Literatekey} - {\lst@false\lst@Literatekey}#1\@nil@} -\lst@AddToHook{SelectCharTable} - {\ifx\lst@literate\@empty\else - \expandafter\lst@Literate\lst@literate{}\relax\z@ - \fi} -\def\lst@Literate#1#2#3{% - \ifx\relax#2\@empty\else - \lst@CArgX #1\relax\lst@CDef - {} - {\let\lst@next\@empty - \lst@ifxliterate - \lst@ifmode \let\lst@next\lst@CArgEmpty \fi - \fi - \ifx\lst@next\@empty - \ifx\lst@OutputBox\@gobble\else - \lst@XPrintToken \let\lst@scanmode\lst@scan@m - \lst@token{#2}\lst@length#3\relax - \lst@XPrintToken - \fi - \let\lst@next\lst@CArgEmptyGobble - \fi - \lst@next}% - \@empty - \expandafter\lst@Literate - \fi} -\def\lst@CArgEmptyGobble#1\@empty{} -\def\lst@BeginDropInput#1{% - \lst@EnterMode{#1}% - {\lst@modetrue - \let\lst@OutputBox\@gobble - \let\lst@ifdropinput\iftrue - \let\lst@ProcessLetter\@gobble - \let\lst@ProcessDigit\@gobble - \let\lst@ProcessOther\@gobble - \let\lst@ProcessSpace\@empty - \let\lst@ProcessTabulator\@empty - \let\lst@ProcessFormFeed\@empty}} -\let\lst@ifdropinput\iffalse % init -\lst@Key{basicstyle}\relax{\def\lst@basicstyle{#1}} -\lst@Key{inputencoding}\relax{\def\lst@inputenc{#1}} -\lst@AddToHook{Init} - {\lst@basicstyle - \ifx\lst@inputenc\@empty\else - \@ifundefined{inputencoding}{}% - {\inputencoding\lst@inputenc}% - \fi} -\lst@AddToHookExe{EmptyStyle} - {\let\lst@basicstyle\@empty - \let\lst@inputenc\@empty} -\def\lst@parshape{\parshape\@ne \z@ \linewidth} -\lst@AddToHookAtTop{EveryLine}{\lst@parshape} -\lst@AddToHookAtTop{EndGroup}{\lst@parshape} -\newcount\lst@lineno % \global -\lst@AddToHook{InitVars}{\global\lst@lineno\@ne} -\lst@Key{print}{true}[t]{\lstKV@SetIf{#1}\lst@ifprint} -\lst@Key{firstline}\relax{\def\lst@firstline{#1\relax}} -\lst@Key{lastline}\relax{\def\lst@lastline{#1\relax}} -\lst@AddToHook{PreSet} - {\let\lst@firstline\@ne \def\lst@lastline{9999999\relax}} -\lst@Key{linerange}\relax{\lstKV@OptArg[]{#1}{% - \def\lst@interrange{##1}\def\lst@linerange{##2,}}} -\lst@AddToHook{PreSet}{\def\lst@firstline{1\relax}% - \let\lst@linerange\@empty} -\lst@AddToHook{Init} -{\ifx\lst@linerange\@empty - \edef\lst@linerange{{\lst@firstline}-{\lst@lastline},}% - \fi - \lst@GetLineInterval}% -\def\lst@GetLineInterval{\expandafter\lst@GLI\lst@linerange\@nil} -\def\lst@GLI#1,#2\@nil{\def\lst@linerange{#2}\lst@GLI@#1--\@nil} -\def\lst@GLI@#1-#2-#3\@nil{% - \ifx\@empty#1\@empty - \let\lst@firstline\@ne - \else - \def\lst@firstline{#1\relax}% - \fi - \ifx\@empty#2\@empty - \def\lst@lastline{9999999\relax}% - \else - \ifx -#2% - \let\lst@lastline\lst@firstline - \else - \def\lst@lastline{#2\relax}% - \fi - \fi} -\lst@Key{nolol}{false}[t]{\lstKV@SetIf{#1}\lst@ifnolol} -\def\lst@nololtrue{\let\lst@ifnolol\iftrue} -\let\lst@ifnolol\iffalse % init -\lst@Key{captionpos}{t}{\def\lst@captionpos{#1}} -\lst@Key{abovecaptionskip}\smallskipamount{\def\lst@abovecaption{#1}} -\lst@Key{belowcaptionskip}\smallskipamount{\def\lst@belowcaption{#1}} -\lst@Key{label}\relax{\def\lst@label{#1}} -\lst@Key{title}\relax{\def\lst@title{#1}\let\lst@caption\relax} -\lst@Key{caption}\relax{\lstKV@OptArg[{#1}]{#1}% - {\def\lst@caption{##2}\def\lst@@caption{##1}}% - \let\lst@title\@empty} -\lst@AddToHookExe{TextStyle} - {\let\lst@caption\@empty \let\lst@@caption\@empty - \let\lst@title\@empty \let\lst@label\@empty} -\@ifundefined{thechapter} - {\newcounter{lstlisting} - \renewcommand\thelstlisting{\@arabic\c@lstlisting}} - {\newcounter{lstlisting}[chapter] - \renewcommand\thelstlisting - {\ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@lstlisting}} -\lst@UserCommand\lstlistingname{Listing} -\@ifundefined{abovecaptionskip} -{\newskip\abovecaptionskip - \newskip\belowcaptionskip}{} -\@ifundefined{@makecaption} -{\long\def\@makecaption#1#2{% - \vskip\abovecaptionskip - \sbox\@tempboxa{#1: #2}% - \ifdim \wd\@tempboxa >\hsize - #1: #2\par - \else - \global \@minipagefalse - \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% - \fi - \vskip\belowcaptionskip}% -}{} -\def\fnum@lstlisting{% - \lstlistingname - \ifx\lst@@caption\@empty\else~\thelstlisting\fi}% -\def\lst@MakeCaption#1{% - \lst@ifdisplaystyle - \ifx #1t% - \ifx\lst@@caption\@empty\expandafter\lst@HRefStepCounter \else - \expandafter\refstepcounter - \fi {lstlisting}% - \ifx\lst@label\@empty\else \label{\lst@label}\fi - \let\lst@arg\lst@intname \lst@ReplaceIn\lst@arg\lst@filenamerpl - \global\let\lst@name\lst@arg \global\let\lstname\lst@name - \lst@ifnolol\else - \ifx\lst@@caption\@empty - \ifx\lst@caption\@empty - \ifx\lst@intname\@empty \else \def\lst@temp{ }% - \ifx\lst@intname\lst@temp \else - \addcontentsline{lol}{lstlisting}\lst@name - \fi\fi - \fi - \else - \addcontentsline{lol}{lstlisting}% - {\protect\numberline{\thelstlisting}\lst@@caption}% - \fi - \fi - \fi - \ifx\lst@caption\@empty\else - \lst@IfSubstring #1\lst@captionpos - {\begingroup \let\@@vskip\vskip - \def\vskip{\afterassignment\lst@vskip \@tempskipa}% - \def\lst@vskip{\nobreak\@@vskip\@tempskipa\nobreak}% - \par\@parboxrestore\normalsize\normalfont % \noindent (AS) - \ifx #1t\allowbreak \fi - \ifx\lst@title\@empty - \lst@makecaption\fnum@lstlisting\lst@caption % (AS) - \else - \lst@maketitle\lst@title % (AS) - \fi - \ifx #1b\allowbreak \fi - \endgroup}{}% - \fi - \fi} -\def\lst@makecaption{\@makecaption} -\def\lst@maketitle{\@makecaption\lst@title@dropdelim} -\def\lst@title@dropdelim#1{\ignorespaces} -\AtBeginDocument{% -\@ifundefined{captionlabelfalse}{}{% - \def\lst@maketitle{\captionlabelfalse\@makecaption\@empty}}% -\@ifundefined{caption@startrue}{}{% - \def\lst@maketitle{\caption@startrue\@makecaption\@empty}}% -} -\def\lst@HRefStepCounter#1{% - \begingroup - \c@lstlisting\lst@neglisting - \advance\c@lstlisting\m@ne \xdef\lst@neglisting{\the\c@lstlisting}% - \ifx\hyper@refstepcounter\@undefined\else - \hyper@refstepcounter{#1}% - \fi - \endgroup} -\gdef\lst@neglisting{\z@}% init -\lst@Key{boxpos}{c}{\def\lst@boxpos{#1}} -\def\lst@boxtrue{\let\lst@ifbox\iftrue} -\let\lst@ifbox\iffalse -\lst@Key{float}\relax[\lst@floatplacement]{% - \lstKV@SwitchCases{#1}% - {true&\let\lst@floatdefault\lst@floatplacement - \let\lst@float\lst@floatdefault\\% - false&\let\lst@floatdefault\relax - \let\lst@float\lst@floatdefault - }{\def\lst@next{\@ifstar{\let\lst@beginfloat\@dblfloat - \let\lst@endfloat\end@dblfloat - \lst@KFloat}% - {\let\lst@beginfloat\@float - \let\lst@endfloat\end@float - \lst@KFloat}} - \edef\lst@float{#1}% - \expandafter\lst@next\lst@float\relax}} -\def\lst@KFloat#1\relax{% - \ifx\@empty#1\@empty - \let\lst@float\lst@floatplacement - \else - \def\lst@float{#1}% - \fi} -\lst@Key{floatplacement}{tbp}{\def\lst@floatplacement{#1}} -\lst@AddToHook{PreSet}{\let\lst@float\lst@floatdefault} -\lst@AddToHook{TextStyle}{\let\lst@float\relax} -\let\lst@floatdefault\relax % init -\lst@AddToHook{DeInit}{% - \ifx\lst@float\relax - \global\let\lst@doendpe\@doendpe - \else - \global\let\lst@doendpe\@empty - \fi} -\AtBeginDocument{% -\@ifundefined{c@float@type}% - {\edef\ftype@lstlisting{\ifx\c@figure\@undefined 1\else 4\fi}} - {\edef\ftype@lstlisting{\the\c@float@type}% - \addtocounter{float@type}{\value{float@type}}}% -} -\lst@Key{aboveskip}\medskipamount{\def\lst@aboveskip{#1}} -\lst@Key{belowskip}\medskipamount{\def\lst@belowskip{#1}} -\lst@AddToHook{TextStyle} - {\let\lst@aboveskip\z@ \let\lst@belowskip\z@} -\lst@Key{everydisplay}{}{\def\lst@EveryDisplay{#1}} -\lst@AddToHook{TextStyle}{\let\lst@ifdisplaystyle\iffalse} -\lst@AddToHook{DisplayStyle}{\let\lst@ifdisplaystyle\iftrue} -\let\lst@ifdisplaystyle\iffalse -\def\lst@Init#1{% - \begingroup - \ifx\lst@float\relax\else - \edef\@tempa{\noexpand\lst@beginfloat{lstlisting}[\lst@float]}% - \expandafter\@tempa - \fi - \ifhmode\ifinner \lst@boxtrue \fi\fi - \lst@ifbox - \lsthk@BoxUnsafe - \hbox to\z@\bgroup - $\if t\lst@boxpos \vtop - \else \if b\lst@boxpos \vbox - \else \vcenter \fi\fi - \bgroup \par\noindent - \else - \lst@ifdisplaystyle - \lst@EveryDisplay - \par\penalty-50\relax - \vspace\lst@aboveskip - \fi - \fi - \normalbaselines - \abovecaptionskip\lst@abovecaption\relax - \belowcaptionskip\lst@belowcaption\relax - \lst@MakeCaption t% - \lsthk@PreInit \lsthk@Init - \lst@ifdisplaystyle - \global\let\lst@ltxlabel\@empty - \if@inlabel - \lst@ifresetmargins - \leavevmode - \else - \xdef\lst@ltxlabel{\the\everypar}% - \lst@AddTo\lst@ltxlabel{% - \global\let\lst@ltxlabel\@empty - \everypar{\lsthk@EveryLine\lsthk@EveryPar}}% - \fi - \fi - \everypar\expandafter{\lst@ltxlabel - \lsthk@EveryLine\lsthk@EveryPar}% - \else - \everypar{}\let\lst@NewLine\@empty - \fi - \lsthk@InitVars \lsthk@InitVarsBOL - \lst@Let{13}\lst@MProcessListing - \let\lst@Backslash#1% - \lst@EnterMode{\lst@Pmode}{\lst@SelectCharTable}% - \lst@InitFinalize} -\let\lst@InitFinalize\@empty % init -\lst@AddToHook{PreInit} - {\rightskip\z@ \leftskip\z@ \parfillskip=\z@ plus 1fil - \let\par\@@par} -\lst@AddToHook{EveryLine}{}% init -\lst@AddToHook{EveryPar}{}% init -\lst@Key{showlines}f[t]{\lstKV@SetIf{#1}\lst@ifshowlines} -\def\lst@DeInit{% - \lst@XPrintToken \lst@EOLUpdate - \global\advance\lst@newlines\m@ne - \lst@ifshowlines - \lst@DoNewLines - \else - \setbox\@tempboxa\vbox{\lst@DoNewLines}% - \fi - \lst@ifdisplaystyle \par\removelastskip \fi - \lsthk@ExitVars\everypar{}\lsthk@DeInit\normalbaselines\normalcolor - \lst@MakeCaption b% - \lst@ifbox - \egroup $\hss \egroup - \vrule\@width\lst@maxwidth\@height\z@\@depth\z@ - \else - \lst@ifdisplaystyle - \par\penalty-50\vspace\lst@belowskip - \fi - \fi - \ifx\lst@float\relax\else - \expandafter\lst@endfloat - \fi - \endgroup} -\newdimen\lst@maxwidth % \global -\lst@AddToHook{InitVars}{\global\lst@maxwidth\z@} -\lst@AddToHook{InitVarsEOL} - {\ifdim\lst@currlwidth>\lst@maxwidth - \global\lst@maxwidth\lst@currlwidth - \fi} -\def\lst@EOLUpdate{\lsthk@EOL \lsthk@InitVarsEOL} -\def\lst@MProcessListing{% - \lst@XPrintToken \lst@EOLUpdate \lsthk@InitVarsBOL - \global\advance\lst@lineno\@ne - \ifnum \lst@lineno>\lst@lastline - \lst@ifdropinput \lst@LeaveMode \fi - \ifx\lst@linerange\@empty - \expandafter\expandafter\expandafter\lst@EndProcessListing - \else - \lst@interrange - \lst@GetLineInterval - \expandafter\expandafter\expandafter\lst@SkipToFirst - \fi - \else - \expandafter\lst@BOLGobble - \fi} -\let\lst@EndProcessListing\endinput -\lst@Key{gobble}{0}{\def\lst@gobble{#1}} -\def\lst@BOLGobble{% - \ifnum\lst@gobble>\z@ - \@tempcnta\lst@gobble\relax - \expandafter\lst@BOLGobble@ -\fi} -\def\lst@BOLGobble@@{% - \ifnum\@tempcnta>\z@ - \expandafter\lst@BOLGobble@ - \fi} -\def\lstenv@BOLGobble@@{% - \lst@IfNextChars\lstenv@endstring{\lstenv@End}% - {\advance\@tempcnta\m@ne \expandafter\lst@BOLGobble@@\lst@eaten}} -\def\lst@BOLGobble@#1{% - \let\lst@next#1% - \ifx \lst@next\relax\else - \ifx \lst@next\lst@MProcessListing\else - \ifx \lst@next\lst@processformfeed\else - \ifx \lst@next\lstenv@backslash - \let\lst@next\lstenv@BOLGobble@@ - \else - \let\lst@next\lst@BOLGobble@@ - \ifx #1\lst@processtabulator - \advance\@tempcnta-\lst@tabsize\relax - \ifnum\@tempcnta<\z@ - \lst@length-\@tempcnta \lst@PreGotoTabStop - \fi - \else - \advance\@tempcnta\m@ne - \fi - \fi \fi \fi \fi - \lst@next} -\def\lst@processformfeed{\lst@ProcessFormFeed} -\def\lst@processtabulator{\lst@ProcessTabulator} -\lst@Key{name}\relax{\def\lst@intname{#1}} -\lst@AddToHookExe{PreSet}{\global\let\lst@intname\@empty} -\lst@AddToHook{PreInit}{% - \let\lst@arg\lst@intname \lst@ReplaceIn\lst@arg\lst@filenamerpl - \global\let\lst@name\lst@arg \global\let\lstname\lst@name} -\def\lst@filenamerpl{_\textunderscore $\textdollar -\textendash} -\def\l@lstlisting#1#2{\@dottedtocline{1}{1.5em}{2.3em}{#1}{#2}} -\lst@UserCommand\lstlistlistingname{Listings} -\lst@UserCommand\lstlistoflistings{\bgroup - \let\contentsname\lstlistlistingname - \let\lst@temp\@starttoc \def\@starttoc##1{\lst@temp{lol}}% - \tableofcontents \egroup} -\@ifpackageloaded{scrlfile} -{\newcommand*\lol@heading{\float@listhead{\lstlistlistingname}} - \renewcommand*\lstlistoflistings{% - \begingroup% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \lol@heading% - \@parskipfalse\@parskip@indent% - \@starttoc{lol}% - \if@restonecol\twocolumn\fi - \endgroup}% -}{} -\newcommand\lstinline[1][]{% - \leavevmode\bgroup % \hbox\bgroup --> \bgroup - \def\lst@boxpos{b}% - \lsthk@PreSet\lstset{flexiblecolumns,#1}% - \lsthk@TextStyle - \@ifnextchar\bgroup{\afterassignment\lst@InlineG \let\@let@token}% - \lstinline@} -\def\lstinline@#1{% - \lst@Init\relax - \lst@IfNextCharActive{\lst@InlineM#1}{\lst@InlineJ#1}} -\lst@AddToHook{TextStyle}{}% init -\lst@AddToHook{SelectCharTable}{\lst@inlinechars} -\global\let\lst@inlinechars\@empty -\def\lst@InlineM#1{\gdef\lst@inlinechars{% - \lst@Def{`#1}{\lst@DeInit\egroup\global\let\lst@inlinechars\@empty}% - \lst@Def{13}{\lst@DeInit\egroup \global\let\lst@inlinechars\@empty - \PackageError{Listings}{lstinline ended by EOL}\@ehc}}% - \lst@inlinechars} -\def\lst@InlineJ#1{% - \def\lst@temp##1#1{% - \let\lst@arg\@empty \lst@InsideConvert{##1}\lst@arg - \lst@DeInit\egroup}% - \lst@temp} -\def\lst@InlineG{% - \lst@Init\relax - \lst@IfNextCharActive{\lst@InlineM\}}% - {\let\lst@arg\@empty \lst@InlineGJ}} -\def\lst@InlineGJ{\futurelet\@let@token\lst@InlineGJTest} -\def\lst@InlineGJTest{% - \ifx\@let@token\egroup - \afterassignment\lst@InlineGJEnd - \expandafter\let\expandafter\@let@token - \else - \ifx\@let@token\@sptoken - \let\lst@next\lst@InlineGJReadSp - \else - \let\lst@next\lst@InlineGJRead - \fi - \expandafter\lst@next - \fi} -\def\lst@InlineGJEnd{\lst@arg\lst@DeInit\egroup} -\def\lst@InlineGJRead#1{% - \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% - \lst@InlineGJ} -\def\lst@InlineGJReadSp#1{% - \lccode`\~=`\ \lowercase{\lst@lAddTo\lst@arg~}% - \lst@InlineGJ#1} -\def\lst@MakePath#1{\ifx\@empty#1\@empty\else\lst@MakePath@#1/\@nil/\fi} -\def\lst@MakePath@#1/{#1/\lst@MakePath@@} -\def\lst@MakePath@@#1/{% - \ifx\@nil#1\expandafter\@gobble - \else \ifx\@empty#1\else #1/\fi \fi - \lst@MakePath@@} -\lst@Key{inputpath}{}{\edef\lst@inputpath{\lst@MakePath{#1}}} -\def\lstinputlisting{% - \begingroup \lst@setcatcodes \lst@inputlisting} -\newcommand\lst@inputlisting[2][]{% - \endgroup - \def\lst@set{#1}% - \IfFileExists{\lst@inputpath#2}% - {\expandafter\lst@InputListing\expandafter{\lst@inputpath#2}}% - {\filename@parse{\lst@inputpath#2}% - \edef\reserved@a{\noexpand\lst@MissingFileError - {\filename@area\filename@base}% - {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% - \reserved@a}% - \lst@doendpe \@newlistfalse \ignorespaces} -\def\lst@MissingFileError#1#2{% - \typeout{^^J! Package Listings Error: File `#1(.#2)' not found.^^J% - ^^JType X to quit or <RETURN> to proceed,^^J% - or enter new name. (Default extension: #2)^^J}% - \message{Enter file name: }% - {\endlinechar\m@ne \global\read\m@ne to\@gtempa}% - \ifx\@gtempa\@empty \else - \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi - \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi - \filename@parse\@gtempa - \edef\filename@ext{% - \ifx\filename@ext\relax#2\else\filename@ext\fi}% - \edef\reserved@a{\noexpand\IfFileExists % - {\filename@area\filename@base.\filename@ext}% - {\noexpand\lst@InputListing % - {\filename@area\filename@base.\filename@ext}}% - {\noexpand\lst@MissingFileError - {\filename@area\filename@base}{\filename@ext}}}% - \expandafter\reserved@a % - \fi} -\let\lst@ifdraft\iffalse -\DeclareOption{draft}{\let\lst@ifdraft\iftrue} -\DeclareOption{final}{\let\lst@ifdraft\iffalse} -\lst@AddToHook{PreSet} - {\lst@ifdraft - \let\lst@ifprint\iffalse - \@gobbletwo\fi\fi - \fi} -\def\lst@InputListing#1{% - \begingroup - \lsthk@PreSet \gdef\lst@intname{#1}% - \expandafter\lstset\expandafter{\lst@set}% - \lsthk@DisplayStyle - \catcode\active=\active - \lst@Init\relax \let\lst@gobble\z@ - \lst@SkipToFirst - \lst@ifprint \def\lst@next{\input{#1}}% - \else \let\lst@next\@empty \fi - \lst@next - \lst@DeInit - \endgroup} -\def\lst@SkipToFirst{% - \ifnum \lst@lineno<\lst@firstline - \lst@BeginDropInput\lst@Pmode - \lst@Let{13}\lst@MSkipToFirst - \lst@Let{10}\lst@MSkipToFirst - \else - \expandafter\lst@BOLGobble - \fi} -\def\lst@MSkipToFirst{% - \global\advance\lst@lineno\@ne - \ifnum \lst@lineno=\lst@firstline - \lst@LeaveMode \global\lst@newlines\z@ - \lsthk@InitVarsBOL - \expandafter\lst@BOLGobble - \fi} -\def\lstenv@DroppedWarning{% - \ifx\lst@dropped\@undefined\else - \PackageWarning{Listings}{Text dropped after begin of listing}% - \fi} -\let\lst@dropped\@undefined % init -\begingroup \lccode`\~=`\^^M\lowercase{% -\gdef\lstenv@Process#1{% - \ifx~#1% - \lstenv@DroppedWarning \let\lst@next\lst@SkipToFirst - \else\ifx^^J#1% - \lstenv@DroppedWarning \let\lst@next\lstenv@ProcessJ - \else - \let\lst@dropped#1\let\lst@next\lstenv@Process - \fi \fi - \lst@next} -}\endgroup -\def\lstenv@ProcessJ{% - \let\lst@arg\@empty - \ifx\@currenvir\lstenv@name - \expandafter\lstenv@ProcessJEnv - \else - \expandafter\def\expandafter\lst@temp\expandafter##1% - \csname end\lstenv@name\endcsname - {\lst@InsideConvert{##1}\lstenv@ProcessJ@}% - \expandafter\lst@temp - \fi} -\begingroup \lccode`\~=`\\\lowercase{% -\gdef\lstenv@ProcessJ@{% - \lst@lExtend\lst@arg - {\expandafter\ \expandafter~\lstenv@endstring}% - \catcode10=\active \lst@Let{10}\lst@MProcessListing - \lst@SkipToFirst \lst@arg} -}\endgroup -\def\lstenv@ProcessJEnv#1\end#2{\def\lst@temp{#2}% - \ifx\lstenv@name\lst@temp - \lst@InsideConvert{#1}% - \expandafter\lstenv@ProcessJ@ - \else - \lst@InsideConvert{#1\\end\{#2\}}% - \expandafter\lstenv@ProcessJEnv - \fi} -\def\lstenv@backslash{% - \lst@IfNextChars\lstenv@endstring - {\lstenv@End}% - {\expandafter\lsts@backslash \lst@eaten}}% -\def\lstenv@End{% - \ifx\@currenvir\lstenv@name - \edef\lst@next{\noexpand\end{\lstenv@name}}% - \else - \def\lst@next{\csname end\lstenv@name\endcsname}% - \fi - \lst@next} -\lst@UserCommand\lstnewenvironment#1#2#{% - \@ifundefined{#1}% - {\let\lst@arg\@empty - \lst@XConvert{#1}\@nil - \expandafter\lstnewenvironment@\lst@arg{#1}{#2}}% - {\PackageError{Listings}{Environment `#1' already defined}\@eha - \@gobbletwo}} -\def\@tempa#1#2#3{% -\gdef\lstnewenvironment@##1##2##3##4##5{% - \begingroup - \global\@namedef{end##2}{\lstenv@Error{##2}}% - \global\@namedef{##2}{\def\lstenv@name{##2}% - \begingroup \lst@setcatcodes \catcode\active=\active - \csname##2@\endcsname}% - \let\l@ngrel@x\global - \let\@xargdef\lstenv@xargdef - \expandafter\new@command\csname##2@\endcsname##3% - {\lsthk@PreSet ##4% - \ifx\@currenvir\lstenv@name - \def\lstenv@endstring{#1#2##1#3}% - \else - \def\lstenv@endstring{#1##1}% - \fi - \@namedef{end##2}{\lst@DeInit ##5\endgroup - \lst@doendpe \@ignoretrue}% - \lsthk@DisplayStyle - \let\lst@EndProcessListing\lstenv@SkipToEnd - \lst@Init\lstenv@backslash - \lst@ifprint - \expandafter\expandafter\expandafter\lstenv@Process - \else - \expandafter\lstenv@SkipToEnd - \fi - \lst@insertargs}% - \endgroup}% -} -\let\lst@arg\@empty \lst@XConvert{end}\{\}\@nil -\expandafter\@tempa\lst@arg -\let\lst@insertargs\@empty -\def\lstenv@xargdef#1{ - \expandafter\lstenv@xargdef@\csname\string#1\endcsname#1} -\def\lstenv@xargdef@#1#2[#3][#4]#5{% - \@ifdefinable#2{% - \gdef#2{% - \ifx\protect\@typeset@protect - \expandafter\lstenv@testopt - \else - \@x@protect#2% - \fi - #1% - {#4}}% - \@yargdef - #1% - \tw@ - {#3}% - {#5}}} -\long\def\lstenv@testopt#1#2{% - \@ifnextchar[{\catcode\active5\relax \lstenv@testopt@#1}% - {#1[{#2}]}} -\def\lstenv@testopt@#1[#2]{% - \catcode\active\active - #1[#2]} -\begingroup \lccode`\~=`\\\lowercase{% -\gdef\lstenv@SkipToEnd{% - \long\expandafter\def\expandafter\lst@temp\expandafter##\expandafter - 1\expandafter~\lstenv@endstring{\lstenv@End}% - \lst@temp} -}\endgroup -\def\lstenv@Error#1{\PackageError{Listings}{Extra \string\end#1}% - {I'm ignoring this, since I wasn't doing a \csname#1\endcsname.}} -\begingroup \lccode`\~=`\^^M\lowercase{% -\gdef\lst@TestEOLChar#1{% - \def\lst@insertargs{#1}% - \ifx ~#1\@empty \else - \ifx^^J#1\@empty \else - \global\let\lst@intname\lst@insertargs - \let\lst@insertargs\@empty - \fi \fi} -}\endgroup -\lstnewenvironment{lstlisting}[2][] - {\lst@TestEOLChar{#2}% - \lstset{#1}% - \csname\@lst @SetFirstNumber\endcsname} - {\csname\@lst @SaveFirstNumber\endcsname} -\lst@Key{fancyvrb}\relax[t]{% - \lstKV@SetIf{#1}\lst@iffancyvrb - \lstFV@fancyvrb} -\ifx\lstFV@fancyvrb\@undefined - \gdef\lstFV@fancyvrb{\lst@RequireAspects{fancyvrb}\lstFV@fancyvrb} -\fi -\@ifundefined{ocp}{} - {\lst@AddToHook{OutputBox}% - {\let\lst@ProcessLetter\@firstofone - \let\lst@ProcessDigit\@firstofone - \let\lst@ProcessOther\@firstofone}} -\DeclareOption*{\expandafter\lst@ProcessOption\CurrentOption\relax} -\def\lst@ProcessOption#1#2\relax{% - \ifx #1!% - \lst@DeleteKeysIn\lst@loadaspects{#2}% - \else - \lst@lAddTo\lst@loadaspects{,#1#2}% - \fi} -\@ifundefined{lst@loadaspects} - {\def\lst@loadaspects{strings,comments,escape,style,language,% - keywords,labels,lineshape,frames,emph,index}% - }{} -\InputIfFileExists{lstpatch.sty}{}{} -\let\lst@ifsavemem\iffalse -\DeclareOption{savemem}{\let\lst@ifsavemem\iftrue} -\DeclareOption{noaspects}{\let\lst@loadaspects\@empty} -\ProcessOptions -\lst@RequireAspects\lst@loadaspects -\let\lst@loadaspects\@empty -\lst@UseHook{SetStyle}\lst@UseHook{EmptyStyle} -\lst@UseHook{SetLanguage}\lst@UseHook{EmptyLanguage} -\InputIfFileExists{listings.cfg}{}{} -\InputIfFileExists{lstlocal.cfg}{}{} -\endinput -%% -%% End of file `listings.sty'. diff --git a/Documentation/PhysicsTools/lstdoc.sty b/Documentation/PhysicsTools/lstdoc.sty deleted file mode 100644 index 8e904b2a11e..00000000000 --- a/Documentation/PhysicsTools/lstdoc.sty +++ /dev/null @@ -1,451 +0,0 @@ -%% -%% This is file `lstdoc.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% listings-1.3.dtx (with options: `doc') -%% -%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf. -%% -%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed -%% elsewhere in this file. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\def\filedate{2004/09/07} -\def\fileversion{1.3} -\ProvidesPackage{lstdoc} - [\filedate\space\fileversion\space(Carsten Heinz)] -\let\lstdoc@currversion\fileversion -\RequirePackage[writefile]{listings}[2004/09/07] -\newif\iffancyvrb \IfFileExists{fancyvrb.sty}{\fancyvrbtrue}{} -\newif\ifcolor \IfFileExists{color.sty}{\colortrue}{} -\lst@false -\newif\ifhyper -\@ifundefined{pdfoutput} - {} - {\ifnum\pdfoutput>\z@ \lst@true \fi} -\@ifundefined{VTeXversion} - {} - {\ifnum\OpMode>\z@ \lst@true \fi} -\lst@if \IfFileExists{hyperref.sty}{\hypertrue}{}\fi -\newif\ifalgorithmic \IfFileExists{algorithmic.sty}{\algorithmictrue}{} -\newif\iflgrind \IfFileExists{lgrind.sty}{\lgrindtrue}{} -\iffancyvrb \RequirePackage{fancyvrb}\fi -\ifhyper \RequirePackage[colorlinks]{hyperref}\else - \def\href#1{\texttt}\fi -\ifcolor \RequirePackage{color}\fi -\ifalgorithmic \RequirePackage{algorithmic}\fi -\iflgrind \RequirePackage{lgrind}\fi -\RequirePackage{nameref} -\RequirePackage{url} -\renewcommand\ref{\protect\T@ref} -\renewcommand\pageref{\protect\T@pageref} -\def\lst@BeginRemark#1{% - \begin{quote}\topsep0pt\let\small\footnotesize\small#1:} -\def\lst@EndRemark{\end{quote}} -\newenvironment{TODO} - {\lst@BeginRemark{To do}}{\lst@EndRemark} -\newenvironment{ALTERNATIVE} - {\lst@BeginRemark{Alternative}}{\lst@EndRemark} -\newenvironment{REMOVED} - {\lst@BeginRemark{Removed}}{\lst@EndRemark} -\newenvironment{OLDDEF} - {\lst@BeginRemark{Old definition}}{\lst@EndRemark} -\def\advise{\par\list\labeladvise - {\advance\linewidth\@totalleftmargin - \@totalleftmargin\z@ - \@listi - \let\small\footnotesize \small\sffamily - \parsep \z@ \@plus\z@ \@minus\z@ - \topsep6\p@ \@plus1\p@\@minus2\p@ - \def\makelabel##1{\hss\llap{##1}}}} -\let\endadvise\endlist -\def\advisespace{\hbox{}\qquad} -\def\labeladvise{$\to$} -\newenvironment{syntax} - {\list{}{\itemindent-\leftmargin - \def\makelabel##1{\hss\lst@syntaxlabel##1,,,,\relax}}} - {\endlist} -\def\lst@syntaxlabel#1,#2,#3,#4\relax{% - \llap{\scriptsize\itshape#3}% - \def\lst@temp{#2}% - \expandafter\lst@syntaxlabel@\meaning\lst@temp\relax - \rlap{\hskip-\itemindent\hskip\itemsep\hskip\linewidth - \llap{\ttfamily\lst@temp}\hskip\labelwidth - \def\lst@temp{#1}% - \ifx\lst@temp\lstdoc@currversion#1\fi}} -\def\lst@syntaxlabel@#1>#2\relax - {\edef\lst@temp{\zap@space#2 \@empty}} -\newcommand*\syntaxnewline{\newline\hbox{}\kern\labelwidth} -\newcommand*\syntaxor{\qquad or\qquad} -\newcommand*\syntaxbreak - {\hfill\kern0pt\discretionary{}{\kern\labelwidth}{}} -\let\syntaxfill\hfill -\def\alternative#1{\lst@true \alternative@#1,\relax,} -\def\alternative@#1,{% - \ifx\relax#1\@empty - \expandafter\@gobble - \else - \ifx\@empty#1\@empty\else - \lst@if \lst@false \else $\vert$\fi - \textup{\texttt{#1}}% - \fi - \fi - \alternative@} -\long\def\m@cro@#1#2#3{\endgroup \topsep\MacroTopsep \trivlist - \edef\saved@macroname{\string#3}% - \def\makelabel##1{\llap{##1}}% - \if@inlabel - \let\@tempa\@empty \count@\macro@cnt - \loop \ifnum\count@>\z@ - \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat - \edef\makelabel##1{\llap{\vtop to\baselineskip - {\@tempa\hbox{##1}\vss}}}% - \advance \macro@cnt \@ne - \else \macro@cnt\@ne \fi - \edef\@tempa{\noexpand\item[% - #1% - \noexpand\PrintMacroName - \else - \expandafter\noexpand\csname Print#2Name\endcsname % MODIFIED - \fi - {\string#3}]}% - \@tempa - \global\advance\c@CodelineNo\@ne - #1% - \SpecialMainIndex{#3}\nobreak - \DoNotIndex{#3}% - \else - \csname SpecialMain#2Index\endcsname{#3}\nobreak % MODIFIED - \fi - \global\advance\c@CodelineNo\m@ne - \ignorespaces} -\def\macro{\begingroup - \catcode`\\12 - \MakePrivateLetters \m@cro@ \iftrue {Macro}}% MODIFIED -\def\environment{\begingroup - \catcode`\\12 - \MakePrivateLetters \m@cro@ \iffalse {Env}}% MODIFIED -\def\newdocenvironment#1#2#3#4{% - \@namedef{#1}{#3\begingroup \catcode`\\12\relax - \MakePrivateLetters \m@cro@ \iffalse {#2}}% - \@namedef{end#1}{#4\endmacro}% - \@ifundefined{Print#2Name}{\expandafter - \let\csname Print#2Name\endcsname\PrintMacroName}{}% - \@ifundefined{SpecialMain#2Index}{\expandafter - \let\csname SpecialMain#2Index\endcsname\SpecialMainIndex}{}} -\newdocenvironment{aspect}{Aspect}{}{} -\def\PrintAspectName#1{} -\def\SpecialMainAspectIndex#1{% - \@bsphack - \index{aspects:\levelchar\protect\aspectname{#1}\encapchar main}% - \@esphack} -\newdocenvironment{lstkey}{Key}{}{} -\def\PrintKeyName#1{\strut\keyname{#1}\ } -\def\SpecialMainKeyIndex#1{% - \@bsphack - \index{keys\levelchar\protect\keyname{#1}\encapchar main}% - \@esphack} -\newcounter{argcount} -\def\labelargcount{\texttt{\#\arabic{argcount}}\hskip\labelsep$=$} -\def\macroargs{\list\labelargcount - {\usecounter{argcount}\leftmargin=2\leftmargin - \parsep \z@ \@plus\z@ \@minus\z@ - \topsep4\p@ \@plus\p@ \@minus2\p@ - \itemsep\z@ \@plus\z@ \@minus\z@ - \def\makelabel##1{\hss\llap{##1}}}} -\def\endmacroargs{\endlist\@endparenv} -\lst@RequireAspects{writefile} -\newbox\lst@samplebox -\lstnewenvironment{lstsample}[3][] - {\global\let\lst@intname\@empty - \gdef\lst@sample{#2}% - \setbox\lst@samplebox=\hbox\bgroup - \setkeys{lst}{language={},style={},tabsize=4,gobble=5,% - basicstyle=\small\ttfamily,basewidth=0.51em,point={#1}} - #3% - \lst@BeginAlsoWriteFile{\jobname.tmp}} - {\lst@EndWriteFile\egroup - \ifdim \wd\lst@samplebox>.5\linewidth - \begin{center}% - \hbox to\linewidth{\box\lst@samplebox\hss}% - \end{center}% - \lst@sampleInput - \else - \begin{center}% - \begin{minipage}{0.45\linewidth}\lst@sampleInput\end{minipage}% - \qquad - \begin{minipage}{0.45\linewidth}% - \hbox to\linewidth{\box\lst@samplebox\hss}% - \end{minipage}% - \end{center}% - \fi} -\lst@InstallKeywords{p}{point}{pointstyle}\relax{keywordstyle}{}ld -\lstnewenvironment{lstxsample}[1][] - {\begingroup - \setkeys{lst}{belowskip=-\medskipamount,language={},style={},% - tabsize=4,gobble=5,basicstyle=\small\ttfamily,% - basewidth=0.51em,point={#1}} - \lst@BeginAlsoWriteFile{\jobname.tmp}} - {\endgroup - \endgroup} -\def\lst@sampleInput{% - \MakePercentComment\catcode`\^^M=10\relax - \small\lst@sample - {\setkeys{lst}{SelectCharTable=\lst@ReplaceInput{\^\^I}% - {\lst@ProcessTabulator}}% - \leavevmode \input{\jobname.tmp}}\MakePercentIgnore} -\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% - {1.25ex \@plus1ex \@minus.2ex}% - {-1em}% - {\normalfont\normalsize\bfseries}} -\def\lstref#1{\emph{\ref{#1} \nameref{#1}}} -\def\@part[#1]#2{\addcontentsline{toc}{part}{#1}% - {\parindent\z@ \raggedright \interlinepenalty\@M - \normalfont \huge \bfseries #2\markboth{}{}\par}% - \nobreak\vskip 3ex\@afterheading} -\renewcommand*\l@section[2]{% - \addpenalty\@secpenalty - \addvspace{.25em \@plus\p@}% - \setlength\@tempdima{1.5em}% - \begingroup - \parindent \z@ \rightskip \@pnumwidth - \parfillskip -\@pnumwidth - \leavevmode - \advance\leftskip\@tempdima - \hskip -\leftskip - #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par - \endgroup} -\renewcommand*\l@subsection{\@dottedtocline{2}{0pt}{2.3em}} -\renewcommand*\l@subsubsection{\@dottedtocline{3}{0pt}{3.2em}} -\newcommand\ikeyname[1]{% - \lstkeyindex{#1}{}% - \lstaspectindex{#1}{}% - \keyname{#1}} -\newcommand\ekeyname[1]{% - \@bsphack - \lstkeyindex{#1}{\encapchar usage}% - \lstaspectindex{#1}{\encapchar usage}% - \@esphack} -\newcommand\rkeyname[1]{% - \@bsphack - \lstkeyindex{#1}{\encapchar main}% - \lstaspectindex{#1}{\encapchar main}% - \@esphack{\rstyle\keyname{#1}}} -\newcommand\icmdname[1]{% - \@bsphack - \lstaspectindex{#1}{}% - \@esphack\texttt{\string#1}} -\newcommand\rcmdname[1]{% - \@bsphack - \lstaspectindex{#1}{\encapchar main}% - \@esphack\texttt{\rstyle\string#1}} -\def\lstaspectindex#1#2{% - \global\@namedef{lstkandc@\string#1}{}% - \@ifundefined{lstisaspect@\string#1} - {\index{unknown\levelchar - \protect\texttt{\protect\string\string#1}#2}}% - {\index{\@nameuse{lstisaspect@\string#1}\levelchar - \protect\texttt{\protect\string\string#1}#2}}% -} -\def\lstkeyindex#1#2{% -} -\def\lstisaspect[#1]#2{% - \global\@namedef{lstaspect@#1}{#2}% - \lst@AddTo\lst@allkeysandcmds{,#2}% - \@for\lst@temp:=#2\do - {\ifx\@empty\lst@temp\else - \global\@namedef{lstisaspect@\lst@temp}{#1}% - \fi}} -\gdef\lst@allkeysandcmds{} -\def\lstprintaspectkeysandcmds#1{% - \lst@true - \expandafter\@for\expandafter\lst@temp - \expandafter:\expandafter=\csname lstaspect@#1\endcsname\do - {\lst@if\lst@false\else, \fi \texttt{\lst@temp}}} -\def\lstcheckreference{% - \@for\lst@temp:=\lst@allkeysandcmds\do - {\ifx\lst@temp\@empty\else - \@ifundefined{lstkandc@\lst@temp} - {\typeout{\lst@temp\space not in reference guide?}}{}% - \fi}} -\newcommand*\lst{\texttt{lst}} -\newcommand*\Cpp{C\texttt{++}} -\let\keyname\texttt -\let\keyvalue\texttt -\let\hookname\texttt -\newcommand*\aspectname[1]{{\normalfont\sffamily#1}} -\DeclareRobustCommand\packagename[1]{% - {\leavevmode\text@command{#1}% - \switchfontfamily\sfdefault\rmdefault - \check@icl #1\check@icr - \expandafter}}% -\renewcommand\packagename[1]{{\normalfont\sffamily#1}} -\def\switchfontfamily#1#2{% - \begingroup\xdef\@gtempa{#1}\endgroup - \ifx\f@family\@gtempa\fontfamily#2% - \else\fontfamily#1\fi - \selectfont} -\ifcolor - \definecolor{darkgreen}{rgb}{0,0.5,0} - \def\rstyle{\color{darkgreen}} -\else - \let\rstyle\empty -\fi -\gdef\lst@emails{} -\newcommand*\lstthanks[2] - {#1\lst@AddTo\lst@emails{,#1,<#2>}% - \ifx\@empty#2\@empty\typeout{Missing email for #1}\fi} -\newcommand*\lsthelper[3] - {{\let~\ #1}% - \lst@IfOneOf#1\relax\lst@emails - {}{\typeout{^^JWarning: Unknown helper #1.^^J}}} -\lstdefinelanguage[doc]{Pascal}{% - morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,% - do,downto,else,end,false,file,for,function,get,goto,if,in,% - integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,% - procedure,put,read,readln,real,record,repeat,reset,rewrite,set,% - text,then,to,true,type,unpack,until,var,while,with,write,writeln},% - sensitive=false,% - morecomment=[s]{(*}{*)},% - morecomment=[s]{\{}{\}},% - morestring=[d]{'}} -\lstdefinestyle{} - {basicstyle={},% - keywordstyle=\bfseries,identifierstyle={},% - commentstyle=\itshape,stringstyle={},% - numberstyle={},stepnumber=1,% - pointstyle=\pointstyle} -\def\pointstyle{% - {\let\lst@um\@empty \xdef\@gtempa{\the\lst@token}}% - \expandafter\lstkeyindex\expandafter{\@gtempa}{}% - \expandafter\lstaspectindex\expandafter{\@gtempa}{}% - \rstyle} -\lstset{defaultdialect=[doc]Pascal,language=Pascal,style={}} -\def\lstscanlanguages#1#2#3{% - \begingroup - \def\lst@DefDriver@##1##2##3##4[##5]##6{% - \lst@false - \lst@lAddTo\lst@scan{##6(##5),}% - \begingroup - \@ifnextchar[{\lst@XDefDriver{##1}##3}{\lst@DefDriver@@##3}}% - \def\lst@XXDefDriver[##1]{}% - \lst@InputCatcodes - \def\lst@dontinput{#3}% - \let\lst@scan\@empty - \lst@for{#2}\do{% - \lst@IfOneOf##1\relax\lst@dontinput - {}% - {\InputIfFileExists{##1}{}{}}}% - \global\let\@gtempa\lst@scan - \endgroup - \let#1\@gtempa} -\def\lstprintlanguages#1{% - \def\do##1{\setbox\@tempboxa\hbox{##1\space\space}% - \ifdim\wd\@tempboxa<.5\linewidth \wd\@tempboxa.5\linewidth - \else \wd\@tempboxa\linewidth \fi - \box\@tempboxa\allowbreak}% - \begin{quote} - \par\noindent - \hyphenpenalty=\@M \rightskip=\z@\@plus\linewidth\relax - \lst@BubbleSort#1% - \expandafter\lst@NextLanguage#1\relax(\relax),% - \end{quote}} -\def\lst@NextLanguage#1(#2),{% - \ifx\relax#1\else - \def\lst@language{#1}\def\lst@dialects{(#2),}% - \expandafter\lst@NextLanguage@ - \fi} -\def\lst@NextLanguage@#1(#2),{% - \def\lst@temp{#1}% - \ifx\lst@temp\lst@language - \lst@lAddTo\lst@dialects{(#2),}% - \expandafter\lst@NextLanguage@ - \else - \do{\lst@language - \ifx\lst@dialects\lst@emptydialect\else - \expandafter\lst@NormedDef\expandafter\lst@language - \expandafter{\lst@language}% - \space(% - \lst@BubbleSort\lst@dialects - \expandafter\lst@PrintDialects\lst@dialects(\relax),% - )% - \fi}% - \def\lst@next{\lst@NextLanguage#1(#2),}% - \expandafter\lst@next - \fi} -\def\lst@emptydialect{(),} -\def\lst@PrintDialects(#1),{% - \ifx\@empty#1\@empty empty\else - \lst@PrintDialect{#1}% - \fi - \lst@PrintDialects@} -\def\lst@PrintDialects@(#1),{% - \ifx\relax#1\else - , \lst@PrintDialect{#1}% - \expandafter\lst@PrintDialects@ - \fi} -\def\lst@PrintDialect#1{% - \lst@NormedDef\lst@temp{#1}% - \expandafter\ifx\csname\@lst dd@\lst@language\endcsname\lst@temp - \texttt{\underbar{#1}}% - \else - \texttt{#1}% - \fi} -\def\lst@IfLE#1#2\@empty#3#4\@empty{% - \ifx #1\relax - \let\lst@next\@firstoftwo - \else \ifx #3\relax - \let\lst@next\@secondoftwo - \else - \lowercase{\ifx#1#3}% - \def\lst@next{\lst@IfLE#2\@empty#4\@empty}% - \else - \lowercase{\ifnum`#1<`#3}\relax - \let\lst@next\@firstoftwo - \else - \let\lst@next\@secondoftwo - \fi - \fi - \fi \fi - \lst@next} -\def\lst@BubbleSort#1{% - \ifx\@empty#1\else - \lst@false - \expandafter\lst@BubbleSort@#1\relax,\relax,% - \expandafter\lst@BubbleSort@\expandafter,\lst@sorted - \relax,\relax,% - \let#1\lst@sorted - \lst@if - \def\lst@next{\lst@BubbleSort#1}% - \expandafter\expandafter\expandafter\lst@next - \fi - \fi} -\def\lst@BubbleSort@#1,#2,{% - \ifx\@empty#1\@empty - \def\lst@sorted{#2,}% - \def\lst@next{\lst@BubbleSort@@}% - \else - \let\lst@sorted\@empty - \def\lst@next{\lst@BubbleSort@@#1,#2,}% - \fi - \lst@next} -\def\lst@BubbleSort@@#1,#2,{% - \ifx\relax#1\else - \ifx\relax#2% - \lst@lAddTo\lst@sorted{#1,}% - \expandafter\expandafter\expandafter\lst@BubbleSort@@@ - \else - \lst@IfLE #1\relax\@empty #2\relax\@empty - {\lst@lAddTo\lst@sorted{#1,#2,}}% - {\lst@true \lst@lAddTo\lst@sorted{#2,#1,}}% - \expandafter\expandafter\expandafter\lst@BubbleSort@@ - \fi - \fi} -\def\lst@BubbleSort@@@#1\relax,{} -\endinput -%% -%% End of file `lstdoc.sty'. diff --git a/Documentation/PhysicsTools/lstlang1.sty b/Documentation/PhysicsTools/lstlang1.sty deleted file mode 100644 index ad2bc03d2c9..00000000000 --- a/Documentation/PhysicsTools/lstlang1.sty +++ /dev/null @@ -1,1226 +0,0 @@ -%% -%% This is file `lstlang1.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% lstdrvrs-1.3.dtx (with options: `lang1') -%% -%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz -%% and/or any other author listed elsewhere in this file. -%% -%% This file is distributed under the terms of the LaTeX Project Public -%% License from CTAN archives in directory macros/latex/base/lppl.txt. -%% Either version 1.0 or, at your option, any later version. -%% -%% This file is completely free and comes without any warranty. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\ProvidesFile{lstlang1.sty} - [2004/09/05 1.3 listings language file] -%% -%% ACSL definition (c) 2000 by Andreas Matthias -%% -\lst@definelanguage{ACSL}[90]{Fortran}% - {morekeywords={algorithm,cinterval,constant,derivative,discrete,% - dynamic,errtag,initial,interval,maxterval,minterval,% - merror,xerror,nsteps,procedural,save,schedule,sort,% - table,terminal,termt,variable},% - sensitive=false,% - morecomment=[l]!% - }[keywords, comments]% -%% -%% Ada 95 definition (c) Torsten Neuer -%% -\lst@definelanguage[95]{Ada}[83]{Ada}% - {morekeywords={abstract,aliased,protected,requeue,tagged,until}}% -\lst@definelanguage[83]{Ada}% - {morekeywords={abort,abs,accept,access,all,and,array,at,begin,body,% - case,constant,declare,delay,delta,digits,do,else,elsif,end,entry,% - exception,exit,for,function,generic,goto,if,in,is,limited,loop,% - mod,new,not,null,of,or,others,out,package,pragma,private,% - procedure,raise,range,record,rem,renames,return,reverse,select,% - separate,subtype,task,terminate,then,type,use,when,while,with,% - xor},% - sensitive=f,% - morecomment=[l]--,% - morestring=[m]",% percent not defined as stringizer so far - morestring=[m]'% - }[keywords,comments,strings]% -%% -%% awk definitions (c) Christoph Giess -%% -\lst@definelanguage[gnu]{Awk}[POSIX]{Awk}% - {morekeywords={and,asort,bindtextdomain,compl,dcgettext,gensub,% - lshift,mktime,or,rshift,strftime,strtonum,systime,xor,extension}% - }% -\lst@definelanguage[POSIX]{Awk}% - {keywords={BEGIN,END,close,getline,next,nextfile,print,printf,% - system,fflush,atan2,cos,exp,int,log,rand,sin,sqrt,srand,gsub,% - index,length,match,split,sprintf,strtonum,sub,substr,tolower,% - toupper,if,while,do,for,break,continue,delete,exit,function,% - return},% - sensitive,% - morecomment=[l]\#,% - morecomment=[l]//,% - morecomment=[s]{/*}{*/},% - morestring=[b]"% - }[keywords,comments,strings]% -%% -%% Visual Basic definition (c) 2002 Robert Frank -%% -\lst@definelanguage[Visual]{Basic} - {morekeywords={Abs,Array,Asc,AscB,AscW,Atn,Avg,CBool,CByte,CCur,% - CDate,CDbl,Cdec,Choose,Chr,ChrB,ChrW,CInt,CLng,Command,Cos,% - Count,CreateObject,CSng,CStr,CurDir,CVar,CVDate,CVErr,Date,% - DateAdd,DateDiff,DatePart,DateSerial,DateValue,Day,DDB,Dir,% - DoEvents,Environ,EOF,Error,Exp,FileAttr,FileDateTime,FileLen,% - Fix,Format,FreeFile,FV,GetAllStrings,GetAttr,% - GetAutoServerSettings,GetObject,GetSetting,Hex,Hour,IIf,% - IMEStatus,Input,InputB,InputBox,InStr,InstB,Int,Integer,IPmt,% - IsArray,IsDate,IsEmpty,IsError,IsMissing,IsNull,IsNumeric,% - IsObject,LBound,LCase,Left,LeftB,Len,LenB,LoadPicture,Loc,LOF,% - Log,Ltrim,Max,Mid,MidB,Min,Minute,MIRR,Month,MsgBox,Now,NPer,% - NPV,Oct,Partition,Pmt,PPmt,PV,QBColor,Rate,RGB,Right,RightB,Rnd,% - Rtrim,Second,Seek,Sgn,Shell,Sin,SLN,Space,Spc,Sqr,StDev,StDevP,% - Str,StrComp,StrConv,String,Switch,Sum,SYD,Tab,Tan,Time,Timer,% - TimeSerial,TimeValue,Trim,TypeName,UBound,Ucase,Val,Var,VarP,% - VarType,Weekday,Year},% functions - morekeywords=[2]{Accept,Activate,Add,AddCustom,AddFile,AddFromFile,% - AddFromTemplate,AddItem,AddNew,AddToAddInToolbar,% - AddToolboxProgID,Append,AppendChunk,Arrange,Assert,AsyncRead,% - BatchUpdate,BeginTrans,Bind,Cancel,CancelAsyncRead,CancelBatch,% - CancelUpdate,CanPropertyChange,CaptureImage,CellText,CellValue,% - Circle,Clear,ClearFields,ClearSel,ClearSelCols,Clone,Close,Cls,% - ColContaining,ColumnSize,CommitTrans,CompactDatabase,Compose,% - Connect,Copy,CopyQueryDef,CreateDatabase,CreateDragImage,% - CreateEmbed,CreateField,CreateGroup,CreateIndex,CreateLink,% - CreatePreparedStatement,CreatePropery,CreateQuery,% - CreateQueryDef,CreateRelation,CreateTableDef,CreateUser,% - CreateWorkspace,Customize,Delete,DeleteColumnLabels,% - DeleteColumns,DeleteRowLabels,DeleteRows,DoVerb,Drag,Draw,Edit,% - EditCopy,EditPaste,EndDoc,EnsureVisible,EstablishConnection,% - Execute,ExtractIcon,Fetch,FetchVerbs,Files,FillCache,Find,% - FindFirst,FindItem,FindLast,FindNext,FindPrevious,Forward,% - GetBookmark,GetChunk,GetClipString,GetData,GetFirstVisible,% - GetFormat,GetHeader,GetLineFromChar,GetNumTicks,GetRows,% - GetSelectedPart,GetText,GetVisibleCount,GoBack,GoForward,Hide,% - HitTest,HoldFields,Idle,InitializeLabels,InsertColumnLabels,% - InsertColumns,InsertObjDlg,InsertRowLabels,InsertRows,Item,% - KillDoc,Layout,Line,LinkExecute,LinkPoke,LinkRequest,LinkSend,% - Listen,LoadFile,LoadResData,LoadResPicture,LoadResString,% - LogEvent,MakeCompileFile,MakeReplica,MoreResults,Move,MoveData,% - MoveFirst,MoveLast,MoveNext,MovePrevious,NavigateTo,NewPage,% - NewPassword,NextRecordset,OLEDrag,OnAddinsUpdate,OnConnection,% - OnDisconnection,OnStartupComplete,Open,OpenConnection,% - OpenDatabase,OpenQueryDef,OpenRecordset,OpenResultset,OpenURL,% - Overlay,PaintPicture,Paste,PastSpecialDlg,PeekData,Play,Point,% - PopulatePartial,PopupMenu,Print,PrintForm,PropertyChanged,Pset,% - Quit,Raise,RandomDataFill,RandomFillColumns,RandomFillRows,% - rdoCreateEnvironment,rdoRegisterDataSource,ReadFromFile,% - ReadProperty,Rebind,ReFill,Refresh,RefreshLink,RegisterDatabase,% - Reload,Remove,RemoveAddInFromToolbar,RemoveItem,Render,% - RepairDatabase,Reply,ReplyAll,Requery,ResetCustom,% - ResetCustomLabel,ResolveName,RestoreToolbar,Resync,Rollback,% - RollbackTrans,RowBookmark,RowContaining,RowTop,Save,SaveAs,% - SaveFile,SaveToFile,SaveToolbar,SaveToOle1File,Scale,ScaleX,% - ScaleY,Scroll,Select,SelectAll,SelectPart,SelPrint,Send,% - SendData,Set,SetAutoServerSettings,SetData,SetFocus,SetOption,% - SetSize,SetText,SetViewport,Show,ShowColor,ShowFont,ShowHelp,% - ShowOpen,ShowPrinter,ShowSave,ShowWhatsThis,SignOff,SignOn,Size,% - Span,SplitContaining,StartLabelEdit,StartLogging,Stop,% - Synchronize,TextHeight,TextWidth,ToDefaults,TwipsToChartPart,% - TypeByChartType,Update,UpdateControls,UpdateRecord,UpdateRow,% - Upto,WhatsThisMode,WriteProperty,ZOrder},% methods - morekeywords=[3]{AccessKeyPress,AfterAddFile,AfterChangeFileName,% - AfterCloseFile,AfterColEdit,AfterColUpdate,AfterDelete,% - AfterInsert,AfterLabelEdit,AfterRemoveFile,AfterUpdate,% - AfterWriteFile,AmbienChanged,ApplyChanges,Associate,% - AsyncReadComplete,AxisActivated,AxisLabelActivated,% - AxisLabelSelected,AxisLabelUpdated,AxisSelected,% - AxisTitleActivated,AxisTitleSelected,AxisTitleUpdated,% - AxisUpdated,BeforeClick,BeforeColEdit,BeforeColUpdate,% - BeforeConnect,BeforeDelete,BeforeInsert,BeforeLabelEdit,% - BeforeLoadFile,BeforeUpdate,ButtonClick,ButtonCompleted,% - ButtonGotFocus,ButtonLostFocus,Change,ChartActivated,% - ChartSelected,ChartUpdated,Click,ColEdit,Collapse,ColResize,% - ColumnClick,Compare,ConfigChageCancelled,ConfigChanged,% - ConnectionRequest,DataArrival,DataChanged,DataUpdated,DblClick,% - Deactivate,DeviceArrival,DeviceOtherEvent,DeviceQueryRemove,% - DeviceQueryRemoveFailed,DeviceRemoveComplete,DeviceRemovePending,% - DevModeChange,Disconnect,DisplayChanged,Dissociate,% - DoGetNewFileName,Done,DonePainting,DownClick,DragDrop,DragOver,% - DropDown,EditProperty,EnterCell,EnterFocus,Event,ExitFocus,% - Expand,FootnoteActivated,FootnoteSelected,FootnoteUpdated,% - GotFocus,HeadClick,InfoMessage,Initialize,IniProperties,% - ItemActivated,ItemAdded,ItemCheck,ItemClick,ItemReloaded,% - ItemRemoved,ItemRenamed,ItemSeletected,KeyDown,KeyPress,KeyUp,% - LeaveCell,LegendActivated,LegendSelected,LegendUpdated,% - LinkClose,LinkError,LinkNotify,LinkOpen,Load,LostFocus,% - MouseDown,MouseMove,MouseUp,NodeClick,ObjectMove,% - OLECompleteDrag,OLEDragDrop,OLEDragOver,OLEGiveFeedback,% - OLESetData,OLEStartDrag,OnAddNew,OnComm,Paint,PanelClick,% - PanelDblClick,PathChange,PatternChange,PlotActivated,% - PlotSelected,PlotUpdated,PointActivated,PointLabelActivated,% - PointLabelSelected,PointLabelUpdated,PointSelected,% - PointUpdated,PowerQuerySuspend,PowerResume,PowerStatusChanged,% - PowerSuspend,QueryChangeConfig,QueryComplete,QueryCompleted,% - QueryTimeout,QueryUnload,ReadProperties,Reposition,% - RequestChangeFileName,RequestWriteFile,Resize,ResultsChanged,% - RowColChange,RowCurrencyChange,RowResize,RowStatusChanged,% - SelChange,SelectionChanged,SendComplete,SendProgress,% - SeriesActivated,SeriesSelected,SeriesUpdated,SettingChanged,% - SplitChange,StateChanged,StatusUpdate,SysColorsChanged,% - Terminate,TimeChanged,TitleActivated,TitleSelected,% - TitleActivated,UnboundAddData,UnboundDeleteRow,% - UnboundGetRelativeBookmark,UnboundReadData,UnboundWriteData,% - Unload,UpClick,Updated,Validate,ValidationError,WillAssociate,% - WillChangeData,WillDissociate,WillExecute,WillUpdateRows,% - WithEvents,WriteProperties},% VB-events - morekeywords=[4]{AppActivate,Base,Beep,Call,Case,ChDir,ChDrive,% - Const,Declare,DefBool,DefByte,DefCur,DefDate,DefDbl,DefDec,% - DefInt,DefLng,DefObj,DefSng,DefStr,Deftype,DefVar,DeleteSetting,% - Dim,Do,Else,ElseIf,End,Enum,Erase,Event,Exit,Explicit,FileCopy,% - For,ForEach,Friend,Function,Get,GoSub,GoTo,If,Implements,Kill,% - Let,LineInput,Lock,Lset,MkDir,Name,Next,OnError,On,Option,% - Private,Property,Public,Put,RaiseEvent,Randomize,ReDim,Rem,% - Reset,Resume,Return,RmDir,Rset,SavePicture,SaveSetting,% - SendKeys,SetAttr,Static,Sub,Then,Type,Unlock,Wend,While,Width,% - With,Write},% statements - sensitive=false,% - keywordcomment=rem,% - MoreSelectCharTable=\def\lst@BeginKC@{% chmod - \lst@ResetToken - \lst@BeginComment\lst@GPmode{{\lst@commentstyle}% - \lst@Lmodetrue\lst@modetrue}\@empty},% - morecomment=[l]{'},% - morecomment=[s]{/*}{*/},% - morestring=[b]",% - }[keywords,comments,strings,keywordcomments] -\lst@definelanguage[ANSI]{C++}[ISO]{C++}{}% -\lst@definelanguage[GNU]{C++}[ISO]{C++}% - {morekeywords={__attribute__,__extension__,__restrict,__restrict__,% - typeof,__typeof__},% - }% -\lst@definelanguage[Visual]{C++}[ISO]{C++}% - {morekeywords={__asm,__based,__cdecl,__declspec,dllexport,% - dllimport,__except,__fastcall,__finally,__inline,__int8,__int16,% - __int32,__int64,naked,__stdcall,thread,__try,__leave},% - }% -\lst@definelanguage[ISO]{C++}[ANSI]{C}% - {morekeywords={and,and_eq,asm,bad_cast,bad_typeid,bitand,bitor,bool,% - catch,class,compl,const_cast,delete,dynamic_cast,explicit,export,% - false,friend,inline,mutable,namespace,new,not,not_eq,operator,or,% - or_eq,private,protected,public,reinterpret_cast,static_cast,% - template,this,throw,true,try,typeid,type_info,typename,using,% - virtual,wchar_t,xor,xor_eq},% - }% -%% -%% Objective-C definition (c) 1997 Detlev Droege -%% -\lst@definelanguage[Objective]{C}[ANSI]{C} - {morekeywords={bycopy,id,in,inout,oneway,out,self,super,% - @class,@defs,@encode,@end,@implementation,@interface,@private,% - @protected,@protocol,@public,@selector},% - moredirectives={import}% - }% -%% -%% Handel-C definition, refer http://www.celoxica.com -%% -\lst@definelanguage[Handel]{C}[ANSI]{C} - {morekeywords={assert,chan,chanin,chanout,clock,delay,expr,external,% - external_divide,family,ifselect,in,inline,interface,internal,% - internal_divid,intwidth,let,macro,mpram,par,part,prialt,proc,ram,% - releasesema,reset,rom,select,sema,set,seq,shared,signal,try,% - reset,trysema,typeof,undefined,width,with,wom},% - }% -\lst@definelanguage[ANSI]{C}% - {morekeywords={auto,break,case,char,const,continue,default,do,double,% - else,enum,extern,float,for,goto,if,int,long,register,return,% - short,signed,sizeof,static,struct,switch,typedef,union,unsigned,% - void,volatile,while},% - sensitive,% - morecomment=[s]{/*}{*/},% - morecomment=[l]//,% nonstandard - morestring=[b]",% - morestring=[b]',% - moredelim=*[directive]\#,% - moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,% - include,pragma,undef,warning}% - }[keywords,comments,strings,directives]% -%% -%% C-Sharp definition (c) 2002 Martin Brodbeck -%% -\lst@definelanguage[Sharp]{C}% - {morekeywords={abstract,base,bool,break,byte,case,catch,char,checked,% - class,const,continue,decimal,default,delegate,do,double,else,% - enum,event,explicit,extern,false,finally,fixed,float,for,foreach,% - goto,if,implicit,in,int,interface,internal,is,lock,long,% - namespace,new,null,object,operator,out,override,params,private,% - protected,public,readonly,ref,return,sbyte,sealed,short,sizeof,% - static,string,struct,switch,this,throw,true,try,typeof,uint,% - ulong,unchecked,unsafe,ushort,using,virtual,void,while,% - as,volatile,stackalloc},% Kai K\"ohne - sensitive,% - morecomment=[s]{/*}{*/},% - morecomment=[l]//,% - morestring=[b]" - }[keywords,comments,strings]% -%% -%% csh definition (c) 1998 Kai Below -%% -\lst@definelanguage{csh} - {morekeywords={alias,awk,cat,echo,else,end,endif,endsw,exec,exit,% - foreach,glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,% - set,setenv,shift,source,switch,then,time,while,umask,unalias,% - unset,wait,while,@,env,argv,child,home,ignoreeof,noclobber,% - noglob,nomatch,path,prompt,shell,status,verbose,print,printf,% - sqrt,BEGIN,END},% - morecomment=[l]\#,% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% bash,sh definition (c) 2003 Riccardo Murri <riccardo.murri@gmx.it> -%% -\lst@definelanguage{bash}[]{sh}% - {morekeywords={alias,bg,bind,builtin,command,compgen,complete,% - declare,disown,enable,fc,fg,history,jobs,et,local,logout,printf,% - pushd,popd,select,set,suspend,shopt,source,times,type,typeset,% - ulimit,unalias,wait},% - }% -\lst@definelanguage{sh}% - {morekeywords={awk,break,case,cat,cd,continue,do,done,echo,else,% - env,eval,exec,expr,exit,export,false,fi,for,function,getopts,% - hash,history,if,kill,nice,nohup,ps,pwd,read,readonly,return,% - sed,shift,test,then,times,trap,true,umask,unset,until,while},% - morecomment=[l]\#,% - morestring=[d]"% - }[keywords,comments,strings]% -\lst@definelanguage[90]{Fortran}[95]{Fortran}{} -\lst@definelanguage[95]{Fortran}[77]{Fortran}% - {deletekeywords=SAVE,% - morekeywords={ACTION,ADVANCE,ALLOCATE,ALLOCATABLE,ASSIGNMENT,CASE,% - CONTAINS,CYCLE,DEALLOCATE,DEFAULT,DELIM,EXIT,INCLUDE,IN,NONE,IN,% - OUT,INTENT,INTERFACE,IOLENGTH,KIND,LEN,MODULE,NAME,NAMELIST,NMT,% - NULLIFY,ONLY,OPERATOR,OPTIONAL,OUT,PAD,POINTER,POSITION,PRIVATE,% - PUBLIC,READWRITE,RECURSIVE,RESULT,SELECT,SEQUENCE,SIZE,STAT,% - TARGET,USE,WHERE,WHILE,BLOCKDATA,DOUBLEPRECISION,ELSEIF,% - ENDBLOCKDATA,ENDDO,ENDFILE,ENDFUNCTION,ENDIF,ENDINTERFACE,% - ENDMODULE,ENDPROGRAM,ENDSELECT,ENDSUBROUTINE,ENDTYPE,ENDWHERE,% - GOTO,INOUT,SELECTCASE},% - deletecomment=[f],% no fixed comment line: 1998 Magne Rudshaug - morecomment=[l]!% - }% -\lst@definelanguage[77]{Fortran}% - {morekeywords={ACCESS,ASSIGN,BACKSPACE,BLANK,BLOCK,CALL,CHARACTER,% - CLOSE,COMMON,COMPLEX,CONTINUE,DATA,DIMENSION,DIRECT,DO,DOUBLE,% - ELSE,END,ENTRY,EOF,EQUIVALENCE,ERR,EXIST,EXTERNAL,FILE,FMT,FORM,% - FORMAT,FORMATTED,FUNCTION,GO,TO,IF,IMPLICIT,INQUIRE,INTEGER,% - INTRINSIC,IOSTAT,LOGICAL,NAMED,NEXTREC,NUMBER,OPEN,OPENED,% - PARAMETER,PAUSE,PRECISION,PRINT,PROGRAM,READ,REAL,REC,RECL,% - RETURN,REWIND,SEQUENTIAL,STATUS,STOP,SUBROUTINE,THEN,TYPE,% - UNFORMATTED,UNIT,WRITE,SAVE},% - sensitive=f,%% not Fortran standard %% - morecomment=[f]*,% - morecomment=[f]C,% - morecomment=[f]c,% - morestring=[d]"% - }[keywords,comments,strings]% -\lst@definelanguage{HTML}% - {morekeywords={A,ABBR,ACRONYM,ADDRESS,APPLET,AREA,B,BASE,BASEFONT,% - BDO,BIG,BLOCKQUOTE,BODY,BR,BUTTON,CAPTION,CENTER,CITE,CODE,COL,% - COLGROUP,DD,DEL,DFN,DIR,DIV,DL,DOCTYPE,DT,EM,FIELDSET,FONT,FORM,% - FRAME,FRAMESET,HEAD,HR,H1,H2,H3,H4,H5,H6,HTML,I,IFRAME,IMG,INPUT,% - INS,ISINDEX,KBD,LABEL,LEGEND,LH,LI,LINK,LISTING,MAP,META,MENU,% - NOFRAMES,NOSCRIPT,OBJECT,OPTGROUP,OPTION,P,PARAM,PLAINTEXT,PRE,% - OL,Q,S,SAMP,SCRIPT,SELECT,SMALL,SPAN,STRIKE,STRING,STRONG,STYLE,% - SUB,SUP,TABLE,TBODY,TD,TEXTAREA,TFOOT,TH,THEAD,TITLE,TR,TT,U,UL,% - VAR,XMP,% - accesskey,action,align,alink,alt,archive,axis,background,bgcolor,% - border,cellpadding,cellspacing,charset,checked,cite,class,classid,% - code,codebase,codetype,color,cols,colspan,content,coords,data,% - datetime,defer,disabled,dir,event,error,for,frameborder,headers,% - height,href,hreflang,hspace,http-equiv,id,ismap,label,lang,link,% - longdesc,marginwidth,marginheight,maxlength,media,method,multiple,% - name,nohref,noresize,noshade,nowrap,onblur,onchange,onclick,% - ondblclick,onfocus,onkeydown,onkeypress,onkeyup,onload,onmousedown,% - profile,readonly,onmousemove,onmouseout,onmouseover,onmouseup,% - onselect,onunload,rel,rev,rows,rowspan,scheme,scope,scrolling,% - selected,shape,size,src,standby,style,tabindex,text,title,type,% - units,usemap,valign,value,valuetype,vlink,vspace,width,xmlns},% - tag=**[s]<>,% - sensitive=f,% - morestring=[d]",% ??? doubled - MoreSelectCharTable=% - \lst@CArgX--\relax\lst@DefDelimB{}{}% - {\ifnum\lst@mode=\lst@tagmode\else - \expandafter\@gobblethree - \fi}% - \lst@BeginComment\lst@commentmode{{\lst@commentstyle}}% - \lst@CArgX--\relax\lst@DefDelimE{}{}{}% - \lst@EndComment\lst@commentmode - }[keywords,comments,strings,html]% -%% -%% AspectJ definition (c) Robert Wenner -%% -\lst@definelanguage[AspectJ]{Java}[]{Java}% - {morekeywords={% - adviceexecution,after,args,around,aspect,aspectOf,before,% - call,cflow,cflowbelow,% - execution,get,handler,if,initialization,issingleton,pointcut,% - percflow,percflowbelow,perthis,pertarget,preinitialization,% - privileged,proceed,returning,set,staticinitialization,strictfp,% - target,this,thisEnclosingJoinPoint,thisJoinPoint,throwing,% - within,withincode},% - MoreSelectCharTable=% - \lst@DefSaveDef{`.}\lst@umdot{\lst@umdot\global\let\lst@derefop\@empty}% - \ifx\lst@derefinstalled\@empty\else - \global\let\lst@derefinstalled\@empty -\lst@AddToHook{Output}% -{\lst@ifkeywords - \ifx\lst@derefop\@empty - \global\let\lst@derefop\relax - \ifx\lst@thestyle\lst@gkeywords@sty - \ifx\lst@currstyle\relax - \let\lst@thestyle\lst@identifierstyle - \else - \let\lst@thestyle\lst@currstyle - \fi - \fi - \fi - \fi} -\lst@AddToHook{BOL}{\global\let\lst@derefop\relax}% -\lst@AddTo\lst@ProcessSpace{\global\let\lst@derefop\relax}% - \fi - }% -\lst@definelanguage{Java}% - {morekeywords={abstract,boolean,break,byte,case,catch,char,class,% - const,continue,default,do,double,else,extends,false,final,% - finally,float,for,goto,if,implements,import,instanceof,int,% - interface,label,long,native,new,null,package,private,protected,% - public,return,short,static,super,switch,synchronized,this,throw,% - throws,transient,true,try,void,volatile,while},% - sensitive,% - morecomment=[l]//,% - morecomment=[s]{/*}{*/},% - morestring=[b]",% - morestring=[b]',% - }[keywords,comments,strings]% -%% -%% ByteCodeJava definition (c) 2004 Martine Gautier -%% -\lst@definelanguage{JVMIS}% - {morekeywords={aaload,astore,aconst_null,aload,aload_0,aload_1,% - aload_2,aload_3,anewarray,areturn,arraylength,astore,astore_0,% - astore_1,astore_2,astore_3,athrow,baload,bastore,bipush,caload,% - castore,checkcast,d2f,d2i,d2l,dadd,daload,dastore,dcmpg,dcmpl,% - dconst_0,dconst_1,ddiv,dload,dload_0,dload_1,dload_2,dload_3,% - dmul,dneg,drem,dreturn,dstore,dstore_0,dstore_1,dstore_2,% - dstore_3,dsub,dup,dup_x1,dup_x2,dup2,dup2_x1,dup2_x2,f2d,% - f2i,f2l,fadd,faload,fastore,fcmpg,fcmpl,fconst_0,fconst_1,% - fconst_2,fdiv,fload,fload_0,fload_1,fload_2,fload_3,fmul,% - fneg,frem,freturn,fstore,fstore_0,fstore_1,fstore_2,fstore_3,% - fsub,getfield,getstatic,goto,goto_w,i2b,i2c,i2d,i2f,i2l,i2s,% - iadd,iaload,iand,iastore,iconst_0,iconst_1,iconst_2,iconst_3,% - iconst_4,iconst_5,idiv,if_acmpeq,if_acmpne,if_icmpeq,if_icmpne,% - if_icmplt,if_cmpge,if_cmpgt,if_cmple,ifeq,ifne,iflt,ifge,ifgt,% - ifle,ifnonnull,ifnull,iinc,iload,iload_0,iload_1,iload_2,% - iload_3,imul,ineg,instanceof,invokeinterface,invokespecial,% - invokestatic,invokevirtual,ior,irem,ireturn,ishl,ishr,istore,% - istore_0,istore_1,istore_2,istore_3,isub,iushr,ixor,jsr,jsr_w,% - l2d,l2f,l2i,ladd,laload,land,lastore,lcmp,lconst_0,lconst_1,% - ldc,ldc_w,ldc2_w,ldiv,lload,lload_0,lload_1,lload_2,lload_3,% - lmul,lneg,lookupswitch,lor,lrem,lreturn,lshl,lshr,lstore,% - lstore_0,lstore_1,lstore_2,lstore_3,lsub,lushr,lxor,% - monitorenter,monitorexit,multianewarray,new,newarray,nop,pop,% - pop2,putfield,putstatic,ret,return,saload,sastore,sipush,swap,% - tableswitch,wide,limit,locals,stack},% - }[keywords]% -\lst@definelanguage{Matlab}% - {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,% - all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,% - auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,% - betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,% - cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,% - clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,% - comet,comet3,compan,compass,computer,cond,condest,conj,contour,% - contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,% - cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,% - csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,% - dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,% - ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,% - del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,% - dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,% - end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,% - engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,% - engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,error,% - errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,% - feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,% - fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,% - flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,% - fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,% - gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,% - getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,% - gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,% - hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,% - imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,% - invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,% - isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,% - legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,% - loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,% - matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,% - matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,% - matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,% - meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,% - mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,% - mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,% - min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,% - mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,% - mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,% - mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,% - mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,% - mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,% - mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,% - mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,% - mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,% - nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,% - pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,% - pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,% - pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,% - quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,% - rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,% - return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,% - round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,% - semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,% - spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,% - sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,% - sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,% - str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,% - subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,% - symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,% - toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,% - uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,% - viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,% - whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,% - wk1write,xlabel,xor,ylabel,zeros,zlabel,zoom},% - sensitive,% - morecomment=[l]\%,% - morestring=[m]'% - }[keywords,comments,strings]% -%% -%% Mathematica definitions (c) 1999 Michael Wiese -%% -\lst@definelanguage[3.0]{Mathematica}[1.0]{Mathematica}% - {morekeywords={Abort,AbortProtect,AbsoluteDashing,AbsolutePointSize,% - AbsoluteThickness,AbsoluteTime,AccountingFormAiry,AiPrime,AiryBi,% - AiryBiPrime,Alternatives,AnchoredSearch,AxesEdge,AxesOrigin,% - AxesStyle,Background,BetaRegularized,BoxStyle,C,CheckAbort,% - Circle,ClebschGordan,CMYKColor,ColorFunction,ColorOutput,Compile,% - Compiled,CompiledFunction,ComplexExpand,ComposeList,Composition,% - ConstrainedMax,ConstrainedMin,Contexts,ContextToFilename,% - ContourLines,Contours,ContourShading,ContourSmoothing,% - ContourStyle,CopyDirectory,CopyFile,CosIntegral,CreateDirectory,% - Cuboid,Date,DeclarePackage,DefaultColor,DefaultFont,Delete,% - DeleteCases,DeleteDirectory,DeleteFile,Dialog,DialogIndent,% - DialogProlog,DialogSymbols,DigitQ,Directory,DirectoryStack,Disk,% - Dispatch,DownValues,DSolve,Encode,Epilog,Erfc,Evaluate,% - ExponentFunction,FaceGrids,FileByteCount,FileDate,FileNames,% - FileType,Find,FindList,FixedPointList,FlattenAt,Fold,FoldList,% - Frame,FrameLabel,FrameStyle,FrameTicks,FromCharacterCode,% - FromDate,FullGraphics,FullOptions,GammaRegularized,% - GaussianIntegers,GraphicsArray,GraphicsSpacing,GridLines,% - GroebnerBasis,Heads,HeldPart,HomeDirectory,Hue,IgnoreCases,% - InputStream,Install,InString,IntegerDigits,InterpolatingFunction,% - InterpolatingPolynomial,Interpolation,Interrupt,InverseFunction,% - InverseFunctions,JacobiZeta,LetterQ,LinearProgramming,ListPlay,% - LogGamma,LowerCaseQ,MachineNumberQ,MantissaExponent,MapIndexed,% - MapThread,MatchLocalNames,MatrixExp,MatrixPower,MeshRange,% - MeshStyle,MessageList,Module,NDSolve,NSolve,NullRecords,% - NullWords,NumberFormat,NumberPadding,NumberSigns,OutputStream,% - PaddedForm,ParentDirectory,Pause,Play,PlayRange,PlotRegion,% - PolygonIntersections,PolynomialGCD,PolynomialLCM,PolynomialMod,% - PostScript,PowerExpand,PrecisionGoal,PrimePi,Prolog,% - QRDecomposition,Raster,RasterArray,RealDigits,Record,RecordLists,% - RecordSeparators,ReleaseHold,RenameDirectory,RenameFile,% - ReplaceHeldPart,ReplacePart,ResetDirectory,Residue,% - RiemannSiegelTheta,RiemannSiegelZ,RotateLabel,SameTest,% - SampleDepth,SampledSoundFunction,SampledSoundList,SampleRate,% - SchurDecomposition,SessionTime,SetAccuracy,SetDirectory,% - SetFileDate,SetPrecision,SetStreamPosition,Shallow,SignPadding,% - SinIntegral,SixJSymbol,Skip,Sound,SpellingCorrection,% - SphericalRegion,Stack,StackBegin,StackComplete,StackInhibit,% - StreamPosition,Streams,StringByteCount,StringConversion,% - StringDrop,StringInsert,StringPosition,StringReplace,% - StringReverse,StringTake,StringToStream,SurfaceColor,% - SyntaxLength,SyntaxQ,TableAlignments,TableDepth,% - TableDirections,TableHeadings,TableSpacing,ThreeJSymbol,TimeUsed,% - TimeZone,ToCharacterCode,ToDate,ToHeldExpression,TokenWords,% - ToLowerCase,ToUpperCase,Trace,TraceAbove,TraceBackward,% - TraceDepth,TraceDialog,TraceForward,TraceOff,TraceOn,% - TraceOriginal,TracePrint,TraceScan,Trig,Unevaluated,Uninstall,% - UnsameQ,UpperCaseQ,UpValues,ViewCenter,ViewVertical,With,Word,% - WordSearch,WordSeparators},% - morendkeywords={Stub,Temporary,$Aborted,$BatchInput,$BatchOutput,% - $CreationDate,$DefaultFont,$DumpDates,$DumpSupported,$Failed,% - $Input,$Inspector,$IterationLimit,$Language,$Letters,$Linked,% - $LinkSupported,$MachineEpsilon,$MachineID,$MachineName,% - $MachinePrecision,$MachineType,$MaxMachineNumber,$MessageList,% - $MessagePrePrint,$MinMachineNumber,$ModuleNumber,$NewMessage,% - $NewSymbol,$Notebooks,$OperatingSystem,$Packages,$PipeSupported,% - $PreRead,$ReleaseNumber,$SessionID,$SoundDisplayFunction,% - $StringConversion,$StringOrder,$SyntaxHandler,$TimeUnit,% - $VersionNumber}% - }% -\lst@definelanguage[1.0]{Mathematica}% - {morekeywords={Abs,Accuracy,AccurayGoal,AddTo,AiryAi,AlgebraicRules,% - AmbientLight,And,Apart,Append,AppendTo,Apply,ArcCos,ArcCosh,% - ArcCot,ArcCoth,ArcCsc,ArcCsch,ArcSec,ArcSech,ArcSin,ArcSinh,% - ArcTan,ArcTanh,Arg,ArithmeticGeometricMean,Array,AspectRatio,% - AtomQ,Attributes,Axes,AxesLabel,BaseForm,Begin,BeginPackage,% - BernoulliB,BesselI,BesselJ,BesselK,BesselY,Beta,Binomial,Blank,% - BlankNullSequence,BlankSequence,Block,Boxed,BoxRatios,Break,Byte,% - ByteCount,Cancel,Cases,Catch,Ceiling,CForm,Character,Characters,% - ChebyshevT,ChebyshevU,Check,Chop,Clear,ClearAll,ClearAttributes,% - ClipFill,Close,Coefficient,CoefficientList,Collect,ColumnForm,% - Complement,Complex,CompoundExpression,Condition,Conjugate,% - Constants,Context,Continuation,Continue,ContourGraphics,% - ContourPlot,Cos,Cosh,Cot,Coth,Count,Csc,Csch,Cubics,Cyclotomic,% - D,Dashing,Decompose,Decrement,Default,Definition,Denominator,% - DensityGraphics,DensityPlot,Depth,Derivative,Det,DiagonalMatrix,% - DigitBlock,Dimensions,DirectedInfinity,Display,DisplayFunction,% - Distribute,Divide,DivideBy,Divisors,DivisorSigma,Do,Dot,Drop,Dt,% - Dump,EdgeForm,Eigensystem,Eigenvalues,Eigenvectors,Eliminate,% - EllipticE,EllipticExp,EllipticF,EllipticK,EllipticLog,EllipticPi,% - EllipticTheta,End,EndPackage,EngineeringForm,Environment,Equal,% - Erf,EulerE,EulerPhi,EvenQ,Exit,Exp,Expand,ExpandAll,% - ExpandDenominator,ExpandNumerator,ExpIntegralE,ExpIntegralEi,% - Exponent,Expression,ExtendedGCD,FaceForm,Factor,FactorComplete,% - Factorial,Factorial2,FactorInteger,FactorList,FactorSquareFree,% - FactorSquareFreeList,FactorTerms,FactorTermsList,FindMinimum,% - FindRoot,First,Fit,FixedPoint,Flatten,Floor,FontForm,For,Format,% - FormatType,FortranForm,Fourier,FreeQ,FullDefinition,FullForm,% - Function,Gamma,GCD,GegenbauerC,General,Get,Goto,Graphics,% - Graphics3D,GrayLevel,Greater,GreaterEqual,Head,HermiteH,% - HiddenSurface,Hold,HoldForm,Hypergeometric0F1, Hypergeometric1F1,% - Hypergeometric2F1,HypergeometricU,Identity,IdentityMatrix,If,Im,% - Implies,In,Increment,Indent,Infix,Information,Inner,Input,% - InputForm,InputString,Insert,Integer,IntegerQ,Integrate,% - Intersection,Inverse,InverseFourier,InverseJacobiSN,% - InverseSeries,JacobiAmplitude,JacobiP,JacobiSN,JacobiSymbol,Join,% - Label,LaguerreL,Last,LatticeReduce,LCM,LeafCount,LegendreP,% - LegendreQ,LegendreType,Length,LerchPhi,Less,LessEqual,Level,% - Lighting,LightSources,Limit,Line,LinearSolve,LineBreak,List,% - ListContourPlot,ListDensityPlot,ListPlot,ListPlot3D,Literal,Log,% - LogicalExpand,LogIntegral,MainSolve,Map,MapAll,MapAt,MatchQ,% - MatrixForm,MatrixQ,Max,MaxBend,MaxMemoryUsed,MemberQ,% - MemoryConstrained,MemoryInUse,Mesh,Message,MessageName,Messages,% - Min,Minors,Minus,Mod,Modulus,MoebiusMu,Multinomial,N,NameQ,Names,% - NBernoulliB,Needs,Negative,Nest,NestList,NIntegrate,% - NonCommutativeMultiply,NonConstants,NonNegative,Normal,Not,% - NProduct,NSum,NullSpace,Number,NumberForm,NumberPoint,NumberQ,% - NumberSeparator,Numerator,O,OddQ,Off,On,OpenAppend,OpenRead,% - OpenTemporary,OpenWrite,Operate,Optional,Options,Or,Order,% - OrderedQ,Out,Outer,OutputForm,PageHeight,PageWidth,% - ParametricPlot,ParametricPlot3D,Part,Partition,PartitionsP,% - PartitionsQ,Pattern,Permutations,Plot,Plot3D,PlotDivision,% - PlotJoined,PlotLabel,PlotPoints,PlotRange,PlotStyle,Pochhammer,% - Plus,Point,PointSize,PolyGamma,Polygon,PolyLog,PolynomialQ,% - PolynomialQuotient,PolynomialRemainder,Position,Positive,Postfix,% - Power,PowerMod,PrecedenceForm,Precision,PreDecrement,Prefix,% - PreIncrement,Prepend,PrependTo,Prime,PrimeQ,Print,PrintForm,% - Product,Protect,PseudoInverse,Put,PutAppend,Quartics,Quit,% - Quotient,Random,Range,Rational,Rationalize,Raw,Re,Read,ReadList,% - Real,Rectangle,Reduce,Remove,RenderAll,Repeated,RepeatedNull,% - Replace,ReplaceAll,ReplaceRepeated,Rest,Resultant,Return,Reverse,% - RGBColor,Roots,RotateLeft,RotateRight,Round,RowReduce,Rule,% - RuleDelayed,Run,RunThrough,SameQ,Save,Scaled,Scan,ScientificForm,% - Sec,Sech,SeedRandom,Select,Sequence,SequenceForm,Series,% - SeriesData,Set,SetAttributes,SetDelayed,SetOptions,Shading,Share,% - Short,Show,Sign,Signature,Simplify,Sin,SingularValues,Sinh,% - Skeleton,Slot,SlotSequence,Solve,SolveAlways,Sort,% - SphericalHarmonicY,Splice,Sqrt,StirlingS1,StirlingS2,String,% - StringBreak,StringForm,StringJoin,StringLength,StringMatchQ,% - StringSkeleton,Subscript,Subscripted,Subtract,SubtractForm,Sum,% - Superscript,SurfaceGraphics,Switch,Symbol,Table,TableForm,TagSet,% - TagSetDelayed,TagUnset,Take,Tan,Tanh,ToString,TensorRank,TeXForm,% - Text,TextForm,Thickness,Thread,Through,Throw,Ticks,% - TimeConstrained,Times,TimesBy,Timing,ToExpression,Together,% - ToRules,ToString,TotalHeight,TotalWidth,Transpose,TreeForm,TrueQ,% - Unequal,Union,Unique,Unprotect,Unset,Update,UpSet,UpSetDelayed,% - ValueQ,Variables,VectorQ,ViewPoint,WeierstrassP,% - WeierstrassPPrime,Which,While,WorkingPrecision,Write,WriteString,% - Xor,ZeroTest,Zeta},% - morendkeywords={All,Automatic,Catalan,ComplexInfinity,Constant,% - Degree,E,EndOfFile,EulerGamma,False,Flat,GoldenRatio,HoldAll,% - HoldFirst,HoldRest,I,Indeterminate,Infinity,Listable,Locked,% - Modular,None,Null,OneIdentity,Orderless,Pi,Protected,% - ReadProtected,True,$CommandLine,$Context,$ContextPath,$Display,% - $DisplayFunction,$Echo,$Epilog,$IgnoreEOF,$Line,$Messages,% - $Output,$Path,$Post,$Pre,$PrePrint,$RecursionLimit,$System,% - $Urgent,$Version},% - sensitive,% - morecomment=[s]{(*}{*)},% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% Octave definition (c) 2001,2002 Ulrich G. Wortmann -%% -\lst@definelanguage{Octave}% - {morekeywords={gt,lt,gt,lt,amp,abs,acos,acosh,acot,acoth,acsc,acsch,% - all,angle,ans,any,asec,asech,asin,asinh,atan,atan2,atanh,auread,% - auwrite,axes,axis,balance,bar,bessel,besselk,bessely,beta,% - betainc,betaln,blanks,bone,break,brighten,capture,cart2pol,% - cart2sph,caxis,cd,cdf2rdf,cedit,ceil,chol,cla,clabel,clc,clear,% - clf,clock,close,colmmd,Colon,colorbar,colormap,ColorSpec,colperm,% - comet,comet3,compan,compass,computer,cond,condest,conj,contour,% - contour3,contourc,contrast,conv,conv2,cool,copper,corrcoef,cos,% - cosh,cot,coth,cov,cplxpair,cputime,cross,csc,csch,csvread,% - csvwrite,cumprod,cumsum,cylinder,date,dbclear,dbcont,dbdown,% - dbquit,dbstack,dbstatus,dbstep,dbstop,dbtype,dbup,ddeadv,ddeexec,% - ddeinit,ddepoke,ddereq,ddeterm,ddeunadv,deblank,dec2hex,deconv,% - del2,delete,demo,det,diag,diary,diff,diffuse,dir,disp,dlmread,% - dlmwrite,dmperm,dot,drawnow,echo,eig,ellipj,ellipke,else,elseif,% - end,engClose,engEvalString,engGetFull,engGetMatrix,engOpen,% - engOutputBuffer,engPutFull,engPutMatrix,engSetEvalCallback,% - engSetEvalTimeout,engWinInit,eps,erf,erfc,erfcx,erfinv,% - errorbar,etime,etree,eval,exist,exp,expint,expm,expo,eye,fclose,% - feather,feof,ferror,feval,fft,fft2,fftshift,fgetl,fgets,figure,% - fill,fill3,filter,filter2,find,findstr,finite,fix,flag,fliplr,% - flipud,floor,flops,fmin,fmins,fopen,for,format,fplot,fprintf,% - fread,frewind,fscanf,fseek,ftell,full,function,funm,fwrite,fzero,% - gallery,gamma,gammainc,gammaln,gca,gcd,gcf,gco,get,getenv,% - getframe,ginput,global,gplot,gradient,gray,graymon,grid,griddata,% - gtext,hadamard,hankel,help,hess,hex2dec,hex2num,hidden,hilb,hist,% - hold,home,hostid,hot,hsv,hsv2rgb,if,ifft,ifft2,imag,image,% - imagesc,Inf,info,input,int2str,interp1,interp2,interpft,inv,% - invhilb,isempty,isglobal,ishold,isieee,isinf,isletter,isnan,% - isreal,isspace,issparse,isstr,jet,keyboard,kron,lasterr,lcm,% - legend,legendre,length,lin2mu,line,linspace,load,log,log10,log2,% - loglog,logm,logspace,lookfor,lower,ls,lscov,lu,magic,matClose,% - matDeleteMatrix,matGetDir,matGetFp,matGetFull,matGetMatrix,% - matGetNextMatrix,matGetString,matlabrc,matlabroot,matOpen,% - matPutFull,matPutMatrix,matPutString,max,mean,median,menu,mesh,% - meshc,meshgrid,meshz,mexAtExit,mexCallMATLAB,mexdebug,% - mexErrMsgTxt,mexEvalString,mexFunction,mexGetFull,mexGetMatrix,% - mexGetMatrixPtr,mexPrintf,mexPutFull,mexPutMatrix,mexSetTrapFlag,% - min,more,movie,moviein,mu2lin,mxCalloc,mxCopyCharacterToPtr,% - mxCopyComplex16ToPtr,mxCopyInteger4ToPtr,mxCopyPtrToCharacter,% - mxCopyPtrToComplex16,mxCopyPtrToInteger4,mxCopyPtrToReal8,% - mxCopyReal8ToPtr,mxCreateFull,mxCreateSparse,mxCreateString,% - mxFree,mxFreeMatrix,mxGetIr,mxGetJc,mxGetM,mxGetN,mxGetName,% - mxGetNzmax,mxGetPi,mxGetPr,mxGetScalar,mxGetString,mxIsComplex,% - mxIsFull,mxIsNumeric,mxIsSparse,mxIsString,mxIsTypeDouble,% - mxSetIr,mxSetJc,mxSetM,mxSetN,mxSetName,mxSetNzmax,mxSetPi,% - mxSetPr,NaN,nargchk,nargin,nargout,newplot,nextpow2,nnls,nnz,% - nonzeros,norm,normest,null,num2str,nzmax,ode23,ode45,orient,orth,% - pack,pascal,patch,path,pause,pcolor,pi,pink,pinv,plot,plot3,% - pol2cart,polar,poly,polyder,polyeig,polyfit,polyval,polyvalm,% - pow2,print,printopt,prism,prod,pwd,qr,qrdelete,qrinsert,quad,% - quad8,quit,quiver,qz,rand,randn,randperm,rank,rat,rats,rbbox,% - rcond,real,realmax,realmin,refresh,rem,reset,reshape,residue,% - return,rgb2hsv,rgbplot,rootobject,roots,rose,rosser,rot90,rotate,% - round,rref,rrefmovie,rsf2csf,save,saxis,schur,sec,sech,semilogx,% - semilogy,set,setstr,shading,sign,sin,sinh,size,slice,sort,sound,% - spalloc,sparse,spaugment,spconvert,spdiags,specular,speye,spfun,% - sph2cart,sphere,spinmap,spline,spones,spparms,sprandn,sprandsym,% - sprank,sprintf,spy,sqrt,sqrtm,sscanf,stairs,startup,std,stem,% - str2mat,str2num,strcmp,strings,strrep,strtok,subplot,subscribe,% - subspace,sum,surf,surface,surfc,surfl,surfnorm,svd,symbfact,% - symmmd,symrcm,tan,tanh,tempdir,tempname,terminal,text,tic,title,% - toc,toeplitz,trace,trapz,tril,triu,type,uicontrol,uigetfile,% - uimenu,uiputfile,unix,unwrap,upper,vander,ver,version,view,% - viewmtx,waitforbuttonpress,waterfall,wavread,wavwrite,what,% - whatsnew,which,while,white,whitebg,who,whos,wilkinson,wk1read,% - stderr,stdout,plot,set,endif,wk1write,xlabel,xor,ylabel,zeros,% - zlabel,zoom,endwhile,endfunction},% - sensitive=f,% - morecomment=[l]\#,% - morecomment=[l]\#\#,% - morestring=[m]',% - morestring=[m]"% - }[keywords,comments,strings]% -\lst@definelanguage[XSC]{Pascal}[Standard]{Pascal} - {deletekeywords={alfa,byte,pack,unpack},% 1998 Andreas Stephan - morekeywords={dynamic,external,forward,global,module,nil,operator,% - priority,sum,type,use,dispose,mark,page,release,cimatrix,% - cinterval,civector,cmatrix,complex,cvector,dotprecision,imatrix,% - interval,ivector,rmatrix,rvector,string,im,inf,re,sup,chr,comp,% - eof,eoln,expo,image,ival,lb,lbound,length,loc,mant,maxlength,odd,% - ord,pos,pred,round,rval,sign,substring,succ,trunc,ub,ubound}% - }% -\lst@definelanguage[Borland6]{Pascal}[Standard]{Pascal} - {morekeywords={asm,constructor,destructor,implementation,inline,% - interface,nil,object,shl,shr,string,unit,uses,xor},% - morendkeywords={Abs,Addr,ArcTan,Chr,Concat,Copy,Cos,CSeg,DiskFree,% - DiskSize,DosExitCode,DosVersion,DSeg,EnvCount,EnvStr,Eof,Eoln,% - Exp,FExpand,FilePos,FileSize,Frac,FSearch,GetBkColor,GetColor,% - GetDefaultPalette,GetDriverName,GetEnv,GetGraphMode,GetMaxMode,% - GetMaxX,GetMaxY,GetModeName,GetPaletteSize,GetPixel,GetX,GetY,% - GraphErrorMsg,GraphResult,Hi,ImageSize,InstallUserDriver,% - InstallUserFont,Int,IOResult,KeyPressed,Length,Lo,MaxAvail,% - MemAvail,MsDos,Odd,Ofs,Ord,OvrGetBuf,OvrGetRetry,ParamCount,% - ParamStr,Pi,Pos,Pred,Ptr,Random,ReadKey,Round,SeekEof,SeekEoln,% - Seg,SetAspectRatio,Sin,SizeOf,Sound,SPtr,Sqr,Sqrt,SSeg,Succ,% - Swap,TextHeight,TextWidth,Trunc,TypeOf,UpCase,WhereX,WhereY,% - Append,Arc,Assign,AssignCrt,Bar,Bar3D,BlockRead,BlockWrite,ChDir,% - Circle,ClearDevice,ClearViewPort,Close,CloseGraph,ClrEol,ClrScr,% - Dec,Delay,Delete,DelLine,DetectGraph,Dispose,DrawPoly,Ellipse,% - Erase,Exec,Exit,FillChar,FillEllipse,FillPoly,FindFirst,FindNext,% - FloodFill,Flush,FreeMem,FSplit,GetArcCoords,GetAspectRatio,% - GetDate,GetDefaultPalette,GetDir,GetCBreak,GetFAttr,% - GetFillSettings,GetFTime,GetImage,GetIntVec,GetLineSettings,% - GetMem,GetPalette,GetTextSettings,GetTime,GetVerify,% - GetViewSettings,GoToXY,Halt,HighVideo,Inc,InitGraph,Insert,% - InsLine,Intr,Keep,Line,LineRel,LineTo,LowVideo,Mark,MkDir,Move,% - MoveRel,MoveTo,MsDos,New,NormVideo,NoSound,OutText,OutTextXY,% - OvrClearBuf,OvrInit,OvrInitEMS,OvrSetBuf,PackTime,PieSlice,% - PutImage,PutPixel,Randomize,Rectangle,Release,Rename,% - RestoreCrtMode,RmDir,RunError,Sector,Seek,SetActivePage,% - SetAllPalette,SetBkColor,SetCBreak,SetColor,SetDate,SetFAttr,% - SetFillPattern,SetFillStyle,SetFTime,SetGraphBufSize,% - SetGraphMode,SetIntVec,SetLineStyle,SetPalette,SetRGBPalette,% - SetTextBuf,SetTextJustify,SetTextStyle,SetTime,SetUserCharSize,% - SetVerify,SetViewPort,SetVisualPage,SetWriteMode,Sound,Str,% - SwapVectors,TextBackground,TextColor,TextMode,Truncate,% - UnpackTime,Val,Window}% - }% -\lst@definelanguage[Standard]{Pascal}% - {morekeywords={alfa,and,array,begin,boolean,byte,case,char,const,div,% - do,downto,else,end,false,file,for,function,get,goto,if,in,% - integer,label,maxint,mod,new,not,of,or,pack,packed,page,program,% - put,procedure,read,readln,real,record,repeat,reset,rewrite,set,% - text,then,to,true,type,unpack,until,var,while,with,write,% - writeln},% - sensitive=f,% - morecomment=[s]{(*}{*)},% - morecomment=[s]{\{}{\}},% - morestring=[d]'% - }[keywords,comments,strings]% -\lst@definelanguage{Perl}% - {morekeywords={abs,accept,alarm,atan2,bind,binmode,bless,caller,% - chdir,chmod,chomp,chop,chown,chr,chroot,close,closedir,connect,% - continue,cos,crypt,dbmclose,dbmopen,defined,delete,die,do,dump,% - each,else,elsif,endgrent,endhostent,endnetent,endprotoent,% - endpwent,endservent,eof,eval,exec,exists,exit,exp,fcntl,fileno,% - flock,for,foreach,fork,format,formline,getc,getgrent,getgrgid,% - getgrnam,gethostbyaddr,gethostbyname,gethostent,getlogin,% - getnetbyaddr,getnetbyname,getnetent,getpeername,getpgrp,% - getppid,getpriority,getprotobyname,getprotobynumber,getprotoent,% - getpwent,getpwnam,getpwuid,getservbyname,getservbyport,% - getservent,getsockname,getsockopt,glob,gmtime,goto,grep,hex,if,% - import,index,int,ioctl,join,keys,kill,last,lc,lcfirst,length,% - link,listen,local,localtime,log,lstat,m,map,mkdir,msgctl,msgget,% - msgrcv,msgsnd,my,next,no,oct,open,opendir,ord,pack,package,pipe,% - pop,pos,print,printf,prototype,push,q,qq,quotemeta,qw,qx,rand,% - read,readdir,readlink,recv,redo,ref,rename,require,reset,return,% - reverse,rewinddir,rindex,rmdir,s,scalar,seek,seekdir,select,% - semctl,semget,semop,send,setgrent,sethostent,setnetent,setpgrp,% - setpriority,setprotoent,setpwent,setservent,setsockopt,shift,% - shmctl,shmget,shmread,shmwrite,shutdown,sin,sleep,socket,% - socketpair,sort,splice,split,sprintf,sqrt,srand,stat,study,sub,% - substr,symlink,syscall,sysopen,sysread,system,syswrite,tell,% - telldir,tie,tied,time,times,tr,truncate,uc,ucfirst,umask,undef,% - unless,unlink,unpack,unshift,untie,until,use,utime,values,vec,% - wait,waitpid,wantarray,warn,while,write,y},% - sensitive,% - morecomment=[l]\#,% - morestring=[b]",% - morestring=[b]',% - MoreSelectCharTable=% - \lst@ReplaceInput{\$\#}{\lst@ProcessOther\$\lst@ProcessOther\#}% - }[keywords,comments,strings]% -%% -%% POV definition (c) 1999 Berthold H\"ollmann -%% -\lst@definelanguage{POV}% - {morekeywords={abs,absorption,acos,acosh,adaptive,adc_bailout,agate,% - agate_turb,all,alpha,ambient,ambient_light,angle,aperture,append,% - arc_angle,area_light,array,asc,asin,asinh,assumed_gamma,atan,% - atan2,atanh,average,background,bezier_spline,bicubic_patch,% - black_hole,blob,blue,blur_samples,bounded_by,box,boxed,bozo,% - break,brick,brick_size,brightness,brilliance,bumps,bump_map,% - bump_size,camera,case,caustics,ceil,checker,chr,clipped_by,clock,% - clock_delta,color,color_map,colour,colour_map,component,% - composite,concat,cone,confidence,conic_sweep,control0,control1,% - cos,cosh,count,crackle,crand,cube,cubic,cubic_spline,cubic_wave,% - cylinder,cylindrical,debug,declare,default,defined,degrees,% - density,density_file,density_map,dents,difference,diffuse,% - dimensions,dimension_size,direction,disc,distance,% - distance_maximum,div,eccentricity,else,emission,end,error,% - error_bound,exp,extinction,fade_distance,fade_power,falloff,% - falloff_angle,false,fclose,file_exists,filter,finish,fisheye,% - flatness,flip,floor,focal_point,fog,fog_alt,fog_offset,fog_type,% - fopen,frequency,gif,global_settings,gradient,granite,% - gray_threshold,green,height_field,hexagon,hf_gray_16,hierarchy,% - hollow,hypercomplex,if,ifdef,iff,ifndef,image_map,include,int,% - interior,interpolate,intersection,intervals,inverse,ior,irid,% - irid_wavelength,jitter,julia_fractal,lambda,lathe,leopard,% - light_source,linear_spline,linear_sweep,local,location,log,% - looks_like,look_at,low_error_factor,macro,mandel,map_type,marble,% - material,material_map,matrix,max,max_intersections,max_iteration,% - max_trace_level,media,media_attenuation,media_interaction,merge,% - mesh,metallic,min,minimum_reuse,mod,mortar,nearest_count,no,% - normal,normal_map,no_shadow,number_of_waves,object,octaves,off,% - offset,omega,omnimax,on,once,onion,open,orthographic,panoramic,% - perspective,pgm,phase,phong,phong_size,pi,pigment,pigment_map,% - planar,plane,png,point_at,poly,polygon,poly_wave,pot,pow,ppm,% - precision,prism,pwr,quadratic_spline,quadric,quartic,quaternion,% - quick_color,quick_colour,quilted,radial,radians,radiosity,radius,% - rainbow,ramp_wave,rand,range,ratio,read,reciprocal,% - recursion_limit,red,reflection,reflection_exponent,refraction,% - render,repeat,rgb,rgbf,rgbft,rgbt,right,ripples,rotate,roughness,% - samples,scale,scallop_wave,scattering,seed,shadowless,sin,% - sine_wave,sinh,sky,sky_sphere,slice,slope_map,smooth,% - smooth_triangle,sor,specular,sphere,spherical,spiral1,spiral2,% - spotlight,spotted,sqr,sqrt,statistics,str,strcmp,strength,strlen,% - strlwr,strupr,sturm,substr,superellipsoid,switch,sys,t,tan,tanh,% - text,texture,texture_map,tga,thickness,threshold,tightness,tile2,% - tiles,torus,track,transform,translate,transmit,triangle,% - triangle_wave,true,ttf,turbulence,turb_depth,type,u,% - ultra_wide_angle,undef,union,up,use_color,use_colour,use_index,% - u_steps,v,val,variance,vaxis_rotate,vcross,vdot,version,vlength,% - vnormalize,vrotate,v_steps,warning,warp,water_level,waves,while,% - width,wood,wrinkles,write,x,y,yes,z},% - moredirectives={break,case,debug,declare,default,else,end,fclose,% - fopen,local,macro,read,render,statistics,switch,undef,version,% - warning,write},% - moredelim=*[directive]\#,% - sensitive,% - morecomment=[l]//,% - morecomment=[s]{/*}{*/},% - morestring=[d]",% - }[keywords,directives,comments,strings]% -%% -%% Python definition (c) 1998 Michael Weber -%% -\lst@definelanguage{Python}% - {morekeywords={access,and,break,class,continue,def,del,elif,else,% - except,exec,finally,for,from,global,if,import,in,is,lambda,not,% - or,pass,print,raise,return,try,while},% - sensitive=true,% - morecomment=[l]\#,% - morecomment=[s]{'''}{'''},% used for documentation text - morecomment=[s]{"""}{"""},% added by Philipp Matthias Hahn - morestring=[b]',% - morestring=[b]"% - }% -%% -%% Scilab definition (c) 2002,2003 Jean-Philippe Grivet -%% -\lst@definelanguage{Scilab}% - {morekeywords={abcd,abinv,abort,abs,acoshm,acosh,acosm,acos,addcolor,% - addf,addinter,addmenu,add_edge,add_node,adj2sp,adj_lists,aff2ab,% - amell,analpf,analyze,ans,apropos,arc_graph,arc_number,argn,arhnk,% - arl2,arma2p,armac,armax1,armax,arma,arsimul,artest,articul,ascii,% - asinhm,asinh,asinm,asin,atanhm,atanh,atanm,atan,augment,auread,% - auwrite,balanc,balreal,bandwr,basename,bdiag,besseli,besselj,% - besselk,bessely,best_match,bezout,bifish,bilin,binomial,black,% - bloc2exp,bloc2ss,bode,bool2s,boolean,boucle,break,bstap,buttmag,% - bvode,cainv,calerf,calfrq,call,canon,casc,case,ccontrg,cdfbet,% - cdfbin,cdfchi,cdfchn,cdffnc,cdff,cdfgam,cdfnbn,cdfnor,cdfpoi,% - cdft,ceil,center,cepstrum,chaintest,chain_struct,champ1,champ,% - chart,chdir,cheb1mag,cheb2mag,check_graph,check_io,chepol,chfact,% - chol,chsolve,circuit,classmarkov,clean,clearfun,clearglobal,% - clear,close,cls2dls,cmb_lin,cmndred,cmoment,code2str,coeff,coffg,% - coff,colcompr,colcomp,colinout,colormap,colregul,companion,comp,% - cond,conj,connex,contour2di,contour2d,contourf,contour,% - contract_edge,contrss,contr,cont_frm,cont_mat,convex_hull,convol,% - convstr,con_nodes,copfac,copy,correl,corr,coshm,cosh,cosm,cos,% - cotg,cothm,coth,covar,csim,cspect,ctr_gram,cumprod,cumsum,% - curblock,cycle_basis,czt,c_link,dasrt,dassl,datafit,date,dbphi,% - dcf,ddp,debug,dec2hex,deff,definedfields,degree,delbpt,% - delete_arcs,delete_nodes,delete,delip,delmenu,demos,denom,% - derivative,derivat,des2ss,des2tf,determ,detr,det,dft,dhinf,% - dhnorm,diag,diary,diff,diophant,dirname,dispbpt,dispfiles,disp,% - dlgamma,double,dragrect,drawaxis,drawlater,drawnow,draw,driver,% - dscr,dsearch,dsimul,dtsi,dt_ility,duplicate,edge_number,% - edit_curv,edit_graph_menus,edit_graph,edit,eigenmarkov,ell1mag,% - elseif,else,emptystr,endfunction,end,eqfir,eqiir,equil1,equil,% - ereduc,erfcx,erfc,erf,errbar,errcatch,errclear,error,eval3dp,% - eval3d,eval,evans,evstr,excel2sci,execstr,exec,exists,exit,expm,% - exp,external,eye,fac3d,factors,faurre,fchamp,fcontour2d,fcontour,% - fec,feedback,feval,ffilt,fftshift,fft,fgrayplot,figure,fileinfo,% - file,filter,findm,findobj,findx0BD,find_freq,find_path,find,% - findABCD,findAC,findBD,findBDK,findR,fit_dat,fix,floor,flts,foo,% - formatman,format,fort,for,fourplan,fplot2d,fplot3d1,fplot3d,% - fprintf,fprintfMat,frep2tf,freq,freson,frexp,frfit,frmag,fscanf,% - fscanfMat,fsfirlin,fsolve,fspecg,fstabst,fstair,ftest,ftuneq,% - fullrfk,fullrf,full,fun2string,funcprot,functions,function,% - funptr,fusee,gainplot,gamitg,gammaln,gamma,gcare,gcd,gcf,% - genfac3d,genlib,genmarkov,gen_net,geom3d,geomean,getblocklabel,% - getcolor,getcurblock,getcwd,getdate,getd,getenv,getfield,getfont,% - getf,getio,getlinestyle,getmark,getpid,getscicosvars,getsymbol,% - getvalue,getversion,get_function_path,get,gfare,gfrancis,girth,% - givens,glever,glist,global,glue,gpeche,graduate,grand,% - graphics_entities,graph_2_mat,graph_center,graph_complement,% - graph_diameter,graph_power,graph_simp,graph_sum,graph_union,% - graph-list,graycolormap,grayplot,graypolarplot,grep,group,% - gr_menu,gschur,gsort,gspec,gstacksize,gtild,g_margin,h2norm,halt,% - hamilton,hankelsv,hank,harmean,havewindow,help,hermit,hess,% - hex2dec,hilb,hinf,hist3d,histplot,horner,host,hotcolormap,% - householder,hrmt,htrianr,hypermat,h_cl,h_inf_st,h_inf,h_norm,% - iconvert,icon_edit,ieee,if,iirgroup,iirlp,iir,ilib_build,% - ilib_compile,ilib_for_link,ilib_gen_gateway,ilib_gen_loader,% - ilib_gen_Make,imag,impl,imrep2ss,imult,im_inv,inistate,input,% - int16,int2d,int32,int3d,int8,intc,intdec,integrate,interpln,% - interp,intersci,intersect,intg,intl,intppty,intsplin,inttrap,% - inttype,int,invr,invsyslin,inv_coeff,inv,iqr,isdef,isdir,isequal,% - iserror,isglobal,isinf,isnan,isoview,isreal,is_connex,jmat,% - justify,kalm,karmarkar,kernel,keyboard,knapsack,kpure,krac2,% - kroneck,kron,lasterror,lattn,lattp,lcf,lcmdiag,lcm,ldivf,ldiv,% - leastsq,legends,length,leqr,levin,lev,lex_sort,lft,lgfft,library,% - lib,lin2mu,lincos,lindquist,lines,line_graph,linfn,linf,link,% - linmeq,linpro,linsolve,linspace,lin,listfiles,list,lmisolver,% - lmitool,loadmatfile,loadplots,loadwave,load_graph,load,locate,% - log10,log1p,log2,logm,logspace,log,lotest,lqe,lqg2stan,lqg_ltr,% - lqg,lqr,lsq,lsslist,lstcat,lstsize,ltitr,ludel,lufact,luget,% - lusolve,lu,lyap,macglov,macr2lst,macrovar,macro,mad,make_graph,% - make_index,manedit,man,mapsound,markp2ss,matfile2sci,matrix,% - mat_2_graph,maxi,max_cap_path,max_clique,max_flow,max,mclearerr,% - mclose,meanf,mean,median,meof,mese,mesh2d,mfft,mfile2sci,mgeti,% - mgetl,mgetstr,mget,milk_drop,mine,mini,minreal,minss,% - min_lcost_cflow,min_lcost_flow1,min_lcost_flow2,min_qcost_flow,% - min_weight_tree,min,mlist,mode,modulo,moment,mopen,move,% - mps2linpro,mputl,mputstr,mput,mrfit,msd,mseek,mtell,mtlb_load,% - mtlb_mode,mtlb_save,mtlb_sparse,mu2lin,mulf,mvvacov,m_circle,% - names,nand2mean,nanmax,nanmeanf,nanmean,nanmedian,nanmin,% - nanstdev,nansum,narsimul,ndims,nearfloat,nehari,neighbors,% - netclose,netwindows,netwindow,newest,newfun,nextpow2,nf3d,nfreq,% - nlev,nnz,nodes_2_path,nodes_degrees,node_number,noisegen,norm,% - null,numdiff,numer,nyquist,obscont1,obscont,observer,obsvss,% - obsv_mat,obs_gram,odedc,odedi,odeoptions,ode_discrete,ode_root,% - ode,oldload,oldsave,ones,optim,orth,param3d1,param3d,% - paramfplot2d,parrot,part,pathconvert,path_2_nodes,pause,pbig,% - pdiv,pen2ea,pencan,penlaur,perctl,perfect_match,pertrans,pfss,% - phasemag,phc,pinv,pipe_network,playsnd,plot2d1,plot2d2,plot2d3,% - plot2d4,plot2d,plot3d1,plot3d2,plot3d3,plot3d,plotframe,% - plotprofile,plot_graph,plot,plzr,pmodulo,pol2des,pol2str,pol2tex,% - polarplot,polar,polfact,poly,portr3d,portrait,power,ppol,prbs_a,% - predecessors,predef,printf,printing,print,prod,profile,projsl,% - projspec,proj,psmall,pspect,pvm_addhosts,pvm_barrier,pvm_bcast,% - pvm_bufinfo,pvm_config,pvm_delhosts,pvm_error,pvm_exit,% - pvm_f772sci,pvm_getinst,pvm_gettid,pvm_get_timer,pvm_gsize,% - pvm_halt,pvm_joingroup,pvm_kill,pvm_lvgroup,pvm_mytid,pvm_parent,% - pvm_probe,pvm_recv,pvm_reduce,pvm_sci2f77,pvm_send,pvm_set_timer,% - pvm_spawn_independent,pvm_spawn,pvm_start,pvm_tasks,% - pvm_tidtohost,pvm,pwd,p_margin,qassign,qr,quapro,quart,quaskro,% - quit,randpencil,rand,range,rankqr,rank,rat,rcond,rdivf,read4b,% - readb,readc_,readmps,read,real,recur,reglin,regress,remezb,remez,% - repfreq,replot,residu,resume,return,riccati,riccsl,ricc,ric_desc,% - rlist,roots,rotate,round,routh_t,rowcompr,rowcomp,rowinout,% - rowregul,rowshuff,rpem,rref,rtitr,rubberbox,salesman,savewave,% - save_graph,save,scaling,scanf,schur,sci2exp,sci2for,sci2map,% - sciargs,scicosim,scicos,scifunc_block,sd2sci,secto3d,select,% - semidef,sensi,setbpt,seteventhandler,setfield,setmenu,% - setscicosvars,set,sfact,sgrid,shortest_path,showprofile,% - show_arcs,show_graph,show_nodes,sident,signm,sign,simp_mode,simp,% - sincd,sinc,sinc,sinhm,sinh,sinm,sin,size,sm2des,sm2ss,smooth,% - solve,sorder,sort,sound,sp2adj,spaninter,spanplus,spantwo,sparse,% - spchol,spcompack,specfact,spec,speye,spget,splin,split_edge,% - spones,sprand,sprintf,spzeros,sqroot,sqrtm,sqrt,squarewave,% - square,srfaur,srkf,ss2des,ss2ss,ss2tf,sscanf,sskf,ssprint,ssrand,% - stabil,stacksize,standard_define,standard_draw,standard_input,% - standard_origin,standard_output,startup,stdevf,stdev,steadycos,% - str2code,strange,strcat,strindex,strings,string,stripblanks,% - strong_connex,strong_con_nodes,strsubst,st_deviation,st_ility,% - subf,subgraph,subplot,successors,sum,supernode,sva,svd,svplot,% - sylm,sylv,sysconv,sysdiag,sysfact,syslin,syssize,systems,system,% - systmat,tabul,tangent,tanhm,tanh,tanm,tan,tdinit,testmatrix,% - texprint,tf2des,tf2ss,then,thrownan,timer,time_id,titlepage,% - tk_getdir,tk_getfile,tlist,toeplitz,tokenpos,tokens,trace,% - translatepaths,trans_closure,trans,trfmod,trianfml,tril,trimmean,% - trisolve,triu,trzeros,typename,typeof,type,uicontrol,uimenu,% - uint16,uint32,uint8,ui_observer,ulink,unglue,union,unique,unix_g,% - unix_s,unix_w,unix_x,unix,unobs,unsetmenu,user,varargin,% - varargout,variancef,variance,varn,warning,wavread,wavwrite,% - wcenter,wfir,what,whereami,whereis,where,while,whos,who_user,who,% - wiener,wigner,window,winsid,with_gtk,with_pvm,with_texmacs,% - with_tk,writb,write4b,write,xarcs,xarc,xarrows,xaxis,xbasc,% - xbasimp,xbasr,xchange,xclear,xclea,xclick,xclip,xdel,xend,xfarcs,% - xfarc,xfpolys,xfpoly,xfrect,xgetech,xgetfile,xgetmouse,xget,% - xgraduate,xgrid,xinfo,xinit,xlfont,xload,xname,xnumb,xpause,% - xpolys,xpoly,xrects,xrect,xrpoly,xs2fig,xs2gif,xs2ppm,xs2ps,% - xsave,xsegs,select,xsetech,xsetm,xset,xstringb,xstringl,xstring,% - xtape,xtitle,x_choices,x_choose,x_dialog,x_matrix,x_mdialog,% - x_message_modeless,x_message,yulewalk,zeropen,zeros,zgrid,zpbutt,% - zpch1,zpch2,zpell,mfprintf,mfscanf,mprintf,mscanf,msprintf,% - msscanf,mucomp,% - ABSBLK_f,AFFICH_f,ANDLOG_f,ANIMXY_f,BIGSOM_f,CLINDUMMY_f,CLKIN_f,% - CLKINV_f,CLKOUT_f,CLKOUTV_f,CLKSOM_f,CLKSOMV_f,CLKSPLIT_f,% - CLOCK_f,CLR_f,CLSS_f,CONST_f,COSBLK_f,CURV_f,DELAY_f,DELAYV_f,% - DEMUX_f,DLR_f,DLRADAPT_f,DLSS_f,EVENTSCOPE_f,EVTDLY_f,EVTGEN_f,% - EXPBLK_f,G_make,GAIN_f,GAINBLK_f,GENERAL_f,GENERIC_f,GENSIN_f,% - GENSQR_f,HALT_f,IFTHEL_f,IN_f,INTEGRAL_f,INTRP2BLK_f,INTRPLBLK_f,% - INVBLK_f,LOGBLK_f,LOOKUP_f,Matplot1,Matplot,MAX_f,MCLOCK_f,% - MFCLCK_f,MIN_f,MUX_f,NDcost,NEGTOPOS_f,OUT_f,POSTONEG_f,POWBLK_f,% - PROD_f,QUANT_f,RAND_f,READC_f,REGISTER_f,RELAY_f,RFILE_f,% - ScilabEval,Sfgrayplot,Sgrayplot,SAMPLEHOLD_f,SAT_f,SAWTOOTH_f,% - SCOPE_f,SCOPXY_f,SELECT_f,SINBLK_f,SOM_f,SPLIT_f,STOP_f,SUPER_f,% - TANBLK_f,TCLSS_f,TEXT_f,TIME_f,TK_EvalFile,TK_EvalStr,TK_GetVar,% - TK_SetVar,TRASH_f,WFILE_f,WRITEC_f,ZCROSS_f,% - \%asn,\%helps,\%k,\%sn},% - alsoletter=\%,% chmod - sensitive,% - morecomment=[l]//,% - morestring=[b]",% - morestring=[m]'% - }[keywords,comments,strings]% -%% -%% SQL definition (c) 1998 Christian Haul -%% (c) 2002 Neil Conway -%% (c) 2002 Robert Frank -%% (c) 2003 Dirk Jesko -%% -\lst@definelanguage{SQL}% - {morekeywords={ABSOLUTE,ACTION,ADD,ALLOCATE,ALTER,ARE,AS,ASSERTION,% - AT,BETWEEN,BIT_LENGTH,BOTH,BY,CASCADE,CASCADED,CASE,CAST,% - CATALOG,CHAR_LENGTH,CHARACTER_LENGTH,CLUSTER,COALESCE,% - COLLATE,COLLATION,COLUMN,CONNECT,CONNECTION,CONSTRAINT,% - CONSTRAINTS,CONVERT,CORRESPONDING,CREATE,CROSS,CURRENT_DATE,% - CURRENT_TIME,CURRENT_TIMESTAMP,CURRENT_USER,DAY,DEALLOCATE,% - DEC,DEFERRABLE,DEFERED,DESCRIBE,DESCRIPTOR,DIAGNOSTICS,% - DISCONNECT,DOMAIN,DROP,ELSE,END,EXEC,EXCEPT,EXCEPTION,EXECUTE,% - EXTERNAL,EXTRACT,FALSE,FIRST,FOREIGN,FROM,FULL,GET,GLOBAL,% - GRAPHIC,HAVING,HOUR,IDENTITY,IMMEDIATE,INDEX,INITIALLY,INNER,% - INPUT,INSENSITIVE,INSERT,INTO,INTERSECT,INTERVAL,% - ISOLATION,JOIN,KEY,LAST,LEADING,LEFT,LEVEL,LIMIT,LOCAL,LOWER,% - MATCH,MINUTE,MONTH,NAMES,NATIONAL,NATURAL,NCHAR,NEXT,NO,NOT,NULL,% - NULLIF,OCTET_LENGTH,ON,ONLY,ORDER,ORDERED,OUTER,OUTPUT,OVERLAPS,% - PAD,PARTIAL,POSITION,PREPARE,PRESERVE,PRIMARY,PRIOR,READ,% - RELATIVE,RESTRICT,REVOKE,RIGHT,ROWS,SCROLL,SECOND,SELECT,SESSION,% - SESSION_USER,SIZE,SPACE,SQLSTATE,SUBSTRING,SYSTEM_USER,% - TABLE,TEMPORARY,THEN,TIMEZONE_HOUR,% - TIMEZONE_MINUTE,TRAILING,TRANSACTION,TRANSLATE,TRANSLATION,TRIM,% - TRUE,UNIQUE,UNKNOWN,UPPER,USAGE,USING,VALUE,VALUES,% - VARGRAPHIC,VARYING,WHEN,WHERE,WRITE,YEAR,ZONE,% - AND,ASC,avg,CHECK,COMMIT,count,DECODE,DESC,DISTINCT,GROUP,IN,% FF - LIKE,NUMBER,ROLLBACK,SUBSTR,sum,VARCHAR2,% FF - MIN,MAX,UNION,UPDATE,% RF - ALL,ANY,CUBE,CUBE,DEFAULT,DELETE,EXISTS,GRANT,OR,RECURSIVE,% DJ - ROLE,ROLLUP,SET,SOME,TRIGGER,VIEW},% DJ - morendkeywords={BIT,BLOB,CHAR,CHARACTER,CLOB,DATE,DECIMAL,FLOAT,% DJ - INT,INTEGER,NUMERIC,SMALLINT,TIME,TIMESTAMP,VARCHAR},% moved here - sensitive=false,% DJ - morecomment=[l]--,% - morecomment=[s]{/*}{*/},% - morestring=[d]',% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% VHDL definition (c) 1997 Kai Wollenweber -%% -\lst@definelanguage{VHDL}% - {morekeywords={ALL,ARCHITECTURE,ABS,AND,ASSERT,ARRAY,AFTER,ALIAS,% - ACCESS,ATTRIBUTE,BEGIN,BODY,BUS,BLOCK,BUFFER,CONSTANT,CASE,% - COMPONENT,CONFIGURATION,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,% - FUNCTION,FOR,FILE,GENERIC,GENERATE,GUARDED,GROUP,IF,IN,INOUT,IS,% - INERTIAL,IMPURE,LIBRARY,LOOP,LABEL,LITERAL,LINKAGE,MAP,MOD,NOT,% - NOR,NAND,NULL,NEXT,NEW,OUT,OF,OR,OTHERS,ON,OPEN,PROCESS,PORT,% - PACKAGE,PURE,PROCEDURE,POSTPONED,RANGE,REM,ROL,ROR,REPORT,RECORD,% - RETURN,REGISTER,REJECT,SIGNAL,SUBTYPE,SLL,SRL,SLA,SRA,SEVERITY,% - SELECT,THEN,TYPE,TRANSPORT,TO,USE,UNITS,UNTIL,VARIABLE,WHEN,WAIT,% - WHILE,XOR,XNOR,% - DISCONNECT,ELIF,WITH},% Arnaud Tisserand - sensitive=f,% 1998 Gaurav Aggarwal - morecomment=[l]--,% - morestring=[d]{"}% - }[keywords,comments,strings]% -%% -%% VHDL-AMS definition (c) Steffen Klupsch -%% -\lst@definelanguage[AMS]{VHDL}[]{VHDL}% - {morekeywords={ACROSS,ARRAY,BREAK,DISCONNECT,NATURE,NOISE,PORT,% - PROCEDURAL,QUANTITY,SHARED,SPECTRUM,SUBNATURE,TERMINAL,THROUGH,% - TOLERANCE,UNAFFACTED,UNITS}} -\lst@definelanguage{XSLT}[]{XML}% - {morekeywords={% - % main elements - xsl:stylesheet,xsl:transform,% - % childs of the main element - xsl:apply-imports,xsl:attribute-set,xsl:decimal-format,xsl:import,% - xsl:include,xsl:key,xsl:namespace-alias,xsl:output,xsl:param,% - xsl:preserve-space,xsl:strip-space,xsl:template,xsl:variable,% - % 21 directives - xsl:apply-imports,xsl:apply-templates,xsl:attribute,% - xsl:call-template,xsl:choose,xsl:comment,xsl:copy,xsl:copy-of,% - xsl:element,xsl:fallback,xsl:for-each,xsl:if,xsl:message,% - xsl:number,xsl:otherwise,xsl:processing-instruction,xsl:text,% - xsl:value-of,xsl:variable,xsl:when,xsl:with-param},% - alsodigit={-},% - }% -\lst@definelanguage{Ant}[]{XML}% - {morekeywords={% - project,target,patternset,include,exclude,excludesfile,includesfile,filterset,% - filter,filtersfile,libfileset,custom,classpath,fileset,none,depend,mapper,% - filename,not,date,contains,selector,depth,or,and,present,majority,size,dirset,% - filelist,pathelement,path,param,filterreader,extension,filterchain,linecontainsregexp,% - regexp,classconstants,headfilter,tabstospaces,striplinebreaks,tailfilter,stripjavacomments,% - expandproperties,linecontains,replacetokens,token,striplinecomments,comment,prefixlines,% - classfileset,rootfileset,root,description,xmlcatalog,entity,dtd,substitution,% - extensionSet,propertyfile,entry,vsscheckin,sql,transaction,cvspass,csc,% - dirname,wlrun,wlclasspath,p4label,replaceregexp,get,jjtree,sleep,jarlib,% - dependset,targetfileset,srcfileset,srcfilelist,targetfilelist,zip,zipgroupfileset,zipfileset,% - patch,jspc,webapp,style,test,arg,jvmarg,sysproperty,testlet,env,tstamp,% - format,unwar,vsshistory,icontract,cvschangelog,user,p4submit,ccmcheckin,% - p4change,bzip2,vssadd,javadoc,bottom,source,doctitle,header,excludepackage,bootclasspath,% - doclet,taglet,packageset,sourcepath,link,footer,package,group,title,tag,% - translate,signjar,vajload,vajproject,jarlib,extensionset,WsdlToDotnet,buildnumber,% - jpcovmerge,tomcat,ejbjar,weblogictoplink,jboss,borland,weblogic,iplanet,jonas,% - support,websphere,wasclasspath,war,manifest,attribute,section,metainf,lib,% - classes,webinf,rename,sequential,serverdeploy,generic,property,move,% - copydir,cccheckin,wljspc,fixcrlf,sosget,pathconvert,map,record,p4sync,exec,% - p4edit,maudit,rulespath,searchpath,antlr,netrexxc,jpcovreport,reference,filters,% - coveragepath,execon,targetfile,srcfile,ccmcheckout,ant,xmlvalidate,xslt,% - iplanet,ccmcheckintask,gzip,native2ascii,starteam,ear,archives,input,% - rmic,extdirs,compilerarg,checksum,mail,bcc,message,cc,to,from,loadfile,vsscheckout,% - stylebook,soscheckin,mimemail,stlabel,gunzip,concat,cab,touch,parallel,splash,% - antcall,cccheckout,typedef,p4have,xmlproperty,copy,tomcat,antstructure,ccmcreatetask,% - rpm,delete,replace,replacefilter,replacetoken,replacevalue,mmetrics,waitfor,isfalse,% - equals,available,filepath,os,filesmatch,istrue,isset,socket,http,uptodate,srcfiles,% - untar,loadproperties,echoproperties,vajexport,stcheckout,bunzip2,copyfile,vsscreate,% - ejbc,unjar,tomcat,wsdltodotnet,mkdir,condition,cvs,commandline,marker,argument,% - tempfile,junitreport,report,taskdef,echo,ccupdate,java,renameext,vsslabel,basename,% - javadoc2,vsscp,tar,tarfileset,tomcat,vajimport,setproxy,wlstop,p4counter,ilasm,% - soscheckout,apply,ccuncheckout,jarlib,location,url,cvstagdiff,jlink,mergefiles,% - addfiles,javacc,pvcs,pvcsproject,jarlib,options,depends,chmod,jar,sound,fail,% - success,mparse,blgenclient,genkey,dname,javah,class,ccmreconfigure,unzip,javac,% - src,p4add,soslabel,jpcoverage,triggers,method,vssget,deltree,ddcreator}, - deletekeywords={default},% - } -\lst@definelanguage{XML}% - {keywords={,CDATA,DOCTYPE,ATTLIST,termdef,ELEMENT,EMPTY,ANY,ID,% - IDREF,IDREFS,ENTITY,ENTITIES,NMTOKEN,NMTOKENS,NOTATION,% - INCLUDE,IGNORE,SYSTEM,PUBLIC,NDATA,PUBLIC,% - PCDATA,REQUIRED,IMPLIED,FIXED,%%% preceded by # - xml,xml:space,xml:lang,version,standalone,default,preserve},% - alsoother=$,% - alsoletter=:,% - tag=**[s]<>,% - morestring=[d]",% ??? doubled - morestring=[d]',% ??? doubled - MoreSelectCharTable=% - \lst@CArgX--\relax\lst@DefDelimB{}{}% - {\ifnum\lst@mode=\lst@tagmode\else - \expandafter\@gobblethree - \fi}% - \lst@BeginComment\lst@commentmode{{\lst@commentstyle}}% - \lst@CArgX--\relax\lst@DefDelimE{}{}{}% - \lst@EndComment\lst@commentmode - \lst@CArgX[CDATA[\relax\lst@CDef{}% - {\ifnum\lst@mode=\lst@tagmode - \expandafter\lst@BeginCDATA - \else \expandafter\lst@CArgEmpty - \fi}% - \@empty - \lst@CArgX]]\relax\lst@CDef{}% - {\ifnum\lst@mode=\lst@GPmode - \expandafter\lst@EndComment - \else \expandafter\lst@CArgEmpty - \fi}% - \@empty - }[keywords,comments,strings,html]% -\endinput -%% -%% End of file `lstlang1.sty'. diff --git a/Documentation/PhysicsTools/lstlang2.sty b/Documentation/PhysicsTools/lstlang2.sty deleted file mode 100644 index 3ee303b7a25..00000000000 --- a/Documentation/PhysicsTools/lstlang2.sty +++ /dev/null @@ -1,1532 +0,0 @@ -%% -%% This is file `lstlang2.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% lstdrvrs-1.3.dtx (with options: `lang2') -%% -%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz -%% and/or any other author listed elsewhere in this file. -%% -%% This file is distributed under the terms of the LaTeX Project Public -%% License from CTAN archives in directory macros/latex/base/lppl.txt. -%% Either version 1.0 or, at your option, any later version. -%% -%% This file is completely free and comes without any warranty. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\ProvidesFile{lstlang2.sty} - [2004/09/05 1.3 listings language file] -%% -%% Abap definition by Knut Lickert -%% -\lst@definelanguage[R/3 6.10]{ABAP}[R/3 4.6C]{ABAP}% - {morekeywords={try,endtry},% - }[keywords,comments,strings] -\lst@definelanguage[R/3 4.6C]{ABAP}[R/3 3.1]{ABAP}% - {morekeywords={method,ref,class,create,object,% - methods,endmethod,private,protected,public,section,% - catch,system-exceptions,endcatch,% - },% - moreprocnamekeys={class},% - literate={->}{{$\rightarrow$}}1{=>}{{$\Rightarrow$}}1,% - }[keywords,comments,strings,procnames] -\lst@definelanguage[R/3 3.1]{ABAP}[R/2 5.0]{ABAP}{}% -\lst@definelanguage[R/2 5.0]{ABAP}% - {sensitive=f,% - procnamekeys={report,program,form,function,module},% - morekeywords={*,add,after,alias,analyzer,and,append,appending,area,assign,at,% - authority-check,before,binary,blank,break-point,calendar,call,% - case,change,changing,check,clear,cnt,co,collect,commit,common,% - component,compute,condense,corresponding,cos,cp,cs,currency-conversion,% - cursor,data,database,dataset,decimals,define,delete,deleting,dequeue,% - describe,detail,dialog,directory,div,divide,do,documentation,% - during,dynpro,else,end-of-page,end-of-selection,endat,endcase,% - enddo,endfor,endform,endif,endloop,endmodule,endselect,% - endwhile,enqueue,exceptions,exit,exp,export,exporting,extract,% - field,fields,field-groups,field-symbols,find,for,form,format,free,% - from,function,generating,get,giving,hide,id,if,import,% - importing,in,incl,include,initial,initialization,input,insert,% - interrupt,into,is,language,leave,leading,left-justified,like,line,lines,line-count, - line-selection,list-processing,load,local,log,logfile,loop,% - margin,mark,mask,memory,menue,message,mod,modify,module,move,% - move-text,multiply,na,new,new-line,new-page,no-gaps,np,ns,% - number,obligatory,occurs,of,on,or,others,output,parameter,% - parameters,parts,perform,pf-status,places,position,process,% - raise,raising,ranges,read,refresh,refresh-dynpro,reject,remote,% - replace,report,reserve,reset,restart,right-justified,run,screen,scroll,search,% - segments,select,select-options,selection-screen,set,shift,sin,% - single,sqrt,start-of-selection,statement,structure,submit,% - subtract,summary,summing,suppress,system,table,tables,task,% - text,time,to,top-of-page,trace,transaction,transfer,% - transfer-dynpro,translate,type,unpack,update,user-command,% - using,value,when,where,while,window,with,workfile,write,},% - morecomment=[l]",% - morecomment=[f][0]*,% - morestring=[d]'% - }[keywords,comments,strings,procnames] -\lst@definelanguage[R/2 4.3]{ABAP}[R/2 5.0]{ABAP}% - {deletekeywords={function,importing,exporting,changing,exceptions,% - raise,raising}% - }[keywords,comments,strings] -%% -%% Corba IDL definition (c) 1999 Jens T. Berger Thielemann -%% -\lst@definelanguage[CORBA]{IDL}% - {morekeywords={any,attribute,boolean,case,char,const,context,default,% - double,enum,exception,fixed,float,in,inout,interface,long,module,% - native,Object,octet,oneway,out,raises,readonly,sequence,short,% - string,struct,switch,typedef,union,unsigned,void,wchar,wstring,% - FALSE,TRUE},% - sensitive,% - moredirectives={define,elif,else,endif,error,if,ifdef,ifndef,line,% - include,pragma,undef,warning},% - moredelim=*[directive]\#,% - morecomment=[l]//,% - morecomment=[s]{/*}{*/},% - morestring=[b]"% - }[keywords,comments,strings,directives]% -%% -%% (Objective) Caml definition (c) 1999 Patrick Cousot -%% -%% Objective CAML and Caml light are freely available, together with a -%% reference manual, at URL ftp.inria.fr/lang/caml-light for the Unix, -%% Windows and Macintosh OS operating systems. -%% -\lst@definelanguage[Objective]{Caml}[light]{Caml} - {deletekeywords={not,prefix,value,where},% - morekeywords={assert,asr,class,closed,constraint,external,false,% - functor,include,inherit,land,lazy,lor,lsl,lsr,lxor,method,mod,% - module,new,open,parser,private,sig,struct,true,val,virtual,when,% - object,ref},% TH - }% -\lst@definelanguage[light]{Caml} - {morekeywords={and,as,begin,do,done,downto,else,end,exception,for,% - fun,function,if,in,let,match,mutable,not,of,or,prefix,rec,then,% - to,try,type,value,where,while,with},% - sensitive,% - morecomment=[n]{(*}{*)},% - morestring=[b]",% - moredelim=*[directive]\#,% - moredirectives={open,close,include}% - }[keywords,comments,strings,directives]% -\lst@definelanguage[ibm]{Cobol}[1985]{Cobol}% - {morekeywords={ADDRESS,BEGINNING,COMP-3,COMP-4,COMPUTATIONAL,% - COMPUTATIONAL-3,COMPUTATIONAL-4,DISPLAY-1,EGCS,EJECT,ENDING,% - ENTRY,GOBACK,ID,MORE-LABELS,NULL,NULLS,PASSWORD,RECORDING,% - RETURN-CODE,SERVICE,SKIP1,SKIP2,SKIP3,SORT-CONTROL,SORT-RETURN,% - SUPPRESS,TITLE,WHEN-COMPILED},% - }% -\lst@definelanguage[1985]{Cobol}[1974]{Cobol}% - {morekeywords={ALPHABET,ALPHABETIC-LOWER,ALPHABETIC-UPPER,% - ALPHANUMERIC,ALPHANUMERIC-EDITED,ANY,CLASS,COMMON,CONTENT,% - CONTINUE,DAY-OF-WEEK,END-ADD,END-CALL,END-COMPUTE,END-DELETE,% - END-DIVIDE,END-EVALUATE,END-IF,END-MULTIPLY,END-PERFORM,END-READ,% - END-RECEIVE,END-RETURN,END-REWRITE,END-SEARCH,END-START,% - END-STRING,END-SUBTRACT,END-UNSTRING,END-WRITE,EVALUATE,EXTERNAL,% - FALSE,GLOBAL,INITIALIZE,NUMERIC-EDITED,ORDER,OTHER,% - PACKED-DECIMAL,PADDING,PURGE,REFERENCE,RELOAD,REPLACE,STANDARD-1,% - STANDARD-2,TEST,THEN,TRUE},% - }% -\lst@definelanguage[1974]{Cobol}% - {morekeywords={ACCEPT,ACCESS,ADD,ADVANCING,AFTER,ALL,ALPHABETIC,ALSO,% - ALTER,ALTERNATE,AND,ARE,AREA,AREAS,ASCENDING,ASSIGN,AT,AUTHOR,% - BEFORE,BINARY,BLANK,BLOCK,BOTTOM,BY,CALL,CANCEL,CD,CF,CH,% - CHARACTER,CHARACTERS,CLOCK-UNITS,CLOSE,COBOL,CODE,CODE-SET,% - COLLATING,COLUMN,COMMA,COMMUNICATION,COMP,COMPUTE,CONFIGURATION,% - CONTAINS,CONTROL,CONTROLS,CONVERTING,COPY,CORR,CORRESPONDING,% - COUNT,CURRENCY,DATA,DATE,DATE-COMPILED,DATE-WRITTEN,DAY,DE,% - DEBUG-CONTENTS,DEGUB-ITEM,DEBUG-LINE,DEBUG-NAME,DEBUG-SUB1,% - DEBUG-SUB2,DEBUG-SUB3,DEBUGGING,DECIMAL-POINT,DECLARATIVES,% - DELETE,DELIMITED,DELIMITER,DEPENDING,DESCENDING,DESTINATION,% - DETAIL,DISABLE,DISPLAY,DIVIDE,DIVISION,DOWN,DUPLICATES,DYNAMIC,% - EGI,ELSE,EMI,ENABLE,END,END-OF-PAGE,ENTER,ENVIRONMENT,EOP,EQUAL,% - ERROR,ESI,EVERY,EXCEPTION,EXIT,EXTEND,FD,FILE,FILE-CONTROL,% - FILLER,FINAL,FIRST,FOOTING,FOR,FROM,GENERATE,GIVING,GO,GREATER,% - GROUP,HEADING,HIGH-VALUE,HIGH-VALUES,I-O,I-O-CONTROL,% - IDENTIFICATION,IF,IN,INDEX,INDEXED,INDICATE,INITIAL,INITIATE,% - INPUT,INPUT-OUTPUT,INSPECT,INSTALLATION,INTO,INVALID,IS,JUST,% - JUSTIFIED,KEY,LABEL,LAST,LEADING,LEFT,LENGTH,LESS,LIMIT,LIMITS,% - LINAGE,LINAGE-COUNTER,LINE,LINE-COUNTER,LINES,LINKAGE,LOCK,% - LOW-VALUE,LOW-VALUES,MEMORY,MERGE,MESSAGE,MODE,MODULES,MOVE,% - MULTIPLE,MULTIPLY,NATIVE,NEGATIVE,NEXT,NO,NOT,NUMBER,NUMERIC,% - OBJECT-COMPUTER,OCCURS,OF,OFF,OMITTED,ON,OPEN,OPTIONAL,OR,% - ORGANIZATION,OUTPUT,OVERFLOW,PAGE,PAGE-COUNTER,PERFORM,PF,PH,PIC,% - PICTURE,PLUS,POINTER,POSITION,PRINTING,POSITIVE,PRINTING,% - PROCEDURE,PROCEDURES,PROCEED,PROGRAM,PROGRAM-ID,QUEUE,QUOTE,% - QUOTES,RANDOM,RD,READ,RECEIVE,RECORD,RECORDING,RECORDS,REDEFINES,% - REEL,REFERENCES,RELATIVE,RELEASE,REMAINDER,REMOVAL,RENAMES,% - REPLACING,REPORT,REPORTING,REPORTS,RERUN,RESERVE,RESET,RETURN,% - REVERSED,REWIND,REWRITE,RF,RH,RIGHT,ROUNDED,RUN,SAME,SD,SEARCH,% - SECTION,SECURITY,SEGMENT,SEGMENT-LIMIT,SELECT,SEND,SENTENCE,% - SEPARATE,SEQUENCE,SEQUENTIAL,SET,SIGN,SIZE,SORT,SORT-MERGE,% - SOURCE,SOURCE-COMPUTER,SPACE,SPACES,SPECIAL-NAMES,STANDARD,START,% - STATUS,STOP,STRING,SUB-QUEUE-1,SUB-QUEUE-2,SUB-QUEUE-3,SUBTRACT,% - SUM,SYMBOLIC,SYNC,SYNCHRONIZED,TABLE,TALLYING,TAPE,TERMINAL,% - TERMINATE,TEXT,THAN,THROUGH,THRU,TIME,TIMES,TO,TOP,TRAILING,TYPE,% - UNIT,UNSTRING,UNTIL,UP,UPON,USAGE,USE,USING,VALUE,VALUES,VARYING,% - WHEN,WITH,WORDS,WORKING-STORAGE,WRITE,ZERO,ZEROES,ZEROS},% - alsodigit=-,% - sensitive=f,% ??? - morecomment=[f][commentstyle][6]*,% - morestring=[d]"% ??? doubled - }[keywords,comments,strings]% -\lst@definelanguage{Delphi}% - {morekeywords={and,as,asm,array,begin,case,class,const,constructor,% - destructor,div,do,downto,else,end,except,exports,file,finally,% - for,function,goto,if,implementation,in,inherited,inline,% - initialization,interface,is,label,library,mod,nil,not,object,of,% - or,packed,procedure,program,property,raise,record,repeat,set,% - shl,shr,string,then,to,try,type,unit,until,uses,var,while,with,% - xor,% - absolute,abstract,assembler,at,cdecl,default,dynamic,export,% - external,far,forward,index,name,near,nodefault,on,override,% - private,protected,public,published,read,resident,storedDir,% - virtual,write},% - morendkeywords={Abs,AddExitProc,Addr,AllocMem,AnsiCompareStr,% - AnsiCompareText,AnsiLowerCase,AnsiUpperCase,Append,AppendStr,% - ArcTan,AssignCrt,Assigned,AssignFile,BlockRead,BlockWrite,Break,% - ChangeFileExt,ChDir,Chr,CloseFile,ClrEol,ClrScr,Concat,Continue,% - Copy,Cos,CSeg,CursorTo,Date,DateTimeToFileDate,DateTimeToStr,% - DateTimeToString,DateToStr,DayOfWeek,Dec,DecodeDate,DecodeTime,% - Delete,DeleteFile,DiskFree,DiskSize,Dispose,DisposeStr,% - DoneWinCrt,DSeg,EncodeDate,EncodeTime,Eof,Eoln,Erase,Exclude,% - Exit,Exp,ExpandFileName,ExtractFileExt,ExtractFileName,% - ExtractFilePath,FileAge,FileClose,FileDateToDateTime,FileExists,% - FileGetAttr,FileGetDate,FileOpen,FilePos,FileRead,FileSearch,% - FileSeek,FileSetAttr,FileSetDate,FileSize,FillChar,FindClose,% - FindFirst,FindNext,FloatToDecimal,FloatToStrF,FloatToStr,% - FloatToText,FloatToTextFmt,Flush,FmtLoadStr,FmtStr,Format,% - FormatBuf,FormatDateTime,FormatFloat,Frac,Free,FreeMem,GetDir,% - GetMem,GotoXY,Halt,Hi,High,Inc,Include,InitWinCrt,Insert,Int,% - IntToHex,IntToStr,IOResult,IsValidIdent,KeyPressed,Length,Ln,Lo,% - LoadStr,Low,LowerCase,MaxAvail,MemAvail,MkDir,Move,New,NewStr,% - Now,Odd,Ofs,Ord,ParamCount,ParamStr,Pi,Pos,Pred,Ptr,Random,% - Randomize,Read,ReadBuf,ReadKey,Readln,ReAllocMem,Rename,% - RenameFile,Reset,Rewrite,RmDir,Round,RunError,ScrollTo,Seek,% - SeekEof,SeekEoln,Seg,SetTextBuf,Sin,SizeOf,SPtr,Sqr,Sqrt,SSeg,% - Str,StrCat,StrComp,StrCopy,StrDispose,StrECopy,StrEnd,StrFmt,% - StrLCat,StrIComp,StrLComp,StrLCopy,StrLen,StrLFmt,StrLIComp,% - StrLower,StrMove,StrNew,StrPas,StrPCopy,StrPos,StrScan,StrRScan,% - StrToDate,StrToDateTime,StrToFloat,StrToInt,StrToIntDef,% - StrToTime,StrUpper,Succ,Swap,TextToFloat,Time,TimeToStr,% - TrackCursor,Trunc,Truncate,TypeOf,UpCase,UpperCase,Val,WhereX,% - WhereY,Write,WriteBuf,WriteChar,Writeln},% - sensitive=f,% - morecomment=[s]{(*}{*)},% - morecomment=[s]{\{}{\}},% - morecomment=[l]{//},% 2001 Christian Gudrian - morestring=[d]'% - }[keywords,comments,strings]% -\lst@definelanguage{Eiffel}% - {morekeywords={alias,all,and,as,BIT,BOOLEAN,CHARACTER,check,class,% - creation,Current,debug,deferred,do,DOUBLE,else,elseif,end,% - ensure,expanded,export,external,false,feature,from,frozen,if,% - implies,indexing,infix,inherit,inspect,INTEGER,invariant,is,% - like,local,loop,NONE,not,obsolete,old,once,or,POINTER,prefix,% - REAL,redefine,rename,require,rescue,Result,retry,select,% - separate,STRING,strip,then,true,undefine,unique,until,variant,% - when,xor},% - sensitive,% - morecomment=[l]--,% - morestring=[d]",% - }[keywords,comments,strings]% -%% -%% Euphoria definition (c) 1998 Detlef Reimers -%% -\lst@definelanguage{Euphoria}% - {morekeywords={abort,and,and_bits,append,arctan,atom,by,call,% - call_proc,call_func,c_proc,c_func,clear_screen,close,% - command_line,compare,constant,cos,do,date,else,elsif,end,exit,% - find,floor,for,function,getc,getenv,get_key,gets,global,% - get_pixel,if,include,integer,length,log,match,machine_func,% - machine_proc,mem_copy,mem_set,not,not_bits,or,object,open,% - or_bits,procedure,puts,position,prepend,print,printf,power,peek,% - poke,pixel,poke4,peek4s,peek4u,return,rand,repeat,remainder,% - routine_id,sequence,sqrt,sin,system,sprintf,then,type,to,time,% - trace,tan,while,with,without,xor,xor_bits},% - sensitive,% - morecomment=[l]--,% - morestring=[d]',% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% Guarded Command Language (GCL) definition -%% (c) 2002 Mark van Eijk -%% -\lst@definelanguage{GCL}% - {morekeywords={const,con,var,array,of,skip,if,fi,do,od,div,mod},% - literate={|[}{\ensuremath{|\hskip -0.1em[}}2% - {]|}{\ensuremath{]\hskip -0.1em|}}2% - {[]}{\ensuremath{[\hskip -0.1em]}}2% - {->}{\ensuremath{\rightarrow}~}2% - {==}{\ensuremath{\equiv}~}2% - {>=}{\ensuremath{\geq}~}2% - {<=}{\ensuremath{\leq}~}2% - {/\\}{\ensuremath{\land}~}2% - {\\/}{\ensuremath{\lor}~}2% - {!}{\ensuremath{\lnot}}1% - {!=}{\ensuremath{\neq}~}2% - {max}{\ensuremath{\uparrow}}1% - {min}{\ensuremath{\downarrow}}1,% - sensitive=f,% - morecomment=[s]{\{}{\}},% - morestring=[d]'% - }[keywords,comments,strings]% -%% -%% gnuplot definition (c) Christoph Giess -%% -\lst@definelanguage{Gnuplot}% - {keywords={abs,acos,acosh,arg,asin,asinh,atan,atan2,atanh,besj0,% - besj1,besy0,besy1,ceil,cos,cosh,erf,erfc,exp,floor,gamma,ibeta,% - inverf,igamma,imag,invnorm,int,lgamma,log,log10,norm,rand,real,% - sgn,sin,sinh,sqrt,tan,tanh,column,tm_hour,tm_mday,tm_min,tm_mon,% - tm_sec,tm_wday,tm_yday,tm_year,valid,cd,call,clear,exit,fit,% - help,if,load,pause,plot,print,pwd,quit,replot,reread,reset,save,% - set,show,shell,splot,test,update,angles,arrow,autoscale,border,% - boxwidth,clabel,clip,cntrparam,contour,data,dgrid3d,dummy,% - format,function,functions,grid,hidden3d,isosamples,key,keytitle,% - label,logscale,mapping,offsets,output,parametric,pointsize,% - polar,rrange,samples,size,style,surface,terminal,tics,time,% - timefmt,title,trange,urange,variables,view,vrange,xdata,xlabel,% - xmargin,xrange,xtics,mxtics,mytics,xdtics,xmtics,xzeroaxis,% - ydata,ylabel,yrange,ytics,ydtics,ymtics,yzeroaxis,zdata,zero,% - zeroaxis,zlabel,zrange,ztics,zdtics,zmtics,timefm,using,title,% - with,index,every,thru,smooth},% - sensitive,% - comment=[l]\#,% - morestring=[b]",% - morestring=[b]',% - }[keywords,comments,strings]% -%% -%% Haskell98 as implemented in Hugs98. See http://www.haskell.org -%% All keywords from Prelude and Standard Libraries -%% (c) 1999 Peter Bartke -%% -\lst@definelanguage{Haskell}% - {otherkeywords={=>},% - morekeywords={abstype,if,then,else,case,class,data,default,deriving,% - hiding,if,in,infix,infixl,infixr,import,instance,let,module,% - newtype,of,qualified,type,where,do,AbsoluteSeek,AppendMode,% - Array,BlockBuffering,Bool,BufferMode,Char,Complex,Double,Either,% - FilePath,Float,Int,Integer,IO,IOError,Ix,LineBuffering,Maybe,% - Ordering,NoBuffering,ReadMode,ReadWriteMode,ReadS,RelativeSeek,% - SeekFromEnd,SeekMode,ShowS,StdGen,String,Void,Bounded,Enum,Eq,% - Eval,ExitCode,exitFailure,exitSuccess,Floating,Fractional,% - Functor,Handle,HandlePosn,IOMode,Integral,List,Monad,MonadPlus,% - MonadZero,Num,Numeric,Ord,Random,RandomGen,Ratio,Rational,Read,% - Real,RealFloat,RealFrac,Show,System,Prelude,EQ,False,GT,Just,% - Left,LT,Nothing,Right,WriteMode,True,abs,accum,accumArray,% - accumulate,acos,acosh,all,and,any,ap,appendFile,applyM,% - approxRational,array,asTypeOf,asin,asinh,assocs,atan,atan2,atanh,% - bounds,bracket,bracket_,break,catch,catMaybes,ceiling,chr,cis,% - compare,concat,concatMap,conjugate,const,cos,cosh,curry,cycle,% - decodeFloat,delete,deleteBy,deleteFirstsBy,denominator,% - digitToInt,div,divMod,drop,dropWhile,either,elem,elems,elemIndex,% - elemIndices,encodeFloat,enumFrom,enumFromThen,enumFromThenTo,% - enumFromTo,error,even,exitFailure,exitWith,exp,exponent,fail,% - filter,filterM,find,findIndex,findIndices,flip,floatDigits,% - floatRadix,floatRange,floatToDigits,floor,foldl,foldM,foldl1,% - foldr,foldr1,fromDouble,fromEnum,fromInt,fromInteger,% - fromIntegral,fromJust,fromMaybe,fromRat,fromRational,% - fromRealFrac,fst,gcd,genericLength,genericTake,genericDrop,% - genericSplitAt,genericIndex,genericReplicate,getArgs,getChar,% - getContents,getEnv,getLine,getProgName,getStdGen,getStdRandom,% - group,groupBy,guard,hClose,hFileSize,hFlush,hGetBuffering,% - hGetChar,hGetContents,hGetLine,hGetPosn,hIsClosed,hIsEOF,hIsOpen,% - hIsReadable,hIsSeekable,hIsWritable,hLookAhead,hPutChar,hPutStr,% - hPutStrLn,hPrint,hReady,hSeek,hSetBuffering,hSetPosn,head,% - hugsIsEOF,hugsHIsEOF,hugsIsSearchErr,hugsIsNameErr,% - hugsIsWriteErr,id,ioError,imagPart,index,indices,init,inits,% - inRange,insert,insertBy,interact,intersect,intersectBy,% - intersperse,intToDigit,ioeGetErrorString,ioeGetFileName,% - ioeGetHandle,isAlreadyExistsError,isAlreadyInUseError,isAlpha,% - isAlphaNum,isAscii,isControl,isDenormalized,isDoesNotExistError,% - isDigit,isEOF,isEOFError,isFullError,isHexDigit,isIEEE,% - isIllegalOperation,isInfinite,isJust,isLower,isNaN,% - isNegativeZero,isNothing,isOctDigit,isPermissionError,isPrefixOf,% - isPrint,isSpace,isSuffixOf,isUpper,isUserError,iterate,ixmap,% - join,last,lcm,length,lex,lexDigits,lexLitChar,liftM,liftM2,% - liftM3,liftM4,liftM5,lines,listArray,listToMaybe,log,logBase,% - lookup,magnitude,makePolar,map,mapAccumL,mapAccumR,mapAndUnzipM,% - mapM,mapM_,mapMaybe,max,maxBound,maximum,maximumBy,maybe,% - maybeToList,min,minBound,minimum,minimumBy,mkPolar,mkStdGen,% - mplus,mod,msum,mzero,negate,next,newStdGen,not,notElem,nub,nubBy,% - null,numerator,odd,openFile,or,ord,otherwise,partition,phase,pi,% - polar,pred,print,product,properFraction,putChar,putStr,putStrLn,% - quot,quotRem,random,randomIO,randomR,randomRIO,randomRs,randoms,% - rangeSize,read,readDec,readFile,readFloat,readHex,readInt,readIO,% - readList,readLitChar,readLn,readParen,readOct,readSigned,reads,% - readsPrec,realPart,realToFrac,recip,rem,repeat,replicate,return,% - reverse,round,scaleFloat,scanl,scanl1,scanr,scanr1,seq,sequence,% - sequence_,setStdGen,show,showChar,showEFloat,showFFloat,% - showFloat,showGFloat,showInt,showList,showLitChar,showParen,% - showSigned,showString,shows,showsPrec,significand,signum,sin,% - sinh,snd,sort,sortBy,span,split,splitAt,sqrt,stderr,stdin,stdout,% - strict,subtract,succ,sum,system,tail,tails,take,takeWhile,tan,% - tanh,toEnum,toInt,toInteger,toLower,toRational,toUpper,transpose,% - truncate,try,uncurry,undefined,unfoldr,union,unionBy,unless,% - unlines,until,unwords,unzip,unzip3,unzip4,unzip5,unzip6,unzip7,% - userError,when,words,writeFile,zero,zip,zip3,zip4,zip5,zip6,zip7,% - zipWith,zipWithM,zipWithM_,zipWith3,zipWith4,zipWith5,zipWith6,% - zipWith7},% - sensitive,% - morecomment=[l]--,% - morecomment=[n]{\{-}{-\}},% - morestring=[b]"% - }[keywords,comments,strings]% -%% -%% IDL definition (c) 1998 Juergen Heim -%% -\lst@definelanguage{IDL}% - {morekeywords={and,begin,case,common,do,else,end,endcase,endelse,% - endfor,endif,endrep,endwhile,eq,for,function,ge,goto,gt,if,le,lt,% - mod,ne,not,of,on_ioerror,or,pro,repeat,return,then,until,while,% - xor,on_error,openw,openr,openu,print,printf,printu,plot,read,% - readf,readu,writeu,stop},% - sensitive=f,% - morecomment=[l];,% - morestring=[d]'% - }[keywords,comments,strings]% -%% -%% Inform definition (c) 2003 Jonathan Sauer -%% -\lst@definelanguage{inform}{% - % Language keywords - morekeywords={breakdo,else,false,for,has,hasnt,if,% - in,indirect,jump,notin,nothing,NULL,objectloop,ofclass,% - private,property,provides,return,rfalse,rtrue,self,string,% - switch,to,true,until,while,with,% - creature,held,multiexcept,multiheld,multiinside,noun,number,% - scope,topic},% - % - % Inform functions - morekeywords=[2]{box,child,children,font,give,inversion,metaclass,move,% - new_line,parent,print,print_ret,read,remove,restore,sibling,% - save,spaces,quit,style,bold,underline,reverse,roman remaining,% - create,destroy,recreate,copy},% - % - % Inform definitions - morekeywords=[3]{Attribute,Array,Class,Constant,Default,End,Endif,Extend,% - Global,Ifdef,Iffalse,Ifndef,Ifnot,Iftrue,Include,Object,% - Property,Verb,Release,Serial,Statusline},% - % - % Library attributes - morekeywords=[4]{absent,animate,clothing,concealed,container,door,edible,% - enterable,female,general,light,lockable locked,male,moved,% - neuter,on,open,openable,pluralname,proper,scenery,scored,% - static,supporter,switchable,talkable,transparent,visited,% - workflag,worn},% - % - % Libary properties - morekeywords=[5]{n_to,s_to,e_to,w_to,ne_to,nw_to,se_to,sw_to,in_to,% - out_to,u_to,d_to,add_to_scope,after,article,articles,before,% - cant_go,capacity,daemon,describe,description,door_dir,door_to,% - each_turn,found_in,grammar,initial,inside_description,invent,% - life,list_together,name number,orders,parse_name,plural,% - react_after,react_before,short_name,short_name_indef,time_left,% - time_out,when_closed,when_open,when_on,when_off,% - with_key}, - % - % Library routines - morekeywords=[6]{Achieved,AfterRoutines,AllowPushDir,Banner,ChangePlayer,% - CommonAncestor,DictionaryLookup,GetGNAOfObject,HasLightSource,% - IndirectlyContains,IsSeeThrough,Locale,LoopOverScope,LTI_Insert,% - MoveFloatingObjects,NextWord,NextWordStopped,NounDomain,% - ObjectIsUntouchable OffersLight,ParseToken,PlaceInScope,PlayerTo,% - PronounNotice,PronounValue,ScopeWithin,SetPronoun,SetTime,% - StartDaemon,StartTimer,StopDaemon,StopTimer,TestScope,TryNumber,% - UnsignedCompare,WordAddress,WordInProperty,WordLength,% - WriteListFrom,YesOrNo},% - % - % Library,entry points - morekeywords=[7]{AfterLife,AfterPrompt,Amusing,BeforeParsing,ChooseObjects,% - DarkToDark,DeathMessage,GamePostRoutine GamePreRoutine,% - Initialise,InScope,LookRoutine,NewRoom,ParseNoun,ParseNumber,% - ParserError,PrintRank,PrintTaskName,PrintVerb,TimePasses,% - UnknownVerb},% - % - % Library constants - morekeywords=[8]{NEWLINE_BIT,INDENT_BIT,FULLINV_BIT,ENGLISH_BIT,RECURSE_BIT,% - ALWAYS_BIT,TERSE_BIT,PARTINV_BIT,DEFART_BIT,WORKFLAG_BIT,% - ISARE_BIT,CONCEAL_BIT},% - % - % Library,meta actions - morekeywords=[9]{Pronouns,Quit,Restart,Restore,Save,Verify,ScriptOn,ScriptOff,% - NotifyOn,NotifyOff,Places,Objects,Score,FullScore,Version,LMode1,% - LMode2,Lmode3},% - % - % Library,main actions - morekeywords=[10]{Close,Disrobe,Drop,Eat,Empty,EmptyT,Enter,Examine,Exit,GetOff,% - Give,Go,GoIn,Insert,Inv,InvTall,InvWide,Lock,Look,Open,PutOn,Remove,% - Search,Show,SwitchOff,SwitchOn,Take,Transfer,Unlock VagueGo,% - Wear},% - % - % Library,stub actions - morekeywords=[11]{Answer,Ask,AskFor,Attack,Blow,Burn,Buy,Climb,Consult,Cut,Dig,% - Drink,Fill,Jump,JumpOver,Kiss,Listen,LookUnder,Mild,No,Pray,Pull,% - Push,PushDir,Rub,Set,SetTo,Sing,Sleep,Smell,,Sleep,Smell,Sorry,% - Squeeze,Strong,Swim,Swing,Taste,Tell,Think,ThrowAt,Tie,Touch,Turn,% - Wait,Wake,WakeOther,Wave,WaveHands,Yes},% - % - otherkeywords={->,-->},% - sensitive=false,% - morestring=[d]{"},% - morecomment=[l]{!}% - }[keywords,comments,strings]% -\lst@definelanguage{Lisp}% - {morekeywords={abort,abs,acons,acos,acosh,adjoin,alphanumericp,alter,% - append,apply,apropos,aref,arrayp,ash,asin,asinh,assoc,atan,atanh,% - atom,bit,boole,boundp,break,butlast,byte,catenate,ceiling,cerror,% - char,character,characterp,choose,chunk,cis,close,clrhash,coerce,% - collect,commonp,compile,complement,complex,complexp,concatenate,% - conjugate,cons,consp,constantp,continue,cos,cosh,cotruncate,% - count,delete,denominator,describe,directory,disassemble,% - documentation,dpb,dribble,ed,eighth,elt,enclose,endp,eq,eql,% - equal,equalp,error,eval,evalhook,evenp,every,exp,expand,export,% - expt,fboundp,fceiling,fdefinition,ffloor,fifth,fill,find,first,% - float,floatp,floor,fmakunbound,format,fourth,fround,ftruncate,% - funcall,functionp,gatherer,gcd,generator,gensym,gentemp,get,getf,% - gethash,identity,imagpart,import,inspect,integerp,intern,% - intersection,tively,isqrt,keywordp,last,latch,lcm,ldb,ldiff,% - length,list,listen,listp,load,log,logand,logbitp,logcount,logeqv,% - logior,lognand,lognor,lognot,logtest,logxor,macroexpand,% - makunbound,map,mapc,mapcan,mapcar,mapcon,maphash,mapl,maplist,% - mask,max,member,merge,min,mingle,minusp,mismatch,mod,namestring,% - nbutlast,nconc,nintersection,ninth,not,notany,notevery,nreconc,% - nreverse,nsublis,nsubst,nth,nthcdr,null,numberp,numerator,nunion,% - oddp,open,packagep,pairlis,pathname,pathnamep,phase,plusp,% - position,positions,pprint,previous,princ,print,proclaim,provide,% - random,rassoc,rational,rationalize,rationalp,read,readtablep,% - realp,realpart,reduce,rem,remhash,remove,remprop,replace,require,% - rest,revappend,reverse,room,round,rplaca,rplacd,sbit,scan,schar,% - search,second,series,set,seventh,shadow,signal,signum,sin,sinh,% - sixth,sleep,some,sort,split,sqrt,streamp,string,stringp,sublis,% - subseq,subseries,subsetp,subst,substitute,subtypep,svref,sxhash,% - symbolp,tailp,tan,tanh,tenth,terpri,third,truename,truncate,% - typep,unexport,unintern,union,until,values,vector,vectorp,warn,% - write,zerop,and,assert,case,ccase,cond,ctypecase,decf,declaim,% - defclass,defconstant,defgeneric,defmacro,defmethod,defpackage,% - defparameter,defsetf,defstruct,deftype,defun,defvar,do,dolist,% - dotimes,ecase,encapsulated,etypecase,flet,formatter,gathering,% - incf,iterate,labels,let,locally,loop,macrolet,mapping,or,pop,% - producing,prog,psetf,psetq,push,pushnew,remf,return,rotatef,% - setf,shiftf,step,time,trace,typecase,unless,untrace,when},% - sensitive,% ??? - alsodigit=-,% - morecomment=[l];,% - morecomment=[s]{\#|}{|\#},% 1997 Aslak Raanes - morestring=[b]"% - }[keywords,comments,strings]% -%% -%% AutoLISP/VisualLISP - Stefan Lagotzki, info@lagotzki.de -%% -\lst@definelanguage[Auto]{Lisp}% - {morekeywords={abs,acad_colordlg,acad_helpdlg,acad_strlsort,% - action_tile,add_list,alert,alloc,and,angle,angtof,angtos,append,% - apply,arx,arxload,arxunload,ascii,assoc,atan,atof,atoi,atom,% - atoms-family,autoarxload,autoload,Boole,boundp,caddr,cadr,car,% - cdr,chr,client_data_tile,close,command,cond,cons,cos,cvunit,% - defun,defun-q,defun-q-list-ref,defun-q-list-set,dictadd,dictnext,% - dictremove,dictrename,dictsearch,dimx_tile,dimy_tile,distance,% - distof,done_dialog,end_image,end_list,entdel,entget,entlast,% - entmake,entmakex,entmod,entnext,entsel,entupd,eq,equal,*error*,% - eval,exit,exp,expand,expt,fill_image,findfile,fix,float,foreach,% - function,gc,gcd,get_attr,get_tile,getangle,getcfg,getcname,% - getcorner,getdist,getenv,getfiled,getint,getkword,getorient,% - getpoint,getreal,getstring,getvar,graphscr,grclear,grdraw,grread,% - grtext,grvecs,handent,help,if,initdia,initget,inters,itoa,lambda,% - last,layoutlist,length,list,listp,load,load_dialog,log,logand,% - logior,lsh,mapcar,max,mem,member,menucmd,menugroup,min,minusp,% - mode_tile,namedobjdict,nentsel,nentselp,new_dialog,not,nth,% - null,numberp,open,or,osnap,polar,prin1,princ,print,progn,prompt,% - quit,quote,read,read-char,read-line,redraw,regapp,rem,repeat,% - reverse,rtos,set,set_tile,setcfg,setenv,setfunhelp,setq,% - setvar,setview,sin,slide_image,snvalid,sqrt,ssadd,ssdel,ssget,% - ssgetfirst,sslength,ssmemb,ssname,ssnamex,sssetfirst,startapp,% - start_dialog,start_image,start_list,strcase,strcat,strlen,subst,% - substr,tablet,tblnext,tblobjname,tblsearch,term_dialog,terpri,% - textbox,textpage,textscr,trace,trans,type,unload_dialog,untrace,% - vector_image,ver,vl-acad-defun,vl-acad-undefun,vl-arx-import,% - vl-bb-ref,vl-bb-set,vl-catch-all-apply,% - vl-catch-all-error-message,vl-catch-all-error-p,vl-cmdf,vl-consp,% - vl-directory-files,vl-doc-export,vl-doc-import,vl-doc-ref,% - vl-doc-set,vl-every,vl-exit-with-error,vl-exit-with-value,% - vl-file-copy,vl-file-delete,vl-file-directory-p,vl-file-rename,% - vl-file-size,vl-file-systime,vl-filename-base,% - vl-filename-directory,vl-filename-extension,vl-filename-mktemp,% - vl-get-resource,vl-list*,vl-list->string,% - vl-list-exported-functions,vl-list-length,vl-list-loaded-vlx,% - vl-load-all,vl-load-com,vl-load-reactors,vl-member-if,% - vl-member-if-not,vl-position,vl-prin1-to-string,% - vl-princ-to-string,vl-propagate,vl-registry-delete,% - vl-registry-descendents,vl-registry-read,vl-registry-write,% - vl-remove,vl-remove-if,vl-remove-if-not,vl-some,vl-sort,% - vl-sort-i,vl-string->list,vl-string-elt,vl-string-left-trim,% - vl-string-mismatch,vl-string-position,vl-string-right-trim,% - vl-string-search,vl-string-subst,vl-string-translate,% - vl-string-trim,vl-symbol-name,vl-symbol-value,vl-symbolp,% - vl-unload-vlx,vl-vbaload,vl-vbarun,vl-vlx-loaded-p,vlax-3D-point,% - vlax-add-cmd,vlax-create-object,vlax-curve-getArea,% - vlax-curve-getDistAtParam,vlax-curve-getDistAtPoint,% - vlax-curve-getEndParam,vlax-curve-getEndPoint,% - vlax-curve-getParamAtDist,vlax-curve-getParamAtPoint,% - vlax-curve-getPointAtDist,vlax-curve-getPointAtParam,% - vlax-curve-getStartParam,vlax-curve-getStartPoint,% - vlax-curve-isClosed,vlax-curve-isPeriodic,vlax-curve-isPlanar,% - vlax-curve-getClosestPointTo,% - vlax-curve-getClosestPointToProjection,vlax-curve-getFirstDeriv,% - vlax-curve-getSecondDeriv,vlax-dump-object,% - vlax-ename->vla-object,vlax-erased-p,vlax-for,% - vlax-get-acad-object,vlax-get-object,vlax-get-or-create-object,% - vlax-get-property,vlax-import-type-library,vlax-invoke-method,% - vlax-ldata-delete,vlax-ldata-get,vlax-ldata-list,vlax-ldata-put,% - vlax-ldata-test,vlax-make-safearray,vlax-make-variant,% - vlax-map-collection,vlax-method-applicable-p,% - vlax-object-released-p,vlax-product-key,% - vlax-property-available-p,vlax-put-property,vlax-read-enabled-p,% - vlax-release-object,vlax-remove-cmd,vlax-safearray-fill,% - vlax-safearray-get-dim,vlax-safearray-get-element,% - vlax-safearray-get-l-bound,vlax-safearray-get-u-bound,% - vlax-safearray-put-element,vlax-safearray-type,% - vlax-safearray->list,vlax-tmatrix,vlax-typeinfo-available-p,% - vlax-variant-change-type,vlax-variant-type,vlax-variant-value,% - vlax-vla-object->ename,vlax-write-enabled-p,vlisp-compile,% - vlr-acdb-reactor,vlr-add,vlr-added-p,vlr-beep-reaction,% - vlr-command-reactor,vlr-current-reaction-name,vlr-data,% - vlr-data-set,vlr-deepclone-reactor,vlr-docmanager-reactor,% - vlr-dwg-reactor,vlr-dxf-reactor,vlr-editor-reactor,% - vlr-insert-reactor,vlr-linker-reactor,vlr-lisp-reactor,% - vlr-miscellaneous-reactor,vlr-mouse-reactor,vlr-notification,% - vlr-object-reactor,vlr-owner-add,vlr-owner-remove,vlr-owners,% - vlr-pers,vlr-pers-list,vlr-pers-p,vlr-pers-release,% - vlr-reaction-names,vlr-reaction-set,vlr-reactions,vlr-reactors,% - vlr-remove,vlr-remove-all,vlr-set-notification,% - vlr-sysvar-reactor,vlr-toolbar-reactor,vlr-trace-reaction,% - vlr-type,vlr-types,vlr-undo-reactor,vlr-wblock-reactor,% - vlr-window-reactor,vlr-xref-reactor,vports,wcmatch,while,% - write-char,write-line,xdroom,xdsize,zerop},% - alsodigit=->,% - otherkeywords={1+,1-},% - sensitive=false,% - morecomment=[l];,% - morecomment=[l];;,% - morestring=[b]"% - }[keywords,comments,strings]% -%% -%% Make definitions (c) 2000 Rolf Niepraschk -%% -\lst@definelanguage[gnu]{make}% - {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*,% - @,^,<,\%,+,?,*,% Markus Pahlow - export,unexport,include,override,define,ifdef,ifneq,ifeq,else,% - endif,vpath,subst,patsubst,strip,findstring,filter,filter-out,% - sort,dir,notdir,suffix,basename,addsuffix,addprefix,join,word,% - words,firstword,wildcard,shell,origin,foreach,% - @D,@F,*D,*F,\%D,\%F,<D,<F,^D,^F,+D,+F,?D,?F,% - AR,AS,CC,CXX,CO,CPP,FC,GET,LEX,PC,YACC,YACCR,MAKEINFO,TEXI2DVI,% - WEAVE,CWEAVE,TANGLE,CTANGLE,RM,M2C,LINT,COMPILE,LINK,PREPROCESS,% - CHECKOUT,% - ARFLAGS,ASFLAGS,CFLAGS,CXXFLAGS,COFLAGS,CPPFLAGS,FFLAGS,GFLAGS,% - LDFLAGS,LOADLIBES,LFLAGS,PFLAGS,RFLAGS,YFLAGS,M2FLAGS,MODFLAGS,% - LINTFLAGS,MAKEINFO_FLAGS,TEXI2DVI_FLAGS,COFLAGS,GFLAGS,% - OUTPUT_OPTION,SCCS_OUTPUT_OPTION,% missing comma: Markus Pahlow - .PHONY,.SUFFIXES,.DEFAULT,.PRECIOUS,.INTERMEDIATE,.SECONDARY,% - .IGNORE,.SILENT,.EXPORT_ALL_VARIABLES,MAKEFILES,VPATH,MAKESHELL,% - MAKELEVEL,MAKECMDGOALS,SUFFIXES},% - sensitive=true, - morecomment=[l]\#,% - morestring=[b]"% - }[keywords,comments,strings,make]% -\lst@definelanguage{make} - {morekeywords={SHELL,MAKE,MAKEFLAGS,$@,$\%,$<,$?,$^,$+,$*},% - sensitive=true,% - morecomment=[l]\#,% - morestring=[b]"% - }[keywords,comments,strings,make]% -%% -%% Mercury definition (c) 1997 Dominique de Waleffe -%% Extended (c) 2001 Ralph Becket -%% -\lst@definelanguage{Mercury}% - {otherkeywords={::,->,-->,--->,:-,==,=>,<=,<=>},% - morekeywords={module,include_module,import_module,interface,% - end_module,implementation,mode,is,failure,semidet,nondet,det,% - multi,erroneous,inst,in,out,di,uo,ui,type,typeclass,instance,% - where,with_type,pred,func,lambda,impure,semipure,if,then,else,% - some,all,not,true,fail,pragma,memo,no_inline,inline,loop_check,% - minimal_model,fact_table,type_spec,terminates,does_not_terminate,% - check_termination,promise_only_solution,unsafe_promise_unique,% - source_file,obsolete,import,export,c_header_code,c_code,% - foreign_code,foreign_proc,may_call_mercury,will_not_call_mercury,% - thread_safe,not_thread_safe},% - sensitive=t,% - morecomment=[l]\%,% - morecomment=[s]{/*}{*/},% - morestring=[bd]",% - morestring=[bd]'% - }[keywords,comments,strings]% -%% -%% Miranda definition (c) 1998 Peter Bartke -%% -%% Miranda: pure lazy functional language with polymorphic type system, -%% garbage collection and functions as first class citizens -%% -\lst@definelanguage{Miranda}% - {morekeywords={abstype,div,if,mod,otherwise,readvals,show,type,where,% - with,bool,char,num,sys_message,False,True,Appendfile,Closefile,% - Exit,Stderr,Stdout,System,Tofile,\%include,\%export,\%free,% - \%insert,abs,and,arctan,cjustify,code,concat,const,converse,cos,% - decode,digit,drop,dropwhile,entier,error,exp,filemode,filter,% - foldl,foldl1,foldr,foldr1,force,fst,getenv,hd,hugenum,id,index,% - init,integer,iterate,last,lay,layn,letter,limit,lines,ljustify,% - log,log10,map,map2,max,max2,member,merge,min,min2,mkset,neg,% - numval,or,pi,postfix,product,read,rep,repeat,reverse,rjustify,% - scan,seq,showfloat,shownum,showscaled,sin,snd,sort,spaces,sqrt,% - subtract,sum,system,take,takewhile,tinynum,tl,transpose,undef,% - until,zip2,zip3,zip4,zip5,zip6,zip},% - sensitive,% - morecomment=[l]||,% - morestring=[b]"% - }[keywords,comments,strings]% -%% -%% ML definition (c) 1999 Torben Hoffmann -%% -\lst@definelanguage{ML}% - {morekeywords={abstype,and,andalso,as,case,do,datatype,else,end,% - eqtype,exception,fn,fun,functor,handle,if,in,include,infix,% - infixr,let,local,nonfix,of,op,open,orelse,raise,rec,sharing,sig,% - signature,struct,structure,then,type,val,with,withtype,while},% - sensitive,% - morecomment=[n]{(*}{*)},% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% Oz definition (c) Andres Becerra Sandoval -%% -\lst@definelanguage{Oz}% - {morekeywords={andthen,at,attr,case,catch,choice,class,% - cond,declare,define,dis,div,else,elsecase,% - elseif,end,export,fail,false,feat,finally,% - from,fun,functor,if,import,in,local,% - lock,meth,mod,not,of,or,orelse,% - prepare,proc,prop,raise,require,self,skip,% - then,thread,true,try,unit},% - sensitive=true,% - morecomment=[l]{\%},% - morecomment=[s]{/*}{*/},% - morestring=[b]",% - morestring=[d]'% - }[keywords,comments,strings]% -%% -%% PHP definition by Luca Balzerani -%% -\lst@definelanguage{PHP}% - {morekeywords={% - %--- core language - <?,?>,::,break,case,continue,default,do,else,% - elseif,for,foreach,if,include,require,phpinfo,% - switch,while,false,FALSE,true,TRUE,% - %--- apache functions - apache_lookup_uri,apache_note,ascii2ebcdic,ebcdic2ascii,% - virtual,apache_child_terminate,apache_setenv,% - %--- array functions - array,array_change_key_case,array_chunk,array_count_values,% - array_filter,array_flip,array_fill,array_intersect,% - array_keys,array_map,array_merge,array_merge_recursive,% - array_pad,array_pop,array_push,array_rand,array_reverse,% - array_shift,array_slice,array_splice,array_sum,array_unique,% - array_values,array_walk,arsort,asort,compact,count,current,each,% - extract,in_array,array_search,key,krsort,ksort,list,natsort,% - next,pos,prev,range,reset,rsort,shuffle,sizeof,sort,uasort,% - usort,% - %--- aspell functions - aspell_new,aspell_check,aspell_check_raw,aspell_suggest,% - %--- bc functions - bcadd,bccomp,bcdiv,bcmod,bcmul,bcpow,bcscale,bcsqrt,bcsub,% - %--- bzip2 functions - bzclose,bzcompress,bzdecompress,bzerrno,bzerror,bzerrstr,% - bzopen,bzread,bzwrite,% - %--- calendar functions - JDToGregorian,GregorianToJD,JDToJulian,JulianToJD,JDToJewish,% - JDToFrench,FrenchToJD,JDMonthName,JDDayOfWeek,easter_date,% - unixtojd,jdtounix,cal_days_in_month,cal_to_jd,cal_from_jd,% - %--- ccvs functions - ccvs_init,ccvs_done,ccvs_new,ccvs_add,ccvs_delete,ccvs_auth,% - ccvs_reverse,ccvs_sale,ccvs_void,ccvs_status,ccvs_count,% - ccvs_report,ccvs_command,ccvs_textvalue,% - %--- classobj functions - call_user_method,call_user_method_array,class_exists,get_class,% - get_class_vars,get_declared_classes,get_object_vars,% - is_a,is_subclass_of,method_exists,% - %--- com functions - COM,VARIANT,com_load,com_invoke,com_propget,com_get,com_propput,% - com_set,com_addref,com_release,com_isenum,com_load_typelib,% - %--- cpdf functions - cpdf_add_annotation,cpdf_add_outline,cpdf_arc,cpdf_begin_text,% - cpdf_clip,cpdf_close,cpdf_closepath,cpdf_closepath_fill_stroke,% - cpdf_continue_text,cpdf_curveto,cpdf_end_text,cpdf_fill,% - cpdf_finalize,cpdf_finalize_page,% - cpdf_import_jpeg,cpdf_lineto,cpdf_moveto,cpdf_newpath,cpdf_open,% - cpdf_page_init,cpdf_place_inline_image,cpdf_rect,cpdf_restore,% - cpdf_rmoveto,cpdf_rotate,cpdf_rotate_text,cpdf_save,% - cpdf_scale,cpdf_set_char_spacing,cpdf_set_creator,% - cpdf_set_font,cpdf_set_horiz_scaling,cpdf_set_keywords,% - cpdf_set_page_animation,cpdf_set_subject,cpdf_set_text_matrix,% - cpdf_set_text_rendering,cpdf_set_text_rise,cpdf_set_title,% - cpdf_setdash,cpdf_setflat,cpdf_setgray,cpdf_setgray_fill,% - cpdf_setlinecap,cpdf_setlinejoin,cpdf_setlinewidth,% - cpdf_setrgbcolor,cpdf_setrgbcolor_fill,cpdf_setrgbcolor_stroke,% - cpdf_show_xy,cpdf_stringwidth,cpdf_set_font_directories,% - cpdf_set_viewer_preferences,cpdf_stroke,cpdf_text,% - cpdf_set_action_url,% - %--- crack functions - crack_opendict,crack_closedict,crack_check,crack_getlastmessage,% - %--- ctype functions - ctype_alnum,ctype_alpha,ctype_cntrl,ctype_digit,ctype_lower,% - ctype_print,ctype_punct,ctype_space,ctype_upper,ctype_xdigit,% - %--- curl functions - curl_init,curl_setopt,curl_exec,curl_close,curl_version,% - curl_error,curl_getinfo,% - %--- cybercash functions - cybercash_encr,cybercash_decr,cybercash_base64_encode,% - %--- cybermut functions - cybermut_creerformulairecm,cybermut_testmac,% - %--- cyrus functions - cyrus_connect,cyrus_authenticate,cyrus_bind,cyrus_unbind,% - cyrus_close,% - %--- datetime functions - checkdate,date,getdate,gettimeofday,gmdate,gmmktime,gmstrftime,% - microtime,mktime,strftime,time,strtotime,% - %--- dbase functions - dbase_create,dbase_open,dbase_close,dbase_pack,dbase_add_record,% - dbase_delete_record,dbase_get_record,% - dbase_numfields,dbase_numrecords,% - %--- dba functions - dba_close,dba_delete,dba_exists,dba_fetch,dba_firstkey,% - dba_nextkey,dba_popen,dba_open,dba_optimize,dba_replace,% - %--- dbm functions - dbmopen,dbmclose,dbmexists,dbmfetch,dbminsert,dbmreplace,% - dbmfirstkey,dbmnextkey,dblist,% - %--- dbx functions - dbx_close,dbx_connect,dbx_error,dbx_query,dbx_sort,dbx_compare,% - %--- dio functions - dio_open,dio_read,dio_write,dio_truncate,dio_stat,dio_seek,% - dio_close,% - %--- dir functions - chroot,chdir,dir,closedir,getcwd,opendir,readdir,rewinddir,% - %--- dotnet functions - dotnet_load,% - %--- errorfunc functions - error_log,error_reporting,restore_error_handler,% - trigger_error,user_error,% - %--- exec functions - escapeshellarg,escapeshellcmd,exec,passthru,system,shell_exec,% - %--- fbsql functions - fbsql_affected_rows,fbsql_autocommit,fbsql_change_user,% - fbsql_commit,fbsql_connect,fbsql_create_db,fbsql_create_blob,% - fbsql_database_password,fbsql_data_seek,fbsql_db_query,% - fbsql_drop_db,fbsql_errno,fbsql_error,fbsql_fetch_array,% - fbsql_fetch_field,fbsql_fetch_lengths,fbsql_fetch_object,% - fbsql_field_flags,fbsql_field_name,fbsql_field_len,% - fbsql_field_table,fbsql_field_type,fbsql_free_result,% - fbsql_list_dbs,fbsql_list_fields,fbsql_list_tables,% - fbsql_num_fields,fbsql_num_rows,fbsql_pconnect,fbsql_query,% - fbsql_read_clob,fbsql_result,fbsql_rollback,fbsql_set_lob_mode,% - fbsql_start_db,fbsql_stop_db,fbsql_tablename,fbsql_warnings,% - fbsql_get_autostart_info,fbsql_hostname,fbsql_password,% - fbsql_username,% - %--- fdf functions - fdf_open,fdf_close,fdf_create,fdf_save,fdf_get_value,% - fdf_next_field_name,fdf_set_ap,fdf_set_status,fdf_get_status,% - fdf_get_file,fdf_set_flags,fdf_set_opt,% - fdf_set_javascript_action,fdf_set_encoding,fdf_add_template,% - %--- filepro functions - filepro,filepro_fieldname,filepro_fieldtype,filepro_fieldwidth,% - filepro_fieldcount,filepro_rowcount,% - %--- filesystem functions - basename,chgrp,chmod,chown,clearstatcache,copy,delete,dirname,% - diskfreespace,disk_total_space,fclose,feof,fflush,fgetc,fgetcsv,% - fgetss,file_get_contents,file,file_exists,fileatime,filectime,% - fileinode,filemtime,fileowner,fileperms,filesize,filetype,flock,% - fopen,fpassthru,fputs,fread,fscanf,fseek,fstat,ftell,ftruncate,% - set_file_buffer,is_dir,is_executable,is_file,is_link,% - is_writable,is_writeable,is_uploaded_file,link,linkinfo,mkdir,% - parse_ini_file,pathinfo,pclose,popen,readfile,readlink,rename,% - rmdir,stat,lstat,realpath,symlink,tempnam,tmpfile,touch,umask,% - %--- fribidi functions - fribidi_log2vis,% - %--- ftp functions - ftp_connect,ftp_login,ftp_pwd,ftp_cdup,ftp_chdir,ftp_mkdir,% - ftp_nlist,ftp_rawlist,ftp_systype,ftp_pasv,ftp_get,ftp_fget,% - ftp_fput,ftp_size,ftp_mdtm,ftp_rename,ftp_delete,ftp_site,% - ftp_quit,ftp_exec,ftp_set_option,ftp_get_option,% - %--- funchand functions - call_user_func_array,call_user_func,create_function,% - func_get_args,func_num_args,function_exists,% - register_shutdown_function,register_tick_function,% - %--- gettext functions - bindtextdomain,bind_textdomain_codeset,dcgettext,dcngettext,% - dngettext,gettext,ngettext,textdomain,% - %--- gmp functions - gmp_init,gmp_intval,gmp_strval,gmp_add,gmp_sub,gmp_mul,% - gmp_div_r,gmp_div_qr,gmp_div,gmp_mod,gmp_divexact,gmp_cmp,% - gmp_com,gmp_abs,gmp_sign,gmp_fact,gmp_sqrt,gmp_sqrtrm,% - gmp_pow,gmp_powm,gmp_prob_prime,gmp_gcd,gmp_gcdext,gmp_invert,% - gmp_jacobi,gmp_random,gmp_and,gmp_or,gmp_xor,gmp_setbit,% - gmp_scan0,gmp_scan1,gmp_popcount,gmp_hamdist,% - %--- http functions - header,headers_sent,setcookie,% - %--- hw functions - hw_Array2Objrec,hw_Children,hw_ChildrenObj,hw_Close,hw_Connect,% - hw_Deleteobject,hw_DocByAnchor,hw_DocByAnchorObj,% - hw_Document_BodyTag,hw_Document_Content,hw_Document_SetContent,% - hw_ErrorMsg,hw_EditText,hw_Error,hw_Free_Document,hw_GetParents,% - hw_GetChildColl,hw_GetChildCollObj,hw_GetRemote,% - hw_GetSrcByDestObj,hw_GetObject,hw_GetAndLock,hw_GetText,% - hw_GetObjectByQueryObj,hw_GetObjectByQueryColl,% - hw_GetChildDocColl,hw_GetChildDocCollObj,hw_GetAnchors,% - hw_Mv,hw_Identify,hw_InCollections,hw_Info,hw_InsColl,hw_InsDoc,% - hw_InsertObject,hw_mapid,hw_Modifyobject,hw_New_Document,% - hw_Output_Document,hw_pConnect,hw_PipeDocument,hw_Root,% - hw_Who,hw_getusername,hw_stat,hw_setlinkroot,hw_connection_info,% - hw_insertanchors,hw_getrellink,hw_changeobject,% - %--- ibase functions - ibase_connect,ibase_pconnect,ibase_close,ibase_query,% - ibase_fetch_row,ibase_fetch_object,ibase_field_info,% - ibase_free_result,ibase_prepare,ibase_execute,ibase_trans,% - ibase_rollback,ibase_timefmt,ibase_num_fields,ibase_blob_add,% - ibase_blob_close,ibase_blob_create,ibase_blob_echo,% - ibase_blob_import,ibase_blob_info,ibase_blob_open,% - %--- icap functions - icap_open,icap_close,icap_fetch_event,icap_list_events,% - icap_delete_event,icap_snooze,icap_list_alarms,% - icap_rename_calendar,icap_delete_calendar,icap_reopen,% - %--- iconv functions - iconv,iconv_get_encoding,iconv_set_encoding,ob_iconv_handler,% - %--- ifx functions - ifx_connect,ifx_pconnect,ifx_close,ifx_query,ifx_prepare,ifx_do,% - ifx_errormsg,ifx_affected_rows,ifx_getsqlca,ifx_fetch_row,% - ifx_fieldtypes,ifx_fieldproperties,ifx_num_fields,ifx_num_rows,% - ifx_create_char,ifx_free_char,ifx_update_char,ifx_get_char,% - ifx_copy_blob,ifx_free_blob,ifx_get_blob,ifx_update_blob,% - ifx_textasvarchar,ifx_byteasvarchar,ifx_nullformat,% - ifxus_free_slob,ifxus_close_slob,ifxus_open_slob,% - ifxus_seek_slob,ifxus_read_slob,ifxus_write_slob,% - %--- iisfunc functions - iis_get_server_by_path,iis_get_server_by_comment,iis_add_server,% - iis_set_dir_security,iis_get_dir_security,iis_set_server_rights,% - iis_set_script_map,iis_get_script_map,iis_set_app_settings,% - iis_stop_server,iis_stop_service,iis_start_service,% - %--- image functions - exif_imagetype,exif_read_data,exif_thumbnail,getimagesize,% - imagealphablending,imagearc,imagefilledarc,imageellipse,% - imagechar,imagecharup,imagecolorallocate,imagecolordeallocate,% - imagecolorclosest,imagecolorclosestalpha,imagecolorclosestthwb,% - imagecolorexactalpha,imagecolorresolve,imagecolorresolvealpha,% - imagecolorset,imagecolorsforindex,imagecolorstotal,% - imagecopy,imagecopymerge,imagecopymergegray,imagecopyresized,% - imagecreate,imagecreatetruecolor,imagetruecolortopalette,% - imagecreatefromgd2,imagecreatefromgd2part,imagecreatefromgif,% - imagecreatefrompng,imagecreatefromwbmp,imagecreatefromstring,% - imagecreatefromxpm,imagedashedline,imagedestroy,imagefill,% - imagefilledrectangle,imagefilltoborder,imagefontheight,% - imagegd,imagegd2,imagegif,imagepng,imagejpeg,imagewbmp,% - imageline,imageloadfont,imagepalettecopy,imagepolygon,% - imagepsencodefont,imagepsfreefont,imagepsloadfont,% - imagepsslantfont,imagepstext,imagerectangle,imagesetpixel,% - imagesetstyle,imagesettile,imagesetthickness,imagestring,% - imagesx,imagesy,imagettfbbox,imageftbbox,imagettftext,% - imagetypes,jpeg2wbmp,png2wbmp,iptcembed,read_exif_data,% - %--- imap functions - imap_8bit,imap_alerts,imap_append,imap_base64,imap_binary,% - imap_bodystruct,imap_check,imap_clearflag_full,imap_close,% - imap_delete,imap_deletemailbox,imap_errors,imap_expunge,% - imap_fetchbody,imap_fetchheader,imap_fetchstructure,% - imap_getmailboxes,imap_getsubscribed,imap_header,% - imap_headers,imap_last_error,imap_listmailbox,% - imap_mail,imap_mail_compose,imap_mail_copy,imap_mail_move,% - imap_mime_header_decode,imap_msgno,imap_num_msg,imap_num_recent,% - imap_ping,imap_popen,imap_qprint,imap_renamemailbox,imap_reopen,% - imap_rfc822_parse_headers,imap_rfc822_write_address,% - imap_search,imap_setacl,imap_set_quota,imap_setflag_full,% - imap_status,imap_subscribe,imap_uid,imap_undelete,% - imap_utf7_decode,imap_utf7_encode,imap_utf8,imap_thread,% - %--- info functions - assert,assert_options,extension_loaded,dl,getenv,get_cfg_var,% - get_defined_constants,get_extension_funcs,getmygid,% - get_loaded_extensions,get_magic_quotes_gpc,% - getlastmod,getmyinode,getmypid,getmyuid,get_required_files,% - ini_alter,ini_get,ini_get_all,ini_restore,ini_set,phpcredits,% - phpversion,php_logo_guid,php_sapi_name,php_uname,putenv,% - set_time_limit,version_compare,zend_logo_guid,zend_version,% - %--- ircg functions - ircg_pconnect,ircg_fetch_error_msg,ircg_set_current,ircg_join,% - ircg_msg,ircg_notice,ircg_nick,ircg_topic,ircg_channel_mode,% - ircg_whois,ircg_kick,ircg_ignore_add,ircg_ignore_del,% - ircg_is_conn_alive,ircg_lookup_format_messages,% - ircg_set_on_die,ircg_set_file,ircg_get_username,% - ircg_nickname_unescape,% - %--- java functions - java_last_exception_clear,java_last_exception_get,% - %--- ldap functions - ldap_add,ldap_bind,ldap_close,ldap_compare,ldap_connect,% - ldap_delete,ldap_dn2ufn,ldap_err2str,ldap_errno,ldap_error,% - ldap_first_attribute,ldap_first_entry,ldap_free_result,% - ldap_get_dn,ldap_get_entries,ldap_get_option,ldap_get_values,% - ldap_list,ldap_modify,ldap_mod_add,ldap_mod_del,% - ldap_next_attribute,ldap_next_entry,ldap_read,ldap_rename,% - ldap_set_option,ldap_unbind,ldap_8859_to_t61,% - ldap_next_reference,ldap_parse_reference,ldap_parse_result,% - ldap_sort,ldap_start_tls,ldap_t61_to_8859,% - %--- mail functions - mail,ezmlm_hash,% - %--- math functions - abs,acos,acosh,asin,asinh,atan,atanh,atan2,base_convert,bindec,% - cos,cosh,decbin,dechex,decoct,deg2rad,exp,expm1,floor,% - hexdec,hypot,is_finite,is_infinite,is_nan,lcg_value,log,log10,% - max,min,mt_rand,mt_srand,mt_getrandmax,number_format,octdec,pi,% - rad2deg,rand,round,sin,sinh,sqrt,srand,tan,tanh,% - %--- mbstring functions - mb_language,mb_parse_str,mb_internal_encoding,mb_http_input,% - mb_detect_order,mb_substitute_character,mb_output_handler,% - mb_strlen,mb_strpos,mb_strrpos,mb_substr,mb_strcut,mb_strwidth,% - mb_convert_encoding,mb_detect_encoding,mb_convert_kana,% - mb_decode_mimeheader,mb_convert_variables,% - mb_decode_numericentity,mb_send_mail,mb_get_info,% - mb_ereg,mb_eregi,mb_ereg_replace,mb_eregi_replace,mb_split,% - mb_ereg_search,mb_ereg_search_pos,mb_ereg_search_regs,% - mb_ereg_search_getregs,mb_ereg_search_getpos,% - %--- mcal functions - mcal_open,mcal_popen,mcal_reopen,mcal_close,% - mcal_rename_calendar,mcal_delete_calendar,mcal_fetch_event,% - mcal_append_event,mcal_store_event,mcal_delete_event,% - mcal_list_alarms,mcal_event_init,mcal_event_set_category,% - mcal_event_set_description,mcal_event_set_start,% - mcal_event_set_alarm,mcal_event_set_class,mcal_is_leap_year,% - mcal_date_valid,mcal_time_valid,mcal_day_of_week,% - mcal_date_compare,mcal_next_recurrence,% - mcal_event_set_recur_daily,mcal_event_set_recur_weekly,% - mcal_event_set_recur_monthly_wday,mcal_event_set_recur_yearly,% - mcal_event_add_attribute,mcal_expunge,mcal_week_of_year,% - %--- mcrypt functions - mcrypt_get_cipher_name,mcrypt_get_block_size,% - mcrypt_create_iv,mcrypt_cbc,mcrypt_cfb,mcrypt_ecb,mcrypt_ofb,% - mcrypt_list_modes,mcrypt_get_iv_size,mcrypt_encrypt,% - mcrypt_module_open,mcrypt_module_close,mcrypt_generic_deinit,% - mcrypt_generic,mdecrypt_generic,mcrypt_generic_end,% - mcrypt_enc_is_block_algorithm_mode,% - mcrypt_enc_is_block_mode,mcrypt_enc_get_block_size,% - mcrypt_enc_get_supported_key_sizes,mcrypt_enc_get_iv_size,% - mcrypt_enc_get_modes_name,mcrypt_module_self_test,% - mcrypt_module_is_block_algorithm,mcrypt_module_is_block_mode,% - mcrypt_module_get_algo_key_size,% - %--- mhash functions - mhash_get_hash_name,mhash_get_block_size,mhash_count,mhash,% - %--- misc functions - connection_aborted,connection_status,connection_timeout,% - define,defined,die,eval,exit,get_browser,highlight_file,% - ignore_user_abort,iptcparse,leak,pack,show_source,sleep,uniqid,% - usleep,% - %--- mnogosearch functions - udm_add_search_limit,udm_alloc_agent,udm_api_version,% - udm_cat_list,udm_clear_search_limits,udm_errno,udm_error,% - udm_free_agent,udm_free_ispell_data,udm_free_res,% - udm_get_res_field,udm_get_res_param,udm_load_ispell_data,% - udm_check_charset,udm_check_stored,udm_close_stored,udm_crc32,% - %--- msession functions - msession_connect,msession_disconnect,msession_count,% - msession_destroy,msession_lock,msession_unlock,msession_set,% - msession_uniq,msession_randstr,msession_find,msession_list,% - msession_set_array,msession_listvar,msession_timeout,% - msession_getdata,msession_setdata,msession_plugin,% - %--- msql functions - msql,msql_affected_rows,msql_close,msql_connect,msql_create_db,% - msql_data_seek,msql_dbname,msql_drop_db,msql_dropdb,msql_error,% - msql_fetch_field,msql_fetch_object,msql_fetch_row,% - msql_field_seek,msql_fieldtable,msql_fieldtype,msql_fieldflags,% - msql_free_result,msql_freeresult,msql_list_fields,% - msql_list_dbs,msql_listdbs,msql_list_tables,msql_listtables,% - msql_num_rows,msql_numfields,msql_numrows,msql_pconnect,% - msql_regcase,msql_result,msql_select_db,msql_selectdb,% - %--- mssql functions - mssql_close,mssql_connect,mssql_data_seek,mssql_fetch_array,% - mssql_fetch_object,mssql_fetch_row,mssql_field_length,% - mssql_field_seek,mssql_field_type,mssql_free_result,% - mssql_min_error_severity,mssql_min_message_severity,% - mssql_num_fields,mssql_num_rows,mssql_pconnect,mssql_query,% - mssql_select_db,mssql_bind,mssql_execute,mssql_fetch_assoc,% - mssql_guid_string,mssql_init,mssql_rows_affected,% - %--- muscat functions - muscat_setup,muscat_setup_net,muscat_give,muscat_get,% - %--- mysql functions - mysql_affected_rows,mysql_change_user,mysql_character_set_name,% - mysql_connect,mysql_create_db,mysql_data_seek,mysql_db_name,% - mysql_drop_db,mysql_errno,mysql_error,mysql_escape_string,% - mysql_fetch_assoc,mysql_fetch_field,mysql_fetch_lengths,% - mysql_fetch_row,mysql_field_flags,mysql_field_name,% - mysql_field_seek,mysql_field_table,mysql_field_type,% - mysql_info,mysql_insert_id,mysql_list_dbs,mysql_list_fields,% - mysql_list_tables,mysql_num_fields,mysql_num_rows,% - mysql_ping,mysql_query,mysql_unbuffered_query,% - mysql_result,mysql_select_db,mysql_tablename,mysql_thread_id,% - mysql_get_host_info,mysql_get_proto_info,mysql_get_server_info,% - %--- network functions - checkdnsrr,closelog,debugger_off,debugger_on,% - fsockopen,gethostbyaddr,gethostbyname,gethostbynamel,getmxrr,% - getprotobynumber,getservbyname,getservbyport,ip2long,long2ip,% - pfsockopen,socket_get_status,socket_set_blocking,% - syslog,% - %--- nis functions - yp_get_default_domain,yp_order,yp_master,yp_match,yp_first,% - yp_errno,yp_err_string,yp_all,yp_cat,% - %--- oci8 functions - OCIDefineByName,OCIBindByName,OCILogon,OCIPLogon,OCINLogon,% - OCIExecute,OCICommit,OCIRollback,OCINewDescriptor,OCIRowCount,% - OCIResult,OCIFetch,OCIFetchInto,OCIFetchStatement,% - OCIColumnName,OCIColumnSize,OCIColumnType,OCIServerVersion,% - OCINewCursor,OCIFreeStatement,OCIFreeCursor,OCIFreeDesc,% - OCIError,OCIInternalDebug,OCICancel,OCISetPrefetch,% - OCISaveLobFile,OCISaveLob,OCILoadLob,OCIColumnScale,% - OCIColumnTypeRaw,OCINewCollection,OCIFreeCollection,% - OCICollAppend,OCICollAssignElem,OCICollGetElem,OCICollMax,% - OCICollTrim,% - %--- oracle functions - Ora_Bind,Ora_Close,Ora_ColumnName,Ora_ColumnSize,Ora_ColumnType,% - Ora_CommitOff,Ora_CommitOn,Ora_Do,Ora_Error,Ora_ErrorCode,% - Ora_Fetch,Ora_Fetch_Into,Ora_GetColumn,Ora_Logoff,Ora_Logon,% - Ora_Numcols,Ora_Numrows,Ora_Open,Ora_Parse,Ora_Rollback,% - %--- outcontrol functions - flush,ob_start,ob_get_contents,ob_get_length,ob_get_level,% - ob_flush,ob_clean,ob_end_flush,ob_end_clean,ob_implicit_flush,% - %--- ovrimos functions - ovrimos_connect,ovrimos_close,ovrimos_longreadlen,% - ovrimos_execute,ovrimos_cursor,ovrimos_exec,ovrimos_fetch_into,% - ovrimos_result,ovrimos_result_all,ovrimos_num_rows,% - ovrimos_field_name,ovrimos_field_type,ovrimos_field_len,% - ovrimos_free_result,ovrimos_commit,ovrimos_rollback,% - %--- pcntl functions - pcntl_fork,pcntl_signal,pcntl_waitpid,pcntl_wexitstatus,% - pcntl_wifsignaled,pcntl_wifstopped,pcntl_wstopsig,% - pcntl_exec,% - %--- pcre functions - preg_match,preg_match_all,preg_replace,preg_replace_callback,% - preg_quote,preg_grep,Pattern Modifiers,Pattern Syntax,% - %--- pdf functions - pdf_add_annotation,pdf_add_bookmark,pdf_add_launchlink,% - pdf_add_note,pdf_add_outline,pdf_add_pdflink,pdf_add_thumbnail,% - pdf_arc,pdf_arcn,pdf_attach_file,pdf_begin_page,% - pdf_begin_template,pdf_circle,pdf_clip,pdf_close,pdf_closepath,% - pdf_closepath_stroke,pdf_close_image,pdf_close_pdi,% - pdf_concat,pdf_continue_text,pdf_curveto,pdf_delete,% - pdf_endpath,pdf_end_pattern,pdf_end_template,pdf_fill,% - pdf_findfont,pdf_get_buffer,pdf_get_font,pdf_get_fontname,% - pdf_get_image_height,pdf_get_image_width,pdf_get_parameter,% - pdf_get_pdi_value,pdf_get_majorversion,pdf_get_minorversion,% - pdf_initgraphics,pdf_lineto,pdf_makespotcolor,pdf_moveto,% - pdf_open,pdf_open_CCITT,pdf_open_file,pdf_open_gif,% - pdf_open_image_file,pdf_open_jpeg,pdf_open_memory_image,% - pdf_open_pdi_page,pdf_open_png,pdf_open_tiff,pdf_place_image,% - pdf_rect,pdf_restore,pdf_rotate,pdf_save,pdf_scale,pdf_setcolor,% - pdf_setflat,pdf_setfont,pdf_setgray,pdf_setgray_fill,% - pdf_setlinecap,pdf_setlinejoin,pdf_setlinewidth,pdf_setmatrix,% - pdf_setpolydash,pdf_setrgbcolor,pdf_setrgbcolor_fill,% - pdf_set_border_color,pdf_set_border_dash,pdf_set_border_style,% - pdf_set_duration,pdf_set_font,pdf_set_horiz_scaling,% - pdf_set_info_author,pdf_set_info_creator,pdf_set_info_keywords,% - pdf_set_info_title,pdf_set_leading,pdf_set_parameter,% - pdf_set_text_rendering,pdf_set_text_rise,pdf_set_text_matrix,% - pdf_set_word_spacing,pdf_show,pdf_show_boxed,pdf_show_xy,% - pdf_stringwidth,pdf_stroke,pdf_translate,% - %--- pfpro functions - pfpro_init,pfpro_cleanup,pfpro_process,pfpro_process_raw,% - %--- pgsql functions - pg_close,pg_affected_rows,pg_connect,pg_dbname,pg_end_copy,% - pg_query,pg_fetch_array,pg_fetch_object,pg_fetch_row,% - pg_field_name,pg_field_num,pg_field_prtlen,pg_field_size,% - pg_free_result,pg_last_oid,pg_host,pg_last_notice,pg_lo_close,% - pg_lo_export,pg_lo_import,pg_lo_open,pg_lo_read,pg_lo_seek,% - pg_lo_read_all,pg_lo_unlink,pg_lo_write,pg_num_fields,% - pg_options,pg_pconnect,pg_port,pg_put_line,pg_fetch_result,% - pg_client_encoding,pg_trace,pg_tty,pg_untrace,pg_get_result,% - pg_send_query,pg_cancel_query,pg_connection_busy,% - pg_connection_status,pg_copy_from,pg_copy_to,pg_escape_bytea,% - pg_result_error,% - %--- posix functions - posix_kill,posix_getpid,posix_getppid,posix_getuid,% - posix_getgid,posix_getegid,posix_setuid,posix_seteuid,% - posix_setegid,posix_getgroups,posix_getlogin,posix_getpgrp,% - posix_setpgid,posix_getpgid,posix_getsid,posix_uname,% - posix_ctermid,posix_ttyname,posix_isatty,posix_getcwd,% - posix_getgrnam,posix_getgrgid,posix_getpwnam,posix_getpwuid,% - %--- printer functions - printer_open,printer_abort,printer_close,printer_write,% - printer_set_option,printer_get_option,printer_create_dc,% - printer_start_doc,printer_end_doc,printer_start_page,% - printer_create_pen,printer_delete_pen,printer_select_pen,% - printer_delete_brush,printer_select_brush,printer_create_font,% - printer_select_font,printer_logical_fontheight,% - printer_draw_rectangle,printer_draw_elipse,printer_draw_text,% - printer_draw_chord,printer_draw_pie,printer_draw_bmp,% - %--- pspell functions - pspell_add_to_personal,pspell_add_to_session,pspell_check,% - pspell_config_create,pspell_config_ignore,pspell_config_mode,% - pspell_config_repl,pspell_config_runtogether,% - pspell_new,pspell_new_config,pspell_new_personal,% - pspell_store_replacement,pspell_suggest,% - %--- qtdom functions - qdom_tree,qdom_error,% - %--- readline functions - readline,readline_add_history,readline_clear_history,% - readline_info,readline_list_history,readline_read_history,% - %--- recode functions - recode_string,recode,recode_file,% - %--- regex functions - ereg,ereg_replace,eregi,eregi_replace,split,spliti,sql_regcase,% - %--- sem functions - sem_get,sem_acquire,sem_release,sem_remove,shm_attach,% - shm_remove,shm_put_var,shm_get_var,shm_remove_var,ftok,% - %--- sesam functions - sesam_connect,sesam_disconnect,sesam_settransaction,% - sesam_rollback,sesam_execimm,sesam_query,sesam_num_fields,% - sesam_diagnostic,sesam_fetch_result,sesam_affected_rows,% - sesam_field_array,sesam_fetch_row,sesam_fetch_array,% - sesam_free_result,% - %--- session functions - session_start,session_destroy,session_name,session_module_name,% - session_id,session_register,session_unregister,session_unset,% - session_get_cookie_params,session_set_cookie_params,% - session_encode,session_set_save_handler,session_cache_limiter,% - session_write_close,% - %--- shmop functions - shmop_open,shmop_read,shmop_write,shmop_size,shmop_delete,% - %--- snmp functions - snmpget,snmpset,snmpwalk,snmpwalkoid,snmp_get_quick_print,% - snmprealwalk,% - %--- strings functions - addcslashes,addslashes,bin2hex,chop,chr,chunk_split,% - count_chars,crc32,crypt,echo,explode,get_html_translation_table,% - hebrev,hebrevc,htmlentities,htmlspecialchars,implode,join,% - localeconv,ltrim,md5,md5_file,metaphone,nl_langinfo,nl2br,ord,% - print,printf,quoted_printable_decode,quotemeta,str_rot13,rtrim,% - setlocale,similar_text,soundex,sprintf,strncasecmp,strcasecmp,% - strcmp,strcoll,strcspn,strip_tags,stripcslashes,stripslashes,% - strlen,strnatcmp,strnatcasecmp,strncmp,str_pad,strpos,strrchr,% - strrev,strrpos,strspn,strstr,strtok,strtolower,strtoupper,% - strtr,substr,substr_count,substr_replace,trim,ucfirst,ucwords,% - vsprintf,wordwrap,% - %--- swf functions - swf_openfile,swf_closefile,swf_labelframe,swf_showframe,% - swf_getframe,swf_mulcolor,swf_addcolor,swf_placeobject,% - swf_removeobject,swf_nextid,swf_startdoaction,% - swf_actiongeturl,swf_actionnextframe,swf_actionprevframe,% - swf_actionstop,swf_actiontogglequality,swf_actionwaitforframe,% - swf_actiongotolabel,swf_enddoaction,swf_defineline,% - swf_definepoly,swf_startshape,swf_shapelinesolid,% - swf_shapefillsolid,swf_shapefillbitmapclip,% - swf_shapemoveto,swf_shapelineto,swf_shapecurveto,% - swf_shapearc,swf_endshape,swf_definefont,swf_setfont,% - swf_fontslant,swf_fonttracking,swf_getfontinfo,swf_definetext,% - swf_definebitmap,swf_getbitmapinfo,swf_startsymbol,% - swf_startbutton,swf_addbuttonrecord,swf_oncondition,% - swf_viewport,swf_ortho,swf_ortho2,swf_perspective,swf_polarview,% - swf_pushmatrix,swf_popmatrix,swf_scale,swf_translate,swf_rotate,% - %--- sybase functions - sybase_affected_rows,sybase_close,sybase_connect,% - sybase_fetch_array,sybase_fetch_field,sybase_fetch_object,% - sybase_field_seek,sybase_free_result,sybase_get_last_message,% - sybase_min_error_severity,sybase_min_message_severity,% - sybase_num_fields,sybase_num_rows,sybase_pconnect,sybase_query,% - sybase_select_db,% - %--- uodbc functions - odbc_autocommit,odbc_binmode,odbc_close,odbc_close_all,% - odbc_connect,odbc_cursor,odbc_do,odbc_error,odbc_errormsg,% - odbc_execute,odbc_fetch_into,odbc_fetch_row,odbc_fetch_array,% - odbc_fetch_object,odbc_field_name,odbc_field_num,% - odbc_field_len,odbc_field_precision,odbc_field_scale,% - odbc_longreadlen,odbc_num_fields,odbc_pconnect,odbc_prepare,% - odbc_result,odbc_result_all,odbc_rollback,odbc_setoption,% - odbc_tableprivileges,odbc_columns,odbc_columnprivileges,% - odbc_primarykeys,odbc_foreignkeys,odbc_procedures,% - odbc_specialcolumns,odbc_statistics,% - %--- url functions - base64_decode,base64_encode,parse_url,rawurldecode,rawurlencode,% - urlencode,% - %--- var functions - doubleval,empty,floatval,gettype,get_defined_vars,% - import_request_variables,intval,is_array,is_bool,is_double,% - is_int,is_integer,is_long,is_null,is_numeric,is_object,is_real,% - is_scalar,is_string,isset,print_r,serialize,settype,strval,% - unset,var_dump,var_export,is_callable,% - %--- vpopmail functions - vpopmail_add_domain,vpopmail_del_domain,% - vpopmail_add_domain_ex,vpopmail_del_domain_ex,% - vpopmail_add_user,vpopmail_del_user,vpopmail_passwd,% - vpopmail_auth_user,vpopmail_alias_add,vpopmail_alias_del,% - vpopmail_alias_get,vpopmail_alias_get_all,vpopmail_error,% - %--- w32api functions - w32api_set_call_method,w32api_register_function,% - w32api_deftype,w32api_init_dtype,% - %--- wddx functions - wddx_serialize_value,wddx_serialize_vars,wddx_packet_start,% - wddx_add_vars,wddx_deserialize,% - %--- xml functions - xml_parser_create,xml_set_object,xml_set_element_handler,% - xml_set_processing_instruction_handler,xml_set_default_handler,% - xml_set_notation_decl_handler,% - xml_parse,xml_get_error_code,xml_error_string,% - xml_get_current_column_number,xml_get_current_byte_index,% - xml_parser_free,xml_parser_set_option,xml_parser_get_option,% - utf8_encode,xml_parser_create_ns,% - xml_set_start_namespace_decl_handler,% - %--- xslt functions - xslt_set_log,xslt_create,xslt_errno,xslt_error,xslt_free,% - xslt_set_sax_handler,xslt_set_scheme_handler,% - xslt_set_base,xslt_set_encoding,xslt_set_sax_handlers,% - %--- yaz functions - yaz_addinfo,yaz_close,yaz_connect,yaz_errno,yaz_error,yaz_hits,% - yaz_database,yaz_range,yaz_record,yaz_search,yaz_present,% - yaz_scan,yaz_scan_result,yaz_ccl_conf,yaz_ccl_parse,% - yaz_wait,yaz_sort,% - %--- zip functions - zip_close,zip_entry_close,zip_entry_compressedsize,% - zip_entry_filesize,zip_entry_name,zip_entry_open,zip_entry_read,% - zip_read,% - %--- zlib functions - gzclose,gzeof,gzfile,gzgetc,gzgets,gzgetss,gzopen,gzpassthru,% - gzread,gzrewind,gzseek,gztell,gzwrite,readgzfile,gzcompress,% - gzdeflate,gzinflate,gzencode,},% - sensitive,% - morecomment=[l]\#,% - morecomment=[l]//,% - morecomment=[s]{/*}{*/},% - morestring=[b]",% - morestring=[b]'% - }[keywords,comments,strings]% -%% -%% Prolog definition (c) 1997 Dominique de Waleffe -%% -\lst@definelanguage{Prolog}% - {morekeywords={op,mod,abort,ancestors,arg,ascii,ask,assert,asserta,% - assertz,atom,atomic,char,clause,close,concat,consult,ed,ef,em,% - eof,fail,file,findall,write,functor,getc,integer,is,length,% - listing,load,name,nl,nonvar,not,numbervars,op,or,pp,prin,print,% - private,prompt,putc,ratom,read,read_from_this_file,rename,repeat,% - retract,retractall,save,see,seeing,seen,sh,skip,statistics,% - subgoal_of,system,tab,tell,telling,time,told,trace,true,unload,% - untrace,var,write},% - sensitive=f,% - morecomment=[l]\%,% - morecomment=[s]{/*}{*/},% - morestring=[bd]",% - morestring=[bd]'% - }[keywords,comments,strings]% -%% -%% classic rexx listings definition -%% by Patrick TJ McPhee <ptjm@interlog.com> -%% -\lst@definelanguage{Rexx} - {morekeywords={address,arg,call,do,drop,else,end,exit,if,iterate,% - interpret,leave,nop,numeric,options,otherwise,parse,% - procedure,pull,push,queue,return,say,signal,then,to,% - trace,when},% - sensitive=false,% - morecomment=[n]{/*}{*/},% - morestring=[d]{'},% - morestring=[d]{"},% - }[keywords,comments,strings]% -\lst@definelanguage{Ruby}% - {morekeywords={__FILE__,__LINE__,BEGIN,END,alias,and,begin,break,% - case,class,def,defined?,do,else,elsif,end,ensure,false,for,% - if,in,module,next,nil,not,or,redo,rescue,retry,return,self,% - super,then,true,undef,unless,until,when,while,yield},% - sensitive=true,% - morecomment=[l]\#,% - morecomment=[l]\#\#,% - morecomment=[s]{=BEGIN}{=END},% - morestring=[b]',% - morestring=[b]",% - morestring=[b]/% - }[keywords,comments,strings]% -%% -%% SHELXL definition (c) 1999 Aidan Philip Heerdegen -%% -\lst@definelanguage{SHELXL}% - {morekeywords={TITL,CELL,ZERR,LATT,SYMM,SFAC,DISP,UNIT,LAUE,% - REM,MORE,TIME,END,HKLF,OMIT,SHEL,BASF,TWIN,EXTI,SWAT,% - MERG,SPEC,RESI,MOVE,ANIS,AFIX,HFIX,FRAG,FEND,EXYZ,EADP,% - EQIV,OMIT,CONN,PART,BIND,FREE,DFIX,BUMP,SAME,SADI,CHIV,% - FLAT,DELU,SIMU,DEFS,ISOR,SUMP,L.S.,CGLS,SLIM,BLOC,DAMP,% - WGHT,FVAR,BOND,CONF,MPLA,RTAB,LIST,ACTA,SIZE,TEMP,WPDB,% - FMAP,GRID,PLAN,MOLE},% - sensitive=false,% - alsoother=_,% Makes the syntax highlighting ignore the underscores - morecomment=[l]{! },% - }% -%% -%% Tcl/Tk definition (c) Gerd Neugebauer -%% -\lst@definelanguage[tk]{tcl}[]{tcl}% - {morekeywords={activate,add,separator,radiobutton,checkbutton,% - command,cascade,all,bell,bind,bindtags,button,canvas,canvasx,% - canvasy,cascade,cget,checkbutton,config,configu,configur,% - configure,clipboard,create,arc,bitmap,image,line,oval,polygon,% - rectangle,text,textwindow,curselection,delete,destroy,end,entry,% - entrycget,event,focus,font,actual,families,measure,metrics,names,% - frame,get,grab,current,release,status,grid,columnconfigure,% - rowconfigure,image,image,create,bitmap,photo,delete,height,types,% - widt,names,index,insert,invoke,itemconfigure,label,listbox,lower,% - menu,menubutton,message,move,option,add,clear,get,readfile,pack,% - photo,place,radiobutton,raise,scale,scroll,scrollbar,search,see,% - selection,send,stdin,stdout,stderr,tag,bind,text,tk,tkerror,% - tkwait,window,variable,visibility,toplevel,unknown,update,winfo,% - class,exists,ismapped,parent,reqwidth,reqheight,rootx,rooty,% - width,height,wm,aspect,client,command,deiconify,focusmodel,frame,% - geometry,group,iconbitmap,iconify,iconmask,iconname,iconposition,% - iconwindow,maxsize,minsize,overrideredirect,positionfrom,% - protocol,sizefrom,state,title,transient,withdraw,xview,yview,% - yposition,% - -accelerator,-activebackground,-activeborderwidth,% - -activeforeground,-after,-anchor,-arrow,-arrowshape,-aspect,% - -async,-background,-before,-bg,-bigincrement,-bitmap,-bordermode,% - -borderwidth,-button,-capstyle,-channel,-class,-closeenough,% - -colormap,-column,-columnspan,-command,-confine,-container,% - -count,-cursor,-data,-default,-detail,-digits,-direction,% - -displayof,-disableforeground,-elementborderwidth,-expand,% - -exportselection,-extend,-family,-fg,-file,-fill,-focus,-font,% - -fontmap,-foreground,-format,-from,-gamma,-global,-height,% - -highlightbackground,-highlightcolor,-highlightthickness,-icon,% - -image,-in,-insertbackground,-insertborderwidth,-insertofftime,% - -insertontime,-imsertwidth,-ipadx,-ipady,-joinstyle,-jump,% - -justify,-keycode,-keysym,-label,-lastfor,-length,-maskdata,% - -maskfile,-menu,-message,-mode,-offvalue,-onvalue,-orient,% - -outlien,-outlinestipple,-overstrike,-override,-padx,-pady,% - -pageanchor,-pageheight,-pagewidth,-pagey,-pagey,-palette,% - -parent,-place,-postcommand,-relheight,-relief,-relwidth,-relx,% - -rely,-repeatdelay,-repeatinterval,-resolution,-root,-rootx,% - -rooty,-rotate,-row,-rowspan,-screen,-selectcolor,-selectimage,% - -sendevent,-serial,-setgrid,-showvalue,-shrink,-side,-size,% - -slant,-sliderlength,-sliderrelief,-smooth,-splinesteps,-state,% - -sticky,-stipple,-style,-subsample,-subwindow,-tags,-takefocus,% - -tearoff,-tearoffcommand,-text,-textvariable,-tickinterval,-time,% - -title,-to,-troughcolor,-type,-underline,-use,-value,-variable,% - -visual,-width,-wrap,-wraplength,-x,-xscrollcommand,-y,% - -bgstipple,-fgstipple,-lmargin1,-lmargin2,-rmargin,-spacing1,% - -spacing2,-spacing3,-tabs,-yscrollcommand,-zoom,% - activate,add,addtag,bbox,cget,clone,configure,coords,% - curselection,debug,delete,delta,deselect,dlineinfo,dtag,dump,% - entrycget,entryconfigure,find,flash,fraction,get,gettags,handle,% - icursor,identify,index,insert,invoke,itemcget,itemconfigure,mark,% - moveto,own,post,postcascade,postscript,put,redither,ranges,% - scale,select,show,tag,type,unpost,xscrollcommand,xview,% - yscrollcommand,yview,yposition}% - }% -\lst@definelanguage[]{tcl}% - {alsoletter={.:,*=&-},% - morekeywords={after,append,array,names,exists,anymore,donesearch,% - get,nextelement,set,size,startsearch,auto_mkindex,binary,break,% - case,catch,cd,clock,close,concat,console,continue,default,else,% - elseif,eof,error,eval,exec,-keepnewline,exit,expr,fblocked,% - fconfigure,fcopy,file,atime,dirname,executable,exists,extension,% - isdirectory,isfile,join,lstat,mtime,owned,readable,readlink,% - rootname,size,stat,tail,type,writable,-permissions,-group,-owner,% - -archive,-hidden,-readonly,-system,-creator,-type,-force,% - fileevent,flush,for,foreach,format,gets,glob,global,history,if,% - incr,info,argsbody,cmdcount,commands,complete,default,exists,% - globals,level,library,locals,patchlevel,procs,script,tclversion,% - vars,interp,join,lappend,lindex,linsert,list,llength,lrange,% - lreplace,lsearch,-exact,-regexp,-glob,lsort,-ascii,-integer,% - -real,-dictionary,-increasing,-decreasing,-index,-command,load,% - namespace,open,package,forget,ifneeded,provide,require,unknown,% - vcompare,versions,vsatisfies,pid,proc,puts,-nonewline,pwd,read,% - regexp,-indices,regsub,-all,-nocaserename,return,scan,seek,set,% - socket,source,split,string,compare,first,index,last,length,match,% - range,tolower,toupper,trim,trimleft,trimright,subst,switch,tell,% - time,trace,variable,vdelete,vinfo,unknown,unset,uplevel,upvar,% - vwait,while,acos,asin,atan,atan2,ceil,cos,cosh,exp,floor,fmod,% - hypot,log,log10,pow,sin,sinh,sqrt,tan,tanh,abs,double,int,round% - },% - morestring=[d]",% - MoreSelectCharTable=% - \lst@CArgX\#\relax\lst@DefDelimB{}{}% - {\ifx\lst@lastother\lstum@backslash - \expandafter\@gobblethree - \fi}% - \lst@BeginComment\lst@commentmode - {{\lst@commentstyle}\lst@Lmodetrue}% - }[keywords,comments,strings]% -%% -%% VBScript definition (c) 2000 Sonja Weidmann -%% -\lst@definelanguage{VBScript}% - {morekeywords={Call,Case,Const,Dim,Do,Each,Else,End,Erase,Error,Exit,% - Explicit,For,Function,If,Loop,Next,On,Option,Private,Public,% - Randomize,ReDim,Rem,Select,Set,Sub,Then,Wend,While,Abs,Array,Asc,% - Atn,CBool,CByte,CCur,CDate,CDbl,Chr,CInt,CLng,Cos,CreateObject,% - CSng,CStr,Date,DateAdd,DateDiff,DatePart,DateSerial,DateValue,% - Day,Exp,Filter,Fix,FormatCurrency,FormatDateTime,FormatNumber,% - FormatPercent,GetObject,Hex,Hour,InputBox,InStr,InStrRev,Int,% - IsArray,IsDate,IsEmpty,IsNull,IsNumeric,IsObject,Join,LBound,% - LCase,Left,Len,LoadPicture,Log,LTrim,Mid,Minute,Month,MonthName,% - MsgBox,Now,Oct,Replace,RGB,Right,Rnd,Round,RTrim,ScriptEngine,% - ScriptEngineBuildVersion,ScriptEngineMajorVersion,% - ScriptEngineMinorVersion,Second,Sgn,Sin,Space,Split,Sqr,StrComp,% - StrReverse,String,Tan,Time,TimeSerial,TimeValue,Trim,TypeName,% - UBound,UCase,VarType,Weekday,WeekdayName,Year, And,Eqv,Imp,Is,% - Mod,Not,Or,Xor,Add,BuildPath,Clear,Close,Copy,CopyFile,% - CopyFolder,CreateFolder,CreateTextFile,Delete,DeleteFile,% - DeleteFolder,Dictionary,Drive,DriveExists,Drives,Err,Exists,File,% - FileExists,FileSystemObject,Files,Folder,FolderExists,Folders,% - GetAbsolutePathName,GetBaseName,GetDrive,GetDriveName,% - GetExtensionName,GetFile,GetFileName,GetFolder,% - GetParentFolderName,GetSpecialFolder,GetTempName,Items,Keys,Move,% - MoveFile,MoveFolder,OpenAsTextStream,OpenTextFile,Raise,Read,% - ReadAll,ReadLine,Remove,RemoveAll,Skip,SkipLine,TextStream,Write,% - WriteBlankLines,WriteLine,Alias,Archive,CDROM,Compressed,% - Directory,Fixed,ForAppending,ForReading,ForWriting,Hidden,Normal,% - RAMDisk,ReadOnly,Remote,Removable,System,SystemFolder,% - TemporaryFolder,TristateFalse,TristateTrue,TristateUseDefault,% - Unknown,Volume,WindowsFolder,vbAbortRetryIgnore,% - vbApplicationModal,vbArray,vbBinaryCompare,vbBlack,vbBlue,% - vbBoolean,vbByte,vbCr,vbCrLf,vbCritical,vbCurrency,vbCyan,% - vbDataObject,vbDate,vbDecimal,vbDefaultButton1,vbDefaultButton2,% - vbDefaultButton3,vbDefaultButton4,vbDouble,vbEmpty,vbError,% - vbExclamation,vbFirstFourDays,vbFirstFullWeek,vbFirstJan1,% - vbFormFeed,vbFriday,vbGeneralDate,vbGreen,vbInformation,% - vbInteger,vbLf,vbLong,vbLongDate,vbLongTime,vbMagenta,vbMonday,% - vbNewLine,vbNull,vbNullChar,vbNullString,vbOKC,ancel,vbOKOnly,% - vbObject,vbObjectError,vbQuestion,vbRed,vbRetryCancel,vbSaturday,% - vbShortDate,vbShortTime,vbSingle,vbString,vbSunday,vbSystemModal,% - vbTab,vbTextCompare,vbThursday,vbTuesday,vbUseSystem,% - vbUseSystemDayOfWeek,vbVariant,vbVerticalTab,vbWednesday,vbWhite,% - vbYellow,vbYesNo,vbYesNoCancel},% - sensitive=f,% - morecomment=[l]',% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% VRML definition (c) 2001 Oliver Baum -%% -\lst@definelanguage[97]{VRML} - {morekeywords={DEF,EXTERNPROTO,FALSE,IS,NULL,PROTO,ROUTE,TO,TRUE,USE,% - eventIn,eventOut,exposedField,field,Introduction,Anchor,% - Appearance,AudioClip,Background,Billboard,Box,Collision,Color,% - ColorInterpolator,Cone,Coordinate,CoordinateInterpolator,% - Cylinder,CylinderSensor,DirectionalLight,ElevationGrid,Extrusion,% - Fog,FontStyle,Group,ImageTexture,IndexedFaceSet,IndexedLineSet,% - Inline,LOD,Material,MovieTexture,NavigationInfo,Normal,% - NormalInterpolator,OrientationInterpolator,PixelTexture,% - PlaneSensor,PointLight,PointSet,PositionInterpolator,% - ProximitySensor,ScalarInterpolator,Script,Shape,Sound,Sphere,% - SphereSensor,SpotLight,Switch,Text,TextureCoordinate,% - TextureTransform,TimeSensor,TouchSensor,Transform,Viewpoint,% - VisibilitySensor,WorldInfo},% - morecomment=[l]\#,% bug: starts comment in the first column - morestring=[b]"% - }[keywords,comments,strings] -\endinput -%% -%% End of file `lstlang2.sty'. diff --git a/Documentation/PhysicsTools/lstlang3.sty b/Documentation/PhysicsTools/lstlang3.sty deleted file mode 100644 index cc0dbb152f0..00000000000 --- a/Documentation/PhysicsTools/lstlang3.sty +++ /dev/null @@ -1,1006 +0,0 @@ -%% -%% This is file `lstlang3.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% lstdrvrs-1.3.dtx (with options: `lang3') -%% -%% (w)(c) 1996/1997/1998/1999/2000/2001/2002/2003/2004 Carsten Heinz -%% and/or any other author listed elsewhere in this file. -%% -%% This file is distributed under the terms of the LaTeX Project Public -%% License from CTAN archives in directory macros/latex/base/lppl.txt. -%% Either version 1.0 or, at your option, any later version. -%% -%% This file is completely free and comes without any warranty. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\ProvidesFile{lstlang3.sty} - [2004/09/05 1.3 listings language file] -\lst@definelanguage[68]{Algol}% - {morekeywords={abs,and,arg,begin,bin,bits,bool,by,bytes,case,channel,% - char,co,comment,compl,conj,divab,do,down,elem,elif,else,empty,% - end,entier,eq,esac,exit,false,fi,file,flex,for,format,from,ge,% - goto,gt,heap,if,im,in,int,is,isnt,le,leng,level,loc,long,lt,lwb,% - minusab,mod,modab,mode,ne,nil,not,od,odd,of,op,or,ouse,out,over,% - overab,par,plusab,plusto,pr,pragmat,prio,proc,re,real,ref,repr,% - round,sema,shl,short,shorten,shr,sign,skip,string,struct,then,% - timesab,to,true,union,up,upb,void,while},% - sensitive=f,% ??? - morecomment=[s]{\#}{\#},% - keywordcomment={co,comment}% - }[keywords,comments,keywordcomments]% -\lst@definelanguage[60]{Algol}% - {morekeywords={array,begin,Boolean,code,comment,div,do,else,end,% - false,for,goto,if,integer,label,own,power,procedure,real,step,% - string,switch,then,true,until,value,while},% - sensitive=f,% ??? - keywordcommentsemicolon={end}{else,end}{comment}% - }[keywords,keywordcomments]% -%% -%% x86masm definition (c) 2002 Andrew Zabolotny -%% -\lst@definelanguage[x86masm]{Assembler}% - {morekeywords={al,ah,ax,eax,bl,bh,bx,ebx,cl,ch,cx,ecx,dl,dh,dx,edx,% - si,esi,di,edi,bp,ebp,sp,esp,cs,ds,es,ss,fs,gs,cr0,cr1,cr2,cr3,% - db0,db1,db2,db3,db4,db5,db6,db7,tr0,tr1,tr2,tr3,tr4,tr5,tr6,tr7,% - st,aaa,aad,aam,aas,adc,add,and,arpl,bound,bsf,bsr,bswap,bt,btc,% - btr,bts,call,cbw,cdq,clc,cld,cli,clts,cmc,cmp,cmps,cmpsb,cmpsw,% - cmpsd,cmpxchg,cwd,cwde,daa,das,dec,div,enter,hlt,idiv,imul,in,% - inc,ins,int,into,invd,invlpg,iret,ja,jae,jb,jbe,jc,jcxz,jecxz,% - je,jg,jge,jl,jle,jna,jnae,jnb,jnbe,jnc,jne,jng,jnge,jnl,jnle,% - jno,jnp,jns,jnz,jo,jp,jpe,jpo,js,jz,jmp,lahf,lar,lea,leave,lgdt,% - lidt,lldt,lmsw,lock,lods,lodsb,lodsw,lodsd,loop,loopz,loopnz,% - loope,loopne,lds,les,lfs,lgs,lss,lsl,ltr,mov,movs,movsb,movsw,% - movsd,movsx,movzx,mul,neg,nop,not,or,out,outs,pop,popa,popad,% - popf,popfd,push,pusha,pushad,pushf,pushfd,rcl,rcr,rep,repe,% - repne,repz,repnz,ret,retf,rol,ror,sahf,sal,sar,sbb,scas,seta,% - setae,setb,setbe,setc,sete,setg,setge,setl,setle,setna,setnae,% - setnb,setnbe,setnc,setne,setng,setnge,setnl,setnle,setno,setnp,% - setns,setnz,seto,setp,setpe,setpo,sets,setz,sgdt,shl,shld,shr,% - shrd,sidt,sldt,smsw,stc,std,sti,stos,stosb,stosw,stosd,str,sub,% - test,verr,verw,wait,wbinvd,xadd,xchg,xlatb,xor,fabs,fadd,fbld,% - fbstp,fchs,fclex,fcom,fcos,fdecstp,fdiv,fdivr,ffree,fiadd,ficom,% - fidiv,fidivr,fild,fimul,fincstp,finit,fist,fisub,fisubr,fld,fld1,% - fldl2e,fldl2t,fldlg2,fldln2,fldpi,fldz,fldcw,fldenv,fmul,fnop,% - fpatan,fprem,fprem1,fptan,frndint,frstor,fsave,fscale,fsetpm,% - fsin,fsincos,fsqrt,fst,fstcw,fstenv,fstsw,fsub,fsubr,ftst,fucom,% - fwait,fxam,fxch,fxtract,fyl2x,fyl2xp1,f2xm1},% - morekeywords=[2]{.align,.alpha,assume,byte,code,comm,comment,.const,% - .cref,.data,.data?,db,dd,df,dosseg,dq,dt,dw,dword,else,end,endif,% - endm,endp,ends,eq,equ,.err,.err1,.err2,.errb,.errdef,.errdif,% - .erre,.erridn,.errnb,.errndef,.errnz,event,exitm,extrn,far,% - .fardata,.fardata?,fword,ge,group,gt,high,if,if1,if2,ifb,ifdef,% - ifdif,ife,ifidn,ifnb,ifndef,include,includelib,irp,irpc,label,% - .lall,le,length,.lfcond,.list,local,low,lt,macro,mask,mod,.model,% - name,ne,near,offset,org,out,page,proc,ptr,public,purge,qword,.% - radix,record,rept,.sall,seg,segment,.seq,.sfcond,short,size,% - .stack,struc,subttl,tbyte,.tfcond,this,title,type,.type,width,% - word,.xall,.xcref,.xlist},% - alsoletter=.,alsodigit=?,% - sensitive=f,% - morestring=[b]",% - morestring=[b]',% - morecomment=[l];% - }[keywords,comments,strings] -%% -%% Clean definition (c) 1999 Jos\'e Romildo Malaquias -%% -%% Clean 1.3 : some standard functional language: pure, lazy, -%% polymorphic type system, modules, type classes, -%% garbage collection, functions as first class citizens -%% -\lst@definelanguage{Clean}% - {otherkeywords={:,::,=,:==,=:,=>,->,<-,<-:,\{,\},\{|,|\},\#,\#!,|,\&,% - [,],!,.,\\\\,;,_},% - morekeywords={from,definition,implementation,import,module,system,% - case,code,if,in,let,let!,of,where,with,infix,infixl,infixr},% - morendkeywords={True,False,Start,Int,Real,Char,Bool,String,World,% - File,ProcId},% - sensitive,% - morecomment=[l]//,% missing comma: Markus Pahlow - morecomment=[n]{/*}{*/},% - morestring=[b]"% - }[keywords,comments,strings]% -\lst@definelanguage{Comal 80}% - {morekeywords={AND,AUTO,CASE,DATA,DEL,DIM,DIV,DO,ELSE,ENDCASE,ENDIF,% - ENDPROC,ENDWHILE,EOD,EXEC,FALSE,FOR,GOTO,IF,INPUT,INT,LIST,LOAD,% - MOD,NEW,NEXT,NOT,OF,OR,PRINT,PROC,RANDOM,RENUM,REPEAT,RND,RUN,% - SAVE,SELECT,STOP,TAB,THEN,TRUE,UNTIL,WHILE,ZONE},% - sensitive=f,% ??? - morecomment=[l]//,% - morestring=[d]"% - }[keywords,comments,strings]% -\lst@definelanguage{Elan}% - {morekeywords={ABS,AND,BOOL,CAND,CASE,CAT,COLUMNS,CONCR,CONJ,CONST,% - COR,DECR,DEFINES,DET,DIV,DOWNTO,ELIF,ELSE,END,ENDIF,ENDOP,% - ENDPACKET,ENDPROC,ENDREP,ENDSELECT,FALSE,FI,FILE,FOR,FROM,IF,% - INCR,INT,INV,LEAVE,LENGTH,LET,MOD,NOT,OF,OP,OR,OTHERWISE,PACKET,% - PROC,REAL,REP,REPEAT,ROW,ROWS,SELECT,SIGN,STRUCT,SUB,TEXT,THEN,% - TRANSP,TRUE,TYPE,UNTIL,UPTO,VAR,WHILE,WITH,XOR,% - maxint,sign,abs,min,max,random,initializerandom,subtext,code,% - replace,text,laenge,pos,compress,change,maxreal,smallreal,floor,% - pi,e,ln,log2,log10,sqrt,exp,tan,tand,sin,sind,cos,cosd,arctan,% - arctand,int,real,lastconversionok,put,putline,line,page,get,% - getline,input,output,sequentialfile,maxlinelaenge,reset,eof,% - close,complexzero,complexone,complexi,complex,realpart,imagpart,% - dphi,phi,vector,norm,replace,matrix,idn,row,column,sub,% - replacerow,replacecolumn,replaceelement,transp,errorsstop,stop},% - sensitive,% - morestring=[d]"% - }[keywords,strings]% -%% -%% Erlang definition (c) 2003 Daniel Gazard -%% -\lst@definelanguage{erlang}% - {morekeywords={abs,after,and,apply,atom,atom_to_list,band,binary,% - binary_to_list,binary_to_term,bor,bsl,bsr,bxor,case,catch,% - date,div,element,erase,end,exit,export,float,float_to_list,% - get,halt,hash,hd,if,info,import,integer,integer_to_list,% - length,link,list,list_to_atom,list_to_float,list_to_integer,% - list_to_tuple,module,node,nodes,now,of,or,pid,port,ports,% - processes,put,receive,reference,register,registered,rem,% - round,self,setelement,size,spawn,throw,time,tl,trace,trunc,% - tuple,tuple_to_list,unlink,unregister,whereis,error,false,% - infinity,nil,ok,true,undefined,when},% - otherkeywords={->,!,[,],\{,\},},% - morecomment=[l]\%,% - morestring=[b]",% - morestring=[b]'% - }[keywords,comments,strings]% -\lst@definelanguage{ksh} - {morekeywords={alias,awk,cat,echo,else,elif,fi,exec,exit,% - for,in,do,done,select,case,esac,while,until,function,% - time,export,cd,eval,fc,fg,kill,let,pwd,read,return,rm,% - glob,goto,history,if,logout,nice,nohup,onintr,repeat,sed,% - set,setenv,shift,source,switch,then,umask,unalias,% - unset,wait,@,env,argv,child,home,ignoreeof,noclobber,% - noglob,nomatch,path,prompt,shell,status,verbose,print,printf,% - sqrt,BEGIN,END},% - morecomment=[l]\#,% - morestring=[d]",% - morestring=[d]',% - morestring=[d]`% - }[keywords,comments,strings]% -\lst@definelanguage{Logo}% - {morekeywords={and,atan,arctan,both,break,bf,bl,butfirst,butlast,% - cbreak, close,co,continue,cos,count,clearscreen,cs,debquit,% - describe,diff,difference,ed,edit,either,emptyp,equalp,er,erase,% - errpause,errquit,fifp,filefprint,fifty,fileftype,fip,fileprint,% - fird,fileread,fity,filetype,fiwd,fileword,f,first,or,fp,fprint,% - fput,fty,ftype,full,fullscreen,go,bye,goodbye,gprop,greaterp,% - help,if,iff,iffalse,ift,iftrue,nth,item,keyp,llast,lessp,list,% - local,lput,make,max,maximum,memberp,memtrace,min,minimum,namep,% - not,numberp,oflush,openr,openread,openw,openwrite,op,output,% - pause,plist,pots,pow,pprop,pps,pr,print,product,quotient,random,% - rc,readchar,rl,readlist,remprop,repcount,repeat,request,rnd,run,% - se,sentence,sentencep,setc,setcolor,setipause,setqpause,po,show,% - sin,split,splitscreen,sqrt,stop,sum,test,text,textscreen,thing,% - to,tone,top,toplevel,type,untrace,wait,word,wordp,yaccdebug,is,% - mod,remainder,trace,zerop,back,bk,bto,btouch,fd,forward,fto,% - ftouch,getpen,heading,hit,hitoot,ht,hideturtle,loff,lampoff,lon,% - lampon,lt,left,lot,lotoot,lto,ltouch,penc,pencolor,pd,pendown,pe,% - penerase,penmode,pu,penup,px,penreverse,rt,right,rto,rtouch,% - scrunch,seth,setheading,setscrun,setscrunch,setxy,shownp,st,% - showturtle,towardsxy,clean,wipeclean,xcor,ycor,tur,turtle,% - display,dpy},% - sensitive=f% ??? - }[keywords]% -%% -%% MetaPost definition (c) 2004 Brooks Moses -%% This definition is based on the language specifications -%% contained in the _User's Manual for Metapost_, with the core -%% language enhancements that are described in the _Drawing -%% Graphs with MetaPost_ documentation. -%% -\lst@definelanguage{MetaPost}% - {% keywords[1] = MetaPost primitives (not found in following tables) - morekeywords={end,begingroup,endgroup,beginfig,endfig,def,vardef,% - primary,secondary,tertiary,primarydef,secondarydef,tertiarydef,% - expr,suffix,text,enddef,if,fi,else,elseif,for,forsuffixes,% - forever,endfor,upto,downto,stop,until,tension,controls,on,off,% - btex,etex,within,input}, - % keywords[2] = Operators (Tables 6-9 in MetaPost User's manual) - morekeywords=[2]{abs,and,angle,arclength,arctime,ASCII,bbox,bluepart,% - boolean,bot,ceiling,center,char,color,cosd,cutafter,cutbefore,% - cycle,decimal,dir,direction,directionpoint,directiontime,div,% - dotprod,floor,fontsize,greenpart,hex,infont,intersectionpoint,% - intersectiontimes,inverse,known,length,lft,llcorner,lrcorner,% - makepath,makepen,mexp,mlog,mod,normaldeviate,not,numeric,oct,% - odd,or,pair,path,pen,penoffset,picture,point,postcontrol,% - precontrol,redpart,reverse,rotated,round,rt,scaled,shifted,% - sind,slanted,sqrt,str,string,subpath,substring,top,transform,% - transformed,ulcorner,uniformdeviate,unitvector,unknown,% - urcorner,whatever,xpart,xscaled,xxpart,xypart,ypart,yscaled,% - yxpart,yypart,zscaled,of,reflectedabout,rotatedaround,ulft,urt,% - llft,lrt,readfrom,write,stroked,filled,textual,clipped,bounded,% - pathpart,penpart,dashpart,textpart,fontpart},% - % keywords[3] = Commands (Table 10) - morekeywords=[3]{addto,clip,cutdraw,draw,drawarrow,drawdblarrow,% - fill,filldraw,interim,let,loggingall,newinternal,pickup,% - save,setbounds,shipout,show,showdependencies,showtoken,% - showvariable,special,tracingall,tracingnone,undraw,unfill,% - unfilldraw,to,also,contour,doublepath,withcolor,withpen,% - dashed,randomseed},% - % keywords[4] = Function-Like Macros (Table 11) - morekeywords=[4]{boxit,boxjoin,bpath,buildcycle,circleit,dashpattern,% - decr,dotlabel,dotlabels,drawboxed,drawboxes,drawoptions,% - drawunboxed,fixpos,fixsize,incr,interpath,label,labels,max,min,pic,% - thelabel,z,image},% - % keywords[5] = Internal and Predefined Variables (Tables 3, 4) - morekeywords=[5]{ahangle,ahlength,bboxmargin,charcode,circmargin,% - day,defaultdx,defaultdy,defaultpen,defaultscale,labeloffset,% - linecap,linejoin,miterlimit,month,pausing,prologues,showstopping,% - time,tracingcapsules,tracingchoices,tracingcommands,% - tracingequations,tracinglostchars,tracingmacros,tracingonline,% - tracingoutput,tracingrestores,tracingspecs,tracingstats,% - tracingtitles,truecorners,warningcheck,year}, - morekeywords=[5]{background,currentpen,currentpicture,cuttings,% - defaultfont},% - % keywords[6] = Predefined Constants (Table 5) - morekeywords=[6]{beveled,black,blue,bp,butt,cc,cm,dd,ditto,down,% - epsilon,evenly,false,fullcircle,green,halfcircle,identity,% - in,infinity,left,mitered,mm,nullpicture,origin,pc,pencircle,% - pt,quartercircle,red,right,rounded,squared,true,unitsquare,% - up,white,withdots}, - sensitive=false,% - alsoother={0123456789$},% - morecomment=[l]\%,% - morestring=[mf]{input\ },% - morestring=[b]"% - }[keywords,comments,strings,mf]% -%% -%% Mizar definition (c) 2003 Adam Grabowski -%% -%% Mizar is freely available at URL www.mizar.org for the Linux x86, -%% Solaris x86, and Windows operating systems. -%% -\lst@definelanguage{Mizar}% - {otherkeywords={->,(\#,\#),.=),\&},% - morekeywords={vocabulary,constructors,$1,$1,$2,$3,$4,$5,$6,$7,$8,% - @proof,according,aggregate,and,antonym,as,associativity,assume,% - asymmetry,attr,be,begin,being,by,canceled,case,cases,cluster,% - clusters,coherence,commutativity,compatibility,connectedness,% - consider,consistency,constructors,contradiction,correctness,def,% - deffunc,define,definition,definitions,defpred,end,environ,equals,% - ex,exactly,existence,for,from,func,given,hence,hereby,holds,% - idempotence,if,iff,implies,involutiveness,irreflexivity,is,it,% - let,means,mode,non,not,notation,now,of,or,otherwise,over,per,% - pred,prefix,projectivity,proof,provided,qua,reconsider,redefine,% - reflexivity,requirements,reserve,scheme,schemes,section,selector,% - set,st,struct,such,suppose,symmetry,synonym,take,that,the,then,% - theorem,theorems,thesis,thus,to,transitivity,uniqueness,% - vocabulary,where},% - sensitive=t,% - morecomment=[l]::% - }[keywords,comments]% -\lst@definelanguage{Modula-2}% - {morekeywords={AND,ARRAY,BEGIN,BY,CASE,CONST,DIV,DO,ELSE,ELSIF,END,% - EXIT,EXPORT,FOR,FROM,IF,IMPLEMENTATION,IMPORT,IN,MOD,MODULE,NOT,% - OF,OR,POINTER,PROCEDURE,QUALIFIED,RECORD,REPEAT,RETURN,SET,THEN,% - TYPE,UNTIL,VAR,WHILE,WITH,ABS,BITSET,BOOLEAN,CAP,CARDINAL,CHAR,% - CHR,DEC,EXCL,FALSE,FLOAT,HALT,HIGH,INC,INCL,INTEGER,LONGCARD,% - LONGINT,LONGREAL,MAX,MIN,NIL,ODD,ORD,PROC,REAL,SIZE,TRUE,TRUNC,% - VAL,DEFINITION,LOOP},% added keywords due to Peter Bartke 99/07/22 - sensitive,% - morecomment=[n]{(*}{*)},% - morestring=[d]',% - morestring=[d]"% - }[keywords,comments,strings]% -\lst@definelanguage{MuPAD}{% - morekeywords={end,next,break,if,then,elif,else,end_if,case,end_case,% - otherwise,for,from,to,step,downto,in,end_for,while,end_while,% - repeat,until,end_repeat,or,and,not,xor,div,mod,union,minus,% - intersect,subset,proc,begin,end_proc,domain,end_domain,category,% - end_category,axiom,end_axiom,quit,delete,frame},% - morekeywords=[2]{NIL,FAIL,TRUE,FALSE,UNKNOWN,I,RD_INF,RD_NINF,% - RD_NAN,name,local,option,save,inherits,of,do},% - otherkeywords={\%if,?,!,:=,<,>,=,<=,<>,>=,==>,<=>,::,..,...,->,% - @,@@,\$},% - sensitive=true,% - morecomment=[l]{//},% - morecomment=[n]{/*}{*/},% - morestring=[b]",% - morestring=[d]{`}% - }[keywords,comments,strings] -\lst@definelanguage{NASTRAN} - {morekeywords={ENDDATA},% - morecomment=[l]$,% - MoreSelectCharTable=% - \lst@CArgX BEGIN\ BULK\relax\lst@CDef{}% - {\lst@ifmode\else \ifnum\lst@length=\z@ - \lst@EnterMode{\lst@GPmode}{\lst@modetrue - \let\lst@currstyle\lst@gkeywords@sty}% - \fi \fi}% - {\ifnum\lst@mode=\lst@GPmode - \lst@XPrintToken \lst@LeaveMode - \fi}% - }[keywords,comments]% -\lst@definelanguage{Oberon-2}% - {morekeywords={ARRAY,BEGIN,BOOLEAN,BY,CASE,CHAR,CONST,DIV,DO,ELSE,% - ELSIF,END,EXIT,FALSE,FOR,IF,IMPORT,IN,INTEGER,IS,LONGINT,% - LONGREAL,LOOP,MOD,MODULE,NIL,OF,OR,POINTER,PROCEDURE,REAL,RECORD,% - REPEAT,RETURN,SET,SHORTINT,THEN,TO,TRUE,TYPE,UNTIL,VAR,WHILE,% - WITH,ABS,ASH,CAP,CHR,COPY,DEC,ENTIER,EXCL,HALT,INC,INCL,LEN,LONG,% - MAX,MIN,NEW,ODD,ORD,SHORT,SIZE},% - sensitive,% - morecomment=[n]{(*}{*)},% - morestring=[d]',% - morestring=[d]"% - }[keywords,comments,strings]% -%% -%% OCL definition (c) 2000 Achim D. Brucker -%% -%% You are allowed to use, modify and distribute this code either under -%% the terms of the LPPL (version 1.0 or later) or the GPL (version 2.0 -%% or later). -%% -\lst@definelanguage[decorative]{OCL}[OMG]{OCL} - {otherkeywords={@pre},% - morendkeywords={name,attributes,associatoinEnds,operations,% - supertypes,allSupertypes,allInstances,oclIsKindOf,oclIsTypeOf,% - oclAsType,oclInState,oclIsNew,evaluationType,abs,floor,round,max,% - min,div,mod,size,concat,toUpper,toLower,substring,includes,% - excludes,count,includesAll,exludesAll,isEmpty,notEmpty,sum,% - exists,forAll,isUnique,sortedBy,iterate,union,intersection,% - including,excluding,symmetricDifference,select,reject,collect,% - asSequence,asBag,asSequence,asSet,append,prepend,subSequence,at,% - first,last,true,false,isQuery}% - }% -\lst@definelanguage[OMG]{OCL}% - {morekeywords={context,pre,inv,post},% - ndkeywords={or,xor,and,not,implies,if,then,else,endif},% - morekeywords=[3]{Boolean,Integer,Real,String,Set,Sequence,Bag,% - OclType,OclAny,OclExpression,Enumeration,Collection,},% - sensitive=t,% - morecomment=[l]--,% - morestring=[d]'% - }[keywords,comments,strings]% -\lst@definelanguage{Plasm}% - {sensitive=false,% - morekeywords={aa,abs,ac,acolor,acos,actor,al,alias,align,and,% - animation,animation,appearance,apply,ar,arc,as,asin,assoc,atan,% - axialcamera,axialcameras,basehermite,bbox,bbox,bernstein,% - bernsteinbasis,bezier,beziercurve,beziermanifold,bezierstripe,% - beziersurface,bigger,biggest,bilinearsurface,binormal,% - biquadraticsurface,black,blend,blue,bottom,box,brown,bspize,% - bspline,bsplinebasis,c,cabinet,camera,cart,case,cat,catch,ceil,% - centeredcameras,centralcavalier,char,charseq,choose,circle,% - circumference,class,cmap,color,comp,computecoords,cone,% - conicalsurface,cons,control,convexcoords,convexhull,coonspatch,% - copy,cos,cosh,crease,crosspolytope,cube,cubiccardinal,% - cubiccardinalbasis,cubichermite,cubicubspline,cubicubsplinebasis,% - cuboid,curl,curvature,curve2cspath,curve2mapvect,cyan,cylinder,% - cylindricalsurface,d,deboor,def,depol,depth_sort,depth_test,% - derbernstein,derbernsteinbase,derbezier,determinant,difference,% - differencepr,dim,dimetric,dirproject,displaygraph,displaynubspline,% - displaynurbspline,distl,distr,div,divergence,dodecahedron,dot,down,% - dp,drawedges,drawforks,drawtree,ds,dsphere,dump,dumprep,ellipse,% - embed,end,eq,ex,exp,explode,export,extract_bodies,extract_polygons,% - extract_wires,extrude,extrusion,fact,false,feature,ff,fillcolor,% - filter,finitecone,first,flash,flashani,floor,fontcolor,fontheight,% - fontspacing,fontwidth,fractalsimplex,frame,frame,frameflash,fromto,% - gausscurvature,ge,grad,gradient,gradmap,gray,green,gt,help,hermite,% - hermitebasis,hermitesurface,hexahedron,icosahedron,id,idnt,if,in,% - inarcs,innerprod,inset,insl,insr,intersection,intersectionpr,% - intervals,intmax,intmin,intsto,inv,isa,isanimpol,isbool,ischar,% - isclosedshape,iscloseto,isempty,iseven,isfun,isfunvect,isge,isgt,% - isint,isintneg,isinto,isintpos,isle,islt,ismat,ismatof,isnat,% - isnull,isnum,isnumneg,isnumpos,isodd,isometric,isorthoshape,ispair,% - ispoint,ispointseq,ispol,ispoldim,ispolytope,ispurepol,isreal,% - isrealneg,isrealpos,isrealvect,isseq,isseqof,isshape,issimplex,% - issqrmat,isstring,isvect,iszero,jacobian,join,joints,k,last,le,% - left,leftcavalier,len,less,lesseq,lex,lift,light,linecolor,% - linesize,list,ln,load,loadlib,loop,lt,lxmy,magenta,map,mapshapes,% - markersize,mat,matdotprod,material,mathom,max,mean,meanpoint,med,% - merge,mesh,min,minkowski,mirror,mixedprod,mk,mkframe,mkpol,% - mkvector,mkversork,mod,model,move,mul,multextrude,mxby,mxmy,mxty,% - myfont,n,nat2string,neq,ngon,norm2,normalmap,not,nu_grid,nubspline,% - nubsplineknots,nurbspline,nurbsplineknots,octahedron,offset,% - onepoint,open,optimize,or,orange,ord,ortho,orthoproject,orthox,% - orthoy,orthoz,outarcs,outerloop,outerwarp,pairdiff,parallel,% - pascaltriangle,pdiff,pdifference,permutahedron,permutations,% - perspective,perspective,pi,pivotop,plane,planemapping,pmap,% - points2shape,polar,polyline,polymarker,polypoint,power,powerset,% - presort,principalnormal,print,prism,profileprodsurface,% - progressivesum,project,projection,purple,pyramid,q,quadarray,% - quadmesh,quote,r,raise,range,rationalbezier,rationalblend,% - rationalbspline,rationalize,red,rev,reverse,rgbacolor,right,% - rightcavalier,ring,rn,rotatedtext,rotationalsurface,rotn,rtail,% - ruledsurface,rxmy,s,save,scalarmatprod,scalarvectprod,schlegel2d,% - schlegel3d,sdifference,sdifferencepr,segment,sel,setand,setdiff,% - setfontcolor,setor,setxor,sex,shape_0,shape_1,shape2points,% - shape2pol,shapeclosed,shapecomb,shapediff,shapedist,% - shapeinbetweening,shapeinf,shapejoin,shapelen,shapenorm,% - shapenormal,shapeprod,shaperot,shapesum,shapesup,shapezero,shift,% - showprop,sign,signal,simplex,simplexpile,sin,sinh,size,skeleton,% - skew,smaller,smallest,solidifier,solidify,sort,sphere,spline,% - splinesampling,splitcells,splitpols,sqr,sqrt,star,string,% - stringtokens,struct,sub,svg,sweep,t,tail,tan,tangent,tanh,% - tensorprodsurface,tetrahedron,text,texture,textwithattributes,% - thinsolid,threepoints,time,tmax,tmin,top,torus,torusmap,trace,% - trans,tree,trianglefan,trianglestripe,trimetric,true,truncone,tt,% - tube,twopoints,uk,ukpol,ukpolf,union,unionpr,unitvect,unprune,up,% - vect2dtoangle,vect2mat,vectdiff,vectnorm,vectprod,vectsum,view,% - viewmodel,viewmodel,vrml,warp,warp,where,white,with,xcavalier,xor,% - xquadarray,xx,ycavalier,yellow},% - moredirectives={loadlib},% - otherkeywords={-,+,*,**,/,~,|,..,^,\&,\&\&,\#,\#\#},% - morecomment=[s]{\%}{\%},% - morestring=[b]',% - literate={~}{{$\sim$}}{1} {^}{$\wedge$}{1},% - }[keywords,directives,comments,strings]% -\lst@definelanguage{PL/I}% - {morekeywords={ABS,ATAN,AUTOMATIC,AUTO,ATAND,BEGIN,BINARY,BIN,BIT,% - BUILTIN,BY,CALL,CHARACTER,CHAR,CHECK,COLUMN,COL,COMPLEX,CPLX,% - COPY,COS,COSD,COSH,DATA,DATE,DECIMAL,DEC,DECLARE,DCL,DO,EDIT,% - ELSE,END,ENDFILE,ENDPAGE,ENTRY,EXP,EXTERNAL,EXT,FINISH,FIXED,% - FIXEDOVERFLOW,FOFL,FLOAT,FORMAT,GET,GO,GOTO,IF,IMAG,INDEX,% - INITIAL,INIT,INTERNAL,INT,LABEL,LENGTH,LIKE,LINE,LIST,LOG,LOG2,% - LOG10,MAIN,MAX,MIN,MOD,NOCHECK,NOFIXEDOVERFLOW,NOFOFL,NOOVERFLOW,% - NOOFL,NOSIZE,NOUNDERFLOW,NOUFL,NOZERODIVIDE,NOZDIV,ON,OPTIONS,% - OVERFLOW,OFL,PAGE,PICTURE,PROCEDURE,PROC,PUT,READ,REPEAT,RETURN,% - RETURNS,ROUND,SIN,SIND,SINH,SIZE,SKIP,SQRT,STATIC,STOP,STRING,% - SUBSTR,SUM,SYSIN,SYSPRINT,TAN,TAND,TANH,THEN,TO,UNDERFLOW,UFL,% - VARYING,WHILE,WRITE,ZERODIVIDE,ZDIV},% - sensitive=f,% - morecomment=[s]{/*}{*/},% - morestring=[d]'% - }[keywords,comments,strings]% -%% -%% Promela definition (c) 2004 William Thimbleby -%% -\lst@definelanguage{Promela} - {morekeywords={active,assert,atomic,bit,bool,break,byte,chan,d_step,% - Dproctype,do,else,empty,enabled,fi,full,goto,hidden,if,init,int,% - len,mtype,nempty,never,nfull,od,of,pcvalue,printf,priority,% - proctype,provided,run,short,skip,timeout,typedef,unless,unsigned,% - xr,xs,true,false,inline,eval},% - moredirectives={define,ifdef,ifndef,if,if,else,endif,undef,include},% - moredelim=*[directive]\#,% - morecomment=[s]{/*}{*/},% - morestring=[b]"% - }[keywords,comments,strings,directives]% -%% -%% Reduce definition (c) 2002 Geraint Paul Bevan -%% -\lst@definelanguage{Reduce}% - {morekeywords={% -%% reserved identifiers -abs,acos,acosh,acot,acoth,acsc,acsch,% -adjprec,algebraic,algint,allbranch,allfac,and,% -antisymmetric,append,arglength,array,asec,asech,% -asin,asinh,atan,atan2,atanh,begin,bfspace,bye,% -card_no,ceiling,clear,clearrules,coeff,coeffn,% -cofactor,combineexpt,combinelogs,comment,comp,% -complex,conj,cons,cont,cos,cosh,cot,coth,cramer,% -cref,csc,csch,decompose,define,defn,deg,demo,den,% -depend,det,df,difference,dilog,display,div,do,e,% -echo,ed,editdef,ei,end,eps,eq,equal,erf,errcont,% -evallhseqp,eval_mode,even,evenp,exp,expandlogs,% -expr,expt,ezgcd,factor,factorial,factorize,fexpr,% -first,fix,fixp,floor,for,forall,foreach,fort,% -fort_width,freeof,fullroots,g,gcd,geq,go,goto,% -greaterp,high_pow,hypot,i,if,ifactor,impart,in,% -index,infinity,infix,input,int,integer,interpol,% -intstr,k,korder,lambda,lcm,lcof,length,leq,lessp,% -let,lhs,linear,linelength,lisp,list,listargp,% -listargs,ln,load,load_package,log,log10,logb,% -low_pow,lterm,macro,mainvar,mass,mat,match,% -mateigen,matrix,max,mcd,member,memq,min,minus,mkid,% -modular,msg,mshell,multiplicities,nat,neq,nero,% -nextprime,nil,nodepend,noncom,nonzero,nosplit,% -nospur,nullspace,num,numberp,odd,off,on,operator,% -or,order,ordp,out,output,part,pause,period,pf,pi,% -plus,precedence,precise,precision,pret,pri,primep,% -print_precision,procedure,product,quit,quotient,% -random,random_new_seed,rank,rat,ratarg,rational,% -rationalize,ratpri,real,rederr,reduct,remainder,% -remfac,remind,repart,repeat,rest,resultant,retry,% -return,reverse,revpri,rhs,rlisp88,% -root_multiplicity,round,roundall,roundbf,rounded,% -saveas,savestructr,scalar,sec,sech,second,set,% -setmod,setq,share,showrules,showtime,shut,sign,sin,% -sinh,smacro,solve,solvesingular,spur,sqrt,structr,% -sub,sum,symbolic,symmetric,t,tan,tanh,third,time,% -times,tp,tra,trace,trfac,trigform,trint,until,% -varname,vecdim,vector,weight,when,where,while,% -write,ws,wtlevel,% -%% identifiers with spaces -%% for all,for each,go to,such that,% -},% - sensitive=false,% - morecomment=[l]\%,% - morecomment=[s]{COMMENT}{;},% - morecomment=[s]{COMMENT}{$},% - morestring="% - }[keywords,comments,strings]% -%% -%% RSL definition (c) 2004 Brian Christensen -%% -\lst@definelanguage{RSL}% - {morekeywords={Bool,Char,devt_relation,Int,Nat,Real,Text,Unit,abs,any,% - as,axiom,card,case,channel,chaos,class,do,dom,elems,else,elsif,end,% - extend,false,for,hd,hide,if,in,inds,initialise,int,len,let,local,% - object,of,out,post,pre,read,real,rng,scheme,skip,stop,swap,% - test_case,theory,then,tl,true,type,until,use,value,variable,while,% - with,write},% -literate=% -{<}{$<$}{1}% -{>}{$>$}{1}% -{[}{$[$}{1}%% -{]}{$]$}{1}%% -{^}{{\mbox{$\widehat{\;}$}}}{1}%% -{'}{{\raisebox{1ex}[1ex][0ex]{\protect\scriptsize$\prime$}}}{1}%% -{||}{{\mbox{$\parallel$}}}{2}%% -{|-}{$\vdash$}{1}%% -{|=|}{{\mbox{$\lceil\!\rceil\!\!\!\!\!\!\;\lfloor\!\rfloor$}}}{1}%% -{**}{$\uparrow$}{1}% -{/\\}{$\wedge$}{1}%% -{inter}{$\cap$}{1}%% -{-\\}{$\lambda$}{1}%% -{->}{$\rightarrow$}{1}%% -{-m->}{{\mbox{$\rightarrow \hspace{-2.5\lst@width} _{m}\;$}}}{1}% -{-~m->}{{\mbox{$\stackrel{\sim}{\mbox{$\rightarrow\hspace{-2.5\lst@width} _{m}\;$}}$}}}{1}% -{-~->}{{\mbox{$\stackrel{\sim}{\rightarrow}$}}}{1}%% -{-set}{\bf{-set}}{4}%% -{-list}{{$^{\ast}$}}{1}%% -{-inflist}{$^\omega$}{1}% -{-infset}{{\mbox{{\bf -infset}}}}{7}% -{\#}{$\circ$}{1}% -{:-}{{\raisebox{.4ex}{\tiny $\bullet$}}}{1}%% -{=}{$=$}{1}%% -{==}{$==$}{2}%% -{=>}{$\Rightarrow$}{1}%% -{\ is\protect\^^M}{{$\;\equiv$}}{2}% -{\ is\ }{{$\equiv$}}{3}%% -{\ isin\protect\^^M}{$\;\in$}{2}%% -{~}{$\sim$}{1}%% -{~=}{$\neq$}{1}%% -{~isin}{$\notin$}{1}%% -{+>}{$\mapsto$}{1}%% -{++}{}{1}% -{|^|}{{\mbox{$\lceil\!\rceil$}}}{1}%% -{\\/}{$\vee$}{1}%% -{exists}{$\exists$}{1}%% -{union}{$\cup$}{1}%% -{>=}{$\geq$}{1}%% -{><}{$\times$}{1}%% -{>>}{$\supset$}{1}% -{>>=}{$\supseteq$}{1}%% -{<=}{$\leq$}{1}%% -{<<}{$\subset$}{1}% -{<.}{$\langle$}{1}%% -{<<=}{$\subseteq$}{1}%% -{<->}{$\leftrightarrow$}{1}%% -{[=}{$\sqsubseteq$}{1}%% -{\{=}{$\preceq$}{1}%% -{\ all\protect\^^M}{$\forall$}{2}%% -{\ all\ }{$\forall$}{3}%% -{!!}{$\dagger$}{1}%% -{always}{$\Box$}{1}%% -{.>}{$\rangle$}{1}%% -{`alpha}{$\alpha$}{1}% -{`beta}{$\beta$}{1}% -{`gamma}{$\gamma$}{1}% -{`delta}{$\delta$}{1}% -{`epsilon}{$\epsilon$}{1}% -{`zeta}{$\zeta$}{1}% -{`eta}{$\eta$}{1}% -{`theta}{$\theta$}{1}% -{`iota}{$\iota$}{1}% -{`kappa}{$\kappa$}{1}% -{`mu}{$\mu$}{1}% -{`nu}{$\nu$}{1}% -{`xi}{$\xi$}{1}% -{`pi}{$\pi$}{1}% -{`rho}{$\rho$}{1}% -{`sigma}{$\sigma$}{1}% -{`tau}{$\tau$}{1}% -{`upsilon}{$\upsilon$}{1}% -{`phi}{$\phi$}{1}% -{`chi}{$\chi$}{1}% -{`psi}{$\psi$}{1}% -{`omega}{$\omega$}{1}% -{`Gamma}{$\Gamma$}{1}% -{`Delta}{$\Delta$}{1}% -{`Theta}{$\Theta$}{1}% -{`Lambda}{$\Lambda$}{1}% -{`Xi}{$\Xi$}{1}% -{`Pi}{$\Pi$}{1}% -{`Sigma}{$\Sigma$}{1}% -{`Upsilon}{$\Upsilon$}{1}% -{`Phi}{$\Phi$}{1}% -{`Psi}{$\Psi$}{1}% -{`Omega}{$\Omega$}{1},% - sensitive=true,% - morecomment=[l]{--},% - morecomment=[s]{/*}{*/}% - }[keywords,comments]% -\lst@definelanguage[IBM]{Simula}[DEC]{Simula}{}% -\lst@definelanguage[DEC]{Simula}[67]{Simula}% - {morekeywords={and,eq,eqv,ge,gt,hidden,imp,le,long,lt,ne,not,% - options,or,protected,short}% - }% -\lst@definelanguage[CII]{Simula}[67]{Simula}% - {morekeywords={and,equiv,exit,impl,not,or,stop}}% -\lst@definelanguage[67]{Simula}% - {morekeywords={activate,after,array,at,before,begin,boolean,% - character,class,comment,delay,detach,do,else,end,external,false,% - for,go,goto,if,in,inner,inspect,integer,is,label,name,new,none,% - notext,otherwise,prior,procedure,qua,reactivate,real,ref,resume,% - simset,simulation,step,switch,text,then,this,to,true,until,value,% - virtual,when,while},% - sensitive=f,% - keywordcommentsemicolon={end}{else,end,otherwise,when}{comment},% - morestring=[d]",% - morestring=[d]'% - }[keywords,keywordcomments,strings]% -\lst@definelanguage{S}[]{R}{} -\lst@definelanguage[PLUS]{S}[]{R}{} -\lst@definelanguage{R}% - {keywords={abbreviate,abline,abs,acos,acosh,action,add1,add,% - aggregate,alias,Alias,alist,all,anova,any,aov,aperm,append,apply,% - approx,approxfun,apropos,Arg,args,array,arrows,as,asin,asinh,% - atan,atan2,atanh,attach,attr,attributes,autoload,autoloader,ave,% - axis,backsolve,barplot,basename,besselI,besselJ,besselK,besselY,% - beta,binomial,body,box,boxplot,break,browser,bug,builtins,bxp,by,% - c,C,call,Call,case,cat,category,cbind,ceiling,character,char,% - charmatch,check,chol,chol2inv,choose,chull,class,close,cm,codes,% - coef,coefficients,co,col,colnames,colors,colours,commandArgs,% - comment,complete,complex,conflicts,Conj,contents,contour,% - contrasts,contr,control,helmert,contrib,convolve,cooks,coords,% - distance,coplot,cor,cos,cosh,count,fields,cov,covratio,wt,CRAN,% - create,crossprod,cummax,cummin,cumprod,cumsum,curve,cut,cycle,D,% - data,dataentry,date,dbeta,dbinom,dcauchy,dchisq,de,debug,% - debugger,Defunct,default,delay,delete,deltat,demo,de,density,% - deparse,dependencies,Deprecated,deriv,description,detach,% - dev2bitmap,dev,cur,deviance,off,prev,,dexp,df,dfbetas,dffits,% - dgamma,dgeom,dget,dhyper,diag,diff,digamma,dim,dimnames,dir,% - dirname,dlnorm,dlogis,dnbinom,dnchisq,dnorm,do,dotplot,double,% - download,dpois,dput,drop,drop1,dsignrank,dt,dummy,dump,dunif,% - duplicated,dweibull,dwilcox,dyn,edit,eff,effects,eigen,else,% - emacs,end,environment,env,erase,eval,equal,evalq,example,exists,% - exit,exp,expand,expression,External,extract,extractAIC,factor,% - fail,family,fft,file,filled,find,fitted,fivenum,fix,floor,for,% - For,formals,format,formatC,formula,Fortran,forwardsolve,frame,% - frequency,ftable,ftable2table,function,gamma,Gamma,gammaCody,% - gaussian,gc,gcinfo,gctorture,get,getenv,geterrmessage,getOption,% - getwd,gl,glm,globalenv,gnome,GNOME,graphics,gray,grep,grey,grid,% - gsub,hasTsp,hat,heat,help,hist,home,hsv,httpclient,I,identify,if,% - ifelse,Im,image,\%in\%,index,influence,measures,inherits,install,% - installed,integer,interaction,interactive,Internal,intersect,% - inverse,invisible,IQR,is,jitter,kappa,kronecker,labels,lapply,% - layout,lbeta,lchoose,lcm,legend,length,levels,lgamma,library,% - licence,license,lines,list,lm,load,local,locator,log,log10,log1p,% - log2,logical,loglin,lower,lowess,ls,lsfit,lsf,ls,machine,Machine,% - mad,mahalanobis,make,link,margin,match,Math,matlines,mat,matplot,% - matpoints,matrix,max,mean,median,memory,menu,merge,methods,min,% - missing,Mod,mode,model,response,mosaicplot,mtext,mvfft,na,nan,% - names,omit,nargs,nchar,ncol,NCOL,new,next,NextMethod,nextn,% - nlevels,nlm,noquote,NotYetImplemented,NotYetUsed,nrow,NROW,null,% - numeric,\%o\%,objects,offset,old,on,Ops,optim,optimise,optimize,% - options,or,order,ordered,outer,package,packages,page,pairlist,% - pairs,palette,panel,par,parent,parse,paste,path,pbeta,pbinom,% - pcauchy,pchisq,pentagamma,persp,pexp,pf,pgamma,pgeom,phyper,pico,% - pictex,piechart,Platform,plnorm,plogis,plot,pmatch,pmax,pmin,% - pnbinom,pnchisq,pnorm,points,poisson,poly,polygon,polyroot,pos,% - postscript,power,ppoints,ppois,predict,preplot,pretty,Primitive,% - print,prmatrix,proc,prod,profile,proj,prompt,prop,provide,% - psignrank,ps,pt,ptukey,punif,pweibull,pwilcox,q,qbeta,qbinom,% - qcauchy,qchisq,qexp,qf,qgamma,qgeom,qhyper,qlnorm,qlogis,qnbinom,% - qnchisq,qnorm,qpois,qqline,qqnorm,qqplot,qr,Q,qty,qy,qsignrank,% - qt,qtukey,quantile,quasi,quit,qunif,quote,qweibull,qwilcox,% - rainbow,range,rank,rbeta,rbind,rbinom,rcauchy,rchisq,Re,read,csv,% - csv2,fwf,readline,socket,real,Recall,rect,reformulate,regexpr,% - relevel,remove,rep,repeat,replace,replications,report,require,% - resid,residuals,restart,return,rev,rexp,rf,rgamma,rgb,rgeom,R,% - rhyper,rle,rlnorm,rlogis,rm,rnbinom,RNGkind,rnorm,round,row,% - rownames,rowsum,rpois,rsignrank,rstandard,rstudent,rt,rug,runif,% - rweibull,rwilcox,sample,sapply,save,scale,scan,scan,screen,sd,se,% - search,searchpaths,segments,seq,sequence,setdiff,setequal,set,% - setwd,show,sign,signif,sin,single,sinh,sink,solve,sort,source,% - spline,splinefun,split,sqrt,stars,start,stat,stem,step,stop,% - storage,strstrheight,stripplot,strsplit,structure,strwidth,sub,% - subset,substitute,substr,substring,sum,summary,sunflowerplot,svd,% - sweep,switch,symbol,symbols,symnum,sys,status,system,t,table,% - tabulate,tan,tanh,tapply,tempfile,terms,terrain,tetragamma,text,% - time,title,topo,trace,traceback,transform,tri,trigamma,trunc,try,% - ts,tsp,typeof,unclass,undebug,undoc,union,unique,uniroot,unix,% - unlink,unlist,unname,untrace,update,upper,url,UseMethod,var,% - variable,vector,Version,vi,warning,warnings,weighted,weights,% - which,while,window,write,\%x\%,x11,X11,xedit,xemacs,xinch,xor,% - xpdrows,xy,xyinch,yinch,zapsmall,zip},% - otherkeywords={!,!=,~,$,*,\&,\%/\%,\%*\%,\%\%,<-,<<-,_,/},% - alsoother={._$},% - sensitive,% - morecomment=[l]\#,% - morestring=[d]",% - morestring=[d]'% 2001 Robert Denham - }% -\lst@definelanguage{SAS}% - {procnamekeys={proc},% - morekeywords={DATA,AND,OR,NOT,EQ,GT,LT,GE,LE,NE,INFILE,INPUT,DO,BY,% - TO,SIN,COS,OUTPUT,END,PLOT,RUN,LIBNAME,VAR,TITLE,FIRSTOBS,OBS,% - DELIMITER,DLM,EOF,ABS,DIM,HBOUND,LBOUND,MAX,MIN,MOD,SIGN,SQRT,% - CEIL,FLOOR,FUZZ,INT,ROUND,TRUNC,DIGAMMA,ERF,ERFC,EXP,GAMMA,% - LGAMMA,LOG,LOG2,LOG10,ARCOS,ARSIN,ATAN,COSH,SINH,TANH,TAN,% - POISSON,PROBBETA,PROBBNML,PROBCHI,PROBF,PROBGAM,PROBHYPR,% - PROBNEGB,PROBNORM,PROBT,BETAINV,CINV,FINV,GAMINV,PROBIT,TINV,CSS,% - CV,KURTOSIS,MEAN,NMISS,RANGE,SKEWNESS,STD,STDERR,SUM,USS,NORMAL,% - RANBIN,RANCAU,RANEXP,RANGAM,RANNOR,RANPOI,RANTBL,RANTRI,RANUNI,% - UNIFORM,IF,THEN,ELSE,WHILE,UNTIL,DROP,KEEP,LABEL,DEFAULT,ARRAY,% - MERGE,CARDS,CARDS4,PUT,SET,UPDATE,ABORT,DELETE,DISPLAY,LIST,% - LOSTCARD,MISSING,STOP,WHERE,ARRAY,DROP,KEEP,WINDOW,LENGTH,RENAME,% - RETAIN,MEANS,UNIVARIATE,SUMMARY,TABULATE,CORR,FREQ,FOOTNOTE,NOTE,% - SHOW},% - otherkeywords={!,!=,~,$,*,\&,_,/,<,>=,=<,>},% - morestring=[d]'% - }[keywords,comments,strings,procnames]% -\lst@definelanguage[AlLaTeX]{TeX}[LaTeX]{TeX}% - {moretexcs={AtBeginDocument,AtBeginDvi,AtEndDocument,AtEndOfClass,% - AtEndOfPackage,ClassError,ClassInfo,ClassWarning,% - ClassWarningNoLine,CurrentOption,DeclareErrorFont,% - DeclareFixedFont,DeclareFontEncoding,DeclareFontEncodingDefaults,% - DeclareFontFamily,DeclareFontShape,DeclareFontSubstitution,% - DeclareMathAccent,DeclareMathAlphabet,DeclareMathAlphabet,% - DeclareMathDelimiter,DeclareMathRadical,DeclareMathSizes,% - DeclareMathSymbol,DeclareMathVersion,DeclareOldFontCommand,% - DeclareOption,DeclarePreloadSizes,DeclareRobustCommand,% - DeclareSizeFunction,DeclareSymbolFont,DeclareSymbolFontAlphabet,% - DeclareTextAccent,DeclareTextAccentDefault,DeclareTextCommand,% - DeclareTextCommandDefault,DeclareTextComposite,% - DeclareTextCompositeCommand,DeclareTextFontCommand,% - DeclareTextSymbol,DeclareTextSymbolDefault,ExecuteOptions,% - GenericError,GenericInfo,GenericWarning,IfFileExists,% - InputIfFileExists,LoadClass,LoadClassWithOptions,MessageBreak,% - OptionNotUsed,PackageError,PackageInfo,PackageWarning,% - PackageWarningNoLine,PassOptionsToClass,PassOptionsToPackage,% - ProcessOptionsProvidesClass,ProvidesFile,ProvidesFile,% - ProvidesPackage,ProvideTextCommand,RequirePackage,% - RequirePackageWithOptions,SetMathAlphabet,SetSymbolFont,% - TextSymbolUnavailable,UseTextAccent,UseTextSymbol},% - morekeywords={array,center,displaymath,document,enumerate,eqnarray,% - equation,flushleft,flushright,itemize,list,lrbox,math,minipage,% - picture,sloppypar,tabbing,tabular,trivlist,verbatim}% - }% -\lst@definelanguage[LaTeX]{TeX}[common]{TeX}% - {moretexcs={a,AA,aa,addcontentsline,addpenalty,addtocontents,% - addtocounter,addtolength,addtoversion,addvspace,alph,Alph,and,% - arabic,array,arraycolsep,arrayrulewidth,arraystretch,author,% - baselinestretch,begin,bezier,bfseries,bibcite,bibdata,bibitem,% - bibliography,bibliographystyle,bibstyle,bigskip,boldmath,% - botfigrule,bottomfraction,Box,caption,center,CheckCommand,circle,% - citation,cite,cleardoublepage,clearpage,cline,columnsep,% - columnseprule,columnwidth,contentsline,dashbox,date,dblfigrule,% - dblfloatpagefraction,dblfloatsep,dbltextfloatsep,dbltopfraction,% - defaultscriptratio,defaultscriptscriptratio,depth,Diamond,% - displaymath,document,documentclass,documentstyle,doublerulesep,% - em,emph,endarray,endcenter,enddisplaymath,enddocument,% - endenumerate,endeqnarray,endequation,endflushleft,endflushright,% - enditemize,endlist,endlrbox,endmath,endminipage,endpicture,% - endsloppypar,endtabbing,endtabular,endtrivlist,endverbatim,% - enlargethispage,ensuremath,enumerate,eqnarray,equation,% - evensidemargin,extracolsep,fbox,fboxrule,fboxsep,filecontents,% - fill,floatpagefraction,floatsep,flushbottom,flushleft,flushright,% - fnsymbol,fontencoding,fontfamily,fontseries,fontshape,fontsize,% - fontsubfuzz,footnotemark,footnotesep,footnotetext,footskip,frac,% - frame,framebox,fussy,glossary,headheight,headsep,height,hline,% - hspace,I,include,includeonly,index,inputlineno,intextsep,% - itemindent,itemize,itemsep,iterate,itshape,Join,kill,label,% - labelsep,labelwidth,LaTeX,LaTeXe,leadsto,lefteqn,leftmargin,% - leftmargini,leftmarginii,leftmarginiii,leftmarginiv,leftmarginv,% - leftmarginvi,leftmark,lhd,lim,linebreak,linespread,linethickness,% - linewidth,list,listfiles,listfiles,listparindent,lrbox,% - makeatletter,makeatother,makebox,makeglossary,makeindex,% - makelabel,MakeLowercase,MakeUppercase,marginpar,marginparpush,% - marginparsep,marginparwidth,markboth,markright,math,mathbf,% - mathellipsis,mathgroup,mathit,mathrm,mathsf,mathsterling,mathtt,% - mathunderscore,mathversion,mbox,mdseries,mho,minipage,% - multicolumn,multiput,NeedsTeXFormat,newcommand,newcounter,% - newenvironment,newfont,newhelp,newlabel,newlength,newline,% - newmathalphabet,newpage,newsavebox,newtheorem,nobreakspace,% - nobreakspace,nocite,nocorr,nocorrlist,nofiles,nolinebreak,% - nonumber,nopagebreak,normalcolor,normalfont,normalmarginpar,% - numberline,obeycr,oddsidemargin,oldstylenums,onecolumn,oval,% - pagebreak,pagenumbering,pageref,pagestyle,paperheight,paperwidth,% - paragraphmark,parbox,parsep,partopsep,picture,poptabs,pounds,% - protect,pushtabs,put,qbezier,qbeziermax,r,raggedleft,raisebox,% - ref,refstepcounter,renewcommand,renewenvironment,restorecr,% - reversemarginpar,rhd,rightmargin,rightmark,rmfamily,roman,Roman,% - rootbox,rule,samepage,sbox,scshape,secdef,section,sectionmark,% - selectfont,setcounter,settodepth,settoheight,settowidth,sffamily,% - shortstack,showoutput,showoverfull,sloppy,sloppypar,slshape,% - smallskip,sqsubset,sqsupset,SS,stackrel,stepcounter,stop,stretch,% - subparagraphmark,subsectionmark,subsubsectionmark,sum,% - suppressfloats,symbol,tabbing,tabbingsep,tabcolsep,tabular,% - tabularnewline,textasciicircum,textasciitilde,textbackslash,% - textbar,textbf,textbraceleft,textbraceright,textbullet,% - textcircled,textcompwordmark,textdagger,textdaggerdbl,textdollar,% - textellipsis,textemdash,textendash,textexclamdown,textfloatsep,% - textfraction,textgreater,textheight,textit,textless,textmd,% - textnormal,textparagraph,textperiodcentered,textquestiondown,% - textquotedblleft,textquotedblright,textquoteleft,textquoteright,% - textregistered,textrm,textsc,textsection,textsf,textsl,% - textsterling,textsuperscript,texttrademark,texttt,textunderscore,% - textup,textvisiblespace,textwidth,thanks,thefootnote,thempfn,% - thempfn,thempfootnote,thepage,thepage,thicklines,thinlines,% - thispagestyle,title,today,topfigrule,topfraction,topmargin,% - topsep,totalheight,tracingfonts,trivlist,ttfamily,twocolumn,% - typein,typeout,unboldmath,unitlength,unlhd,unrhd,upshape,usebox,% - usecounter,usefont,usepackage,value,vector,verb,verbatim,vline,% - vspace,width,% - normalsize,small,footnotesize,scriptsize,tiny,large,Large,LARGE,% - huge,Huge}% - }% -\lst@definelanguage[plain]{TeX}[common]{TeX}% - {moretexcs={advancepageno,beginsection,bf,bffam,bye,cal,cleartabs,% - columns,dosupereject,endinsert,eqalign,eqalignno,fiverm,fivebf,% - fivei,fivesy,folio,footline,hang,headline,it,itemitem,itfam,% - leqalignno,magnification,makefootline,makeheadline,midinsert,mit,% - mscount,nopagenumbers,normalbottom,of,oldstyle,pagebody,% - pagecontents,pageinsert,pageno,plainoutput,preloaded,proclaim,rm,% - settabs,sevenbf,seveni,sevensy,sevenrm,sl,slfam,supereject,% - tabalign,tabs,tabsdone,tabsyet,tenbf,tenex,teni,tenit,tenrm,% - tensl,tensy,tentt,textindent,topglue,topins,topinsert,tt,ttfam,% - ttraggedright,vfootnote}% - }% -\lst@definelanguage[common]{TeX}[primitive]{TeX} - {moretexcs={active,acute,ae,AE,aleph,allocationnumber,allowbreak,% - alpha,amalg,angle,approx,arccos,arcsin,arctan,arg,arrowvert,% - Arrowvert,ast,asymp,b,backslash,bar,beta,bgroup,big,Big,bigbreak,% - bigcap,bigcirc,bigcup,bigg,Bigg,biggl,Biggl,biggm,Biggm,biggr,% - Biggr,bigl,Bigl,bigm,Bigm,bigodot,bigoplus,bigotimes,bigr,Bigr,% - bigskip,bigskipamount,bigsqcup,bigtriangledown,bigtriangleup,% - biguplus,bigvee,bigwedge,bmod,bordermatrix,bot,bowtie,brace,% - braceld,bracelu,bracerd,braceru,bracevert,brack,break,breve,% - buildrel,bullet,c,cap,cases,cdot,cdotp,cdots,centering,% - centerline,check,chi,choose,circ,clubsuit,colon,cong,coprod,% - copyright,cos,cosh,cot,coth,csc,cup,d,dag,dagger,dashv,ddag,% - ddagger,ddot,ddots,deg,delta,Delta,det,diamond,diamondsuit,dim,% - displaylines,div,do,dospecials,dot,doteq,dotfill,dots,downarrow,% - Downarrow,downbracefill,egroup,eject,ell,empty,emptyset,endgraf,% - endline,enskip,enspace,epsilon,equiv,eta,exists,exp,filbreak,% - flat,fmtname,fmtversion,footins,footnote,footnoterule,forall,% - frenchspacing,frown,gamma,Gamma,gcd,ge,geq,gets,gg,goodbreak,% - grave,H,hat,hbar,heartsuit,hglue,hideskip,hidewidth,hom,% - hookleftarrow,hookrightarrow,hphantom,hrulefill,i,ialign,iff,Im,% - imath,in,inf,infty,int,interdisplaylinepenalty,% - interfootnotelinepenalty,intop,iota,item,j,jmath,joinrel,jot,% - kappa,ker,l,L,lambda,Lambda,land,langle,lbrace,lbrack,lceil,% - ldotp,ldots,le,leavevmode,leftarrow,Leftarrow,leftarrowfill,% - leftharpoondown,leftharpoonup,leftline,leftrightarrow,% - Leftrightarrow,leq,lfloor,lg,lgroup,lhook,lim,liminf,limsup,line,% - ll,llap,lmoustache,ln,lnot,log,longleftarrow,Longleftarrow,% - longleftrightarrow,Longleftrightarrow,longmapsto,longrightarrow,% - Longrightarrow,loop,lor,lq,magstep,magstep,magstephalf,mapsto,% - mapstochar,mathhexbox,mathpalette,mathstrut,matrix,max,maxdimen,% - medbreak,medskip,medskipamount,mid,min,models,mp,mu,multispan,% - nabla,narrower,natural,ne,nearrow,neg,negthinspace,neq,newbox,% - newcount,newdimen,newfam,newif,newinsert,newlanguage,newmuskip,% - newread,newskip,newtoks,newwrite,next,ni,nobreak,nointerlineskip,% - nonfrenchspacing,normalbaselines,normalbaselineskip,% - normallineskip,normallineskiplimit,not,notin,nu,null,nwarrow,o,O,% - oalign,obeylines,obeyspaces,odot,oe,OE,offinterlineskip,oint,% - ointop,omega,Omega,ominus,ooalign,openup,oplus,oslash,otimes,% - overbrace,overleftarrow,overrightarrow,owns,P,parallel,partial,% - perp,phantom,phi,Phi,pi,Pi,pm,pmatrix,pmod,Pr,prec,preceq,prime,% - prod,propto,psi,Psi,qquad,quad,raggedbottom,raggedright,rangle,% - rbrace,rbrack,rceil,Re,relbar,Relbar,removelastskip,repeat,% - rfloor,rgroup,rho,rhook,rightarrow,Rightarrow,rightarrowfill,% - rightharpoondown,rightharpoonup,rightleftharpoons,rightline,rlap,% - rmoustache,root,rq,S,sb,searrow,sec,setminus,sharp,showhyphens,% - sigma,Sigma,sim,simeq,sin,sinh,skew,slash,smallbreak,smallint,% - smallskip,smallskipamount,smash,smile,sp,space,spadesuit,sqcap,% - sqcup,sqrt,sqsubseteq,sqsupseteq,ss,star,strut,strutbox,subset,% - subseteq,succ,succeq,sum,sup,supset,supseteq,surd,swarrow,t,tan,% - tanh,tau,TeX,theta,Theta,thinspace,tilde,times,to,top,tracingall,% - triangle,triangleleft,triangleright,u,underbar,underbrace,% - uparrow,Uparrow,upbracefill,updownarrow,Updownarrow,uplus,% - upsilon,Upsilon,v,varepsilon,varphi,varpi,varrho,varsigma,% - vartheta,vdash,vdots,vec,vee,vert,Vert,vglue,vphantom,wedge,% - widehat,widetilde,wlog,wp,wr,xi,Xi,zeta}% - }% -\lst@definelanguage[primitive]{TeX}% - {moretexcs={above,abovedisplayshortskip,abovedisplayskip,aftergroup,% - abovewithdelims,accent,adjdemerits,advance,afterassignment,atop,% - atopwithdelims,badness,baselineskip,batchmode,begingroup,% - belowdisplayshortskip,belowdisplayskip,binoppenalty,botmark,box,% - boxmaxdepth,brokenpenalty,catcode,char,chardef,cleaders,closein,% - closeout,clubpenalty,copy,count,countdef,cr,crcr,csname,day,% - deadcycles,def,defaulthyphenchar,defaultskewchar,delcode,% - delimiter,delimiterfactor,delimitershortfall,dimen,dimendef,% - discretionary,displayindent,displaylimits,displaystyle,% - displaywidowpenalty,displaywidth,divide,doublehyphendemerits,dp,% - edef,else,emergencystretch,end,endcsname,endgroup,endinput,% - endlinechar,eqno,errhelp,errmessage,errorcontextlines,% - errorstopmode,escapechar,everycr,everydisplay,everyhbox,everyjob,% - everymath,everypar,everyvbox,exhyphenpenalty,expandafter,fam,fi,% - finalhypendemerits,firstmark,floatingpenalty,font,fontdimen,% - fontname,futurelet,gdef,global,globaldefs,halign,hangafter,% - hangindent,hbadness,hbox,hfil,hfill,hfilneg,hfuzz,hoffset,% - holdinginserts,hrule,hsize,hskip,hss,ht,hyphenation,hyphenchar,% - hyphenpenalty,if,ifcase,ifcat,ifdim,ifeof,iffalse,ifhbox,ifhmode,% - ifinner,ifmmode,ifnum,ifodd,iftrue,ifvbox,ifvmode,ifvoid,ifx,% - ignorespaces,immediate,indent,input,insert,insertpenalties,% - interlinepenalty,jobname,kern,language,lastbox,lastkern,% - lastpenalty,lastskip,lccode,leaders,left,lefthyphenmin,leftskip,% - leqno,let,limits,linepenalty,lineskip,lineskiplimits,long,% - looseness,lower,lowercase,mag,mark,mathaccent,mathbin,mathchar,% - mathchardef,mathchoice,mathclose,mathcode,mathinner,mathop,% - mathopen,mathord,mathpunct,mathrel,mathsurround,maxdeadcycles,% - maxdepth,meaning,medmuskip,message,mkern,month,moveleft,% - moveright,mskip,multiply,muskip,muskipdef,newlinechar,noalign,% - noboundary,noexpand,noindent,nolimits,nonscript,nonstopmode,% - nulldelimiterspace,nullfont,number,omit,openin,openout,or,outer,% - output,outputpenalty,over,overfullrule,overline,overwithdelims,% - pagedepth,pagefilllstretch,pagefillstretch,pagefilstretch,% - pagegoal,pageshrink,pagestretch,pagetotal,par,parfillskip,% - parindent,parshape,parskip,patterns,pausing,penalty,% - postdisplaypenalty,predisplaypenalty,predisplaysize,pretolerance,% - prevdepth,prevgraf,radical,raise,read,relax,relpenalty,right,% - righthyphenmin,rightskip,romannumeral,scriptfont,% - scriptscriptfont,scriptscriptstyle,scriptspace,scriptstyle,% - scrollmode,setbox,setlanguage,sfcode,shipout,show,showbox,% - showboxbreadth,showboxdepth,showlists,showthe,skewchar,skip,% - skipdef,spacefactor,spaceskip,span,special,splitbotmark,% - splitfirstmark,splitmaxdepth,splittopskip,string,tabskip,% - textfont,textstyle,the,thickmuskip,thinmuskip,time,toks,toksdef,% - tolerance,topmark,topskip,tracingcommands,tracinglostchars,% - tracingmacros,tracingonline,tracingoutput,tracingpages,% - tracingparagraphs,tracingrestores,tracingstats,uccode,uchyph,% - underline,unhbox,unhcopy,unkern,unpenalty,unskip,unvbox,unvcopy,% - uppercase,vadjust,valign,vbadness,vbox,vcenter,vfil,vfill,% - vfilneg,vfuzz,voffset,vrule,vsize,vskip,vsplit,vss,vtop,wd,% - widowpenalty,write,xdef,xleaders,xspaceskip,year},% - sensitive,% - alsoother={0123456789$_},% - morecomment=[l]\%% - }[keywords,tex,comments]% -%% -%% Verilog definition (c) 2003 Cameron H. G. Wright <c.h.g.wright@ieee.org> -%% Based on the IEEE 1364-2001 Verilog HDL standard -%% Ref: S. Palnitkar, "Verilog HDL: A Guide to Digital Design and Synthesis," -%% Prentice Hall, 2003. ISBN: 0-13-044911-3 -%% -\lst@definelanguage{Verilog}% - {morekeywords={% reserved keywords - always,and,assign,automatic,begin,buf,bufif0,bufif1,case,casex,% - casez,cell,cmos,config,deassign,default,defparam,design,disable,% - edge,else,end,endcase,endconfig,endfunction,endgenerate,% - endmodule,endprimitive,endspecify,endtable,endtask,event,for,% - force,forever,fork,function,generate,genvar,highz0,highz1,if,% - ifnone,incdir,include,initial,inout,input,instance,integer,join,% - large,liblist,library,localparam,macromodule,medium,module,nand,% - negedge,nmos,nor,noshowcancelled,not,notif0,notif1,or,output,% - parameter,pmos,posedge,primitive,pull0,pull1,pulldown,pullup,% - pulsestyle_onevent,pulsestyle_ondetect,rcmos,real,realtime,reg,% - release,repeat,rnmos,rpmos,rtran,rtranif0,rtranif1,scalared,% - showcancelled,signed,small,specify,specparam,strong0,strong1,% - supply0,supply1,table,task,time,tran,tranif0,tranif1,tri,tri0,% - tri1,triand,trior,trireg,unsigned,use,vectored,wait,wand,weak0,% - weak1,while,wire,wor,xnor,xor},% - morekeywords=[2]{% system tasks and functions - $bitstoreal,$countdrivers,$display,$fclose,$fdisplay,$fmonitor,% - $fopen,$fstrobe,$fwrite,$finish,$getpattern,$history,$incsave,% - $input,$itor,$key,$list,$log,$monitor,$monitoroff,$monitoron,% - $nokey},% - morekeywords=[3]{% compiler directives - `accelerate,`autoexpand_vectornets,`celldefine,`default_nettype,% - `define,`else,`elsif,`endcelldefine,`endif,`endprotect,% - `endprotected,`expand_vectornets,`ifdef,`ifndef,`include,% - `no_accelerate,`noexpand_vectornets,`noremove_gatenames,% - `nounconnected_drive,`protect,`protected,`remove_gatenames,% - `remove_netnames,`resetall,`timescale,`unconnected_drive},% - alsoletter=\`,% - sensitive,% - morecomment=[s]{/*}{*/},% - morecomment=[l]//,% nonstandard - morestring=[b]"% - }[keywords,comments,strings]% -\endinput -%% -%% End of file `lstlang3.sty'. diff --git a/Documentation/PhysicsTools/lstmisc.sty b/Documentation/PhysicsTools/lstmisc.sty deleted file mode 100644 index 00ac4d165cf..00000000000 --- a/Documentation/PhysicsTools/lstmisc.sty +++ /dev/null @@ -1,2086 +0,0 @@ -%% -%% This is file `lstmisc.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% listings-1.3.dtx (with options: `misc,0.21') -%% -%% Please read the software license in listings-1.3.dtx or listings-1.3.pdf. -%% -%% (w)(c) 1996--2004 Carsten Heinz and/or any other author listed -%% elsewhere in this file. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -\def\filedate{2004/09/07} -\def\fileversion{1.3} -\ProvidesFile{lstmisc.sty} - [\filedate\space\fileversion\space(Carsten Heinz)] -\lst@CheckVersion\fileversion - {\typeout{^^J% - ***^^J% - *** This file requires `listings.sty' version \fileversion.^^J% - *** You have a serious problem, so I'm exiting ...^^J% - ***^^J}% - \batchmode \@@end} -\lst@BeginAspect{writefile} -\newtoks\lst@WFtoken % global -\lst@AddToHook{InitVarsBOL}{\global\lst@WFtoken{}} -\newwrite\lst@WF -\global\let\lst@WFifopen\iffalse % init -\gdef\lst@WFWriteToFile{% - \begingroup - \let\lst@UM\@empty - \expandafter\edef\expandafter\lst@temp\expandafter{\the\lst@WFtoken}% - \immediate\write\lst@WF{\lst@temp}% - \endgroup - \global\lst@WFtoken{}} -\gdef\lst@WFAppend#1{% - \global\lst@WFtoken=\expandafter{\the\lst@WFtoken#1}} -\gdef\lst@BeginWriteFile{\lst@WFBegin\@gobble} -\gdef\lst@BeginAlsoWriteFile{\lst@WFBegin\lst@OutputBox} -\begingroup \catcode`\^^I=11 -\gdef\lst@WFBegin#1#2{% - \begingroup - \let\lst@OutputBox#1% - \def\lst@Append##1{% - \advance\lst@length\@ne - \expandafter\lst@token\expandafter{\the\lst@token##1}% - \ifx ##1\lst@outputspace \else - \lst@WFAppend##1% - \fi}% - \lst@lAddTo\lst@PreGotoTabStop{\lst@WFAppend{^^I}}% - \lst@lAddTo\lst@ProcessSpace{\lst@WFAppend{ }}% - \let\lst@DeInit\lst@WFDeInit - \let\lst@MProcessListing\lst@WFMProcessListing - \lst@WFifopen\else - \immediate\openout\lst@WF=#2\relax - \global\let\lst@WFifopen\iftrue - \@gobbletwo\fi\fi - \fi} -\endgroup -\gdef\lst@EndWriteFile{% - \immediate\closeout\lst@WF \endgroup - \global\let\lst@WFifopen\iffalse} -\global\let\lst@WFMProcessListing\lst@MProcessListing -\global\let\lst@WFDeInit\lst@DeInit -\lst@AddToAtTop\lst@WFMProcessListing{\lst@WFWriteToFile} -\lst@AddToAtTop\lst@WFDeInit{% - \ifnum\lst@length=\z@\else \lst@WFWriteToFile \fi} -\lst@EndAspect -\lst@BeginAspect{strings} -\gdef\lst@stringtypes{d,b,m,bd,db} -\gdef\lst@StringKey#1#2{% - \lst@Delim\lst@stringstyle #2\relax - {String}\lst@stringtypes #1% - {\lst@BeginString\lst@EndString}% - \@@end\@empty{}} -\lst@Key{string}\relax{\lst@StringKey\@empty{#1}} -\lst@Key{morestring}\relax{\lst@StringKey\relax{#1}} -\lst@Key{deletestring}\relax{\lst@StringKey\@nil{#1}} -\lst@Key{stringstyle}{}{\def\lst@stringstyle{#1}} -\lst@AddToHook{EmptyStyle}{\let\lst@stringstyle\@empty} -\lst@Key{showstringspaces}t[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces} -\gdef\lst@BeginString{% - \lst@DelimOpen - \lst@ifexstrings\else - {\lst@ifshowstringspaces - \lst@keepspacestrue - \let\lst@outputspace\lst@visiblespace - \fi}} -\lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexstrings\iffalse} -\gdef\lst@EndString{\lst@DelimClose\lst@ifexstrings\else} -\gdef\lst@StringDM@d#1#2\@empty#3#4#5{% - \lst@CArg #2\relax\lst@DefDelimBE{}{}{}#3{#1}{#5}#4} -\gdef\lst@StringDM@b#1#2\@empty#3#4#5{% - \let\lst@ifbstring\iftrue - \lst@CArg #2\relax\lst@DefDelimBE - {\lst@ifletter \lst@Output \lst@letterfalse \fi}% - {\ifx\lst@lastother\lstum@backslash - \expandafter\@gobblethree - \fi}{}#3{#1}{#5}#4} -\global\let\lst@ifbstring\iffalse % init -\lst@AddToHook{SelectCharTable}{% - \lst@ifbstring - \lst@CArgX \\\\\relax \lst@CDefX{}% - {\lst@ProcessOther\lstum@backslash - \lst@ProcessOther\lstum@backslash - \let\lst@lastother\relax}% - {}% - \fi} -\global\let\lst@StringDM@bd\lst@StringDM@b -\global\let\lst@StringDM@db\lst@StringDM@bd -\gdef\lst@StringDM@a#1#2\@empty#3#4#5{% - \lst@CArg #2\relax\lst@DefDelimBE{}{}% - {\let\lst@next\@gobblethree - \lst@ifletter\else - \ifx\lst@lastother)\else \ifx\lst@lastother]\else - \let\lst@next\@empty - \fi \fi \fi - \lst@next}#3{#1}{#5}#4} -\gdef\lst@StringDM@m#1#2\@empty#3#4#5{% - \lst@CArg #2\relax\lst@DefDelimBE{}{}% - {\let\lst@next\@gobblethree - \lst@ifletter\else - \lst@IfLastOtherOneOf{)].0123456789\lstum@rbrace'}% - {}% - {\let\lst@next\@empty}% - \fi - \lst@next}#3{#1}{#5}#4} -\lst@SaveOutputDef{"7D}\lstum@rbrace -\lst@EndAspect -\lst@BeginAspect{mf} -\lst@AddTo\lst@stringtypes{,mf} -\lst@NewMode\lst@mfinputmode -\gdef\lst@String@mf#1\@empty#2#3#4{% - \lst@CArg #1\relax\lst@DefDelimB - {}{}{\lst@ifletter \expandafter\@gobblethree \fi}% - \lst@BeginStringMFinput\lst@mfinputmode{#4\lst@Lmodetrue}% - \@ifundefined{lsts@semicolon}% - {\lst@DefSaveDef{`\;}\lsts@semicolon{% ; and space end the filename - \ifnum\lst@mode=\lst@mfinputmode - \lst@XPrintToken - \expandafter\lst@LeaveMode - \fi - \lsts@semicolon}% - \lst@DefSaveDef{`\ }\lsts@space{% - \ifnum\lst@mode=\lst@mfinputmode - \lst@XPrintToken - \expandafter\lst@LeaveMode - \fi - \lsts@space}% - }{}} -\gdef\lst@BeginStringMFinput#1#2#3\@empty{% - \lst@TrackNewLines \lst@XPrintToken - \begingroup - \lst@mode\lst@nomode - #3\lst@XPrintToken - \endgroup - \lst@ResetToken - \lst@EnterMode{#1}{\def\lst@currstyle#2}% - \lst@ifshowstringspaces - \lst@keepspacestrue - \let\lst@outputspace\lst@visiblespace - \fi} -\lst@EndAspect -\lst@BeginAspect{comments} -\lst@NewMode\lst@commentmode -\gdef\lst@commenttypes{l,f,s,n} -\gdef\lst@CommentKey#1#2{% - \lst@Delim\lst@commentstyle #2\relax - {Comment}\lst@commenttypes #1% - {\lst@BeginComment\lst@EndComment}% - i\@empty{\lst@BeginInvisible\lst@EndInvisible}} -\lst@Key{comment}\relax{\lst@CommentKey\@empty{#1}} -\lst@Key{morecomment}\relax{\lst@CommentKey\relax{#1}} -\lst@Key{deletecomment}\relax{\lst@CommentKey\@nil{#1}} -\lst@Key{commentstyle}{}{\def\lst@commentstyle{#1}} -\lst@AddToHook{EmptyStyle}{\let\lst@commentstyle\itshape} -\gdef\lst@BeginComment{% - \lst@DelimOpen - \lst@ifexcomments\else - \lsthk@AfterBeginComment} -\gdef\lst@EndComment{\lst@DelimClose\lst@ifexcomments\else} -\lst@AddToHook{AfterBeginComment}{} -\lst@AddToHookExe{ExcludeDelims}{\let\lst@ifexcomments\iffalse} -\gdef\lst@BeginInvisible#1#2#3\@empty{% - \lst@TrackNewLines \lst@XPrintToken - \lst@BeginDropOutput{#1}} -\gdef\lst@EndInvisible#1\@empty{\lst@EndDropOutput} -\gdef\lst@CommentDM@l#1#2\@empty#3#4#5{% - \lst@CArg #2\relax\lst@DefDelimB{}{}{}#3{#1}{#5\lst@Lmodetrue}} -\gdef\lst@CommentDM@f#1{% - \@ifnextchar[{\lst@Comment@@f{#1}}% - {\lst@Comment@@f{#1}[0]}} -\gdef\lst@Comment@@f#1[#2]#3\@empty#4#5#6{% - \lst@CArg #3\relax\lst@DefDelimB{}{}% - {\lst@CalcColumn - \ifnum #2=\@tempcnta\else - \expandafter\@gobblethree - \fi}% - #4{#1}{#6\lst@Lmodetrue}} -\gdef\lst@CommentDM@s#1#2#3\@empty#4#5#6{% - \lst@CArg #2\relax\lst@DefDelimB{}{}{}#4{#1}{#6}% - \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}} -\gdef\lst@CommentDM@n#1#2#3\@empty#4#5#6{% - \ifx\@empty#3\@empty\else - \def\@tempa{#2}\def\@tempb{#3}% - \ifx\@tempa\@tempb - \PackageError{Listings}{Identical delimiters}% - {These delimiters make no sense with nested comments.}% - \else - \lst@CArg #2\relax\lst@DefDelimB - {}% - {\ifnum\lst@mode=#1\relax \expandafter\@gobble \fi}% - {}#4{#1}{#6}% - \lst@CArg #3\relax\lst@DefDelimE{}{}{}#5{#1}% - \fi - \fi} -\lst@EndAspect -\lst@BeginAspect{pod} -\lst@Key{printpod}{false}[t]{\lstKV@SetIf{#1}\lst@ifprintpod} -\lst@Key{podcomment}{false}[t]{\lstKV@SetIf{#1}\lst@ifpodcomment} -\lst@AddToHookExe{SetLanguage}{\let\lst@ifpodcomment\iffalse} -\lst@NewMode\lst@PODmode -\lst@AddToHook{SelectCharTable} - {\lst@ifpodcomment - \lst@CArgX =\relax\lst@DefDelimB{}{}% - {\ifnum\@tempcnta=\z@ - \lst@ifprintpod\else - \def\lst@bnext{\lst@BeginDropOutput\lst@PODmode}% - \expandafter\expandafter\expandafter\@gobblethree - \fi - \else - \expandafter\@gobblethree - \fi}% - \lst@BeginComment\lst@PODmode{{\lst@commentstyle}}% - \lst@CArgX =cut\^^M\relax\lst@DefDelimE - {\lst@CalcColumn}% - {\ifnum\@tempcnta=\z@\else - \expandafter\@gobblethree - \fi}% - {}% - \lst@EndComment\lst@PODmode - \fi} -\lst@EndAspect -\lst@BeginAspect[keywords]{html} -\gdef\lst@tagtypes{s} -\gdef\lst@TagKey#1#2{% - \lst@Delim\lst@tagstyle #2\relax - {Tag}\lst@tagtypes #1% - {\lst@BeginTag\lst@EndTag}% - \@@end\@empty{}} -\lst@Key{tag}\relax{\lst@TagKey\@empty{#1}} -\lst@Key{tagstyle}{}{\def\lst@tagstyle{#1}} -\lst@AddToHook{EmptyStyle}{\let\lst@tagstyle\@empty} -\gdef\lst@BeginTag{% - \lst@DelimOpen - \lst@ifextags\else - {\let\lst@ifkeywords\iftrue - \lst@ifmarkfirstintag \lst@firstintagtrue \fi}} -\lst@AddToHookExe{ExcludeDelims}{\let\lst@ifextags\iffalse} -\gdef\lst@EndTag{\lst@DelimClose\lst@ifextags\else} -\lst@Key{usekeywordsintag}t[t]{\lstKV@SetIf{#1}\lst@ifusekeysintag} -\lst@Key{markfirstintag}f[t]{\lstKV@SetIf{#1}\lst@ifmarkfirstintag} -\gdef\lst@firstintagtrue{\global\let\lst@iffirstintag\iftrue} -\global\let\lst@iffirstintag\iffalse -\lst@AddToHook{PostOutput}{\lst@tagresetfirst} -\lst@AddToHook{Output} - {\gdef\lst@tagresetfirst{\global\let\lst@iffirstintag\iffalse}} -\lst@AddToHook{OutputOther}{\gdef\lst@tagresetfirst{}} -\lst@AddToHook{Output} - {\ifnum\lst@mode=\lst@tagmode - \lst@iffirstintag \let\lst@thestyle\lst@gkeywords@sty \fi - \lst@ifusekeysintag\else \let\lst@thestyle\lst@gkeywords@sty\fi - \fi} -\lst@NewMode\lst@tagmode -\lst@AddToHook{Init}{\global\let\lst@ifnotag\iftrue} -\lst@AddToHook{SelectCharTable}{\let\lst@ifkeywords\lst@ifnotag} -\gdef\lst@Tag@s#1#2\@empty#3#4#5{% - \global\let\lst@ifnotag\iffalse - \lst@CArg #1\relax\lst@DefDelimB {}{}% - {\ifnum\lst@mode=\lst@tagmode \expandafter\@gobblethree \fi}% - #3\lst@tagmode{#5}% - \lst@CArg #2\relax\lst@DefDelimE {}{}{}#4\lst@tagmode}% -\gdef\lst@BeginCDATA#1\@empty{% - \lst@TrackNewLines \lst@PrintToken - \lst@EnterMode\lst@GPmode{}\let\lst@ifmode\iffalse - \lst@mode\lst@tagmode #1\lst@mode\lst@GPmode\relax\lst@modetrue} -\lst@EndAspect -\lst@BeginAspect{escape} -\lst@Key{texcl}{false}[t]{\lstKV@SetIf{#1}\lst@iftexcl} -\lst@AddToHook{TextStyle}{\let\lst@iftexcl\iffalse} -\lst@AddToHook{EOL} - {\ifnum\lst@mode=\lst@TeXLmode - \expandafter\lst@escapeend - \expandafter\lst@LeaveAllModes - \expandafter\lst@ReenterModes - \fi} -\lst@AddToHook{AfterBeginComment} - {\lst@iftexcl \lst@ifLmode \lst@ifdropinput\else - \lst@PrintToken - \lst@LeaveMode \lst@InterruptModes - \lst@EnterMode{\lst@TeXLmode}{\lst@modetrue\lst@commentstyle}% - \expandafter\expandafter\expandafter\lst@escapebegin - \fi \fi \fi} -\lst@NewMode\lst@TeXLmode -\gdef\lst@ActiveCDefX#1{\lst@ActiveCDefX@#1} -\gdef\lst@ActiveCDefX@#1#2#3{ - \catcode`#1\active\lccode`\~=`#1% - \lowercase{\lst@CDefIt~}{#2}{#3}{}} -\gdef\lst@Escape#1#2#3#4{% - \lst@CArgX #1\relax\lst@CDefX - {}% - {\lst@ifdropinput\else - \lst@TrackNewLines\lst@OutputLostSpace \lst@XPrintToken - \lst@InterruptModes - \lst@EnterMode{\lst@TeXmode}{\lst@modetrue}% - \ifx\^^M#2% - \lst@CArg #2\relax\lst@ActiveCDefX - {}% - {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes}% - {\lst@MProcessListing}% - \else - \lst@CArg #2\relax\lst@ActiveCDefX - {}% - {\lst@escapeend #4\lst@LeaveAllModes\lst@ReenterModes - \lst@whitespacefalse}% - {}% - \fi - #3\lst@escapebegin - \fi}% - {}} -\lst@NewMode\lst@TeXmode -\lst@Key{escapebegin}{}{\def\lst@escapebegin{#1}} -\lst@Key{escapeend}{}{\def\lst@escapeend{#1}} -\lst@Key{escapechar}{} - {\ifx\@empty#1\@empty - \let\lst@DefEsc\relax - \else - \def\lst@DefEsc{\lst@Escape{#1}{#1}{}{}}% - \fi} -\lst@AddToHook{TextStyle}{\let\lst@DefEsc\@empty} -\lst@AddToHook{SelectCharTable}{\lst@DefEsc} -\lst@Key{escapeinside}{}{\lstKV@TwoArg{#1}% - {\let\lst@DefEsc\@empty - \ifx\@empty##1@empty\else \ifx\@empty##2\@empty\else - \def\lst@DefEsc{\lst@Escape{##1}{##2}{}{}}% - \fi\fi}} -\lst@Key{mathescape}{false}[t]{\lstKV@SetIf{#1}\lst@ifmathescape} -\lst@AddToHook{SelectCharTable} - {\lst@ifmathescape \lst@Escape{\$}{\$}% - {\setbox\@tempboxa=\hbox\bgroup$}% - {$\egroup \lst@CalcLostSpaceAndOutput}\fi} -\lst@EndAspect -\lst@BeginAspect{keywords} -\global\let\lst@ifsensitive\iftrue % init -\global\let\lst@ifsensitivedefed\iffalse % init % \global -\lst@ifsavemem\else -\gdef\lst@KeywordTest#1#2#3{% - \begingroup \let\lst@UM\@empty - \global\expandafter\let\expandafter\@gtempa - \csname\@lst#1@\the\lst@token\endcsname - \endgroup - \ifx\@gtempa\relax\else - \let\lst@thestyle\@gtempa - \fi} -\gdef\lst@KEYWORDTEST{% - \uppercase\expandafter{\expandafter - \lst@KEYWORDTEST@\the\lst@token}\relax} -\gdef\lst@KEYWORDTEST@#1\relax#2#3#4{% - \begingroup \let\lst@UM\@empty - \global\expandafter\let\expandafter\@gtempa - \csname\@lst#2@#1\endcsname - \endgroup - \ifx\@gtempa\relax\else - \let\lst@thestyle\@gtempa - \fi} -\gdef\lst@WorkingTest#1#2#3{% - \begingroup \let\lst@UM\@empty - \global\expandafter\let\expandafter\@gtempa - \csname\@lst#1@\the\lst@token\endcsname - \endgroup - \@gtempa} -\gdef\lst@WORKINGTEST{% - \uppercase\expandafter{\expandafter - \lst@WORKINGTEST@\the\lst@token}\relax} -\gdef\lst@WORKINGTEST@#1\relax#2#3#4{% - \begingroup \let\lst@UM\@empty - \global\expandafter\let\expandafter\@gtempa - \csname\@lst#2@#1\endcsname - \endgroup - \@gtempa} -\gdef\lst@DefineKeywords#1#2#3{% - \lst@ifsensitive - \def\lst@next{\lst@for#2}% - \else - \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}% - \fi - \lst@next\do - {\expandafter\ifx\csname\@lst#1@##1\endcsname\relax - \global\expandafter\let\csname\@lst#1@##1\endcsname#3% - \fi}} -\gdef\lst@UndefineKeywords#1#2#3{% - \lst@ifsensitivedefed - \def\lst@next{\lst@for#2}% - \else - \def\lst@next{\uppercase\expandafter{\expandafter\lst@for#2}}% - \fi - \lst@next\do - {\expandafter\ifx\csname\@lst#1@##1\endcsname#3% - \global\expandafter\let\csname\@lst#1@##1\endcsname\relax - \fi}} -\fi -\lst@ifsavemem -\gdef\lst@IfOneOutOf#1\relax#2{% - \def\lst@temp##1,#1,##2##3\relax{% - \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}% - \def\lst@next{\lst@IfOneOutOf@#1\relax}% - \expandafter\lst@next#2\relax\relax} -\gdef\lst@IfOneOutOf@#1\relax#2#3{% - \ifx#2\relax - \expandafter\@secondoftwo - \else - \expandafter\lst@temp\expandafter,#2,#1,\@empty\relax - \expandafter\lst@next - \fi} -\ifx\iffalse\else\fi -\gdef\lst@IOOOfirst#1\relax#2#3{\fi#2} -\gdef\lst@IFONEOUTOF#1\relax#2{% - \uppercase{\def\lst@temp##1,#1},##2##3\relax{% - \ifx\@empty##2\else \expandafter\lst@IOOOfirst \fi}% - \def\lst@next{\lst@IFONEOUTOF@#1\relax}% - \expandafter\lst@next#2\relax} -\gdef\lst@IFONEOUTOF@#1\relax#2#3{% - \ifx#2\relax - \expandafter\@secondoftwo - \else - \uppercase - {\expandafter\lst@temp\expandafter,#2,#1,\@empty\relax}% - \expandafter\lst@next - \fi} -\gdef\lst@KWTest{% - \begingroup \let\lst@UM\@empty - \expandafter\xdef\expandafter\@gtempa\expandafter{\the\lst@token}% - \endgroup - \expandafter\lst@IfOneOutOf\@gtempa\relax} -\gdef\lst@KeywordTest#1#2#3{\lst@KWTest #2{\let\lst@thestyle#3}{}} -\global\let\lst@KEYWORDTEST\lst@KeywordTest -\gdef\lst@WorkingTest#1#2#3{\lst@KWTest #2#3{}} -\global\let\lst@WORKINGTEST\lst@WorkingTest -\fi -\lst@Key{sensitive}\relax[t]{\lstKV@SetIf{#1}\lst@ifsensitive} -\lst@AddToHook{SetLanguage}{\let\lst@ifsensitive\iftrue} -\lst@AddToHook{Init} - {\lst@ifsensitive\else - \let\lst@KeywordTest\lst@KEYWORDTEST - \let\lst@WorkingTest\lst@WORKINGTEST - \let\lst@IfOneOutOf\lst@IFONEOUTOF - \fi} -\gdef\lst@MakeMacroUppercase#1{% - \ifx\@undefined#1\else \uppercase\expandafter - {\expandafter\def\expandafter#1\expandafter{#1}}% - \fi} -\gdef\lst@InstallTest#1#2#3#4#5#6#7#8{% - \lst@AddToHook{TrackKeywords}{\lst@TrackKeywords{#1}#2#4#6#7#8}% - \lst@AddToHook{PostTrackKeywords}{\lst@PostTrackKeywords#2#3#4#5}} -\lst@AddToHook{Init}{\lsthk@TrackKeywords\lsthk@PostTrackKeywords} -\lst@AddToHook{TrackKeywords} - {\global\let\lst@DoDefineKeywords\@empty}% init -\lst@AddToHook{PostTrackKeywords} - {\lst@DoDefineKeywords - \global\let\lst@DoDefineKeywords\@empty}% init -\lst@AddToHook{Output}{\lst@ifkeywords \lsthk@DetectKeywords \fi} -\lst@AddToHook{DetectKeywords}{}% init -\lst@AddToHook{ModeTrue}{\let\lst@ifkeywords\iffalse} -\lst@AddToHookExe{Init}{\let\lst@ifkeywords\iftrue} -\gdef\lst@InstallTestNow#1#2#3#4#5{% - \@ifundefined{\string#2#1}% - {\global\@namedef{\string#2#1}{}% - \edef\@tempa{% - \noexpand\lst@AddToHook{\ifx#5dDetectKeywords\else Output\fi}% - {\ifx #4w\noexpand\lst@WorkingTest - \else\noexpand\lst@KeywordTest \fi - {#1}\noexpand#2\noexpand#3}}% - \lst@ifsavemem - \@tempa - \else - \@ifundefined{\@lst#1@if@ins}% - {\@tempa \global\@namedef{\@lst#1@if@ins}{}}% - {}% - \fi} - {}} -\gdef\lst@TrackKeywords#1#2#3#4#5#6{% - \lst@false - \def\lst@arg{{#1}#4}% - \expandafter\expandafter\expandafter\lst@TK@ - \expandafter\lst@arg#2\relax\relax - \lst@ifsavemem\else - \def\lst@arg{{#1}#4#2}% - \expandafter\expandafter\expandafter\lst@TK@@ - \expandafter\lst@arg#3\relax\relax - \fi - \lst@if \lst@InstallTestNow{#1}#2#4#5#6\fi} -\gdef\lst@TK@#1#2#3#4{% - \ifx\lst@ifsensitive\lst@ifsensitivedefed - \ifx#3#4\else - \lst@true - \lst@ifsavemem\else - \lst@UndefineKeywords{#1}#4#2% - \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}% - \fi - \fi - \else - \ifx#3\relax\else - \lst@true - \lst@ifsavemem\else - \lst@UndefineKeywords{#1}#4#2% - \lst@AddTo\lst@DoDefineKeywords{\lst@DefineKeywords{#1}#3#2}% - \fi - \fi - \fi - \lst@ifsavemem \ifx#3\relax\else - \lst@ifsensitive\else \lst@MakeMacroUppercase#3\fi - \fi \fi - \ifx#3\relax - \expandafter\@gobblethree - \fi - \lst@TK@{#1}#2} -\gdef\lst@TK@@#1#2#3#4#5{% - \ifx#4\relax - \expandafter\@gobblefour - \else - \lst@IfSubstring{#4#5}#3{}{\lst@UndefineKeywords{#1}#5#2}% - \fi - \lst@TK@@{#1}#2#3} -\lst@AddToHook{InitVars} - {\global\let\lst@ifsensitivedefed\lst@ifsensitive} -\gdef\lst@PostTrackKeywords#1#2#3#4{% - \lst@ifsavemem\else - \global\let#3#1% - \global\let#4#2% - \fi} -\lst@Key{classoffset}\z@{\def\lst@classoffset{#1}} -\gdef\lst@InstallFamily#1#2#3#4#5{% - \lst@Key{#2}\relax{\lst@UseFamily{#2}##1\relax\lst@MakeKeywords}% - \lst@Key{more#2}\relax - {\lst@UseFamily{#2}##1\relax\lst@MakeMoreKeywords}% - \lst@Key{delete#2}\relax - {\lst@UseFamily{#2}##1\relax\lst@DeleteKeywords}% - \ifx\@empty#3\@empty\else - \lst@Key{#3}{#4}{\lstKV@OptArg[\@ne]{##1}% - {\@tempcnta\lst@classoffset \advance\@tempcnta####1\relax - \@namedef{lst@#3\ifnum\@tempcnta=\@ne\else \the\@tempcnta - \fi}{####2}}}% - \fi - \expandafter\lst@InstallFamily@ - \csname\@lst @#2@data\expandafter\endcsname - \csname\@lst @#5\endcsname {#1}{#2}{#3}} -\gdef\lst@InstallFamily@#1#2#3#4#5#6#7#8{% - \gdef#1{{#3}{#4}{#5}#2#7}% - \long\def\lst@temp##1{#6}% - \ifx\lst@temp\@gobble - \lst@AddTo#1{s#8}% - \else - \lst@AddTo#1{w#8}% - \global\@namedef{lst@g#4@wp}##1{#6}% - \fi} -\gdef\lst@UseFamily#1{% - \def\lst@family{#1}% - \@ifnextchar[\lst@UseFamily@{\lst@UseFamily@[\@ne]}} -\gdef\lst@UseFamily@[#1]{% - \@tempcnta\lst@classoffset \advance\@tempcnta#1\relax - \lst@ProvideFamily\lst@family - \lst@UseFamily@a - {\lst@family\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}} -\gdef\lst@UseFamily@a#1{% - \expandafter\lst@UseFamily@b - \csname\@lst @#1@list\expandafter\endcsname - \csname\@lst @#1\expandafter\endcsname - \csname\@lst @#1@also\expandafter\endcsname - \csname\@lst @g#1\endcsname} -\gdef\lst@UseFamily@b#1#2#3#4#5\relax#6{\lstKV@XOptArg[]{#5}#6#1#2#3#4} -\gdef\lst@ProvideFamily#1{% - \@ifundefined{lstfam@#1\ifnum\@tempcnta=\@ne\else\the\@tempcnta\fi}% - {\global\@namedef{lstfam@#1\ifnum\@tempcnta=\@ne\else - \the\@tempcnta\fi}{}% - \expandafter\expandafter\expandafter\lst@ProvideFamily@ - \csname\@lst @#1@data\endcsname - {\ifnum\@tempcnta=\@ne\else \the\@tempcnta \fi}}% - {}}% -\gdef\lst@ProvideFamily@#1#2#3#4#5#6#7#8{% - \expandafter\xdef\csname\@lst @g#2#8@sty\endcsname - {\if #6w% - \expandafter\noexpand\csname\@lst @g#2@wp\endcsname{#8}% - \else - \expandafter\noexpand\csname\@lst @#3#8\endcsname - \fi}% - \ifx\@empty#3\@empty\else - \edef\lst@temp{\noexpand\lst@AddToHook{Init}{% - \noexpand\lst@ProvideStyle\expandafter\noexpand - \csname\@lst @#3#8\endcsname\noexpand#4}}% - \lst@temp - \fi - \expandafter\lst@ProvideFamily@@ - \csname\@lst @#2#8@list\expandafter\endcsname - \csname\@lst @#2#8\expandafter\endcsname - \csname\@lst @#2#8@also\expandafter\endcsname - \csname\@lst @g#2#8@list\expandafter\endcsname - \csname\@lst @g#2#8\expandafter\endcsname - \csname\@lst @g#2#8@sty\expandafter\endcsname - {#1}#5#6#7} -\gdef\lst@ProvideFamily@@#1#2#3#4#5#6#7#8{% - \gdef#1{#2#5}\global\let#2\@empty \global\let#3\@empty % init - \gdef#4{#2#5}\global\let#5\@empty % init - \if #8l\relax - \lst@AddToHook{SetLanguage}{\def#1{#2#5}\let#2\@empty}% - \fi - \lst@InstallTest{#7}#1#2#4#5#6} -\gdef\lst@InstallKeywords#1#2#3#4#5{% - \lst@Key{#2}\relax - {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeKeywords}% - \lst@Key{more#2}\relax - {\lst@UseFamily{#2}[\@ne]##1\relax\lst@MakeMoreKeywords}% - \lst@Key{delete#2}\relax - {\lst@UseFamily{#2}[\@ne]##1\relax\lst@DeleteKeywords}% - \ifx\@empty#3\@empty\else - \lst@Key{#3}{#4}{\@namedef{lst@#3}{##1}}% - \fi - \expandafter\lst@InstallFamily@ - \csname\@lst @#2@data\expandafter\endcsname - \csname\@lst @#5\endcsname {#1}{#2}{#3}} -\gdef\lst@ProvideStyle#1#2{% - \ifx#1\@undefined \let#1#2% - \else\ifx#1\relax \let#1#2\fi\fi} -\gdef\lst@BuildClassList#1#2,{% - \ifx\relax#2\@empty\else - \ifx\@empty#2\@empty\else - \lst@lExtend#1{\csname\@lst @#2\expandafter\endcsname - \csname\@lst @g#2\endcsname}% - \fi - \expandafter\lst@BuildClassList\expandafter#1 - \fi} -\gdef\lst@DeleteClassesIn#1#2{% - \expandafter\lst@DCI@\expandafter#1#2\relax\relax} -\gdef\lst@DCI@#1#2#3{% - \ifx#2\relax - \expandafter\@gobbletwo - \else - \def\lst@temp##1#2#3##2{% - \lst@lAddTo#1{##1}% - \ifx ##2\relax\else - \expandafter\lst@temp - \fi ##2}% - \let\@tempa#1\let#1\@empty - \expandafter\lst@temp\@tempa#2#3\relax - \fi - \lst@DCI@#1} -\gdef\lst@MakeKeywords[#1]#2#3#4#5#6{% - \def#3{#4#6}\let#4\@empty \let#5\@empty - \lst@MakeMoreKeywords[#1]{#2}#3#4#5#6} -\gdef\lst@MakeMoreKeywords[#1]#2#3#4#5#6{% - \lst@BuildClassList#3#1,\relax,% - \lst@DefOther\lst@temp{,#2}\lst@lExtend#4\lst@temp} -\gdef\lst@DeleteKeywords[#1]#2#3#4#5#6{% - \lst@MakeKeywords[#1]{#2}\@tempa\@tempb#5#6% - \lst@DeleteClassesIn#3\@tempa - \lst@DeleteKeysIn#4\@tempb} -\lst@InstallFamily k{keywords}{keywordstyle}\bfseries{keywordstyle}{}ld -\gdef\lst@DefKeywordstyle#1#2\@nil@{% - \@namedef{lst@keywordstyle\ifnum\@tempcnta=\@ne\else\the\@tempcnta - \fi}{#1#2}}% -\lst@Key{keywordstyle}{\bfseries}{\lstKV@OptArg[\@ne]{#1}% - {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax - \@ifstar{\lst@DefKeywordstyle{\uppercase\expandafter{% - \expandafter\lst@token - \expandafter{\the\lst@token}}}}% - {\lst@DefKeywordstyle{}}##2\@nil@}} -\lst@Key{ndkeywords}\relax - {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeKeywords}% -\lst@Key{morendkeywords}\relax - {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@MakeMoreKeywords}% -\lst@Key{deletendkeywords}\relax - {\lst@UseFamily{keywords}[\tw@]#1\relax\lst@DeleteKeywords}% -\lst@Key{ndkeywordstyle}\relax{\@namedef{lst@keywordstyle2}{#1}}% -\lst@Key{keywordsprefix}\relax{\lst@DefActive\lst@keywordsprefix{#1}} -\global\let\lst@keywordsprefix\@empty -\lst@AddToHook{SelectCharTable} - {\ifx\lst@keywordsprefix\@empty\else - \expandafter\lst@CArg\lst@keywordsprefix\relax - \lst@CDef{}% - {\lst@ifletter\else - \global\let\lst@prefixkeyword\@empty - \fi}% - {}% - \fi} -\lst@AddToHook{Init}{\global\let\lst@prefixkeyword\relax} -\lst@AddToHook{Output} - {\ifx\lst@prefixkeyword\@empty - \let\lst@thestyle\lst@gkeywords@sty - \global\let\lst@prefixkeyword\relax - \fi}% -\lst@Key{otherkeywords}{}{% - \let\lst@otherkeywords\@empty - \lst@for{#1}\do{% - \lst@MakeActive{##1}% - \lst@lExtend\lst@otherkeywords{% - \expandafter\lst@CArg\lst@temp\relax\lst@CDef - {}\lst@PrintOtherKeyword\@empty}}} -\lst@AddToHook{SelectCharTable}{\lst@otherkeywords} -\gdef\lst@PrintOtherKeyword#1\@empty{% - \lst@XPrintToken - \begingroup - \lst@modetrue \lsthk@TextStyle - \let\lst@ProcessDigit\lst@ProcessLetter - \let\lst@ProcessOther\lst@ProcessLetter - \lst@lettertrue - #1% - \lst@SaveToken - \endgroup -\lst@RestoreToken -\global\let\lst@savedcurrstyle\lst@currstyle -\let\lst@currstyle\lst@gkeywords@sty - \lst@Output -\let\lst@currstyle\lst@savedcurrstyle} -\lst@EndAspect -\lst@BeginAspect[keywords]{emph} -\lst@InstallFamily e{emph}{emphstyle}{}{emphstyle}{}od -\lst@EndAspect -\lst@BeginAspect[keywords]{tex} -\lst@InstallFamily {cs}{texcs}{texcsstyle}\relax{keywordstyle} - {\ifx\lst@lastother\lstum@backslash - \expandafter\let\expandafter\lst@thestyle - \csname lst@texcsstyle#1\endcsname - \fi} - ld -\lst@Key{texcsstyle}\relax - {\@ifstar{\lst@true\lst@DefTexcsstyle}% - {\lst@false\lst@DefTexcsstyle}#1\@nil@} -\gdef\lst@DefTexcsstyle#1\@nil@{% - \let\lst@iftexcsincludebs\lst@if - \lstKV@OptArg[\@ne]{#1}% - {\@tempcnta\lst@classoffset \advance\@tempcnta##1\relax - \@namedef{lst@texcsstyle\ifnum\@tempcnta=\@ne\else - \the\@tempcnta \fi}{##2}}}% -\global\let\lst@iftexcsincludebs\iffalse -\let\lst@iftexcsincludebs\iffalse -\lst@AddToHook{SelectCharTable} -{\lst@iftexcsincludebs \ifx\@empty\lst@texcs\else - \lst@DefSaveDef{`\\}\lsts@texcsbs - {\ifx\lst@lastother\lstum@backslash - \lsts@texcsbs\lst@XPrintToken - \else - \lst@Merge\lsts@texcsbs - \fi}% - \fi \fi} -\lst@EndAspect -\lst@BeginAspect[keywords]{directives} -\lst@NewMode\lst@CDmode -\lst@AddToHook{EOL}{\ifnum\lst@mode=\lst@CDmode \lst@LeaveMode \fi} -\lst@InstallKeywords{d}{directives}{directivestyle}\relax{keywordstyle} - {\ifnum\lst@mode=\lst@CDmode - \let\lst@thestyle\lst@directivestyle - \fi} - ld -\global\let\lst@directives\@empty % init -\lst@AddTo\lst@delimtypes{,directive} -\gdef\lst@Delim@directive#1\@empty#2#3#4{% - \lst@CArg #1\relax\lst@DefDelimB - {\lst@CalcColumn}% - {}% - {\ifnum\@tempcnta=\z@ - \def\lst@bnext{#2\lst@CDmode{#4\lst@Lmodetrue}% - \let\lst@currstyle\lst@directivestyle}% - \fi - \@gobblethree}% - #2\lst@CDmode{#4\lst@Lmodetrue}} -\lst@AddTo\lst@stringtypes{,directive} -\gdef\lst@StringDM@directive#1#2#3\@empty{% - \lst@CArg #2\relax\lst@CDef - {}% - {\let\lst@bnext\lst@CArgEmpty - \ifnum\lst@mode=\lst@CDmode - \def\lst@bnext{\lst@BeginString{#1}}% - \fi - \lst@bnext}% - \@empty - \lst@CArg #3\relax\lst@CDef - {}% - {\let\lst@enext\lst@CArgEmpty - \ifnum #1=\lst@mode - \let\lst@bnext\lst@EndString - \fi - \lst@bnext}% - \@empty} -\lst@EndAspect -\lst@BeginAspect[keywords,comments]{keywordcomments} -\lst@NewMode\lst@KCmode \lst@NewMode\lst@KCSmode -\gdef\lst@BeginKC{\aftergroup\aftergroup\aftergroup\lst@BeginKC@}% -\gdef\lst@BeginKC@{% - \lst@ResetToken - \lst@BeginComment\lst@KCmode{{\lst@commentstyle}\lst@modetrue}% - \@empty}% -\gdef\lst@BeginKCS{\aftergroup\aftergroup\aftergroup\lst@BeginKCS@}% -\gdef\lst@BeginKCS@{% - \lst@ResetToken - \lst@BeginComment\lst@KCSmode{{\lst@commentstyle}\lst@modetrue}% - \@empty}% -\lst@AddToHook{PostOutput}{\lst@KCpost \global\let\lst@KCpost\@empty} -\global\let\lst@KCpost\@empty % init -\gdef\lst@EndKC{\lst@SaveToken \lst@LeaveMode \lst@RestoreToken - \let\lst@thestyle\lst@identifierstyle \lsthk@Output} -\lst@InstallKeywords{kc}{keywordcomment}{}\relax{} - {\ifnum\lst@mode=\lst@KCmode - \edef\lst@temp{\the\lst@token}% - \ifx\lst@temp\lst@KCmatch - \lst@EndKC - \fi - \else - \lst@ifmode\else - \xdef\lst@KCmatch{\the\lst@token}% - \global\let\lst@KCpost\lst@BeginKC - \fi - \fi} - lo -\lst@Key{keywordcommentsemicolon}{}{\lstKV@ThreeArg{#1}% - {\def\lst@KCAkeywordsB{##1}% - \def\lst@KCAkeywordsE{##2}% - \def\lst@KCBkeywordsB{##3}% - \def\lst@KCkeywords{##1##2##3}}} -\lst@AddToHook{SetLanguage}{% - \let\lst@KCAkeywordsB\@empty \let\lst@KCAkeywordsE\@empty - \let\lst@KCBkeywordsB\@empty \let\lst@KCkeywords\@empty} -\lst@AddToHook{SelectCharTable} - {\ifx\lst@KCkeywords\@empty\else - \lst@DefSaveDef{`\;}\lsts@EKC - {\lst@XPrintToken - \ifnum\lst@mode=\lst@KCmode \lst@EndComment\@empty \else - \ifnum\lst@mode=\lst@KCSmode \lst@EndComment\@empty - \fi \fi - \lsts@EKC}% - \fi} -\gdef\lst@KCAWorkB{% - \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKC \fi} -\gdef\lst@KCBWorkB{% - \lst@ifmode\else \global\let\lst@KCpost\lst@BeginKCS \fi} -\gdef\lst@KCAWorkE{\ifnum\lst@mode=\lst@KCmode \lst@EndKC \fi} -\lst@ProvideFamily@@ - \lst@KCAkeywordsB@list\lst@KCAkeywordsB \lst@KC@also - \lst@gKCAkeywordsB@list\lst@gKCAkeywordsB \lst@KCAWorkB - {kcb}owo % prefix, other key, working procedure, Output hook -\lst@ProvideFamily@@ - \lst@KCAkeywordsE@list\lst@KCAkeywordsE \lst@KC@also - \lst@gKCAkeywordsE@list\lst@gKCAkeywordsE \lst@KCAWorkE - {kce}owo -\lst@ProvideFamily@@ - \lst@KCBkeywordsB@list\lst@KCBkeywordsB \lst@KC@also - \lst@gKCBkeywordsB@list\lst@gKCBkeywordsB \lst@KCBWorkB - {kcs}owo -\lst@EndAspect -\lst@BeginAspect[keywords]{index} -\lst@InstallFamily w{index}{indexstyle}\lstindexmacro{indexstyle} - {\csname\@lst @indexstyle#1\expandafter\endcsname - \expandafter{\the\lst@token}} - od -\lst@UserCommand\lstindexmacro#1{\index{{\ttfamily#1}}} -\lst@EndAspect -\lst@BeginAspect[keywords]{procnames} -\gdef\lst@procnametrue{\global\let\lst@ifprocname\iftrue} -\gdef\lst@procnamefalse{\global\let\lst@ifprocname\iffalse} -\lst@AddToHook{Init}{\lst@procnamefalse} -\lst@AddToHook{DetectKeywords} - {\lst@ifprocname - \let\lst@thestyle\lst@procnamestyle - \lst@ifindexproc \csname\@lst @gindex@sty\endcsname \fi - \lst@procnamefalse - \fi} -\lst@Key{procnamestyle}{}{\def\lst@procnamestyle{#1}} -\lst@Key{indexprocnames}{false}[t]{\lstKV@SetIf{#1}\lst@ifindexproc} -\lst@AddToHook{Init}{\lst@ifindexproc \lst@indexproc \fi} -\gdef\lst@indexproc{% - \@ifundefined{lst@indexstyle1}% - {\@namedef{lst@indexstyle1}##1{}}% - {}} -\lst@InstallKeywords w{procnamekeys}{}\relax{} - {\global\let\lst@PNpost\lst@procnametrue} - od -\lst@AddToHook{PostOutput}{\lst@PNpost\global\let\lst@PNpost\@empty} -\global\let\lst@PNpost\@empty % init -\lst@EndAspect -\lst@BeginAspect{style} -\@ifundefined{lststylefiles} - {\lst@UserCommand\lststylefiles{lststy0.sty}}{} -\lst@UserCommand\lstdefinestyle{\lst@DefStyle\iftrue} -\lst@UserCommand\lst@definestyle{\lst@DefStyle\iffalse} -\gdef\lst@DefStyle{\lst@DefDriver{style}{sty}\lstset} -\global\@namedef{lststy@$}{\lsthk@EmptyStyle} -\lst@AddToHook{EmptyStyle}{}% init -\lst@Key{style}\relax{% - \lst@LAS{style}{sty}{[]{#1}}\lst@NoAlias\lststylefiles - \lsthk@SetStyle - {}} -\lst@AddToHook{SetStyle}{}% init -\lst@EndAspect -\lst@BeginAspect{language} -\@ifundefined{lstdriverfiles} - {\lst@UserCommand\lstlanguagefiles{lstlang0.sty}}{} -\lst@UserCommand\lstdefinelanguage{\lst@DefLang\iftrue} -\lst@UserCommand\lst@definelanguage{\lst@DefLang\iffalse} -\gdef\lst@DefLang{\lst@DefDriver{language}{lang}\lstset} -\lstdefinelanguage{}{} -\lst@Key{language}\relax{\lstKV@OptArg[]{#1}% - {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles - \lsthk@SetLanguage - {\lst@FindAlias[##1]{##2}% - \let\lst@language\lst@malias - \let\lst@dialect\lst@oalias}}} -\lst@Key{alsolanguage}\relax{\lstKV@OptArg[]{#1}% - {\lst@LAS{language}{lang}{[##1]{##2}}\lst@FindAlias\lstlanguagefiles - {}% - {\lst@FindAlias[##1]{##2}% - \let\lst@language\lst@malias - \let\lst@dialect\lst@oalias}}} -\lst@AddToHook{SetLanguage}{}% init -\lst@UserCommand\lstalias{\@ifnextchar[\lstalias@\lstalias@@} -\gdef\lstalias@[#1]#2{\lstalias@b #2$#1} -\gdef\lstalias@b#1[#2]#3{\lst@NormedNameDef{lsta@#1}{#3$#2}} -\gdef\lstalias@@#1#2{\lst@NormedNameDef{lsta@#1}{#2}} -\lst@Key{defaultdialect}\relax - {\lstKV@OptArg[]{#1}{\lst@NormedNameDef{lstdd@##2}{##1}}} -\gdef\lst@FindAlias[#1]#2{% - \lst@NormedDef\lst@oalias{#1}% - \lst@NormedDef\lst@malias{#2}% - \@ifundefined{lsta@\lst@malias}{}% - {\edef\lst@malias{\csname\@lst a@\lst@malias\endcsname}}% - \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}% - {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}% - \fi - \edef\lst@temp{\lst@malias $\lst@oalias}% - \@ifundefined{lsta@\lst@temp}{}% - {\edef\lst@temp{\csname\@lst a@\lst@temp\endcsname}}% - \expandafter\lst@FindAlias@\lst@temp $} -\gdef\lst@FindAlias@#1$#2${% - \def\lst@malias{#1}\def\lst@oalias{#2}% - \ifx\@empty\lst@oalias \@ifundefined{lstdd@\lst@malias}{}% - {\edef\lst@oalias{\csname\@lst dd@\lst@malias\endcsname}}% - \fi} -\gdef\lst@RequireLanguages#1{% - \lst@Require{language}{lang}{#1}\lst@FindAlias\lstlanguagefiles - \ifx\lst@loadaspects\@empty\else - \lst@RequireAspects\lst@loadaspects - \fi} -\global\let\lstloadlanguages\lst@RequireLanguages -\lst@EndAspect -\lst@BeginAspect{formats} -\@ifundefined{lstformatfiles} - {\lst@UserCommand\lstformatfiles{lstfmt0.sty}}{} -\lst@UserCommand\lstdefineformat{\lst@DefFormat\iftrue} -\lst@UserCommand\lst@defineformat{\lst@DefFormat\iffalse} -\gdef\lst@DefFormat{\lst@DefDriver{format}{fmt}\lst@UseFormat} -\lstdefineformat{}{} -\lst@Key{format}\relax{% - \lst@LAS{format}{fmt}{[]{#1}}\lst@NoAlias\lstformatfiles - \lsthk@SetFormat - {}} -\lst@AddToHook{SetFormat}{\let\lst@fmtformat\@empty}% init -\gdef\lst@fmtSplit#1#2{% - \def\lst@temp##1#2##2\relax##3{% - \ifnum##3=\z@ - \ifx\@empty##2\@empty - \lst@false - \let\lst@fmta#1% - \let\lst@fmtb\@empty - \else - \expandafter\lst@temp#1\relax\@ne - \fi - \else - \def\lst@fmta{##1}\def\lst@fmtb{##2}% - \fi}% - \lst@true - \expandafter\lst@temp#1#2\relax\z@} -\gdef\lst@IfNextCharWhitespace#1#2#3{% - \lst@IfSubstring#3\lst@whitespaces{#1}{#2}#3} -\begingroup -\catcode`\^^I=12\catcode`\^^J=12\catcode`\^^M=12\catcode`\^^L=12\relax% -\lst@DefActive\lst@whitespaces{\ ^^I^^J^^M}% add ^^L -\global\let\lst@whitespaces\lst@whitespaces% -\endgroup -\gdef\lst@fmtIfIdentifier#1{% - \ifx\relax#1\@empty - \expandafter\@secondoftwo - \else - \expandafter\lst@fmtIfIdentifier@\expandafter#1% - \fi} -\gdef\lst@fmtIfIdentifier@#1#2\relax{% - \let\lst@next\@secondoftwo - \ifnum`#1=`_\else - \ifnum`#1<64\else - \ifnum`#1<91\let\lst@next\@firstoftwo\else - \ifnum`#1<97\else - \ifnum`#1<123\let\lst@next\@firstoftwo\else - \fi \fi \fi \fi \fi - \lst@next} -\gdef\lst@fmtIfNextCharIn#1{% - \ifx\@empty#1\@empty \expandafter\@secondoftwo \else - \def\lst@next{\lst@fmtIfNextCharIn@{#1}}% - \expandafter\lst@next\fi} -\gdef\lst@fmtIfNextCharIn@#1#2#3#4{% - \def\lst@temp##1#4##2##3\relax{% - \ifx \@empty##2\expandafter\@secondoftwo - \else \expandafter\@firstoftwo \fi}% - \lst@temp#1#4\@empty\relax{#2}{#3}#4} -\gdef\lst@fmtCDef#1{\lst@fmtCDef@#1} -\gdef\lst@fmtCDef@#1#2#3#4#5#6#7{% - \lst@CDefIt#1{#2}{#3}% - {\lst@fmtIfNextCharIn{#5}{#4#2#3}{#6#4#2#3#7}}% - #4% - {}{}{}} -\gdef\lst@fmtCDefX#1{\lst@fmtCDefX@#1} -\gdef\lst@fmtCDefX@#1#2#3#4#5#6#7{% - \let#4#1% - \ifx\@empty#2\@empty - \def#1{\lst@fmtIfNextCharIn{#5}{#4}{#6#7}}% - \else \ifx\@empty#3\@empty - \def#1##1{% - \ifx##1#2% - \def\lst@next{\lst@fmtIfNextCharIn{#5}{#4##1}% - {#6#7}}% - \else - \def\lst@next{#4##1}% - \fi - \lst@next}% - \else - \def#1{% - \lst@IfNextCharsArg{#2#3}% - {\lst@fmtIfNextCharIn{#5}{\expandafter#4\lst@eaten}% - {#6#7}}% - {\expandafter#4\lst@eaten}}% - \fi \fi} -\gdef\lst@UseFormat#1{% - \def\lst@fmtwhole{#1}% - \lst@UseFormat@} -\gdef\lst@UseFormat@{% - \lst@fmtSplit\lst@fmtwhole,% - \let\lst@fmtwhole\lst@fmtb - \ifx\lst@fmta\@empty\else - \lst@fmtSplit\lst@fmta=% - \ifx\@empty\lst@fmta\else - \expandafter\lstKV@XOptArg\expandafter[\expandafter]% - \expandafter{\lst@fmtb}\lst@UseFormat@b - \fi - \fi - \ifx\lst@fmtwhole\@empty\else - \expandafter\lst@UseFormat@ - \fi} -\gdef\lst@UseFormat@b[#1]#2{% - \def\lst@fmtc{{#1}}\lst@lExtend\lst@fmtc{\expandafter{\lst@fmta}}% - \def\lst@fmtb{#2}% - \lst@fmtSplit\lst@fmtb\string - \ifx\@empty\lst@fmta - \lst@lAddTo\lst@fmtc{{}}% - \else - \lst@lExtend\lst@fmtc{\expandafter - {\expandafter\lst@fmtPre\expandafter{\lst@fmta}}}% - \fi - \ifx\@empty\lst@fmtb - \lst@lAddTo\lst@fmtc{{}}% - \else - \lst@lExtend\lst@fmtc{\expandafter - {\expandafter\lst@fmtPost\expandafter{\lst@fmtb}}}% - \fi - \expandafter\lst@UseFormat@c\lst@fmtc} -\gdef\lst@UseFormat@c#1#2#3#4{% - \lst@fmtIfIdentifier#2\relax - {\lst@fmtIdentifier{#2}% - \lst@if\else \PackageWarning{Listings}% - {Cannot drop identifier in format definition}% - \fi}% - {\lst@if - \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDef}% - \else - \lst@lAddTo\lst@fmtformat{\lst@CArgX#2\relax\lst@fmtCDefX}% - \fi - \lst@DefActive\lst@fmtc{#1}% - \lst@lExtend\lst@fmtformat{\expandafter{\lst@fmtc}{#3}{#4}}}} -\lst@AddToHook{SelectCharTable}{\lst@fmtformat} -\global\let\lst@fmtformat\@empty -\gdef\lst@fmtPre#1{% - \lst@PrintToken - \begingroup - \let\newline\lst@fmtEnsureNewLine - \let\space\lst@fmtEnsureSpace - \let\indent\lst@fmtIndent - \let\noindent\lst@fmtNoindent - #1% - \endgroup} -\gdef\lst@fmtPost#1{% - \global\let\lst@fmtPostOutput\@empty - \begingroup - \def\newline{\lst@AddTo\lst@fmtPostOutput\lst@fmtEnsureNewLine}% - \def\space{\aftergroup\lst@fmtEnsurePostSpace}% - \def\indent{\lst@AddTo\lst@fmtPostOutput\lst@fmtIndent}% - \def\noindent{\lst@AddTo\lst@fmtPostOutput\lst@fmtNoindent}% - \aftergroup\lst@PrintToken - #1% - \endgroup} -\lst@AddToHook{Init}{\global\let\lst@fmtPostOutput\@empty} -\lst@AddToHook{PostOutput} - {\lst@fmtPostOutput \global\let\lst@fmtPostOutput\@empty} -\gdef\lst@fmtEnsureSpace{% - \lst@ifwhitespace\else \expandafter\lst@ProcessSpace \fi} -\gdef\lst@fmtEnsurePostSpace{% - \lst@IfNextCharWhitespace{}{\lst@ProcessSpace}} -\lst@Key{fmtindent}{20pt}{\def\lst@fmtindent{#1}} -\newdimen\lst@fmtcurrindent -\lst@AddToHook{InitVars}{\global\lst@fmtcurrindent\z@} -\gdef\lst@fmtIndent{\global\advance\lst@fmtcurrindent\lst@fmtindent} -\gdef\lst@fmtNoindent{\global\advance\lst@fmtcurrindent-\lst@fmtindent} -\gdef\lst@fmtEnsureNewLine{% - \global\advance\lst@newlines\@ne - \global\advance\lst@newlinesensured\@ne - \lst@fmtignoretrue} -\lst@AddToAtTop\lst@DoNewLines{% - \ifnum\lst@newlines>\lst@newlinesensured - \global\advance\lst@newlines-\lst@newlinesensured - \fi - \global\lst@newlinesensured\z@} -\newcount\lst@newlinesensured % global -\lst@AddToHook{Init}{\global\lst@newlinesensured\z@} -\gdef\lst@fmtignoretrue{\let\lst@fmtifignore\iftrue} -\gdef\lst@fmtignorefalse{\let\lst@fmtifignore\iffalse} -\lst@AddToHook{InitVars}{\lst@fmtignorefalse} -\lst@AddToHook{Output}{\lst@fmtignorefalse} -\gdef\lst@fmtUseLostSpace{% - \lst@ifnewline \kern\lst@fmtcurrindent \global\lst@lostspace\z@ - \else - \lst@OldOLS - \fi} -\lst@AddToHook{Init} - {\lst@true - \ifx\lst@fmtformat\@empty \ifx\lst@fmt\@empty \lst@false \fi\fi - \lst@if - \let\lst@OldOLS\lst@OutputLostSpace - \let\lst@OutputLostSpace\lst@fmtUseLostSpace - \let\lst@ProcessSpace\lst@fmtProcessSpace - \fi} -\gdef\lst@fmtProcessSpace{% - \lst@ifletter - \lst@Output - \lst@fmtifignore\else - \lst@AppendOther\lst@outputspace - \fi - \else \lst@ifkeepspaces - \lst@AppendOther\lst@outputspace - \else \ifnum\lst@newlines=\z@ - \lst@AppendSpecialSpace - \else \ifnum\lst@length=\z@ - \global\advance\lst@lostspace\lst@width - \global\advance\lst@pos\m@ne - \else - \lst@AppendSpecialSpace - \fi - \fi \fi \fi - \lst@whitespacetrue} -\lst@InstallTest{f} - \lst@fmt@list\lst@fmt \lst@gfmt@list\lst@gfmt - \lst@gfmt@wp - wd -\gdef\lst@fmt@list{\lst@fmt\lst@gfmt}\global\let\lst@fmt\@empty -\gdef\lst@gfmt@list{\lst@fmt\lst@gfmt}\global\let\lst@gfmt\@empty -\gdef\lst@gfmt@wp{% - \begingroup \let\lst@UM\@empty - \let\lst@PrintToken\@empty - \csname\@lst @fmt$\the\lst@token\endcsname - \endgroup} -\gdef\lst@fmtIdentifier#1#2#3#4{% - \lst@DefOther\lst@fmta{#2}\edef\lst@fmt{\lst@fmt,\lst@fmta}% - \@namedef{\@lst @fmt$\lst@fmta}{#3#4}} -\lst@EndAspect -\lst@BeginAspect{labels} -\lst@Key{numbers}{none}{% - \let\lst@PlaceNumber\@empty - \lstKV@SwitchCases{#1}% - {none&\\% - left&\def\lst@PlaceNumber{\llap{\normalfont - \lst@numberstyle{\thelstnumber}\kern\lst@numbersep}}\\% - right&\def\lst@PlaceNumber{\rlap{\normalfont - \kern\linewidth \kern\lst@numbersep - \lst@numberstyle{\thelstnumber}}}% - }{\PackageError{Listings}{Numbers #1 unknown}\@ehc}} -\lst@Key{numberstyle}{}{\def\lst@numberstyle{#1}} -\lst@Key{numbersep}{10pt}{\def\lst@numbersep{#1}} -\lst@Key{stepnumber}{1}{\def\lst@stepnumber{#1\relax}} -\lst@AddToHook{EmptyStyle}{\let\lst@stepnumber\@ne} -\lst@Key{numberblanklines}{true}[t] - {\lstKV@SetIf{#1}\lst@ifnumberblanklines} -\lst@Key{numberfirstline}{f}[t]{\lstKV@SetIf{#1}\lst@ifnumberfirstline} -\gdef\lst@numberfirstlinefalse{\let\lst@ifnumberfirstline\iffalse} -\lst@Key{firstnumber}{auto}{% - \lstKV@SwitchCases{#1}% - {auto&\let\lst@firstnumber\@undefined\\% - last&\let\lst@firstnumber\c@lstnumber - }{\def\lst@firstnumber{#1\relax}}} -\lst@AddToHook{PreSet}{\let\lst@advancenumber\z@} -\lst@AddToHook{PreInit} - {\ifx\lst@firstnumber\@undefined - \let\lst@firstnumber\lst@firstline - \fi} -\gdef\lst@SetFirstNumber{% - \ifx\lst@firstnumber\@undefined - \@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax - \ifnum\@tempcnta=\z@ \@tempcnta\lst@firstline - \else \lst@nololtrue \fi - \advance\@tempcnta\lst@advancenumber - \edef\lst@firstnumber{\the\@tempcnta\relax}% - \fi} -\gdef\lst@SaveFirstNumber{% - \expandafter\xdef - \csname\@lst no\ifx\lst@intname\@empty @ \else @\lst@intname\fi - \endcsname{\the\c@lstnumber}} -\newcounter{lstnumber}% \global -\global\c@lstnumber\@ne % init -\renewcommand*\thelstnumber{\@arabic\c@lstnumber} -\lst@AddToHook{EveryPar} - {\global\advance\c@lstnumber\lst@advancelstnum - \global\advance\c@lstnumber\m@ne \refstepcounter{lstnumber}% - \lst@SkipOrPrintLabel}% -\global\let\lst@advancelstnum\@ne -\lst@AddToHook{Init}{\def\@currentlabel{\thelstnumber}} -\lst@AddToHook{InitVars} - {\global\c@lstnumber\lst@firstnumber - \global\advance\c@lstnumber\lst@advancenumber - \global\advance\c@lstnumber-\lst@advancelstnum - \ifx \lst@firstnumber\c@lstnumber - \global\advance\c@lstnumber-\lst@advancelstnum - \fi} -\lst@AddToHook{ExitVars} - {\global\advance\c@lstnumber\lst@advancelstnum} -\AtBeginDocument{% - \def\theHlstnumber{\ifx\lst@@caption\@empty \lst@neglisting - \else \thelstlisting \fi - .\thelstnumber}} -\newcount\lst@skipnumbers % \global -\lst@AddToHook{Init} - {\ifnum \z@>\lst@stepnumber - \let\lst@advancelstnum\m@ne - \edef\lst@stepnumber{-\lst@stepnumber}% - \fi - \ifnum \z@<\lst@stepnumber - \global\lst@skipnumbers\lst@firstnumber - \global\divide\lst@skipnumbers\lst@stepnumber - \global\multiply\lst@skipnumbers-\lst@stepnumber - \global\advance\lst@skipnumbers\lst@firstnumber - \ifnum\lst@skipnumbers>\z@ - \global\advance\lst@skipnumbers -\lst@stepnumber - \fi - \else - \let\lst@SkipOrPrintLabel\relax - \fi} -\gdef\lst@SkipOrPrintLabel{% - \ifnum\lst@skipnumbers=\z@ - \global\advance\lst@skipnumbers-\lst@stepnumber\relax - \lst@PlaceNumber - \lst@numberfirstlinefalse - \else - \lst@ifnumberfirstline - \lst@PlaceNumber - \lst@numberfirstlinefalse - \fi - \fi - \global\advance\lst@skipnumbers\@ne}% -\lst@AddToHook{OnEmptyLine}{% - \lst@ifnumberblanklines\else \ifnum\lst@skipnumbers=\z@ - \global\advance\lst@skipnumbers-\lst@stepnumber\relax - \fi\fi} -\lst@EndAspect -\lst@BeginAspect{lineshape} -\lst@Key{xleftmargin}{\z@}{\def\lst@xleftmargin{#1}} -\lst@Key{xrightmargin}{\z@}{\def\lst@xrightmargin{#1}} -\lst@Key{resetmargins}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins} -\lst@AddToHook{BoxUnsafe}{\let\lst@xleftmargin\z@ - \let\lst@xrightmargin\z@} -\lst@AddToHook{TextStyle}{% - \let\lst@xleftmargin\z@ \let\lst@xrightmargin\z@ - \let\lst@ifresetmargins\iftrue} -\lst@Key{linewidth}\linewidth{\def\lst@linewidth{#1}} -\lst@AddToHook{PreInit}{\linewidth\lst@linewidth\relax} -\gdef\lst@parshape{% - \parshape\@ne \@totalleftmargin \linewidth} -\lst@AddToHook{Init} - {\lst@ifresetmargins - \advance\linewidth\@totalleftmargin - \advance\linewidth\rightmargin - \@totalleftmargin\z@ - \fi - \advance\linewidth-\lst@xleftmargin - \advance\linewidth-\lst@xrightmargin - \advance\@totalleftmargin\lst@xleftmargin\relax} -\lst@Key{lineskip}{\z@}{\def\lst@lineskip{#1\relax}} -\lst@AddToHook{Init} - {\parskip\z@ - \ifdim\z@=\lst@lineskip\else - \@tempdima\baselineskip - \advance\@tempdima\lst@lineskip - \multiply\@tempdima\@cclvi - \divide\@tempdima\baselineskip\relax - \multiply\@tempdima\@cclvi - \edef\baselinestretch{\strip@pt\@tempdima}% - \selectfont - \fi} -\lst@Key{breaklines}{false}[t]{\lstKV@SetIf{#1}\lst@ifbreaklines} -\lst@Key{breakindent}{20pt}{\def\lst@breakindent{#1}} -\lst@Key{breakautoindent}{t}[t]{\lstKV@SetIf{#1}\lst@ifbreakautoindent} -\lst@Key{breakatwhitespace}{false}[t]% - {\lstKV@SetIf{#1}\lst@ifbreakatwhitespace} -\lst@Key{prebreak}{}{\def\lst@prebreak{#1}} -\lst@Key{postbreak}{}{\def\lst@postbreak{#1}} -\lst@AddToHook{Init} - {\lst@ifbreaklines - \hbadness\@M \pretolerance\@M - \@rightskip\@flushglue \rightskip\@rightskip % \raggedright - \leftskip\z@skip \parindent\z@ - \def\lst@parshape{\parshape\tw@ \@totalleftmargin\linewidth - \lst@breakshape}% - \else - \let\lst@discretionary\@empty - \fi} -\lst@AddToHook{OnNewLine} - {\lst@ifbreaklines \lst@breakNewLine \fi} -\gdef\lst@discretionary{% - \lst@ifbreakatwhitespace - \lst@ifwhitespace \lst@@discretionary \fi - \else - \lst@@discretionary - \fi}% -\gdef\lst@@discretionary{% - \discretionary{\let\space\lst@spacekern\lst@prebreak}% - {\llap{\lsthk@EveryLine - \kern\lst@breakcurrindent \kern-\@totalleftmargin}% - \let\space\lst@spacekern\lst@postbreak}{}} -\lst@AddToHook{PostOutput}{\lst@discretionary} -\gdef\lst@spacekern{\kern\lst@width} -\gdef\lst@breakNewLine{% - \@tempdima\lst@breakindent\relax - \lst@ifbreakautoindent \advance\@tempdima\lst@lostspace \fi - \@tempdimc-\@tempdima \advance\@tempdimc\linewidth - \advance\@tempdima\@totalleftmargin - \xdef\lst@breakshape{\noexpand\lst@breakcurrindent \the\@tempdimc}% - \xdef\lst@breakcurrindent{\the\@tempdima}} -\global\let\lst@breakcurrindent\z@ % init -\gdef\lst@breakshape{\@totalleftmargin \linewidth} -\gdef\lst@breakProcessOther#1{\lst@ProcessOther#1\lst@OutputOther} -\lst@AddToHook{SelectCharTable} - {\lst@ifbreaklines \lst@Def{`)}{\lst@breakProcessOther)}\fi} -\lst@EndAspect -\lst@BeginAspect[lineshape]{frames} -\lst@Key{framexleftmargin}{\z@}{\def\lst@framexleftmargin{#1}} -\lst@Key{framexrightmargin}{\z@}{\def\lst@framexrightmargin{#1}} -\lst@Key{framextopmargin}{\z@}{\def\lst@framextopmargin{#1}} -\lst@Key{framexbottommargin}{\z@}{\def\lst@framexbottommargin{#1}} -\lst@Key{backgroundcolor}{}{\def\lst@bkgcolor{#1}} -\lst@Key{fillcolor}{}{\def\lst@fillcolor{#1}} -\lst@Key{rulecolor}{}{\def\lst@rulecolor{#1}} -\lst@Key{rulesepcolor}{}{\def\lst@rulesepcolor{#1}} -\lst@AddToHook{Init}{% - \ifx\lst@fillcolor\@empty - \let\lst@fillcolor\lst@bkgcolor - \fi - \ifx\lst@rulesepcolor\@empty - \let\lst@rulesepcolor\lst@fillcolor - \fi} -\lst@Key{rulesep}{2pt}{\def\lst@rulesep{#1}} -\lst@Key{framerule}{.4pt}{\def\lst@framerulewidth{#1}} -\lst@Key{framesep}{3pt}{\def\lst@frametextsep{#1}} -\lst@Key{frameshape}{}{% - \let\lst@xrulecolor\@empty - \lstKV@FourArg{#1}% - {\uppercase{\def\lst@frametshape{##1}}% - \uppercase{\def\lst@framelshape{##2}}% - \uppercase{\def\lst@framershape{##3}}% - \uppercase{\def\lst@framebshape{##4}}% - \let\lst@ifframeround\iffalse - \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}% - \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}% - \def\lst@frame{##1##2##3##4}}} -\lst@Key{frameround}\relax - {\uppercase{\def\lst@frameround{#1}}% - \expandafter\lstframe@\lst@frameround ffff\relax} -\global\let\lst@frameround\@empty -\lst@Key{frame}\relax{% - \let\lst@xrulecolor\@empty - \lstKV@SwitchCases{#1}% - {none&\let\lst@frame\@empty\\% - leftline&\def\lst@frame{l}\\% - topline&\def\lst@frame{t}\\% - bottomline&\def\lst@frame{b}\\% - lines&\def\lst@frame{tb}\\% - single&\def\lst@frame{trbl}\\% - shadowbox&\def\lst@frame{tRBl}% - \def\lst@xrulecolor{\lst@rulesepcolor}% - \def\lst@rulesep{\lst@frametextsep}% - }{\def\lst@frame{#1}}% - \expandafter\lstframe@\lst@frameround ffff\relax} -\gdef\lstframe@#1#2#3#4#5\relax{% - \lst@IfSubstring T\lst@frame{\edef\lst@frame{t\lst@frame}}{}% - \lst@IfSubstring R\lst@frame{\edef\lst@frame{r\lst@frame}}{}% - \lst@IfSubstring B\lst@frame{\edef\lst@frame{b\lst@frame}}{}% - \lst@IfSubstring L\lst@frame{\edef\lst@frame{l\lst@frame}}{}% - \let\lst@frametshape\@empty \let\lst@framebshape\@empty - \lst@frameCheck - ltr\lst@framelshape\lst@frametshape\lst@framershape #4#1% - \lst@frameCheck - LTR\lst@framelshape\lst@frametshape\lst@framershape #4#1% - \lst@frameCheck - lbr\lst@framelshape\lst@framebshape\lst@framershape #3#2% - \lst@frameCheck - LBR\lst@framelshape\lst@framebshape\lst@framershape #3#2% - \let\lst@ifframeround\iffalse - \lst@IfSubstring R\lst@frametshape{\let\lst@ifframeround\iftrue}{}% - \lst@IfSubstring R\lst@framebshape{\let\lst@ifframeround\iftrue}{}% - \let\lst@framelshape\@empty \let\lst@framershape\@empty - \lst@IfSubstring L\lst@frame - {\def\lst@framelshape{YY}}% - {\lst@IfSubstring l\lst@frame{\def\lst@framelshape{Y}}{}}% - \lst@IfSubstring R\lst@frame - {\def\lst@framershape{YY}}% - {\lst@IfSubstring r\lst@frame{\def\lst@framershape{Y}}{}}} -\gdef\lst@frameCheck#1#2#3#4#5#6#7#8{% - \lst@IfSubstring #1\lst@frame - {\if #7T\def#4{R}\else \def#4{Y}\fi}% - {\def#4{N}}% - \lst@IfSubstring #3\lst@frame - {\if #8T\def#6{R}\else \def#6{Y}\fi}% - {\def#6{N}}% - \lst@IfSubstring #2\lst@frame{\edef#5{#5#4Y#6}}{}} -\lst@AddToHook{TextStyle} - {\let\lst@frame\@empty - \let\lst@frametshape\@empty - \let\lst@framershape\@empty - \let\lst@framebshape\@empty - \let\lst@framelshape\@empty} -\gdef\lst@frameMakeBoxV#1#2#3{% - \setbox#1\hbox{% - \color@begingroup \lst@rulecolor - \llap{\setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3% - \lst@frameL}% - \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}% - {\ht\z@}{\dp\z@}}% - \box\z@ - \ifx\lst@framelshape\@empty - \kern\lst@frametextsep\relax - \else - \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}% - \fi - \kern\lst@framexleftmargin}% - \rlap{\kern-\lst@framexleftmargin - \@tempdima\linewidth - \advance\@tempdima\lst@framexleftmargin - \advance\@tempdima\lst@framexrightmargin - \lst@frameBlock\lst@bkgcolor\@tempdima{#2}{#3}% - \ifx\lst@framershape\@empty - \kern\lst@frametextsep\relax - \else - \lst@frameBlock\lst@fillcolor\lst@frametextsep{#2}{#3}% - \fi - \setbox\z@\hbox{\vrule\@width\z@\@height#2\@depth#3% - \lst@frameR}% - \rlap{\lst@frameBlock\lst@rulesepcolor{\wd\z@}% - {\ht\z@}{\dp\z@}}% - \box\z@}% - \color@endgroup}} -\gdef\lst@frameBlock#1#2#3#4{% - \color@begingroup - #1% - \setbox\z@\hbox{\vrule\@height#3\@depth#4% - \ifx#1\@empty \@width\z@ \kern#2\relax - \else \@width#2\relax \fi}% - \box\z@ - \color@endgroup} -\gdef\lst@frameR{% - \expandafter\lst@frameR@\lst@framershape\relax - \kern-\lst@rulesep} -\gdef\lst@frameR@#1{% - \ifx\relax#1\@empty\else - \if #1Y\lst@framevrule \else \kern\lst@framerulewidth \fi - \kern\lst@rulesep - \expandafter\lst@frameR@b - \fi} -\gdef\lst@frameR@b#1{% - \ifx\relax#1\@empty - \else - \if #1Y\color@begingroup - \lst@xrulecolor - \lst@framevrule - \color@endgroup - \else - \kern\lst@framerulewidth - \fi - \kern\lst@rulesep - \expandafter\lst@frameR@ - \fi} -\gdef\lst@frameL{% - \kern-\lst@rulesep - \expandafter\lst@frameL@\lst@framelshape\relax} -\gdef\lst@frameL@#1{% - \ifx\relax#1\@empty\else - \kern\lst@rulesep - \if#1Y\lst@framevrule \else \kern\lst@framerulewidth \fi - \expandafter\lst@frameL@ - \fi} -\gdef\lst@frameH#1#2{% - \global\let\lst@framediml\z@ \global\let\lst@framedimr\z@ - \setbox\z@\hbox{}\@tempcntb\z@ - \expandafter\lst@frameH@\expandafter#1#2\relax\relax\relax - \@tempdimb\lst@frametextsep\relax - \advance\@tempdimb\lst@framerulewidth\relax - \@tempdimc-\@tempdimb - \advance\@tempdimc\ht\z@ - \advance\@tempdimc\dp\z@ - \setbox\z@=\hbox{% - \lst@frameHBkg\lst@fillcolor\@tempdimb\@firstoftwo - \if#1T\rlap{\raise\dp\@tempboxa\box\@tempboxa}% - \else\rlap{\lower\ht\@tempboxa\box\@tempboxa}\fi - \lst@frameHBkg\lst@rulesepcolor\@tempdimc\@secondoftwo - \advance\@tempdimb\ht\@tempboxa - \if#1T\rlap{\raise\lst@frametextsep\box\@tempboxa}% - \else\rlap{\lower\@tempdimb\box\@tempboxa}\fi - \rlap{\box\z@}% - }} -\gdef\lst@frameH@#1#2#3#4{% - \ifx\relax#4\@empty\else - \lst@frameh \@tempcntb#1#2#3#4% - \advance\@tempcntb\@ne - \expandafter\lst@frameH@\expandafter#1% - \fi} -\gdef\lst@frameHBkg#1#2#3{% - \setbox\@tempboxa\hbox{% - \kern-\lst@framexleftmargin - #3{\kern-\lst@framediml\relax}{\@tempdima\z@}% - \ifdim\lst@framediml>\@tempdimb - #3{\@tempdima\lst@framediml \advance\@tempdima-\@tempdimb - \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@}% - {\kern-\lst@framediml - \advance\@tempdima\lst@framediml\relax}% - \fi - #3{\@tempdima\z@ - \ifx\lst@framelshape\@empty\else - \advance\@tempdima\@tempdimb - \fi - \ifx\lst@framershape\@empty\else - \advance\@tempdima\@tempdimb - \fi}% - {\ifdim\lst@framedimr>\@tempdimb - \advance\@tempdima\lst@framedimr\relax - \fi}% - \advance\@tempdima\linewidth - \advance\@tempdima\lst@framexleftmargin - \advance\@tempdima\lst@framexrightmargin - \lst@frameBlock#1\@tempdima#2\z@ - #3{\ifdim\lst@framedimr>\@tempdimb - \@tempdima-\@tempdimb - \advance\@tempdima\lst@framedimr\relax - \lst@frameBlock\lst@rulesepcolor\@tempdima\@tempdimb\z@ - \fi}{}% - }} -\gdef\lst@frameh#1#2#3#4#5{% - \lst@frameCalcDimA#1% - \lst@ifframeround \@getcirc\@tempdima \fi - \setbox\z@\hbox{% - \begingroup - \setbox\z@\hbox{% - \kern-\lst@framexleftmargin - \color@begingroup - \ifnum#1=\z@ \lst@rulecolor \else \lst@xrulecolor \fi - \lst@frameCornerX\llap{#2L}#3#1% - \ifdim\lst@framediml<\@tempdimb - \xdef\lst@framediml{\the\@tempdimb}% - \fi - \begingroup - \if#4Y\else \let\lst@framerulewidth\z@ \fi - \@tempdima\lst@framexleftmargin - \advance\@tempdima\lst@framexrightmargin - \advance\@tempdima\linewidth - \vrule\@width\@tempdima\@height\lst@framerulewidth \@depth\z@ - \endgroup - \lst@frameCornerX\rlap{#2R}#5#1% - \ifdim\lst@framedimr<\@tempdimb - \xdef\lst@framedimr{\the\@tempdimb}% - \fi - \color@endgroup}% - \if#2T\rlap{\raise\dp\z@\box\z@}% - \else\rlap{\lower\ht\z@\box\z@}\fi - \endgroup - \box\z@}} -\gdef\lst@frameCornerX#1#2#3#4{% - \setbox\@tempboxa\hbox{\csname\@lst @frame\if#3RR\fi #2\endcsname}% - \@tempdimb\wd\@tempboxa - \if #3R% - #1{\box\@tempboxa}% - \else - \if #3Y\expandafter#1\else - \@tempdimb\z@ \expandafter\vphantom \fi - {\box\@tempboxa}% - \fi} -\gdef\lst@frameCalcDimA#1{% - \@tempdima\lst@rulesep - \advance\@tempdima\lst@framerulewidth - \multiply\@tempdima#1\relax - \advance\@tempdima\lst@frametextsep - \advance\@tempdima\lst@framerulewidth - \multiply\@tempdima\tw@} -\lst@AddToHook{Init}{\lst@frameInit} -\newbox\lst@framebox -\gdef\lst@frameInit{% - \ifx\lst@framelshape\@empty \let\lst@frameL\@empty \fi - \ifx\lst@framershape\@empty \let\lst@frameR\@empty \fi - \def\lst@framevrule{\vrule\@width\lst@framerulewidth\relax}% - \lst@ifframeround - \lst@frameCalcDimA\z@ \@getcirc\@tempdima - \@tempdimb\@tempdima \divide\@tempdimb\tw@ - \advance\@tempdimb -\@wholewidth - \edef\lst@frametextsep{\the\@tempdimb}% - \edef\lst@framerulewidth{\the\@wholewidth}% - \lst@frameCalcDimA\@ne \@getcirc\@tempdima - \@tempdimb\@tempdima \divide\@tempdimb\tw@ - \advance\@tempdimb -\tw@\@wholewidth - \advance\@tempdimb -\lst@frametextsep - \edef\lst@rulesep{\the\@tempdimb}% - \fi - \lst@frameMakeBoxV\lst@framebox{\ht\strutbox}{\dp\strutbox}% - \def\lst@framelr{\copy\lst@framebox}% - \ifx\lst@frametshape\@empty\else - \lst@frameH T\lst@frametshape - \ifvoid\z@\else - \par\lst@parshape - \@tempdima-\baselineskip \advance\@tempdima\ht\z@ - \ifdim\prevdepth<\@cclvi\p@\else - \advance\@tempdima\prevdepth - \fi - \ifdim\@tempdima<\z@ - \vskip\@tempdima\vskip\lineskip - \fi - \noindent\box\z@\par - \lineskiplimit\maxdimen \lineskip\z@ - \fi - \lst@frameSpreadV\lst@framextopmargin - \fi} -\lst@AddToHook{EveryLine}{\lst@framelr} -\global\let\lst@framelr\@empty -\lst@AddToHook{DeInit} - {\ifx\lst@framebshape\@empty\else \lst@frameExit \fi} -\gdef\lst@frameExit{% - \lst@frameSpreadV\lst@framexbottommargin - \lst@frameH B\lst@framebshape - \ifvoid\z@\else - \everypar{}\par\lst@parshape\nointerlineskip\noindent\box\z@ - \fi} -\gdef\lst@frameSpreadV#1{% - \ifdim\z@=#1\else - \everypar{}\par\lst@parshape\nointerlineskip\noindent - \lst@frameMakeBoxV\z@{#1}{\z@}% - \box\z@ - \fi} -\gdef\lst@frameTR{% - \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@ - \kern-\lst@framerulewidth - \raise\lst@framerulewidth\hbox{% - \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}} -\gdef\lst@frameBR{% - \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@ - \kern-\lst@framerulewidth - \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@} -\gdef\lst@frameBL{% - \vrule\@width\lst@framerulewidth\@height.5\@tempdima\@depth\z@ - \kern-\lst@framerulewidth - \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@} -\gdef\lst@frameTL{% - \raise\lst@framerulewidth\hbox{% - \vrule\@width\lst@framerulewidth\@height\z@\@depth.5\@tempdima}% - \kern-\lst@framerulewidth - \vrule\@width.5\@tempdima\@height\lst@framerulewidth\@depth\z@} -\gdef\lst@frameRoundT{% - \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}% - \ht\@tempboxa\lst@framerulewidth - \box\@tempboxa} -\gdef\lst@frameRoundB{% - \setbox\@tempboxa\hbox{\@circlefnt\char\@tempcnta}% - \dp\@tempboxa\z@ - \box\@tempboxa} -\gdef\lst@frameRTR{% - \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth - \kern.5\@tempdima \lst@frameRoundT \hss}} -\gdef\lst@frameRBR{% - \hb@xt@.5\@tempdima{\kern-\lst@framerulewidth - \advance\@tempcnta\@ne \kern.5\@tempdima \lst@frameRoundB \hss}} -\gdef\lst@frameRBL{% - \advance\@tempcnta\tw@ \lst@frameRoundB - \kern-.5\@tempdima} -\gdef\lst@frameRTL{% - \advance\@tempcnta\thr@@\lst@frameRoundT - \kern-.5\@tempdima} -\lst@EndAspect -\lst@BeginAspect[keywords]{make} -\lst@NewMode\lst@makemode -\lst@AddToHook{Output}{% - \ifnum\lst@mode=\lst@makemode - \ifx\lst@thestyle\lst@gkeywords@sty - \lst@makekeytrue - \fi - \fi} -\gdef\lst@makekeytrue{\let\lst@ifmakekey\iftrue} -\gdef\lst@makekeyfalse{\let\lst@ifmakekey\iffalse} -\global\lst@makekeyfalse % init -\lst@Key{makemacrouse}f[t]{\lstKV@SetIf{#1}\lst@ifmakemacrouse} -\gdef\lst@MakeSCT{% - \lst@ifmakemacrouse - \lst@ReplaceInput{$(}{% - \lst@PrintToken - \lst@EnterMode\lst@makemode{\lst@makekeyfalse}% - \lst@Merge{\lst@ProcessOther\$\lst@ProcessOther(}}% - \lst@ReplaceInput{)}{% - \ifnum\lst@mode=\lst@makemode - \lst@PrintToken - \begingroup - \lst@ProcessOther)% - \lst@ifmakekey - \let\lst@currstyle\lst@gkeywords@sty - \fi - \lst@OutputOther - \endgroup - \lst@LeaveMode - \else - \expandafter\lst@ProcessOther\expandafter)% - \fi}% - \else - \lst@ReplaceInput{$(}{\lst@ProcessOther\$\lst@ProcessOther(}% - \fi} -\lst@EndAspect -\lst@BeginAspect{0.21} -\lst@Key{labelstyle}{}{\def\lst@numberstyle{#1}} -\lst@Key{labelsep}{10pt}{\def\lst@numbersep{#1}} -\lst@Key{labelstep}{0}{% - \ifnum #1=\z@ \KV@lst@numbers{none}% - \else \KV@lst@numbers{left}\fi - \def\lst@stepnumber{#1\relax}} -\lst@Key{firstlabel}\relax{\def\lst@firstnumber{#1\relax}} -\lst@Key{advancelabel}\relax{\def\lst@advancenumber{#1\relax}} -\let\c@lstlabel\c@lstnumber -\lst@AddToHook{Init}{\def\thelstnumber{\thelstlabel}} -\newcommand*\thelstlabel{\@arabic\c@lstlabel} -\lst@Key{first}\relax{\def\lst@firstline{#1\relax}} -\lst@Key{last}\relax{\def\lst@lastline{#1\relax}} -\lst@Key{framerulewidth}{.4pt}{\def\lst@framerulewidth{#1}} -\lst@Key{framerulesep}{2pt}{\def\lst@rulesep{#1}} -\lst@Key{frametextsep}{3pt}{\def\lst@frametextsep{#1}} -\lst@Key{framerulecolor}{}{\lstKV@OptArg[]{#1}% - {\ifx\@empty##2\@empty - \let\lst@rulecolor\@empty - \else - \ifx\@empty##1\@empty - \def\lst@rulecolor{\color{##2}}% - \else - \def\lst@rulecolor{\color[##1]{##2}}% - \fi - \fi}} -\lst@Key{backgroundcolor}{}{\lstKV@OptArg[]{#1}% - {\ifx\@empty##2\@empty - \let\lst@bkgcolor\@empty - \else - \ifx\@empty##1\@empty - \def\lst@bkgcolor{\color{##2}}% - \else - \def\lst@bkgcolor{\color[##1]{##2}}% - \fi - \fi}} -\lst@Key{framespread}{\z@}{\def\lst@framespread{#1}} -\lst@AddToHook{PreInit} - {\@tempdima\lst@framespread\relax \divide\@tempdima\tw@ - \edef\lst@framextopmargin{\the\@tempdima}% - \let\lst@framexrightmargin\lst@framextopmargin - \let\lst@framexbottommargin\lst@framextopmargin - \advance\@tempdima\lst@xleftmargin\relax - \edef\lst@framexleftmargin{\the\@tempdima}} -\newdimen\lst@innerspread \newdimen\lst@outerspread -\lst@Key{spread}{\z@,\z@}{\lstKV@CSTwoArg{#1}% - {\lst@innerspread##1\relax - \ifx\@empty##2\@empty - \divide\lst@innerspread\tw@\relax - \lst@outerspread\lst@innerspread - \else - \lst@outerspread##2\relax - \fi}} -\lst@AddToHook{BoxUnsafe}{\lst@outerspread\z@ \lst@innerspread\z@} -\lst@Key{wholeline}{false}[t]{\lstKV@SetIf{#1}\lst@ifresetmargins} -\lst@Key{indent}{\z@}{\def\lst@xleftmargin{#1}} -\lst@AddToHook{PreInit} - {\lst@innerspread=-\lst@innerspread - \lst@outerspread=-\lst@outerspread - \ifodd\c@page \advance\lst@innerspread\lst@xleftmargin - \else \advance\lst@outerspread\lst@xleftmargin \fi - \ifodd\c@page - \edef\lst@xleftmargin{\the\lst@innerspread}% - \edef\lst@xrightmargin{\the\lst@outerspread}% - \else - \edef\lst@xleftmargin{\the\lst@outerspread}% - \edef\lst@xrightmargin{\the\lst@innerspread}% - \fi} -\lst@Key{defaultclass}\relax{\def\lst@classoffset{#1}} -\lst@Key{stringtest}\relax{}% dummy -\lst@Key{outputpos}\relax{\lst@outputpos#1\relax\relax} -\lst@Key{stringspaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowstringspaces} -\lst@Key{visisblespaces}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowspaces} -\lst@Key{visibletabs}\relax[t]{\lstKV@SetIf{#1}\lst@ifshowtabs} -\lst@EndAspect -\lst@BeginAspect{fancyvrb} -\@ifundefined{FancyVerbFormatLine} - {\typeout{^^J% - ***^^J% - *** `listings.sty' needs `fancyvrb.sty' right now.^^J% - *** Please ensure its availability and try again.^^J% - ***^^J}% - \batchmode \@@end}{} -\gdef\lstFV@fancyvrb{% - \lst@iffancyvrb - \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine\else - \let\lstFV@FVFL\FancyVerbFormatLine - \let\FancyVerbFormatLine\lstFV@FancyVerbFormatLine - \fi - \else - \ifx\lstFV@FVFL\@undefined\else - \let\FancyVerbFormatLine\lstFV@FVFL - \let\lstFV@FVFL\@undefined - \fi - \fi} -\gdef\lstFV@VerbatimBegin{% - \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine - \lsthk@TextStyle \lsthk@BoxUnsafe - \lsthk@PreSet - \lst@activecharsfalse - \let\normalbaselines\relax -\xdef\lstFV@RestoreData{\noexpand\linewidth\the\linewidth\relax}% - \lst@Init\relax - \lst@ifresetmargins \advance\linewidth-\@totalleftmargin \fi -\lstFV@RestoreData - \everypar{}\global\lst@newlines\z@ - \lst@mode\lst@nomode \let\lst@entermodes\@empty - \lst@InterruptModes -%% D.G. modification begin - Nov. 25, 1998 - \let\@noligs\relax -%% D.G. modification end - \fi} -\gdef\lstFV@VerbatimEnd{% - \ifx\FancyVerbFormatLine\lstFV@FancyVerbFormatLine - \global\setbox\lstFV@gtempboxa\box\@tempboxa - \global\let\@gtempa\FV@ProcessLine - \lst@mode\lst@Pmode - \lst@DeInit - \let\FV@ProcessLine\@gtempa - \setbox\@tempboxa\box\lstFV@gtempboxa - \par - \fi} -\newbox\lstFV@gtempboxa -\lst@AddTo\FV@VerbatimBegin\lstFV@VerbatimBegin -\lst@AddToAtTop\FV@VerbatimEnd\lstFV@VerbatimEnd -\lst@AddTo\FV@LVerbatimBegin\lstFV@VerbatimBegin -\lst@AddToAtTop\FV@LVerbatimEnd\lstFV@VerbatimEnd -\lst@AddTo\FV@BVerbatimBegin\lstFV@VerbatimBegin -\lst@AddToAtTop\FV@BVerbatimEnd\lstFV@VerbatimEnd -\gdef\lstFV@FancyVerbFormatLine#1{% - \let\lst@arg\@empty \lst@FVConvert#1\@nil - \global\lst@newlines\z@ - \vtop{\noindent\lst@parshape - \lst@ReenterModes - \lst@arg \lst@PrintToken\lst@EOLUpdate\lsthk@InitVarsBOL - \lst@InterruptModes}} -\lst@Key{fvcmdparams}% - {\overlay\@ne}% - {\def\lst@FVcmdparams{,#1}} -\lst@Key{morefvcmdparams}\relax{\lst@lAddTo\lst@FVcmdparams{,#1}} -\gdef\lst@FVConvert{\@tempcnta\z@ \lst@FVConvertO@}% -\gdef\lst@FVConvertO@{% - \ifcase\@tempcnta - \expandafter\futurelet\expandafter\@let@token - \expandafter\lst@FVConvert@@ - \else - \expandafter\lst@FVConvertO@a - \fi} -\gdef\lst@FVConvertO@a#1{% - \lst@lAddTo\lst@arg{{#1}}\advance\@tempcnta\m@ne - \lst@FVConvertO@}% -\gdef\lst@FVConvert@@{% - \ifcat\noexpand\@let@token\bgroup \expandafter\lst@FVConvertArg - \else \expandafter\lst@FVConvert@ \fi} -\gdef\lst@FVConvertArg#1{% - {\let\lst@arg\@empty - \lst@FVConvert#1\@nil - \global\let\@gtempa\lst@arg}% - \lst@lExtend\lst@arg{\expandafter{\@gtempa\lst@PrintToken}}% - \lst@FVConvert} -\gdef\lst@FVConvert@#1{% - \ifx \@nil#1\else - \if\relax\noexpand#1% - \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken#1}% - \else - \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% - \fi - \expandafter\lst@FVConvert - \fi} -\gdef\lst@FVConvert@#1{% - \ifx \@nil#1\else - \if\relax\noexpand#1% - \lst@lAddTo\lst@arg{\lst@OutputLostSpace\lst@PrintToken#1}% - \def\lst@temp##1,#1##2,##3##4\relax{% - \ifx##3\@empty \else \@tempcnta##2\relax \fi}% - \expandafter\lst@temp\lst@FVcmdparams,#1\z@,\@empty\relax - \else - \lccode`\~=`#1\lowercase{\lst@lAddTo\lst@arg~}% - \fi - \expandafter\lst@FVConvertO@ - \fi} -\lst@EndAspect -\lst@BeginAspect[keywords,comments,strings,language]{lgrind} -\gdef\lst@LGGetNames#1:#2\relax{% - \lst@NormedDef\lstlang@{#1}\lst@ReplaceInArg\lstlang@{|,}% - \def\lst@arg{:#2}} -\gdef\lst@LGGetValue#1{% - \lst@false - \def\lst@temp##1:#1##2##3\relax{% - \ifx\@empty##2\else \lst@LGGetValue@{#1}\fi} - \expandafter\lst@temp\lst@arg:#1\@empty\relax} -\gdef\lst@LGGetValue@#1{% - \lst@true - \def\lst@temp##1:#1##2:##3\relax{% - \@ifnextchar=\lst@LGGetValue@@{\lst@LGGetValue@@=}##2\relax - \def\lst@arg{##1:##3}}% - \expandafter\lst@temp\lst@arg\relax} -\gdef\lst@LGGetValue@@=#1\relax{\def\lst@LGvalue{#1}} -\gdef\lst@LGGetComment#1#2{% - \let#2\@empty - \lst@LGGetValue{#1b}% - \lst@if - \let#2\lst@LGvalue - \lst@LGGetValue{#1e}% - \ifx\lst@LGvalue\lst@LGEOL - \edef\lstlang@{\lstlang@,commentline={#2}}% - \let#2\@empty - \else - \edef#2{{#2}{\lst@LGvalue}}% - \fi - \fi} -\gdef\lst@LGGetString#1#2{% - \lst@LGGetValue{#1b}% - \lst@if - \let#2\lst@LGvalue - \lst@LGGetValue{#1e}% - \ifx\lst@LGvalue\lst@LGEOL - \edef\lstlang@{\lstlang@,morestringizer=[l]{#2}}% - \else - \ifx #2\lst@LGvalue - \edef\lstlang@{\lstlang@,morestringizer=[d]{#2}}% - \else - \edef\lst@temp{\lst@LGe#2}% - \ifx \lst@temp\lst@LGvalue - \edef\lstlang@{\lstlang@,morestringizer=[b]{#2}}% - \else - \PackageWarning{Listings}% - {String #2...\lst@LGvalue\space not supported}% - \fi - \fi - \fi - \fi} -\gdef\lst@LGDefLang{% - \lst@LGReplace - \let\lstlang@\empty - \lst@LGGetValue{kw}% - \lst@if - \lst@ReplaceInArg\lst@LGvalue{{ },}% - \edef\lstlang@{\lstlang@,keywords={\lst@LGvalue}}% - \fi - \lst@LGGetValue{oc}% - \lst@if - \edef\lstlang@{\lstlang@,sensitive=f}% - \fi - \lst@LGGetValue{id}% - \lst@if - \edef\lstlang@{\lstlang@,alsoletter=\lst@LGvalue}% - \fi - \lst@LGGetComment a\lst@LGa - \lst@LGGetComment c\lst@LGc - \ifx\lst@LGa\@empty - \ifx\lst@LGc\@empty\else - \edef\lstlang@{\lstlang@,singlecomment=\lst@LGc}% - \fi - \else - \ifx\lst@LGc\@empty - \edef\lstlang@{\lstlang@,singlecomment=\lst@LGa}% - \else - \edef\lstlang@{\lstlang@,doublecomment=\lst@LGc\lst@LGa}% - \fi - \fi - \lst@LGGetString s\lst@LGa - \lst@LGGetString l\lst@LGa - \lst@LGGetValue{tc}% - \lst@if - \edef\lstlang@{\lstlang@,lgrindef=\lst@LGvalue}% - \fi - \expandafter\xdef\csname\@lst LGlang@\lst@language@\endcsname - {\noexpand\lstset{\lstlang@}}% - \lst@ReplaceInArg\lst@arg{{: :}:}\let\lst@LGvalue\@empty - \expandafter\lst@LGDroppedCaps\lst@arg\relax\relax - \ifx\lst@LGvalue\@empty\else - \PackageWarningNoLine{Listings}{Ignored capabilities for - \space `\lst@language@' are\MessageBreak\lst@LGvalue}% - \fi} -\gdef\lst@LGDroppedCaps#1:#2#3{% - \ifx#2\relax - \lst@RemoveCommas\lst@LGvalue - \else - \edef\lst@LGvalue{\lst@LGvalue,#2#3}% - \expandafter\lst@LGDroppedCaps - \fi} -\begingroup -\catcode`\/=0 -\lccode`\z=`\:\lccode`\y=`\^\lccode`\x=`\$\lccode`\v=`\| -\catcode`\\=12\relax -/lowercase{% -/gdef/lst@LGReplace{/lst@ReplaceInArg/lst@arg - {{\:}{z }{\^}{y}{\$}{x}{\|}{v}{ \ }{ }{:\ :}{:}{\ }{ }{\(}({\)})}} -/gdef/lst@LGe{\e} -} -/endgroup -\gdef\lst@LGRead#1\par{% - \lst@LGGetNames#1:\relax - \def\lst@temp{endoflanguagedefinitions}% - \ifx\lstlang@\lst@temp - \let\lst@next\endinput - \else - \expandafter\lst@IfOneOf\lst@language@\relax\lstlang@ - {\lst@LGDefLang \let\lst@next\endinput}% - {\let\lst@next\lst@LGRead}% - \fi - \lst@next} -\lst@Key{lgrindef}\relax{% - \lst@NormedDef\lst@language@{#1}% - \begingroup - \@ifundefined{lstLGlang@\lst@language@}% - {\everypar{\lst@LGRead}% - \catcode`\\=12\catcode`\{=12\catcode`\}=12\catcode`\%=12% - \catcode`\#=14\catcode`\$=12\catcode`\^=12\catcode`\_=12\relax - \input{\lstlgrindeffile}% - }{}% - \endgroup - \@ifundefined{lstLGlang@\lst@language@}% - {\PackageError{Listings}% - {LGrind language \lst@language@\space undefined}% - {The language is not loadable. \@ehc}}% - {\lsthk@SetLanguage - \csname\@lst LGlang@\lst@language@\endcsname}} -\@ifundefined{lstlgrindeffile} - {\lst@UserCommand\lstlgrindeffile{lgrindef.}}{} -\lst@EndAspect -\lst@BeginAspect[keywords]{hyper} -\lst@Key{hyperanchor}\hyper@@anchor{\let\lst@hyperanchor#1} -\lst@Key{hyperlink}\hyperlink{\let\lst@hyperlink#1} -\lst@InstallKeywords{h}{hyperref}{}\relax{} - {\begingroup - \let\lst@UM\@empty \xdef\@gtempa{\the\lst@token}% - \endgroup - \lst@GetFreeMacro{lstHR@\@gtempa}% - \global\expandafter\let\lst@freemacro\@empty - \@tempcntb\@tempcnta \advance\@tempcntb\m@ne - \edef\lst@alloverstyle##1{% - \let\noexpand\lst@alloverstyle\noexpand\@empty - \noexpand\smash{\raise\baselineskip\hbox - {\noexpand\lst@hyperanchor{lst.\@gtempa\the\@tempcnta}% - {\relax}}}% - \ifnum\@tempcnta=\z@ ##1\else - \noexpand\lst@hyperlink{lst.\@gtempa\the\@tempcntb}{##1}% - \fi}% - } - od -\lst@EndAspect -\endinput -%% -%% End of file `lstmisc.sty'. diff --git a/Documentation/PhysicsTools/lstpatch.sty b/Documentation/PhysicsTools/lstpatch.sty deleted file mode 100644 index 80b3f00e0ef..00000000000 --- a/Documentation/PhysicsTools/lstpatch.sty +++ /dev/null @@ -1,246 +0,0 @@ -%% -%% This is file `lstpatch.sty', generated manually. -%% -%% (w)(c) 2004 Carsten Heinz -%% -%% This file may be distributed under the terms of the LaTeX Project Public -%% License from CTAN archives in directory macros/latex/base/lppl.txt. -%% Either version 1.0 or, at your option, any later version. -%% -%% Send comments and ideas on the package, error reports and additional -%% programming languages to <cheinz@gmx.de>. -%% -%% -%% The following features are added to the base package. -%% -%% 1.3a (2004/09/07) -%% -%% a) H I G H L Y E X P E R I M E N T A L -%% -%% Use the options -%% rangeprefix=<prefix for begin and end of range> -%% rangesuffix=<suffix for begin and end of range> -%% -%% rangebeginprefix=<prefix for begin of range> -%% rangebeginsuffix=<suffix for begin of range> -%% -%% rangeendprefix=<prefix for end of range> -%% rangeendsuffix=<suffix for end of range> -%% -%% includerangemarker=true|false -%% together with -%% firstline=<begin marker> -%% lastline=<end marker> -%% or -%% linerange={<begin marker 1>-<end marker 1>, -%% <begin marker 2>-<end marker 2>, ...} -%% The according markers in the source code are -%% <prefix><marker><suffix> -%% for begin respectively end of range. Moreover, one can use -%% includerangemarker=true|false -%% to show or hide the range markers in the output. -%% -%% -\lst@CheckVersion{1.3} -{\typeout{^^J% - ***^^J% - *** This is a patch for listings 1.3, but you're using^^J% - *** version \lst@version.^^J% - ***^^J - *** Patch file not loaded.^^J% - ***^^J}% - \endinput -} -\def\fileversion{1.3a} -\def\filedate{2004/09/07} -\ProvidesFile{lstpatch.sty}[\filedate\space\fileversion\space (Carsten Heinz)] -% -% 0) Insert % after #1. -\def\@@xbitor #1{\@tempcntb \count#1% - \ifnum \@tempcnta =\z@ - \else - \divide\@tempcntb\@tempcnta - \ifodd\@tempcntb \@testtrue\fi - \fi} -% -% a) Let's start with the options: -\lst@Key{rangeprefix}\relax{\def\lst@rangebeginprefix{#1}% - \def\lst@rangeendprefix{#1}} -\lst@Key{rangesuffix}\relax{\def\lst@rangebeginsuffix{#1}% - \def\lst@rangeendsuffix{#1}} -\lst@Key{rangebeginprefix}{}{\def\lst@rangebeginprefix{#1}} -\lst@Key{rangebeginsuffix}{}{\def\lst@rangebeginsuffix{#1}} -\lst@Key{rangeendprefix}{}{\def\lst@rangeendprefix{#1}} -\lst@Key{rangeendsuffix}{}{\def\lst@rangeendsuffix{#1}} -\lst@Key{includerangemarker}{true}[t]{\lstKV@SetIf{#1}\lst@ifincluderangemarker} -% -% The key is a redefinition of \lst@GLI@ checking for numbers. -\def\lst@GLI@#1-#2-#3\@nil{% - \lst@IfNumber{#1}% - {\ifx\@empty#1\@empty - \let\lst@firstline\@ne - \else - \def\lst@firstline{#1\relax}% - \fi - \ifx\@empty#3\@empty - \def\lst@lastline{9999999\relax}% - \else - \ifx\@empty#2\@empty - \let\lst@lastline\lst@firstline - \else - \def\lst@lastline{#2\relax}% - \fi - \fi}% -% -% If we've found a general marker, we set firstline and lastline to 9999999. -% This prevents (almost) anything to be printed for now. - {\def\lst@firstline{9999999\relax}% - \let\lst@lastline\lst@firstline -% -% We add the prefixes and suffixes to the markers. - \let\lst@rangebegin\lst@rangebeginprefix - \lst@AddTo\lst@rangebegin{#1}\lst@Extend\lst@rangebegin\lst@rangebeginsuffix - \ifx\@empty#3\@empty - \let\lst@rangeend\lst@rangeendprefix - \lst@AddTo\lst@rangeend{#1}\lst@Extend\lst@rangeend\lst@rangeendsuffix - \else - \ifx\@empty#2\@empty - \let\lst@rangeend\@empty - \else - \let\lst@rangeend\lst@rangeendprefix - \lst@AddTo\lst@rangeend{#2}\lst@Extend\lst@rangeend\lst@rangeendsuffix - \fi - \fi -% The following definition will be executed in the SelectCharTable hook -% and here right now if we are already processing a listing. - \global\def\lst@DefRange{\expandafter\lst@CArgX\lst@rangebegin\relax\lst@DefRangeB}% - \ifnum\lst@mode=\lst@Pmode \expandafter\lst@DefRange \fi}} -% \lst@DefRange is not inserted via a hook anymore. Instead it is now called -% directly from \lst@SelectCharTable. This was necessary to get rid of an -% interference with the escape-to-LaTeX-feature. The bug was reported by -% \lsthelper{Michael~Bachmann}{2004/07/21}{Keine label-Referenzierung -% m\"oglich...}. Another chance is due to the same bug: \lst@DefRange is -% redefined globally when the begin of code is found, see below. The bug was -% reported by \lsthelper{Tobias~Rapp}{2004/04/06}{undetected end of range if -% listing crosses page break} \lsthelper{Markus~Luisser}{2004/08/13}{Bug mit -% 'linerangemarker' in umgebrochenen listings} -%\lst@AddToHook{SelectCharTable}{\lst@DefRange} -\lst@AddToHookExe{DeInit}{\global\let\lst@DefRange\@empty} -% -% Actually defining the marker (via \lst@GLI@, \lst@DefRange, \lst@CArgX as -% seen above) is similar to \lst@DefDelimB---except that we unfold the first -% parameter and use different <execute>, <pre>, and <post> statements. -\def\lst@DefRangeB#1#2{\lst@DefRangeB@#1#2} -\def\lst@DefRangeB@#1#2#3#4{% - \lst@CDef{#1{#2}{#3}}#4{}% - {\lst@ifincluderangemarker - \lst@LeaveMode - \let#1#4% - \lst@DefRangeEnd - \lst@InitLstNumber - \else - \@tempcnta\lst@lineno \advance\@tempcnta\@ne - \edef\lst@firstline{\the\@tempcnta\relax}% - \gdef\lst@OnceAtEOL{\let#1#4\lst@DefRangeEnd}% - \lst@InitLstNumber - \fi - \global\let\lst@DefRange\lst@DefRangeEnd - \lst@CArgEmpty}% - \@empty} -% -% Modify labels and define |\lst@InitLstNumber| used above. -% \lsthelper{Omair-Inam~Abdul-Matin}{2004/05/10}{experimental linerange -% feature does not work with firstnumber} -\def\lstpatch@labels{% -\gdef\lst@SetFirstNumber{% - \ifx\lst@firstnumber\@undefined - \@tempcnta 0\csname\@lst no@\lst@intname\endcsname\relax - \ifnum\@tempcnta=\z@ \else - \lst@nololtrue - \advance\@tempcnta\lst@advancenumber - \edef\lst@firstnumber{\the\@tempcnta\relax}% - \fi - \fi}% -} -\lst@AddToAtTop\lsthk@PreInit - {\ifx\lst@firstnumber\@undefined - \def\lst@firstnumber{\lst@lineno}% - \fi} -\def\lst@InitLstNumber{% - \global\c@lstnumber\lst@firstnumber - \global\advance\c@lstnumber\lst@advancenumber - \global\advance\c@lstnumber-\lst@advancelstnum - \ifx \lst@firstnumber\c@lstnumber - \global\advance\c@lstnumber-\lst@advancelstnum - \fi} -% -% The end-marker is defined if and only if it's not empty. The definition is -% similar to \lst@DefDelimE---with the above exceptions and except that we -% define the re-entry point \lst@DefRangeE@@ as it is defined in the new -% version of \lst@MProcessListing above. -\def\lst@DefRangeEnd{% - \ifx\lst@rangeend\@empty\else - \expandafter\lst@CArgX\lst@rangeend\relax\lst@DefRangeE - \fi} -\def\lst@DefRangeE#1#2{\lst@DefRangeE@#1#2} -\def\lst@DefRangeE@#1#2#3#4{% - \lst@CDef{#1#2{#3}}#4{}% - {\let#1#4% - \edef\lst@lastline{\the\lst@lineno\relax}% - \lst@DefRangeE@@}% - \@empty} -\def\lst@DefRangeE@@#1\@empty{% - \lst@ifincluderangemarker - #1\lst@XPrintToken - \fi - \lst@LeaveModeToPmode - \lst@BeginDropInput{\lst@Pmode}} -% -\def\lst@LeaveModeToPmode{% - \ifnum\lst@mode=\lst@Pmode - \expandafter\lsthk@EndGroup - \else - \expandafter\egroup\expandafter\lst@LeaveModeToPmode - \fi} -% -% Eventually we shouldn't forget to install \lst@OnceAtEOL, which must -% also be called in \lst@MSkipToFirst. -\lst@AddToHook{EOL}{\lst@OnceAtEOL\global\let\lst@OnceAtEOL\@empty} -\gdef\lst@OnceAtEOL{}% Init -\def\lst@MSkipToFirst{% - \global\advance\lst@lineno\@ne - \ifnum \lst@lineno=\lst@firstline - \def\lst@next{\lst@LeaveMode \global\lst@newlines\z@ - \lst@OnceAtEOL \global\let\lst@OnceAtEOL\@empty - \lst@InitLstNumber % Added to work with modified \lsthk@PreInit. - \lsthk@InitVarsBOL - \lst@BOLGobble}% - \expandafter\lst@next - \fi} -\def\lst@SkipToFirst{% - \ifnum \lst@lineno<\lst@firstline - \def\lst@next{\lst@BeginDropInput\lst@Pmode - \lst@Let{13}\lst@MSkipToFirst - \lst@Let{10}\lst@MSkipToFirst}% - \expandafter\lst@next - \else - \expandafter\lst@BOLGobble - \fi} -% -% Finally the service macro \lst@IfNumber: -\def\lst@IfNumber#1{% - \ifx\@empty#1\@empty - \let\lst@next\@firstoftwo - \else - \lst@IfNumber@#1\@nil - \fi - \lst@next} -\def\lst@IfNumber@#1#2\@nil{% - \let\lst@next\@secondoftwo - \ifnum`#1>47\relax \ifnum`#1>57\relax\else - \let\lst@next\@firstoftwo - \fi\fi} -%% -\endinput -%% -%% End of file `lstpatch.sty'. diff --git a/Documentation/PhysicsTools/mem10.clo b/Documentation/PhysicsTools/mem10.clo deleted file mode 100644 index 0d84de7ecd6..00000000000 --- a/Documentation/PhysicsTools/mem10.clo +++ /dev/null @@ -1,109 +0,0 @@ -%% -%% This is file `mem10.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `10pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem10.clo}[2002/07/27 v0.2 memoir class 10pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@xpt\@xiipt - \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@ixpt{11}% - \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus2\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@viiipt{9.5}% - \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus\p@ - \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 3\p@ \@plus\p@ \@minus\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@vpt{6}} -\newcommand{\tiny}{\@setfontsize\tiny\@vipt{7}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt{8}} -\newcommand{\large}{\@setfontsize\large\@xipt{13.6}} -\newcommand{\Large}{\@setfontsize\Large\@xiipt{14.5}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xivpt{18}} -\newcommand{\huge}{\@setfontsize\huge\@xviipt{22}} -\newcommand{\Huge}{\@setfontsize\Huge\@xxpt{25}} -\newcommand{\HUGE}{\@setfontsize\HUGE\@xxvpt{30}} -\setlength{\onelineskip}{\@xiipt\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{15\p@} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{12\p@} -\setlength\headsep{.25in} -\setlength\topskip{10\p@} -\setlength\footskip{.35in} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{6.65\p@} -\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{8\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{8\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{300\p@} % standard 345pt -\setlength\xlvchars{204\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{5\p@} -\endinput -%% -%% End of file `mem10.clo'. diff --git a/Documentation/PhysicsTools/mem11.clo b/Documentation/PhysicsTools/mem11.clo deleted file mode 100644 index 01743839423..00000000000 --- a/Documentation/PhysicsTools/mem11.clo +++ /dev/null @@ -1,109 +0,0 @@ -%% -%% This is file `mem11.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `11pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem11.clo}[2002/07/27 v0.2 memoir class 11pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@xipt{13.6}% - \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@xpt\@xiipt - \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 6\p@ \@plus2\p@ \@minus2\p@ - \parsep 3\p@ \@plus2\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@ixpt{11}% - \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ - \abovedisplayshortskip \z@ \@plus\p@ - \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 4\p@ \@plus2\p@ \@minus2\p@ - \parsep 2\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@vipt{7}} -\newcommand{\tiny}{\@setfontsize\tiny\@viipt{8}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}} -\newcommand{\large}{\@setfontsize\large\@xiipt{14.5}} -\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}} -\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}} -\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}} -\let\HUGE=\Huge -\setlength{\onelineskip}{13.6\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{17\p@} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{13.6\p@} -\setlength\headsep{.275in} -\setlength\topskip{11\p@} -\setlength\footskip{.38in} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{7.7\p@} -\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{8\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{8\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{324\p@} % standard 360pt -\setlength\xlvchars{216\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{5\p@} -\endinput -%% -%% End of file `mem11.clo'. diff --git a/Documentation/PhysicsTools/mem12.clo b/Documentation/PhysicsTools/mem12.clo deleted file mode 100644 index 606eefecc64..00000000000 --- a/Documentation/PhysicsTools/mem12.clo +++ /dev/null @@ -1,109 +0,0 @@ -%% -%% This is file `mem12.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `12pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem12.clo}[2004/03/12 v0.3 memoir class 12pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@xiipt{14.5}% - \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@xipt{13.6}% - \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 9\p@ \@plus3\p@ \@minus5\p@ - \parsep 4.5\p@ \@plus2\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@xpt\@xiipt - \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 6\p@ \@plus2\p@ \@minus2\p@ - \parsep 3\p@ \@plus2\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@viipt{8}} -\newcommand{\tiny}{\@setfontsize\tiny\@viiipt{9.5}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@ixpt\@xpt} -\newcommand{\large}{\@setfontsize\large\@xivpt{18}} -\newcommand{\Large}{\@setfontsize\Large\@xviipt{22}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{25}} -\newcommand{\huge}{\@setfontsize\huge\@xxvpt{30}} -\let\Huge=\huge -\let\HUGE=\huge -\setlength{\onelineskip}{14.5\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{1.5em} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{14\p@} -\setlength\headsep{.275in} -\setlength\topskip{12\p@} -\setlength\footskip{30\p@} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{8.4\p@} -\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{10\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{10\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{336\p@} % standard 390pt -\setlength\xlvchars{240\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{7\p@} -\endinput -%% -%% End of file `mem12.clo'. diff --git a/Documentation/PhysicsTools/mem14.clo b/Documentation/PhysicsTools/mem14.clo deleted file mode 100644 index 09d2be28343..00000000000 --- a/Documentation/PhysicsTools/mem14.clo +++ /dev/null @@ -1,109 +0,0 @@ -%% -%% This is file `mem14.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `14pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem14.clo}[2004/03/12 v0.3 memoir class 14pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@xivpt{17.5}% - \abovedisplayskip 14\p@ \@plus3\p@ \@minus8\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 7\p@ \@plus3.5\p@ \@minus3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@xiipt{14.5}% - \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 11\p@ \@plus4\p@ \@minus6\p@ - \parsep 6\p@ \@plus3\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@xipt{13.6}% - \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \parsep 4\p@ \@plus3\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@viiipt{9.5}} -\newcommand{\tiny}{\@setfontsize\tiny\@ixpt{10}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@xpt{12}} -\newcommand{\large}{\@setfontsize\large\@xviipt{22}} -\newcommand{\Large}{\@setfontsize\Large\@xxpt{25}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xxvpt{30}} -\let\huge=\LARGE -\let\Huge=\LARGE -\let\HUGE=\LARGE -\setlength{\onelineskip}{17.5\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{1.5em} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{17.5\p@} -\setlength\headsep{.30in} -\setlength\topskip{14.4\p@} -\setlength\footskip{.4in} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{10.0\p@} %% ???????? -\setlength{\skip\footins}{13\p@ \@plus 4\p@ \@minus 2\p@} -\setlength\floatsep {14\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\textfloatsep{20\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{10\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{12\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{408\p@} % -\setlength\xlvchars{288\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{7\p@} -\endinput -%% -%% End of file `mem14.clo'. diff --git a/Documentation/PhysicsTools/mem17.clo b/Documentation/PhysicsTools/mem17.clo deleted file mode 100644 index ff89bdb23be..00000000000 --- a/Documentation/PhysicsTools/mem17.clo +++ /dev/null @@ -1,110 +0,0 @@ -%% -%% This is file `mem17.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `17pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem17.clo}[2004/03/12 v0.2 memoir class 17pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@xviipt{22}% - \abovedisplayskip 15\p@ \@plus4\p@ \@minus8\p@ - \abovedisplayshortskip \z@ \@plus4\p@ - \belowdisplayshortskip 8\p@ \@plus4\p@ \@minus3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@xivpt{17}% - \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 7\p@ \@plus4\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 11\p@ \@plus4\p@ \@minus6\p@ - \parsep 6\p@ \@plus3\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@xiipt{14}% - \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ - \abovedisplayshortskip \z@ \@plus3\p@ - \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 6.5\p@ \@plus3.5\p@ \@minus3\p@ - \parsep 4\p@ \@plus3\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@ixpt{10}} -\newcommand{\tiny}{\@setfontsize\tiny\@xpt{12}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@xipt{13.6}} -\newcommand{\large}{\@setfontsize\large\@xxpt{25}} -\newcommand{\Large}{\@setfontsize\Large\@xxvpt{30}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xxvpt{30}} -\let\LARGE=\Large -\let\huge=\Large -\let\Huge=\Large -\let\HUGE=\Large -\setlength{\onelineskip}{22\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{1.5em} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{22\p@} -\setlength\headsep{.30in} -\setlength\topskip{14.4\p@} -\setlength\footskip{.4in} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{12\p@} %% ???????? -\setlength{\skip\footins}{14\p@ \@plus 5\p@ \@minus 3\p@} -\setlength\floatsep {15\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\textfloatsep{25\p@ \@plus 5\p@ \@minus 5\p@} -\setlength\intextsep {16\p@ \@plus 5\p@ \@minus 5\p@} -\setlength\dblfloatsep {15\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\dbltextfloatsep{25\p@ \@plus 5\p@ \@minus 5\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{12\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{12\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{444\p@} % -\setlength\xlvchars{312\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{10\p@} -\endinput -%% -%% End of file `mem17.clo'. diff --git a/Documentation/PhysicsTools/mem9.clo b/Documentation/PhysicsTools/mem9.clo deleted file mode 100644 index 9ea2a1343b4..00000000000 --- a/Documentation/PhysicsTools/mem9.clo +++ /dev/null @@ -1,109 +0,0 @@ -%% -%% This is file `mem9.clo', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `9pt') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mem9.clo}[2004/03/12 v0.3 memoir class 9pt size option] - -\renewcommand{\normalsize}{% - \@setfontsize\normalsize\@ixpt\@xpt - \abovedisplayskip 9\p@ \@plus 2\p@ \@minus 4.5\p@ - \abovedisplayshortskip \z@ \@plus 3\p@ - \belowdisplayshortskip 5.5\p@ \@plus 2.5\p@ \@minus 3\p@ - \belowdisplayskip \abovedisplayskip - \let\@listi\@listI} -\normalsize -\newcommand{\small}{% - \@setfontsize\small\@viiipt{9.5}% - \abovedisplayskip 6\p@ \@plus 2\p@ \@minus 4\p@ - \abovedisplayshortskip \z@ \@plus 2\p@ - \belowdisplayshortskip 4\p@ \@plus 2\p@ \@minus 2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 2\p@ \@plus 2\p@ \@minus 2\p@ - \parsep 1\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\footnotesize}{% - \@setfontsize\footnotesize\@viipt{8}% - \abovedisplayskip 6\p@ \@plus 2\p@ \@minus 4\p@ - \abovedisplayshortskip \z@ \@plus 2\p@ - \belowdisplayshortskip 4\p@ \@plus 2\p@ \@minus 2\p@ - \def\@listi{\leftmargin\leftmargini - \topsep 2\p@ \@plus 2\p@ \@minus 2\p@ - \parsep 1\p@ \@plus\p@ \@minus\p@ - \itemsep \parsep -%% \itemindent\z@ - }% - \belowdisplayskip \abovedisplayskip -} -\newcommand{\miniscule}{\@setfontsize\miniscule\@vpt{6}} -\newcommand{\tiny}{\@setfontsize\tiny\@vpt{6}} -\newcommand{\scriptsize}{\@setfontsize\scriptsize\@vipt{7}} -\newcommand{\large}{\@setfontsize\large\@xpt{12}} -\newcommand{\Large}{\@setfontsize\Large\@xipt{13.6}} -\newcommand{\LARGE}{\@setfontsize\LARGE\@xiipt{14.5}} -\newcommand{\huge}{\@setfontsize\huge\@xivpt{18}} -\newcommand{\Huge}{\@setfontsize\Huge\@xviipt{22}} -\newcommand{\HUGE}{\@setfontsize\HUGE\@xxpt{25}} -\setlength{\onelineskip}{\@xpt\p@} -\if@twocolumn - \setlength\parindent{1em} -\else - \setlength\parindent{12\p@} -\fi -\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} -\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} -\setlength\headheight{11\p@} -\setlength\headsep{.225in} -\setlength\topskip{9\p@} -\setlength\footskip{.33in} -\setlength\maxdepth{.5\topskip} -\setlength\@maxdepth\maxdepth -\setlength\footnotesep{6.0\p@} %% ???????? -\setlength{\skip\footins}{8\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} -\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} -\setlength\@fptop{0\p@ \@plus 1fil} -\setlength\@fpsep{9\p@ \@plus 2fil} -\setlength\@fpbot{0\p@ \@plus 1fil} -\setlength\@dblfptop{0\p@ \@plus 1fil} -\setlength\@dblfpsep{7\p@ \@plus 2fil} -\setlength\@dblfpbot{0\p@ \@plus 1fil} -\setlength\lxvchars{276\p@} % -\setlength\xlvchars{192\p@} % -\if@twocolumn - \setlength\marginparsep{10\p@} -\else - \setlength\marginparsep{7\p@} -\fi -\setlength{\marginparpush}{5\p@} -\endinput -%% -%% End of file `mem9.clo'. diff --git a/Documentation/PhysicsTools/memarticle.cls b/Documentation/PhysicsTools/memarticle.cls deleted file mode 100644 index 2fa1e4b3781..00000000000 --- a/Documentation/PhysicsTools/memarticle.cls +++ /dev/null @@ -1,329 +0,0 @@ -%------------------------------------------------------------ -% Identification -%------------------------------------------------------------ -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{memarticle}[2004/08/24] - -%------------------------------------------------------------ -% Initial code -%------------------------------------------------------------ -\RequirePackage{ifthen} -\newboolean{draftmode} - -%------------------------------------------------------------ -% Declaration of options -%------------------------------------------------------------ -\DeclareOption{draftmode}{\setboolean{draftmode}{true}} - -%------------------------------------------------------------ -% Execution of options -%------------------------------------------------------------ -\ProcessOptions - -%------------------------------------------------------------ -% Package loading -%------------------------------------------------------------ -\LoadClass[11pt,article,letterpaper,twoside]{memoir} - -\usepackage - { amsfonts% extra mathematical fonts - , bookman% still the best -% , lucidabr% -% , palatino% -% , pxfonts% -% , mathpazo% - , booktabs% "publication quality tables" - , color% color capability - , cpplistings% display code - , graphicx% incorporate images - , ifthen% conditional source - , xspace% space character unless punctuation follows - , rcs% RCS tags made available in LaTeX - , varioref% More flexible cross-references - } - -\usepackage% - [ pdfpagelabels% -% , pdftex% - , dvipdfm% -% , dvips - , pdfstartview={FitV}% - , pdfpagemode={None}% - , pdfpagelayout=Facing% - ]% - {hyperref} - -\usepackage{memhfixc}% ensure hyperref/memoir compatability - -%------------------------------------------------------------ -% Main code -%------------------------------------------------------------ - -\ifthenelse{\boolean{draftmode}} - {% - \definecolor{draftcolor}{rgb}{1.0,1.0,0.5}% Yellow - \usepackage[draft]{pdfdraftcopy} %"DRAFT" watermark - \draftstring{DRAFT \RCSRevision} - \draftcolor{draftcolor} - \draftfontfamily{ptm}%{hlh} - \draftfontsize{100} - \draftangle{45} -% \draftfontattrib{\upshape} - }{} - -%\renewcommand{\chapterautorefname}{\S}% use section symbol to refer to chapters -%\renewcommand{\sectionautorefname}{\S}% use section symbol to refer to sections - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% General document parameters and settings: - -%\settypeblocksize{52\onelineskip}{39pc}{*} % for 10-pt type -\settypeblocksize{47\onelineskip}{39pc}{*} % for 11-pt type -\setlrmargins{*}{*}{1} -\setulmargins{*}{*}{1} - -%specify common hyperref options -\hypersetup{% - anchorcolor=black% - , backref=true% - , bookmarks=true% - , bookmarksnumbered=true% - , bookmarksopen=false% - , bookmarksopenlevel=1% - , breaklinks=true% - , citecolor=blue% - , colorlinks=true% - , draft=false% - , filecolor=blue% - , linkcolor=blue% - , linktocpage=true% - , menucolor=blue% - , plainpages=false% - , urlcolor=blue% - } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Table of contents parameters: - -\ifthenelse{\boolean{draftmode}} -{% - \maxtocdepth{subsubsection} -}{% - \maxtocdepth{chapter} -} - -\maxsecnumdepth{subsubsection} -\setlength{\cftbeforechapterskip}{0in} -\setlength{\cftbeforesectionskip}{0in} - -\setlength {\parskip }{.5\baselineskip} -\addtolength{\footnotesep }{.5\baselineskip} -\checkandfixthelayout - -\vfuzz2pt % don't report over-full v-boxes if over-edge is small -\hfuzz2pt % don't report over-full h-boxes if over-edge is small - -\clubpenalty=10000% discourage widows -\widowpenalty=10000% discourage widows -\displaywidowpenalty=10000% discourage widows - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Document's page style -% -% If [draftmode] was specified, we put RCS revision information on -% the titlepage and on the odd-numbered page headers. -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand{\docversion}{Revision~\RCSRevision} - -\setlength{\headwidth}{\textwidth} -\makepagestyle {memarticlepage} -\makerunningwidth{memarticlepage}{\headwidth} -\makeheadrule {memarticlepage}{\headwidth}{\normalrulethickness} -\makerunningwidth{memarticlepage}{\headwidth} - -\ifthenelse{\boolean{draftmode}} -{% -\makeoddhead {memarticlepage}% - {\normalfont\bfseries\shorttitle\ (Rev.~\RCSRevision)}% - {}% - {\normalfont\bfseries\thepage} -\makeevenhead {memarticlepage}% - {\normalfont\bfseries\thepage}% - {}% - {\normalfont\bfseries \docnumber} -}{% -\makeoddhead {memarticlepage}% - {\normalfont\bfseries\shorttitle}% - {}% - {\normalfont\bfseries\thepage} -\makeevenhead {memarticlepage}% - {\normalfont\bfseries\thepage}% - {}% - {\normalfont\bfseries \docnumber} -} - -\pagestyle {memarticlepage} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% New commands: - -\newcommand{\colorrule}[1]% - {\color{#1}\hrulefill\normalcolor} - -\newcommand{\noindentcolorrule}[1]% - {\noindent\colorrule{#1}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Formatting: - -\newcommand{\term}[1]% format terminology in italicized font - {\textit{#1}\xspace} - -\newcommand{\spec}[1]% format special words in small caps - {\textsc{\lowercase{#1}}\xspace} - -\newcommand{\classname}[1]% format class names in italics - {\textit{#1}\xspace} - -\newcommand{\conceptname}[1]% format concept names in sans-serif - {\textsf{#1}\xspace} - -\newcommand{\productname}[1]% format product names in small caps - {\textsc{#1}\xspace} - -\newcommand{\patternname}[1] - {\textsf{#1}\xspace} - -% This seems to be extraneous, and is now deprecated. -%\newcommand{\important}[1]% important callouts in bold red -% {\textbf{\color{red}#1}\xspace} - -\newcommand{\code}[1]% inlined (non-C++ code)?, filenames, etc. - {\texttt{#1}\xspace} - - -\newcommand{\cpp}% 'C++' - {C\kern-0.15ex{+}\kern-0.1ex{+}\xspace} - -\newenvironment{fixme}% format notes during document preparation - {\sffamily\slshape\color{red}}% - {} % \rmfamily\upshape\normalcolor - -\newenvironment{signednote}[1]% format addition attributed to an author - {\vskip\parskip\hrule height .1pt depth .1pt \slshape Commentary from:~#1 \upshape\vskip\parskip}% - {\vskip 0.5\parskip \hrule height .1pt depth .1pt} - -%---------------------------------------- -% Unanswered questions. -% These are: -% 1) typeset in their own environment -% 2) written to a contents listing (similar to 'list of figures') -% 3) numbered by their own numbering scheme -% -% Note that the question environment is *not* a floating environment. -%---------------------------------------- -\newcommand{\listquestionname}{List of Unanswered Questions} -\newlistof{listofquestions}{qst}{\listquestionname} -\newcounter{nquestion} -\newlistentry{nquestion}{qst}{0} -%\renewcommand{\thequestion}{\arabic{nquestion}} -\newenvironment{question}[1]% - {% - \fquestion{#1}% - \newlength{\oldparskip}% - \setlength{\oldparskip}{\parskip}% - \newlength{\oldparindent}% - \setlength{\oldparindent}{\parindent}% - \begin{center}% - \begin{minipage}{0.85\textwidth}% - \setlength{\parindent}{\oldparindent}% - \setlength{\parskip}{\oldparskip}% - }% - {\end{minipage}\end{center}} - -\newcommand{\fquestion}[1]{% format unanswered questions; list created - \refstepcounter{nquestion}% - \par\noindent\textbf{Unanswered Question \thenquestion}: {#1}% - \addcontentsline{qst}{nquestion}{\protect\numberline{\thenquestion}#1}% -} - - -\newenvironment{program}% - {\begin{fprogram}[!htb]% - \begin{center}% - \precaption{\rule{\linewidth}{0.4pt}\par\vspace{2mm}}% - \postcaption{\rule{\linewidth}{0.4pt}}% - \captiontitlefont{\small\sffamily}% - \begin{minipage}[b]{13.5cm}% - }% - {\hrule\end{minipage}\end{center}% - \end{fprogram}% - } - - -%---------------------------------------- - -\newcommand{\approved}[1]{\textcolor{magenta}{\textbf{Approved on #1}}} - -\newcommand{\struct}{\cppcode{struct}} -\newcommand{\class}{\cppcode{class}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Symbols: - -\newcommand{\middot}{$\cdot$\xspace}% raised dot - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Abbreviations for general use: - -\newcommand{\adhoc}{\textit{ad hoc}\xspace}% ad hoc -\newcommand{\eg }{\textit{e.g.},\xspace}% e.g., -\newcommand{\etal }{\textit{et al.}\xspace}% et al. -\newcommand{\etc }{\textit{etc}\xspace}% etc. -\newcommand{\ie }{\textit{i.e.},\xspace}% i.e., -\newcommand{\qv }{\textit{q.v.}\xspace}% q.v. -\newcommand{\sic }{\textit{sic}\xspace}% sic -\newcommand{\via }{\textit{via}\xspace}% via -\newcommand{\viz }{\textit{viz.}\xspace}% viz. - -\setlength{\epigraphwidth}{.65\textwidth} -\setlength{\epigraphrule}{0pt} - -\epigraphtextposition{flushright} - -\newcommand{\topmatter}% -{% -\flushbottom -\raggedbottomsectiontrue -\thispagestyle{empty} -\pagenumbering{arabic} - -\begin{center} - {\HUGE\doctitle} - { \vskip\baselineskip } - { \authors } \\ -\ifthenelse{\boolean{draftmode}}% - {\docversion \\} % print document revision for drafts - { } % do not print doc revision for final - \docnumber -\end{center} - -\noindentcolorrule{Red} - -% ---------------------------------------------------------------------- -% -% Table of Contents: -% -%\begin{figure*}[h] -%\centering\includegraphics[width=\linewidth]{pseudohaje.png} -%\end{figure*} - -\tableofcontents* -\listoffigures* -\listofquestions* -%\nobibintoc -\noindentcolorrule{Red} -} diff --git a/Documentation/PhysicsTools/memhfixc.sty b/Documentation/PhysicsTools/memhfixc.sty deleted file mode 100644 index f0b20bdfebb..00000000000 --- a/Documentation/PhysicsTools/memhfixc.sty +++ /dev/null @@ -1,189 +0,0 @@ -%% -%% This is file `memhfixc.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% mempatch.dtx (with options: `hyper') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com until June 2004 -%% (or at: pandgwilson at earthlink dot net) -%% Copyright 2001 --- 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -%% -%% The memhfixc package provides hyperref related temporary -%% fixes and extensions for version v1.3a of the memoir class. -%% o hyperref fix for part and chapter entries in the ToC (v1.0) -%% o Other fixes as and when -%% -%% Only use this package in conjunction with the hyperref package. -%% Call the package without options after the hyperref package as: -%% \documentclass[...]{memoir} -%% ... -%% \usepackage[...]{hyperref} -%% \usepackage{memhfixc} -%% -%% Version 1.6 2004/05/13 -%% Version 1.5 2003/10/14 -%% Version 1.4 2003/09/26 -%% Version 1.3 2003/02/20 -%% Version 1.2 2003/02/02 -%% Version 1.1 2003/01/22 -%% Version 1.0 2002/10/22 -%% -\ProvidesPackage{memhfixc}[2004/05/13 v1.6 package fixes for memoir class] -\let\M@hfixcfinish\relax -\@ifclassloaded{memoir}{}% - {\let\M@hfixcfinish\endinput - \typeout{No memoir class: memhfixc does nothing}} -\M@hfixcfinish - -\AtBeginDocument{% - \@ifpackageloaded{nameref}{% nameref loaded - \@ifundefined{NR@sectm@m}{% haven't fiddled with \M@sect - \typeout{Redoing nameref's sectioning} - \let\NR@sectm@m\M@sect - \def\M@sect#1#2#3#4#5#6[#7][#8]#9{% - \setcounter{section@level}{#2}% - \def\@currentlabelname{#7}% - \NR@sectm@m{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]{\Sectionformat{#9}{#2}}}% - }% - {% \NR@sectm@m has already been defined - } - }% - {% no nameref - } -} % end of \AtBeginDocument - -\AtBeginDocument{% - \@ifpackageloaded{nameref}{% nameref loaded - \@ifundefined{MNR@label}{% haven't fiddled with \label - \typeout{Redoing nameref's label} - \let\MNR@label\label - \def\label#1{\@bsphack\begingroup - \protected@edef\@currentlabel{\protect\M@TitleReference - {\@currentlabel}{\M@currentTitle}}% - \MNR@label{#1}% - \endgroup \@esphack}% - \let\MNR@old@caption\@caption - \long\def\@caption#1[#2]#3{% - \MNR@old@caption{#1}[{#2}]{#3}% - \def\@currentlabelname{#2}% - \M@gettitle{#2}% - }% - }% - {% \MNR@label has already been defined - } - }% - {% no nameref - } -} % end of \AtBeginDocument - -%% We are done unless the hyperref package has been loaded -\@ifpackageloaded{hyperref}{}{\let\M@hfixcfinish\endinput} -\M@hfixcfinish - -\def\@@writetorep#1#2#3#4#5{% - \begingroup - \def\Hy@tempa{#5}% - \ifx\Hy@tempa\Hy@bookmarkstype - \edef\Hy@level{#4}% - \ifx\Hy@levelcheck Y% - \@tempcnta\Hy@level\relax - \advance\@tempcnta by -1 - \ifnum\Hy@currentbookmarklevel<\@tempcnta - \advance\@tempcnta by -\Hy@currentbookmarklevel\relax - \advance\@tempcnta by 1 - \Hy@Warning{% - Difference (\the\@tempcnta) between bookmark levels is % - greater \MessageBreak than one, level fixed% - }% - \@tempcnta\Hy@currentbookmarklevel - \advance\@tempcnta by 1 - \edef\Hy@level{\the\@tempcnta}% - \fi - \else - \global\let\Hy@levelcheck Y% - \fi - \global\let\Hy@currentbookmarklevel\Hy@level - \@tempcnta\Hy@level\relax - \expandafter\xdef\csname Parent\Hy@level\endcsname{#3}% - \advance\@tempcnta by -1 - \edef\Hy@tempa{#3} - \edef\Hy@tempb{\csname Parent\the\@tempcnta\endcsname}% - \ifx\Hy@tempa\Hy@tempb - \Hy@Warning{% - The anchor of a bookmark and its parent's must not% - \MessageBreak be the same. Added a new anchor% - }% - \phantomsection - \fi - \ifHy@bookmarksnumbered - \let\numberline\Hy@numberline - \let\partnumberline\Hy@numberline % <- added - \let\chapternumberline\Hy@numberline % <- added - \else - \let\numberline\@gobble - \let\partnumberline\@gobble % <- added - \let\chapternumberline\@gobble % <- added - \fi - \pdfstringdef\Hy@tempa{#2}% - \protected@write\@outlinefile{}{% - \protect\BOOKMARK - [\Hy@level][\@bookmarkopenstatus{\Hy@level}]{#3}% - {\Hy@tempa}{\Hy@tempb}% - }% - \fi - \endgroup -} - -\@ifundefined{H@old@sectm@m}{% haven't fiddled with \M@sect - \let\H@old@sectm@m\M@sect - \def\M@sect#1#2#3#4#5#6[#7][#8]#9{% - \ifnum #2>\c@secnumdepth - \Hy@GlobalStepCount\Hy@linkcounter - \xdef\@currentHref{section*.\the\Hy@linkcounter}% - \fi - \H@old@sectm@m{#1}{#2}{#3}{#4}{#5}{#6}[{#7}][{#8}]{#9}% - \ifnum #2>\c@secnumdepth - \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}% - \fi}% - }% - {% already fiddled \M@sect - } - -\let\MH@old@resets@pp\@resets@pp -\renewcommand*{\@resets@pp}{% - \MH@old@resets@pp - \def\theHchapter{\Alph{chapter}}} - -\let\MH@old@resets@ppsub\@resets@ppsub -\renewcommand*{\@resets@ppsub}{% - \MH@old@resets@ppsub - \def\theHsection{\theHchapter.\Alph{section}}} -\def\endsubappendices{\def\theHsection{\theHchapter.\arabic{section}}} - -\renewcommand{\cftaddtitleline}[4]{% - \addtocontents{#1}{\protect\contentsline{#2}{#3}{#4}{\@currentHref}}} -\renewcommand{\cftaddnumtitleline}[5]{\addtocontents{#1}{% - \protect\contentsline{#2}{\protect\numberline{#3}#4}{#5}{\@currentHref}}} - -\let\m@moldhypcaption\caption -\renewcommand{\caption}{\donemaincaptiontrue\m@moldhypcaption} - -\endinput -%% -%% End of file `memhfixc.sty'. diff --git a/Documentation/PhysicsTools/memoir.cls b/Documentation/PhysicsTools/memoir.cls deleted file mode 100644 index 8a8f88c0f59..00000000000 --- a/Documentation/PhysicsTools/memoir.cls +++ /dev/null @@ -1,8278 +0,0 @@ -%% -%% This is file `memoir.cls', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% memoir.dtx (with options: `class') -%% -%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com -%% (or pandgwilson@earthlink.net) -%% Copyright 2001, 2002, 2003, 2004 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\NeedsTeXFormat{LaTeX2e} -\ProvidesClass{memoir}[2004/04/05 v1.61 configurable document class] -\newcommand{\@ptsize}{} -\newlength{\onelineskip} -\newlength{\lxvchars} -\newlength{\xlvchars} -\newcount\@memcnta -\newif\if@restonecol -\newif\if@openright - \@openrighttrue - -\newif\if@openleft - \@openleftfalse - -\newif\if@mainmatter - \@mainmattertrue - -\newif\if@memoldfont - \@memoldfontfalse - -\newcommand*{\@memerror}{\ClassError{memoir}} -\newcommand*{\@memwarn}{\ClassWarning{memoir}} - -\newif\ifsamename -\newcommand{\nametest}[2]{% - \samenamefalse - \begingroup - \def\@memtempa{#1} \def\@memtempb{#2} - \ifx \@memtempa\@memtempb - \endgroup - \samenametrue - \else - \endgroup - \fi -} - -\newcommand{\kill@lastcounter}[1]{% - \advance\count10 \m@ne - \expandafter\let\csname c@#1\endcsname\relax} - -\newif\ifpdf -\ifx\pdfoutput\undefined -\else - \ifx\pdfoutput\relax - \else - \ifcase\pdfoutput - \else - \pdftrue - \fi - \fi -\fi - -\newcommand{\phantomsection}{} - -\newcommand{\@name@p@xdef}[1]{% - \expandafter\protected@xdef\csname #1\endcsname} -\newcommand{\@name@unresp@xdef}[1]{% - \expandafter\unrestored@protected@xdef\csname #1\endcsname} -\newcommand{\@namelet}[1]{% - \expandafter\let\csname #1\endcsname} -\newcommand{\@namelongdef}[1]{% - \long\expandafter\def\csname #1\endcsname} - -\newcommand*{\@memfakeusepackage}[1]{% - \@namelet{ver@#1.sty}\@empty} - -\edef\wo@dmacro{% - \string m\string a\string c\string r\string o\string :% -} - -\def\wo@difmacro@begingroup#1{% - \begingroup - \edef\x{% - \noexpand\wo@dparsemacro\meaning#1\wo@dmacro\string -% - }% - \x\@nil{#1}% -} - -\begingroup - \edef\x{\endgroup - \def\noexpand\wo@dparsemacro##1\wo@dmacro##2\string -}% -\x#3\@nil#4{% - \ifx\\#3\\% - \endgroup - \@memwarn{\string `\string #4\string ' is not a macro}% - \expandafter\@gobble - \else - \expandafter\@firstofone - \fi -} - -\def\addtodef{\@star@or@long\wo@daddtodef} -\long\def\wo@daddtodef#1#2#3{% - \wo@difmacro@begingroup{#1}{% - \@temptokena{#2}% - \toks@\expandafter{#1#3}% - \edef\x{\endgroup - \l@ngrel@x\def\noexpand#1{\the\@temptokena \the\toks@}}% - \x - }% -} - -\def\addtoiargdef{\@star@or@long\wo@daddtoiargdef} -\long\def\wo@daddtoiargdef#1#2#3{% - \wo@difmacro@begingroup{#1}{% - \@temptokena{#2}% - \toks@\expandafter{#1{##1}#3}% - \edef\x{\endgroup - \l@ngrel@x\def\noexpand#1####1{\the\@temptokena \the\toks@}}% - \x - }% -} - -\newlength{\stockheight} -\newlength{\stockwidth} -\newlength{\trimtop} -\newlength{\trimedge} - -\DeclareOption{a3paper} - {\setlength\stockheight {420mm}% - \setlength\stockwidth {297mm}} -\DeclareOption{a4paper} - {\setlength\stockheight {297mm}% - \setlength\stockwidth {210mm}} -\DeclareOption{a5paper} - {\setlength\stockheight {210mm}% - \setlength\stockwidth {148mm}} -\DeclareOption{a6paper} - {\setlength\stockheight {148mm}% - \setlength\stockwidth {105mm}} -\DeclareOption{b3paper} - {\setlength\stockheight {500mm}% - \setlength\stockwidth {353mm}} -\DeclareOption{b4paper} - {\setlength\stockheight {353mm}% - \setlength\stockwidth {250mm}} -\DeclareOption{b5paper} - {\setlength\stockheight {250mm}% - \setlength\stockwidth {176mm}} -\DeclareOption{b6paper} - {\setlength\stockheight {176mm}% - \setlength\stockwidth {125mm}} -\DeclareOption{letterpaper} - {\setlength\stockheight {11in}% - \setlength\stockwidth {8.5in}} -\DeclareOption{legalpaper} - {\setlength\stockheight {14in}% - \setlength\stockwidth {8.5in}} -\DeclareOption{executivepaper} - {\setlength\stockheight {10.5in}% - \setlength\stockwidth {7.25in}} -\DeclareOption{ebook} - {\setlength\stockheight {9in}% - \setlength\stockwidth {6in}} -\DeclareOption{landscape} - {\setlength\@tempdima {\stockheight} - \setlength\stockheight{\stockwidth} - \setlength\stockwidth {\@tempdima}} - -\renewcommand{\@ptsize}{0} -\DeclareOption{9pt}{\renewcommand{\@ptsize}{9}} -\DeclareOption{10pt}{\renewcommand{\@ptsize}{0}} -\DeclareOption{11pt}{\renewcommand{\@ptsize}{1}} -\DeclareOption{12pt}{\renewcommand{\@ptsize}{2}} -\DeclareOption{14pt}{\renewcommand{\@ptsize}{4}} -\DeclareOption{17pt}{\renewcommand{\@ptsize}{7}} -\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} -\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} -\DeclareOption{onecolumn}{\@twocolumnfalse} -\DeclareOption{twocolumn}{\@twocolumntrue} -\newif\ifdraftdoc\draftdocfalse -\setlength{\overfullrule}{\z@} -\DeclareOption{final}{\setlength{\overfullrule}{\z@} - \draftdocfalse - \msdocfalse} -\DeclareOption{draft}{\setlength\overfullrule{5pt}% - \draftdoctrue - \msdocfalse} -\newif\ifmsdoc - \msdocfalse -\DeclareOption{ms}{% - \msdoctrue - \draftdocfalse - \setlength\overfullrule{\z@} -} - -\newif\ifshowtrims - \showtrimsfalse -\DeclareOption{showtrims}{\showtrimstrue} - -\newif\ifartopt - \artoptfalse -\DeclareOption{article}{\artopttrue} - -\DeclareOption{subfigure}{% - \ClassWarningNoLine{memoir}{The subfigure option is not required}} - -\DeclareOption{openright}{\@openrighttrue} -\DeclareOption{openany}{\@openrightfalse} -\DeclareOption{openleft}{\@openlefttrue} -\newcommand{\openright}{\@openrighttrue\@openleftfalse% - \gdef\clearforchapter{\cleartorecto}} -\newcommand{\openany}{\@openrightfalse\@openleftfalse% - \gdef\clearforchapter{\clearpage}} -\newcommand{\openleft}{\@openlefttrue - \gdef\clearforchapter{\cleartoverso}} - -\DeclareOption{leqno}{\input{leqno.clo}} -\DeclareOption{fleqn}{\input{fleqn.clo}} -\DeclareOption{openbib}{% - \AtEndOfClass{% - \renewcommand\@openbib@code{% - \advance\leftmargin\bibindent - \itemindent -\bibindent - \listparindent \itemindent - \parsep \z@ - }% - \renewcommand\newblock{\par}}% -} - -\DeclareOption{oldfontcommands}{% - \@memoldfonttrue} - -\ExecuteOptions{final,letterpaper,10pt,onecolumn,openright,twoside} -\ProcessOptions - -\def\cleartorecto{\clearpage\if@twoside \ifodd\c@page\else - \hbox{}\thispagestyle{cleared}% - \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - -\def\cleartoverso{\clearpage\if@twoside - \ifodd\c@page\hbox{}\thispagestyle{cleared}% - \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - - -\if@openleft - \openleft -\else - \if@openright - \openright - \else - \openany - \fi -\fi - -\ifnum\@ptsize = 9\relax - \input{mem\@ptsize.clo} -\else - \input{mem1\@ptsize.clo} -\fi -\newcommand{\captionsize}{\normalsize} -\setlength\lineskip{1\p@} -\setlength\normallineskip{1\p@} -\renewcommand{\baselinestretch}{} -\setlength\parskip{0\p@ \@plus \p@} -\@lowpenalty 51 -\@medpenalty 151 -\@highpenalty 301 -\clubpenalty 1000 -\widowpenalty 1000 -\newcommand{\setlxvchars}[1][\normalfont]{\begingroup - #1 - \settowidth{\lxvchars}{abcdefghijklmnopqrstuvwxyz}% - \setlength{\lxvchars}{2.042\lxvchars}% - \addtolength{\lxvchars}{33.41pt}% - \global\lxvchars=\lxvchars - \endgroup} -\newcommand{\setxlvchars}[1][\normalfont]{\begingroup - #1 - \settowidth{\xlvchars}{abcdefghijklmnopqrstuvwxyz}% - \setlength{\xlvchars}{1.415\xlvchars}% - \addtolength{\xlvchars}{23.03pt}% - \global\xlvchars=\xlvchars - \endgroup} - -\newcommand{\setrectanglesize}[3]{% - \nametest{#1}{*}% - \ifsamename % H = * - \nametest{#2}{*}% - \ifsamename % W = * - \@memerror{% - The combination of argument values is ambiguous.\MessageBreak - The lengths will be set to zero}{\@ehd} - \@tempdima = \z@ - \@tempdimb = \z@ - \else % W - \nametest{#3}{*}% - \ifsamename % r = * - \@tempdimb = #2\relax - \@tempdima = \@tempdimb - \else % r - \@tempdimb = #2\relax - \@tempdima = #3\@tempdimb - \fi - \fi - \else % H - \nametest{#2}{*}% - \ifsamename % W = * - \nametest{#3}{*}% - \ifsamename % r = * - \@tempdima = #1\relax - \@tempdimb = \@tempdima - \else % r - \@tempdima = #1\relax - \@tempdimb = #3\@tempdima - \fi - \else % W - \@tempdima = #1\relax - \@tempdimb = #2\relax - \fi - \fi -} - -\newcommand{\setfillsize}[5]{% - \nametest{#2}{*}% - \ifsamename % C = * - \nametest{#3}{*}% - \ifsamename % L = * - \nametest{#4}{*}% - \ifsamename % R = * - \@memerror{% - The combination of argument values is ambiguous.\MessageBreak - The lengths will be set to zero}{\@ehd} - \@tempdima = \z@ - \@tempdimb = \z@ - \@tempdimc = \z@ - \else % R - \nametest{#5}{*}% - \ifsamename % r = * - \@tempdimb = #4\relax - \@tempdima = \@tempdimb - \@tempdimc = #1\relax - \advance\@tempdimc -\@tempdima - \advance\@tempdimc -\@tempdimb - \else % r - \@tempdimb = #4\relax - \@tempdima = #5\@tempdimb - \@tempdimc = #1\relax - \advance\@tempdimc -\@tempdima - \advance\@tempdimc -\@tempdimb - \fi - \fi - \else % L - \nametest{#4}{*}% - \ifsamename % R = * - \nametest{#5}{*}% - \ifsamename % r = * - \@tempdima = #3\relax - \@tempdimb = \@tempdima - \@tempdimc = #1\relax - \advance\@tempdimc -\@tempdima - \advance\@tempdimc -\@tempdimb - \else % r - \@tempdima = #3\relax - \@tempdimb = #5\@tempdima - \@tempdimc = #1\relax - \advance\@tempdimc -\@tempdima - \advance\@tempdimc -\@tempdimb - \fi - \else % R - \@tempdima = #3\relax - \@tempdimb = #4\relax - \@tempdimc = #1\relax - \advance\@tempdimc -\@tempdima - \advance\@tempdimc -\@tempdimb - \fi - \fi - \else % C is valued - \nametest{#3}{*}% - \ifsamename % L = * - \nametest{#4}{*}% - \ifsamename % R = * - \nametest{#5}{*}% - \ifsamename % r = * - \@tempdimc = #2\relax - \@tempdima = #1\relax - \advance\@tempdima -\@tempdimc - \@tempdima = 0.5\@tempdima - \@tempdimb = \@tempdima - \else % r (CODE PERHAPS FIXED) - \@tempdimc = #2\relax % C - \@tempdimb = #1\relax % T - \advance\@tempdimb -\@tempdimc % T - C - \@tempdima = 1000sp - \@tempdima = #5\@tempdima % 1000r sp - \advance\@tempdima by 1000sp % 1000(1+r)sp - \@tempcnta = \@tempdima % 1000(1+r) - \@tempdima = \@tempdimb % T - C - \divide\@tempdima by \@tempcnta % (T-C)/1000(1+r) pts - \@tempdima = 1000\@tempdima % (T-C)/(1+r) pts = L - \advance\@tempdimb by -\@tempdima % = R - \fi - \else % R - \@tempdimc = #2\relax - \@tempdimb = #4\relax - \@tempdima = #1\relax - \advance\@tempdima -\@tempdimc - \advance\@tempdima -\@tempdimb - \fi - \else % L - \nametest{#4}{*}% - \ifsamename % R = * - \@tempdimc = #2\relax - \@tempdima = #3\relax - \@tempdimb = #1\relax - \advance\@tempdimb -\@tempdimc - \advance\@tempdimb -\@tempdima - \else % R - \@memerror{% - The combination of argument values is ambiguous.\MessageBreak - The lengths will be set to zero}{\@ehd}% - \@tempdima = \z@ - \@tempdimb = \z@ - \@tempdimc = #2\relax - \fi - \fi - \fi -} - -\newcommand{\setstocksize}[2]{% - \setlength{\stockheight}{#1}% - \setlength{\stockwidth}{#2}} -\newcommand{\settrims}[2]{% - \setlength{\trimtop}{#1}% - \setlength{\trimedge}{#2}} -\newcommand{\settrimmedsize}[3]{% - \setrectanglesize{#1}{#2}{#3}% - \setlength{\paperheight}{\@tempdima}% - \setlength{\paperwidth}{\@tempdimb}} - -\newcommand{\settypeblocksize}[3]{% - \setrectanglesize{#1}{#2}{#3}% - \setlength{\textheight}{\@tempdima}% - \setlength{\textwidth}{\@tempdimb}} - -\newlength{\spinemargin} -\newlength{\foremargin} -\newcommand{\setlrmargins}[3]{% - \setfillsize{\paperwidth}{\textwidth}{#1}{#2}{#3}% - \setlength{\textwidth}{\@tempdimc}% - \setlength{\spinemargin}{\@tempdima}% - \setlength{\foremargin}{\@tempdimb}} - -\newcommand{\setlrmarginsandblock}[3]{% - \setfillsize{\paperwidth}{*}{#1}{#2}{#3}% - \setlength{\textwidth}{\@tempdimc}% - \setlength{\spinemargin}{\@tempdima}% - \setlength{\foremargin}{\@tempdimb}} - -\newlength{\uppermargin} -\newlength{\lowermargin} -\newcommand{\setulmargins}[3]{% - \setfillsize{\paperheight}{\textheight}{#1}{#2}{#3}% - \setlength{\textheight}{\@tempdimc}% - \setlength{\uppermargin}{\@tempdima}% - \setlength{\lowermargin}{\@tempdimb}} - -\newcommand{\setulmarginsandblock}[3]{% - \setfillsize{\paperheight}{*}{#1}{#2}{#3}% - \setlength{\textheight}{\@tempdimc}% - \setlength{\uppermargin}{\@tempdima}% - \setlength{\lowermargin}{\@tempdimb}} - -\newlength{\headdrop} -\newcommand{\setheaderspaces}[3]{% - \setfillsize{\uppermargin}{\headheight}{#1}{#2}{#3}% - \setlength{\headheight}{\@tempdimc}% - \setlength{\headdrop}{\@tempdima}% - \setlength{\headsep}{\@tempdimb}} - -\newcommand{\setheadfoot}[2]{% - \setlength{\headheight}{#1}% - \setlength{\footskip}{#2}} - -\newcommand{\setcolsepandrule}[2]{% - \setlength{\columnsep}{#1}% - \setlength{\columnseprule}{#2}} - -\newcommand{\setmarginnotes}[3]{% - \setlength{\marginparsep}{#1}% - \setlength{\marginparwidth}{#2}% - \setlength{\marginparpush}{#3}} - -\settrimmedsize{\stockheight}{\stockwidth}{*} -\settrims{\z@}{\z@} - -\setlength{\@tempdimb}{1.14\lxvchars} -\setlength\@tempdima{\paperwidth} - \addtolength\@tempdima{-2in} -\if@twocolumn - \ifdim\@tempdima>2\@tempdimb\relax - \setlength\textwidth{2\@tempdimb} - \else - \setlength\textwidth{\@tempdima} - \fi -\else - \ifdim\@tempdima>\@tempdimb\relax - \setlength\textwidth{\@tempdimb} - \else - \setlength\textwidth{\@tempdima} - \fi -\fi -\@settopoint\textwidth - -\setlength\@tempdima{\paperheight} - \addtolength\@tempdima{-3.5in} - \divide\@tempdima\baselineskip -\@tempcnta=\@tempdima -\setlength\textheight{\@tempcnta\baselineskip} - \addtolength\textheight{\topskip} - -\if@twoside - \setlength\@tempdima {\paperwidth} - \addtolength\@tempdima {-\textwidth} - \setlength\oddsidemargin {.4\@tempdima} - \addtolength\oddsidemargin {-1in} - \setlength\marginparwidth {.6\@tempdima} - \addtolength\marginparwidth{-\marginparsep} - \addtolength\marginparwidth{-0.4in} -\else - \setlength\@tempdima {\paperwidth} - \addtolength\@tempdima {-\textwidth} - \setlength\oddsidemargin {.5\@tempdima} - \addtolength\oddsidemargin {-1in} - \setlength\marginparwidth {.5\@tempdima} - \addtolength\marginparwidth{-\marginparsep} - \addtolength\marginparwidth{-0.8in} % don't know why this is .8 and not .4 -\fi -\ifdim\marginparwidth>2in - \setlength\marginparwidth{2in} -\fi -\@settopoint\oddsidemargin -\@settopoint\marginparwidth - -\setlength\evensidemargin {\paperwidth} -\addtolength\evensidemargin{-2in} -\addtolength\evensidemargin{-\textwidth} -\addtolength\evensidemargin{-\oddsidemargin} -\@settopoint\evensidemargin -\setlength\topmargin {\paperheight} -\addtolength\topmargin{-2in} -\addtolength\topmargin{-\headheight} -\addtolength\topmargin{-\headsep} -\addtolength\topmargin{-\textheight} -\addtolength\topmargin{-\footskip} -\addtolength\topmargin{-.5\topmargin} -\@settopoint\topmargin - -\setlength{\spinemargin}{\oddsidemargin} -\addtolength{\spinemargin}{1in} -\setlrmargins{\spinemargin}{*}{*} - -\setlength{\uppermargin}{\topmargin} -\addtolength{\uppermargin}{1in} -\addtolength{\uppermargin}{\headheight} -\addtolength{\uppermargin}{\headsep} -\setulmargins{\uppermargin}{*}{*} - -\newcommand*{\@memznegtest}[1]{% - \ifdim#1>\z@\else - \@memerror{\protect#1\space is zero or negative}{\@ehd}% - \fi} -\newcommand*{\@memnegtest}[1]{% - \ifdim#1<\z@ - \@memerror{\protect#1\space is negative}{\@ehd}% - \fi} - -\newcommand{\checkthelayout}{% - \@memnegtest{\trimedge} - \@memnegtest{\trimtop} - \@memznegtest{\stockwidth} - \@memznegtest{\paperwidth} - \@memznegtest{\textwidth} - \@memznegtest{\spinemargin} - \@memznegtest{\foremargin} - \@memznegtest{\marginparsep} - \@memznegtest{\marginparwidth} - \@memznegtest{\stockheight} - \@memznegtest{\paperheight} - \@memznegtest{\textheight} - \@memznegtest{\uppermargin} - \@memznegtest{\lowermargin} - \@memznegtest{\headheight} - \@memznegtest{\headsep} - \@memznegtest{\footskip} - - \@tempdima = \textheight - \divide\@tempdima \baselineskip - \@tempcnta=\@tempdima - \setlength{\textheight}{\@tempcnta\baselineskip} - \addtolength{\textheight}{\topskip} - \setulmargins{\uppermargin}{*}{*} - \@tempdimb = -1pt - \@tempdima=\stockwidth - \advance\@tempdima -\trimedge - \advance\@tempdima -\paperwidth - \ifdim\@tempdima<\@tempdimb - \@tempdima = -\@tempdima - \@memerror{\protect\paperwidth\space and/or - \protect\trimedge\space - are too large for \protect\stockwidth\space - by \the\@tempdima}% - {\@ehd} - \fi - \@tempdima = \paperwidth - \advance\@tempdima -\foremargin - \advance\@tempdima -\textwidth - \advance\@tempdima -\spinemargin - \ifdim\@tempdima<\@tempdimb - \@tempdima = -\@tempdima - \@memerror{\protect\spinemargin\space and/or - \protect\textwidth\space and/or - \protect\foremargin\space - are too large for \protect\paperwidth\space - by \the\@tempdima}% - {\@ehd} - \fi - \@tempdima = \stockheight - \advance\@tempdima -\trimtop - \advance\@tempdima -\paperheight - \ifdim\@tempdima<\@tempdimb - \@tempdima = -\@tempdima - \@memerror{\protect\paperheight\space and/or - \protect\trimtop\space - are too large for \protect\stockheight\space - by \the\@tempdima}% - {\@ehd} - \fi - \@tempdima = \paperheight - \advance\@tempdima -\uppermargin - \advance\@tempdima -\textheight - \advance\@tempdima -\lowermargin - \ifdim\@tempdima<\@tempdimb - \@tempdima = -\@tempdima - \@memerror{\protect\uppermargin\space and/or - \protect\textheight\space and/or - \protect\lowermargin\space - are too large for \protect\paperheight\space - by \the\@tempdima}% - {\@ehd} - \fi - \@tempdima = \uppermargin - \advance\@tempdima -\headheight - \advance\@tempdima -\headsep - \ifdim\@tempdima<\@tempdimb - \@tempdima = -\@tempdima - \@memerror{\protect\headheight\space and/or - \protect\headsep\space - are too large for \protect\uppermargin\space - by \the\@tempdima}% - {\@ehd} - \fi - \@tempdima = \lowermargin - \advance\@tempdima -\footskip - \ifdim\@tempdima<\z@ - \@tempdima = -\@tempdima - \@memerror{\protect\footskip - is too large for \protect\lowermargin\space - by \the\@tempdima}% - {\@ehd} - \fi -} -\newcommand{\fixthelayout}{% - \topmargin = \trimtop - \advance\topmargin \uppermargin - \advance\topmargin -\headsep - \advance\topmargin -\headheight - \advance\topmargin -1in\relax - \oddsidemargin = \stockwidth - \advance\oddsidemargin -\trimedge - \advance\oddsidemargin -\paperwidth - \advance\oddsidemargin \spinemargin - \advance\oddsidemargin -1in\relax - \evensidemargin = \trimedge - \advance\evensidemargin \foremargin - \advance\evensidemargin -1in\relax - \@settopoint\textwidth - \@settopoint\oddsidemargin - \@settopoint\evensidemargin -} - -\newcommand{\typeoutlayout}{% - \typeout{} - \typeout{******************************************************} - \typeout{Stock height and width: \the\stockheight\space by \the\stockwidth} - \typeout{Top and edge trims: \the\trimtop\space and \the\trimedge} - \typeout{Page height and width: \the\paperheight\space by \the\paperwidth} - \typeout{Text height and width: \the\textheight\space by \the\textwidth} - \typeout{Spine and edge margins: \the\spinemargin\space and \the\foremargin} - \typeout{Upper and lower margins: \the\uppermargin\space and \the\lowermargin} - \typeout{Headheight and headsep: \the\headheight\space and \the\headsep} - \typeout{Footskip: \the\footskip} - \typeout{Columnsep and columnseprule: \the\columnsep\space and \the\columnseprule} - \typeout{Marginparsep and marginparwidth: \the\marginparsep\space and \the\marginparwidth} - \typeout{******************************************************} - \typeout{} -} - -\newcommand{\checkandfixthelayout}{% - \checkthelayout - \fixthelayout - \typeoutlayout} - -\newcommand*{\fixpdflayout}{% - \pdfpageheight=\the\stockheight - \pdfpagewidth=\the\stockwidth - \ifdim\pdfvorigin=0pt\pdfvorigin=1in\fi - \ifdim\pdfhorigin=0pt\pdfhorigin=1in\fi} -\newcommand*{\fixdvipslayout}{% - \AtBeginDvi{\special{papersize=\the\stockwidth,\the\stockheight}}} - -\AtBeginDocument{% - \ifpdf - \ifnum\pdfoutput<\@ne - \fixdvipslayout - \else - \fixpdflayout - \fi - \else - \fixdvipslayout - \fi} - -\newcommand{\typeoutstandardlayout}{% - \typeout{} - \typeout{******************************************************} - \typeout{Page height and width: \the\paperheight\space by \the\paperwidth} - \typeout{Text height and width: \the\textheight\space by \the\textwidth} - \typeout{Oddside and evenside margins: \the\oddsidemargin\space and \the\evensidemargin} - \typeout{Topmargin and footskip: \the\topmargin\space and \the\footskip} - \typeout{Headheight and headsep: \the\headheight\space and \the\headsep} - \typeout{Columnsep and columnseprule: \the\columnsep\space and \the\columnseprule} - \typeout{Marginparsep and marginparwidth: \the\marginparsep\space and \the\marginparwidth} - \typeout{******************************************************} - \typeout{} -} - -\setcounter{topnumber}{3} -\renewcommand{\topfraction}{.85} -\setcounter{bottomnumber}{2} -\renewcommand{\bottomfraction}{.5} -\setcounter{totalnumber}{4} -\renewcommand{\textfraction}{.1} -\renewcommand{\floatpagefraction}{.7} -\setcounter{dbltopnumber}{3} -\renewcommand{\dbltopfraction}{.85} -\renewcommand{\dblfloatpagefraction}{.7} -\newcommand{\makeevenhead}[4]{% - \@namedef{#1eheadl}{#2} - \@namedef{#1eheadc}{#3} - \@namedef{#1eheadr}{#4} -} -\newcommand{\makeoddhead}[4]{% - \@namedef{#1oheadl}{#2} - \@namedef{#1oheadc}{#3} - \@namedef{#1oheadr}{#4} -} -\newcommand{\makeevenfoot}[4]{% - \@namedef{#1efootl}{#2} - \@namedef{#1efootc}{#3} - \@namedef{#1efootr}{#4} -} -\newcommand{\makeoddfoot}[4]{% - \@namedef{#1ofootl}{#2} - \@namedef{#1ofootc}{#3} - \@namedef{#1ofootr}{#4} -} - -\newcommand{\makerunningwidth}[2]{% - \@namedef{#1runwidth}{#2}} -\newlength{\normalrulethickness} - \setlength{\normalrulethickness}{0.4pt} -\newcommand{\footruleheight}{0pt} -\newcommand{\footruleskip}{0.3\normalbaselineskip} -\newcommand{\makeheadrule}[3]{% - \@namedef{#1headrule}{% - \hrule\@width #2\@height #3 \vskip-#3} -} -\newcommand{\makefootrule}[4]{% - \@namedef{#1footrule}{% - \vskip-#4\vskip-#3 - \hrule\@width #2\@height #3 \vskip #4} -} - -\newcommand{\makeheadposition}[5]{% - \nametest{flushleft}{#2} - \ifsamename - \@namedef{#1evenhpl}{\relax} \@namedef{#1evenhpr}{\hss} - \else - \nametest{flushright}{#2} - \ifsamename - \@namedef{#1evenhpl}{\hss} \@namedef{#1evenhpr}{\relax} - \else - \@namedef{#1evenhpl}{\hss} \@namedef{#1evenhpr}{\hss} - \fi - \fi - \nametest{flushleft}{#3} - \ifsamename - \@namedef{#1oddhpl}{\relax} \@namedef{#1oddhpr}{\hss} - \else - \nametest{flushright}{#3} - \ifsamename - \@namedef{#1oddhpl}{\hss} \@namedef{#1oddhpr}{\relax} - \else - \@namedef{#1oddhpl}{\hss} \@namedef{#1oddhpr}{\hss} - \fi - \fi - \nametest{flushleft}{#4} - \ifsamename - \@namedef{#1evenfpl}{\relax} \@namedef{#1evenfpr}{\hss} - \else - \nametest{flushright}{#4} - \ifsamename - \@namedef{#1evenfpl}{\hss} \@namedef{#1evenfpr}{\relax} - \else - \@namedef{#1evenfpl}{\hss} \@namedef{#1evenfpr}{\hss} - \fi - \fi - \nametest{flushleft}{#5} - \ifsamename - \@namedef{#1oddfpl}{\relax} \@namedef{#1oddfpr}{\hss} - \else - \nametest{flushright}{#5} - \ifsamename - \@namedef{#1oddfpl}{\hss} \@namedef{#1oddfpr}{\relax} - \else - \@namedef{#1oddfpl}{\hss} \@namedef{#1oddfpr}{\hss} - \fi - \fi -} - -\newcommand{\makepsmarks}[2]{\@namedef{#1pshook}{#2}} -%%%% \newcommand{\makepshook}[2]{% -%%%% \@memwarn{\protect\makepshook\space is deprecated.\MessageBreak -%%%% Use \protect\makepsmarks\space instead} -%%%% \@namedef{#1pshook}{#2}} - -\newcommand*{\m@mhe@dreset}{\def\baselinestretch{1}\normalsize} - -\newcommand{\makepagestyle}[1]{% - \@namedef{ps@#1}{% - \@namedef{#1@evenhead}{% - \@nameuse{#1evenhpl}\hb@xt@\@nameuse{#1runwidth}{\m@mhe@dreset% - \vbox{\hbox{% - \rlap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedright\@nameuse{#1eheadl}\strut}}\hfill - \parbox[b]{\@nameuse{#1runwidth}}{% - \centering\@nameuse{#1eheadc}\strut}\hfill - \llap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedleft\@nameuse{#1eheadr}\strut}}}% - \@nameuse{#1headrule}}}\@nameuse{#1evenhpr}} - \@namedef{#1@oddhead}{% - \@nameuse{#1oddhpl}\hb@xt@\@nameuse{#1runwidth}{\m@mhe@dreset% - \vbox{\hbox{% - \rlap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedright\@nameuse{#1oheadl}\strut}}\hfill - \parbox[b]{\@nameuse{#1runwidth}}{% - \centering\@nameuse{#1oheadc}\strut}\hfill - \llap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedleft\@nameuse{#1oheadr}\strut}}}% - \@nameuse{#1headrule}}}\@nameuse{#1oddhpr}} - \@namedef{#1@evenfoot}{% - \@nameuse{#1evenfpl}\hb@xt@\@nameuse{#1runwidth}{\m@mhe@dreset% - \vbox{\@nameuse{#1footrule}\hbox{% - \rlap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedright\@nameuse{#1efootl}\strut}}\hfill - \parbox[b]{\@nameuse{#1runwidth}}{% - \centering\@nameuse{#1efootc}\strut}\hfill - \llap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedleft\@nameuse{#1efootr}\strut}}}% - }}\@nameuse{#1evenfpr}} - \@namedef{#1@oddfoot}{% - \@nameuse{#1oddfpl}\hb@xt@\@nameuse{#1runwidth}{\m@mhe@dreset% - \vbox{\@nameuse{#1footrule}\hbox{% - \rlap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedright\@nameuse{#1ofootl}\strut}}\hfill - \parbox[b]{\@nameuse{#1runwidth}}{% - \centering\@nameuse{#1ofootc}\strut}\hfill - \llap{\parbox[b]{\@nameuse{#1runwidth}}{% - \raggedleft\@nameuse{#1ofootr}\strut}}}% - }}\@nameuse{#1oddfpr}} - \def\@evenhead{\@nameuse{#1@evenhead}} - \def\@oddhead{\@nameuse{#1@oddhead}} - \def\@evenfoot{\@nameuse{#1@evenfoot}} - \def\@oddfoot{\@nameuse{#1@oddfoot}} - \@nameuse{#1pshook} - } - \makeevenhead{#1}{}{}{} - \makeoddhead{#1}{}{}{} - \makeevenfoot{#1}{}{}{} - \makeoddfoot{#1}{}{}{} - \makerunningwidth{#1}{\textwidth} - \makeheadposition{#1}{}{}{}{} - \makeheadrule{#1}{\textwidth}{0pt} - \makefootrule{#1}{\textwidth}{\footruleheight}{\footruleskip} - \makepsmarks{#1}{} -} - -\newcommand{\aliaspagestyle}[2]{% - \@namedef{ps@#1}{\@nameuse{ps@#2}}} - -\newcommand{\copypagestyle}[2]{% - \makepagestyle{#1}% - \makeevenhead{#1}{\@nameuse{#2eheadl}}{\@nameuse{#2eheadc}}{\@nameuse{#2eheadr}}% - \makeoddhead{#1}{\@nameuse{#2oheadl}}{\@nameuse{#2oheadc}}{\@nameuse{#2oheadr}}% - \makeevenfoot{#1}{\@nameuse{#2efootl}}{\@nameuse{#2efootc}}{\@nameuse{#2efootr}}% - \makeoddfoot{#1}{\@nameuse{#2ofootl}}{\@nameuse{#2ofootc}}{\@nameuse{#2ofootr}}% - \makerunningwidth{#1}{\@nameuse{#2runwidth}}% - \@namedef{#1evenhpl}{\@nameuse{#2evenhpl}}% - \@namedef{#1oddhpl}{\@nameuse{#2oddhpl}}% - \@namedef{#1evenfpl}{\@nameuse{#2evenfpl}}% - \@namedef{#1oddfpl}{\@nameuse{#2oddfpl}}% - \@namedef{#1headrule}{\@nameuse{#2headrule}}% - \@namedef{#1footrule}{\@nameuse{#2footrule}}% - \makepsmarks{#1}{\@nameuse{#2pshook}}% -} - -\newcommand{\ifonlyfloats}[2]{\if@fcolmade #1\else #2\fi} - -\newcommand{\mergepagefloatstyle}[3]{% - \@nameuse{ps@#3} \@nameuse{ps@#2} - \@namedef{ps@#1}{ - \def\@evenhead{\ifonlyfloats{\@nameuse{#3@evenhead}}{\@nameuse{#2@evenhead}}} - \def\@oddhead{\ifonlyfloats{\@nameuse{#3@oddhead}}{\@nameuse{#2@oddhead}}} - \def\@evenfoot{\ifonlyfloats{\@nameuse{#3@evenfoot}}{\@nameuse{#2@evenfoot}}} - \def\@oddfoot{\ifonlyfloats{\@nameuse{#3@oddfoot}}{\@nameuse{#2@oddfoot}}} - \@namedef{#1pshook}{\@nameuse{#2pshook}} -}} -\makepagestyle{empty} - -\makepagestyle{plain} - \makeevenfoot{plain}{}{\thepage}{} - \makeoddfoot{plain}{}{\thepage}{} - -\if@twoside - \makepagestyle{headings} - \makepsmarks{headings}{% - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \@chapapp\ \thechapter. \ % - \fi - \fi - ##1}}{}}% - \def\tocmark{\markboth{\MakeUppercase{\contentsname}}{}}% - \def\lofmark{\markboth{\MakeUppercase{\listfigurename}}{}}% - \def\lotmark{\markboth{\MakeUppercase{\listtablename}}{}}% - \def\bibmark{\markboth{\MakeUppercase{\bibname}}{}}% - \def\indexmark{\markboth{\MakeUppercase{\indexname}}{}}% - \def\sectionmark##1{% - \markright{\MakeUppercase{% - \ifnum \c@secnumdepth > \z@ - \thesection. \ % - \fi - ##1}}}% - } - \makeevenhead{headings}{\thepage}{}{\slshape\leftmark} - \makeoddhead{headings}{\slshape\rightmark}{}{\thepage} -\else - \makepagestyle{headings} - \makepsmarks{headings}{% - \let\@mkboth\markboth - \def\chaptermark##1{% - \markright{\MakeUppercase{% - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \@chapapp\ \thechapter. \ % - \fi - \fi - ##1}}}% - \def\tocmark{\markright{\MakeUppercase{\contentsname}}}% - \def\lofmark{\markright{\MakeUppercase{\listfigurename}}}% - \def\lotmark{\markright{\MakeUppercase{\listtablename}}}% - \def\bibmark{\markright{\MakeUppercase{\bibname}}}% - \def\indexmark{\markright{\MakeUppercase{\indexname}}}% - } - \makeoddhead{headings}{\slshape\rightmark}{}{\thepage} -\fi - -\makepagestyle{myheadings} - \makepsmarks{myheadings}{% - \let\@mkboth\@gobbletwo - \let\chaptermark\@gobble - \let\sectionmark\@gobble - \def\tocmark{}% - \def\lofmark{}% - \def\lotmark{}% - \def\bibmark{}% - \def\indexmark{}% - } - \makeevenhead{myheadings}{\thepage}{}{\slshape\leftmark} - \makeoddhead{myheadings}{\slshape\rightmark}{}{\thepage} - -\aliaspagestyle{chapter}{plain} -\aliaspagestyle{part}{plain} -\aliaspagestyle{cleared}{empty} - -\def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else - \hbox{}\thispagestyle{cleared}% - \newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi} - -\makepagestyle{ruled} -\makeevenfoot{ruled}{\thepage}{}{} -\makeoddfoot{ruled}{}{}{\thepage} -\makeheadrule{ruled}{\textwidth}{\normalrulethickness} -\newcommand{\@ruledmarks}{% - \let\@mkboth\markboth - \def\chaptermark##1{% - \markboth{% - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \thechapter. \ % - \fi - \fi - ##1}{}} - \def\sectionmark##1{\markright{##1}} - \def\tocmark{\markboth{\contentsname}{}} - \def\lofmark{\markboth{\listfigurename}{}} - \def\lotmark{\markboth{\listtablename}{}} - \def\bibmark{\markboth{\bibname}{}} - \def\indexmark{\markboth{\indexname}{}} -} -\makepsmarks{ruled}{\@ruledmarks} -\makeevenhead{ruled}{\scshape\leftmark}{}{} -\makeoddhead{ruled}{}{}{\rightmark} - -\makepagestyle{Ruled} -\makerunningwidth{Ruled}{1.1\textwidth} -\makeheadposition{Ruled}{flushright}{flushleft}{flushright}{flushleft} -\makeevenfoot{Ruled}{\thepage}{}{} -\makeoddfoot{Ruled}{}{}{\thepage} -\makeheadrule{Ruled}{1.1\textwidth}{\normalrulethickness} -\makepsmarks{Ruled}{\@ruledmarks} -\makeevenhead{Ruled}{\scshape\leftmark}{}{} -\makeoddhead{Ruled}{}{}{\rightmark} - -\newlength{\headwidth} - -\makepagestyle{companion} -\setlength{\headwidth}{\textwidth} - \addtolength{\headwidth}{\marginparsep} - \addtolength{\headwidth}{\marginparwidth} -\makerunningwidth{companion}{\headwidth} -\makeheadrule{companion}{\headwidth}{\normalrulethickness} -\makeheadposition{companion}{flushright}{flushleft}{}{} -\makepsmarks{companion}{% - \let\@mkboth\markboth - \def\chaptermark##1{\markboth{##1}{##1}} % left mark & right marks - \def\sectionmark##1{\markright{% - \ifnum \c@secnumdepth>\z@ - \thesection. \ % - \fi - ##1}} - \def\tocmark{\markboth{\contentsname}{\contentsname}} - \def\lofmark{\markboth{\listfigurename}{\listfigurename}} - \def\lotmark{\markboth{\listtablename}{\listtablename}} - \def\bibmark{\markboth{\bibname}{\bibname}} - \def\indexmark{\markboth{\indexname}{\indexname}} -} -\makeevenhead{companion}{\normalfont\bfseries\thepage}{}% - {\normalfont\bfseries\leftmark} -\makeoddhead{companion}{\normalfont\bfseries\rightmark}{}% - {\normalfont\bfseries\thepage} - -\renewcommand{\pagenumbering}{% - \@ifstar{\@smempnum}{\@mempnum}} -\newcommand{\@smempnum}[1]{% - \gdef\thepage{\csname @#1\endcsname \c@page}} -\newcommand{\@mempnum}[1]{% - \@smempnum{#1}\global\c@page \@ne} - -\newcounter{storedpagenumber} - \setcounter{storedpagenumber}{1} -\newcommand{\savepagenumber}{\global\c@storedpagenumber \c@page} -\newcommand{\restorepagenumber}{\global\c@page \c@storedpagenumber} - -\newcommand{\pretitle}[1]{\def\@bspretitle{#1}} -\newcommand{\posttitle}[1]{\def\@bsposttitle{#1}} -\newcommand{\preauthor}[1]{\def\@bspreauthor{#1}} -\newcommand{\postauthor}[1]{\def\@bspostauthor{#1}} -\newcommand{\predate}[1]{\def\@bspredate{#1}} -\newcommand{\postdate}[1]{\def\@bspostdate{#1}} - - \pretitle{\begin{center}\LARGE} - \posttitle{\par\end{center}\vskip 0.5em} - \preauthor{\begin{center} - \large \lineskip .5em% - \begin{tabular}[t]{c}} - \postauthor{\end{tabular}\par\end{center}} - \predate{\begin{center}\large} - \postdate{\par\end{center}} - -\newcommand{\maketitlehooka}{} -\newcommand{\maketitlehookb}{} -\newcommand{\maketitlehookc}{} -\newcommand{\maketitlehookd}{} - -\newcommand{\thanksmarkseries}[1]{% - \def\@bsmarkseries{\renewcommand{\thefootnote}{\@nameuse{#1}{footnote}}}} -\newcommand{\symbolthanksmark}{\thanksmarkseries{\fnsymbol}} -\newcommand{\@bscontmark}{\setcounter{footnote}{0}} -\newcommand{\continuousmarks}{\def\@bscontmark{}} -\newcommand{\thanksheadextra}[2]{% - \def\@bsthanksheadpre{#1}% - \def\@bsthanksheadpost{#2}} -%%%% \newcommand{\thanksfootextra}[2]{% -%%%% \@memwarn{Use \protect\thanksmarkstyle\space instead of -%%%% \protect\thanksfootextra}% -%%%% \def\thanksfootpre{#1}% -%%%% \def\thanksfootpost{#2} - -\DeclareRobustCommand{\thanksmark}[1]{\footnotemark[#1]} -\newcommand{\thanksgap}[1]{\hspace{#1}} -\newcommand{\tamark}{\@thefnmark} - -\newlength{\thanksmarkwidth} -\newlength{\thanksmarksep} -\newcommand{\thanksmarkstyle}[1]{\def\thanksscript##1{#1}} -\thanksmarkstyle{\textsuperscript{#1}} -\newcommand{\makethanksmarkhook}{} - -\newcommand{\thanksfootmark}{% - \ifdim\thanksmarkwidth < \z@ - \llap{\hb@xt@ -\thanksmarkwidth{\hss\normalfont\thanksscript{\tamark}}% - \hspace*{-\thanksmarkwidth}}% - \else - \ifdim\thanksmarkwidth = \z@ - {\normalfont\thanksscript{\tamark}}% - \else - \hb@xt@\thanksmarkwidth{\hss\normalfont\thanksscript{\tamark}}% - \fi - \fi} - -\newcommand{\makethanksmark}{% - \leavevmode% - \parindent 1em\noindent - \leftskip\thanksmarksep\relax - \advance\leftskip \thanksmarkwidth \null\nobreak\hskip -\leftskip\relax - \makethanksmarkhook\relax - \thanksfootmark} - -\newcommand{\usethanksrule}{\let\footnoterule\thanksrule} -\newcommand{\cancelthanksrule}{\let\footnoterule\@bsfootnoterule} - -\thanksmarkseries{fnsymbol} % symbols -\thanksheadextra{}{} -\setlength{\thanksmarkwidth}{1.8em} -\setlength{\thanksmarksep}{-\thanksmarkwidth} - -\AtBeginDocument{% - \let\thanksrule\footnoterule - \let\@bsfootnoterule\footnoterule -} - -\newlength{\droptitle} -\setlength{\droptitle}{0pt} - -\newcommand{\maketitle}{\par - \begingroup - \@bsmarkseries -%% \def\@makefnmark{\rlap{\@textsuperscript{% -%% \normalfont\@bsthanksheadpre \tamark \@bsthanksheadpost}}}% - \def\@makefnmark{\@textsuperscript{% - \normalfont\@bsthanksheadpre \tamark \@bsthanksheadpost}}% - \long\def\@makefntext##1{\makethanksmark ##1} - \if@twocolumn - \ifnum \col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \newpage - \global\@topnum\z@ - \@maketitle - \fi - \thispagestyle{title}\@thanks - \endgroup - \@bscontmark % \setcounter{footnote}{0}% - } -\aliaspagestyle{title}{plain} - -\newcommand*{\@mem@titlefootkill}[1]{% - \@memwarn{Do not use \string\footnote\space in \string\maketitle.\MessageBreak - Use \protect\thanks\space instead}} - -\newcommand{\@maketitle}{% - \let\footnote\@mem@titlefootkill - \newpage - \null - \vskip 2em% - \vspace*{\droptitle} - \maketitlehooka - {\@bspretitle \@title \@bsposttitle} - \maketitlehookb - {\@bspreauthor \@author \@bspostauthor} - \maketitlehookc - {\@bspredate \@date \@bspostdate} - \maketitlehookd - \par - \vskip 1.5em} - -\newenvironment{titlingpage}% - {\let\footnoterule\relax - \let\footnotesize\small - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi - \thispagestyle{titlingpage}% - \setcounter{page}{\@ne}% - }{% - \thispagestyle{titlingpage}% - \if@restonecol \twocolumn \fi - \if@twoside \cleardoublepage \else \clearpage \fi - \setcounter{page}{\@ne}} -\aliaspagestyle{titlingpage}{empty} - -\newcommand{\emptythanks}{\global\let\@thanks\@empty} - -\newcommand*{\andnext}{% - \end{tabular}\\ \begin{tabular}[t]{c}} - -\newcommand{\@bsmtitlempty}{% - \global\let\maketitle\relax - \global\let\@maketitle\relax - \global\let\title\relax - \global\let\author\relax - \global\let\date\relax - \global\let\thanksmarkseries\relax - \global\let\thanksheadextra\relax - \global\let\thanksfootextra\relax - \global\let\thanksmark\relax - \global\let\thanksgap\relax -} - -\newcommand{\keepthetitle}{% - \@bsmtitlempty - \global\let\thanks\relax - \global\let\and\relax - \global\let\andnext\relax - \global\let\@thanks\@empty - \global\let\@title\@empty - \global\let\@author\@empty - \global\let\@date\@empty -} - -\newcommand{\killtitle}{% - \keepthetitle - \global\let\thetitle\relax - \global\let\theauthor\relax - \global\let\thedate\relax -} - -\addtoiargdef{\title}{% - \begingroup\let\footnote\@gobble}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\thetitle{#1} - \endgroup\endgroup} -\addtoiargdef{\author}{% - \begingroup\let\footnote\@gobble}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\and}{\unskip, } - \renewcommand{\andnext}{\unskip, } - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\theauthor{#1} - \endgroup\endgroup} -\addtoiargdef{\date}{% - \begingroup\let\footnote\@gobble}{% - \begingroup - \renewcommand{\thanks}[1]{} - \renewcommand{\thanksmark}[1]{} - \renewcommand{\thanksgap}[1]{} - \protected@xdef\thedate{#1} - \endgroup\endgroup} - -\newif\if@bsonecol - \@bsonecoltrue -\newif\ifadd@bstotoc - \add@bstotocfalse -\newif\ifnumber@bs - \number@bsfalse -\newif\if@bsrunin - \@bsruninfalse - -\newcommand{\abstractcol}{\@bsonecolfalse} -\newcommand{\abstractintoc}{\add@bstotoctrue} -\newcommand{\abstractnum}{\number@bstrue\@bsruninfalse} -\newcommand{\abstractrunin}{\@bsrunintrue\number@bsfalse} - -\newcommand{\abstractnamefont}{\normalfont\small\bfseries} -\newcommand{\abstracttextfont}{\normalfont\small} - -\newcommand{\absnamepos}{center} -\newlength{\abstitleskip} \setlength{\abstitleskip}{-0.5em} -\newlength{\absleftindent} -\newlength{\absrightindent} -\newlength{\absparindent} -\newlength{\absparsep} - -\newcommand{\abslabeldelim}[1]{\def\@bslabeldelim{#1}} -\abslabeldelim{} -\newcommand{\@bsrunintitle}{% - \hspace*{\abstitleskip}{\abstractnamefont\abstractname\@bslabeldelim}} - -\newcommand{\setup@bstract}{% - \if@twocolumn - \if@bsonecol - \setlength{\absleftindent}{\leftmargin} - \else - \setlength{\absleftindent}{\z@} - \renewcommand{\abstractnamefont}{\normalfont\Large\bfseries} - \renewcommand{\abstracttextfont}{\normalfont} - \renewcommand{\absnamepos}{flushleft} - \setlength{\abstitleskip}{-2ex} - \fi - \else - \setlength{\absleftindent}{\leftmargin} - \fi - \setlength{\absrightindent}{\absleftindent} -} - -\AtBeginDocument{\setlength{\absparindent}{\parindent} - \setlength{\absparsep}{\parskip}} - -\newenvironment{@bstr@ctlist}{% - \list{}{% - %%\topsep \z@ - \partopsep \z@ - \listparindent \absparindent - \itemindent \listparindent - \leftmargin \absleftindent - \rightmargin \absrightindent - \parsep \absparsep}% - \item\relax} - {\endlist} - -\newcommand{\put@bsintoc}{% - \ifadd@bstotoc - \ifnumber@bs\else - \phantomsection - \addcontentsline{toc}{chapter}{\abstractname} - \fi - \fi} - -\newcommand{\num@bs}{\chapter{\abstractname}} - -\newenvironment{abstract}{% - \setup@bstract - \if@bsrunin\else - \ifnumber@bs \num@bs \else - \begin{\absnamepos}\abstractnamefont\abstractname\end\absnamepos% - \vspace{\abstitleskip}% - \fi - \fi - \put@bsintoc% - \begin{@bstr@ctlist}\if@bsrunin\@bsrunintitle\fi\abstracttextfont}% - {\par\end{@bstr@ctlist}} - -\newenvironment{onecolabstract}{% - \begin{@twocolumnfalse}\begin{abstract}}{% - \end{abstract}\end{@twocolumnfalse}} - -\addtoiargdef{\thanks}{}{% - \protected@xdef\@bs@thanks{\@bs@thanks - \protect\footnotetext[\the\c@footnote]{#1}}% -} -\let\@bs@thanks\@empty - -\newcommand{\saythanks}{\begingroup - \renewcommand{\thefootnote}{\fnsymbol{footnote}}\@bs@thanks - \endgroup\global\let\@bs@thanks\@empty} - -\newcommand*{\partmark}[1]{} -\newcommand*{\chaptermark}[1]{} - -\newcommand*{\bibmark}{} -\newcommand*{\indexmark}{} - -\setcounter{secnumdepth}{2} -\newcounter{part} -\newcounter{chapter} -\newcounter{section}[chapter] -\newcounter{subsection}[section] -\newcounter{subsubsection}[subsection] -\newcounter{paragraph}[subsubsection] -\newcounter{subparagraph}[paragraph] -\renewcommand{\thepart}{\@Roman\c@part} -\renewcommand{\thechapter}{\@arabic\c@chapter} -\renewcommand{\thesection}{\thechapter.\@arabic\c@section} -\renewcommand{\thesubsection}{\thesection.\@arabic\c@subsection} -\renewcommand{\thesubsubsection}{\thesubsection.\@arabic\c@subsubsection} -\renewcommand{\theparagraph}{\thesubsubsection.\@arabic\c@paragraph} -\renewcommand{\thesubparagraph}{\theparagraph.\@arabic\c@subparagraph} -\newcommand{\@chapapp}{\chaptername} - -\newcommand{\frontmatter}{% - \@ifstar{\@smemfront}{\@memfront}} -\newcommand{\@smemfront}{% - \cleardoublepage - \@mainmatterfalse - \setcounter{secnumdepth}{-10} - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} -} -\newcommand{\@memfront}{% - \@smemfront\pagenumbering{roman}} - -\newcommand{\mainmatter}{% - \@ifstar{\@smemmain}{\@memmain}} -\newcommand{\@smemmain}{ - \@mainmattertrue - \setcounter{secnumdepth}{\value{maxsecnumdepth}} - \ifartopt - \clearpage - \else - \cleardoublepage - \counterwithin{figure}{chapter} - \counterwithin{table}{chapter} - \fi} -\newcommand{\@memmain}{% - \@smemmain\pagenumbering{arabic}} - -\newcommand{\backmatter}{% - \ifartopt - \clearpage - \else - \if@openright - \cleardoublepage - \else - \clearpage - \fi - \fi - \@mainmatterfalse - \setcounter{secnumdepth}{-10} - \ifartopt\else - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} - \setcounter{figure}{0} - \setcounter{table}{0} - \fi} - -\newcommand{\part}{% - \@setuppart - \secdef\@part\@spart} -\newcommand{\beforepartskip}{\null\vfil} -\newcommand{\midpartskip}{\par\vskip 20pt} -\newcommand{\afterpartskip}{\vfil\newpage} - -\newcommand{\@setuppart}{% - \if@openright - \cleardoublepage - \else - \clearpage - \fi - \thispagestyle{part}% - \if@twocolumn - \onecolumn - \@tempswatrue - \else - \@tempswafalse - \fi - \beforepartskip} - -\newcommand{\partnamefont}{\normalfont\huge\bfseries} -\newcommand{\partnumfont}{\normalfont\huge\bfseries} -\newcommand{\parttitlefont}{\normalfont\Huge\bfseries} - -\newcommand{\printpartname}{\partnamefont \partname} -\newcommand{\partnamenum}{\space} -\newcommand{\printpartnum}{\partnumfont \thepart} -\newcommand{\printparttitle}[1]{\parttitlefont #1} - -\long\def\@part[#1]#2{% - \M@gettitle{#1}% - \ifnum \c@secnumdepth >-2\relax - \refstepcounter{part}% -%% \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% - \addcontentsline{toc}{part}% - {\protect\partnumberline{\thepart}#1}% - \else - \addcontentsline{toc}{part}{#1}% - \fi - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \ifnum \c@secnumdepth >-2\relax - \printpartname \partnamenum \printpartnum - \midpartskip - \fi - \printparttitle{#2}\par}% - \@endpart} - -\def\@spart#1{% - \M@gettitle{#1}% - {\centering - \interlinepenalty \@M - \normalfont - \printparttitle{#1}\par}% - \@endpart} - -\def\@endpart{\afterpartskip - \if@twoside - \if@openright - \null - \thispagestyle{empty}% - \newpage - \fi - \fi - \if@tempswa - \twocolumn - \fi} - -\newcommand\chapter{% - \ifartopt\else - \clearforchapter - \thispagestyle{chapter} - \global\@topnum\z@ - \fi - \@afterindentfalse - \@ifstar{\@m@mschapter}{\@m@mchapter}} - -\newcommand{\@m@mchapter}[1][\@empty]{% - \def\ch@pt@c{#1}% capture first optional arg - \@dblarg{\@chapter}} -\def\m@m@empty{\@empty} - -\def\@chapter[#1]#2{% - \ifx\ch@pt@c\m@m@empty % no optional args - \def\f@rtoc{#1}% - \def\f@rhdr{#1}% - \else % at least one opt arg - \def\f@rtoc{\ch@pt@c}% - \nametest{#1}{#2}% - \ifsamename % one opt arg - \def\f@rhdr{\ch@pt@c}% - \else % two opt args - \def\f@rhdr{#1}% - \fi - \fi - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \refstepcounter{chapter}% - \fi - \fi - \chaptermark{\f@rhdr} - \ifartopt - \@makechapterhead{#2}% - \@afterheading - \else - \insertchapterspace - \if@twocolumn - \@topnewpage[\@makechapterhead{#2}]% - \else - \@makechapterhead{#2}% -%% \@afterheading - \fi - \@afterheading - \fi - \ifnum \c@secnumdepth > \m@ne - \if@mainmatter - \addcontentsline{toc}{chapter}{% - \protect\chapternumberline{\thechapter}\f@rtoc}% - \else - \addcontentsline{toc}{chapter}{\f@rtoc}% - \fi - \else - \addcontentsline{toc}{chapter}{\f@rtoc}% - \fi - \ifheadnameref\M@gettitle{\f@rhdr}\else\M@gettitle{\f@rtoc}\fi -} - -\def\@makechapterhead#1{% - \chapterheadstart% \vspace*{50\p@}% - {\parindent \z@ \raggedright \normalfont - \ifnum \c@secnumdepth >\m@ne - \if@mainmatter - \printchaptername \chapternamenum \printchapternum - \afterchapternum % \par\nobreak \vskip 20\p@ - \else - \printchapternonum - \fi - \else - \printchapternonum - \fi - \interlinepenalty\@M - \printchaptertitle{#1} % \Huge \bfseries #1 - \afterchaptertitle % \par\nobreak \vskip 40\p@ - }} - -\newcommand{\insertchapterspace}{% - \addtocontents{lof}{\protect\addvspace{10pt}}% - \addtocontents{lot}{\protect\addvspace{10pt}}% -} - -\newcommand{\@chs@def@ult}{% - \def\chapterheadstart{\vspace*{\beforechapskip}} - \def\printchaptername{\chapnamefont \@chapapp} - \def\chapternamenum{\space} - \def\printchapternum{\chapnumfont \thechapter} - \def\afterchapternum{\par\nobreak\vskip \midchapskip} - \def\printchapternonum{} - \def\printchaptertitle##1{\chaptitlefont ##1} - \def\afterchaptertitle{\par\nobreak\vskip \afterchapskip} -} - -\newcommand{\chapnamefont}{\normalfont\huge\bfseries} -\newcommand{\chapnumfont}{\normalfont\huge\bfseries} -\newcommand{\chaptitlefont}{\normalfont\Huge\bfseries} -\newlength{\beforechapskip}\setlength{\beforechapskip}{50pt} -\newlength{\midchapskip}\setlength{\midchapskip}{20pt} -\newlength{\afterchapskip}\setlength{\afterchapskip}{40pt} - -\newcommand{\@m@mschapter}[2][\@empty]{% - \@schapter{#2}% - \ifx \@empty #1\else % opt arg - \setcounter{secnumdepth}{-10}% - \chaptermark{#1}% - \setcounter{secnumdepth}{\value{maxsecnumdepth}}% - \fi} - -\newcommand{\@schapter}[1]{% - \ifartopt - \@makeschapterhead{#1}% - \@afterheading - \else - \if@twocolumn - \@topnewpage[\@makeschapterhead{#1}]% - \else - \@makeschapterhead{#1}% - \fi - \@afterheading - \fi - \M@gettitle{#1}} - -\def\@makeschapterhead#1{% - \chapterheadstart - {\parindent \z@ \raggedright \normalfont - \printchapternonum - \interlinepenalty\@M - \printchaptertitle{#1} - \afterchaptertitle - } -} - -\newcommand{\makechapterstyle}[2]{\@namedef{chs@#1}{\@chs@def@ult #2}} -\newcommand{\chapterstyle}[1]{\@nameuse{chs@#1}} - -\makechapterstyle{default}{% - \renewcommand{\chapnamefont}{\normalfont\huge\bfseries} - \renewcommand{\chapnumfont}{\normalfont\huge\bfseries} - \renewcommand{\chaptitlefont}{\normalfont\Huge\bfseries} - \setlength{\beforechapskip}{50pt} - \setlength{\midchapskip}{20pt} - \setlength{\afterchapskip}{40pt} -} -\chapterstyle{default} - -\makechapterstyle{section}{% - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\chapnumfont}{\normalfont\Huge\bfseries} - \renewcommand{\printchapternum}{\chapnumfont \thechapter\space} - \renewcommand{\afterchapternum}{} -} - -\makechapterstyle{article}{% - \renewcommand{\chapterheadstart}{\vspace{\beforechapskip}} - \setlength{\beforechapskip}{3.5ex \@plus 1ex \@minus .2ex} - \setlength{\afterchapskip}{2.3ex \@plus .2ex} - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\chaptitlefont}{\normalfont\Large\bfseries} - \renewcommand{\chapnumfont}{\normalfont\Large\bfseries} - \renewcommand{\printchapternum}{\chapnumfont \thechapter\quad} - \renewcommand{\afterchapternum}{} -} - -\makechapterstyle{hangnum}{% - \renewcommand{\chapnumfont}{\chaptitlefont} - \settowidth{\chapindent}{\chapnumfont 999} - \renewcommand{\printchaptername}{} - \renewcommand{\chapternamenum}{} - \renewcommand{\printchapternum}{% - \noindent\llap{\makebox[\chapindent][l]{\chapnumfont \thechapter}}} - \renewcommand{\afterchapternum}{} -} - -\newlength{\chapindent} - -\makechapterstyle{companion}{% - \renewcommand{\chapnamefont}{\normalfont\LARGE\scshape} - \renewcommand{\printchaptername}{\raggedleft\chapnamefont \@chapapp} - \renewcommand{\chapnumfont}{\normalfont\Huge} - \setlength{\chapindent}{\marginparsep} - \addtolength{\chapindent}{\marginparwidth} - \renewcommand{\printchaptertitle}[1]{% - \begin{adjustwidth}{}{-\chapindent} - \raggedleft \chaptitlefont ##1\par\nobreak - \end{adjustwidth}} -} - -\makechapterstyle{demo}{ - \renewcommand{\printchaptername}{\centering} - \renewcommand{\printchapternum}{\chapnumfont \numtoName{\c@chapter}} - \renewcommand{\chaptitlefont}{\normalfont\Huge\sffamily} - \renewcommand{\printchaptertitle}[1]{% - \hrule\vskip\onelineskip \raggedleft \chaptitlefont ##1} - \renewcommand{\afterchaptertitle}{\vskip\onelineskip \hrule\vskip \afterchapskip} -} - -\newif\ifraggedbottomsection - \raggedbottomsectionfalse -\newlength{\bottomsectionskip} - \setlength{\bottomsectionskip}{10mm} - -\newcommand{\@trplargomm}[1]{% - \@ifnextchar[{\@xtrplargomm{#1}}% - {\@xxtrplarg{#1}}} -\long\def\@xtrplargomm#1[#2]{\@dblarg{#1[#2]}} -\newcommand{\@xxtrplarg}[2]{#1[{#2}][{#2}]{#2}} -\newcommand{\@trplargoom}[1]{% - \@ifnextchar[{\@xtrplargoom{#1}}% - {\@xxtrplarg{#1}}} -\long\def\@xtrplargoom#1[#2]{% - \@ifnextchar[{#1[{#2}]}% - {#1[{#2}][{#2}]}} - -\renewcommand{\@startsection}[6]{% - \ifraggedbottomsection\if@nobreak\else - \vskip\z@\@plus\bottomsectionskip - \penalty\z@ - \vskip\z@\@plus -\bottomsectionskip - \fi\fi - \if@noskipsec \leavevmode \fi - \par - \@tempskipa #4\relax - \@afterindenttrue - \ifdim \@tempskipa <\z@ - \@tempskipa -\@tempskipa \@afterindentfalse - \fi - \if@nobreak - \everypar{}% - \else - \addpenalty\@secpenalty\addvspace\@tempskipa - \fi - \@ifstar - {\@ssect{#3}{#4}{#5}{#6}}% - {\@trplargoom{\M@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} - -\def\M@sect#1#2#3#4#5#6[#7][#8]#9{% - \ifheadnameref\M@gettitle{#8}\else\M@gettitle{#7}\fi - \ifnum #2>\c@secnumdepth - \let\@svsec\@empty - \else - \refstepcounter{#1}% - \protected@edef\@svsec{\@seccntformat{#1}\relax}% - \fi - \@tempskipa #5\relax - \ifdim \@tempskipa>\z@ - \begingroup - #6{% - \@hangfrom{\hskip #3\relax\@svsec}% - \interlinepenalty \@M #9\@@par}% - \endgroup - \csname #1mark\endcsname{#8}% - \addcontentsline{toc}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}% - \else - \def\@svsechd{% - #6{\hskip #3\relax - \@svsec #9}% - \csname #1mark\endcsname{#8}% - \addcontentsline{toc}{#1}{% - \ifnum #2>\c@secnumdepth \else - \protect\numberline{\csname the#1\endcsname}% - \fi - #7}}% - \fi - \@xsect{#5}} - -\let\@mem@old@ssect\@ssect -\def\@ssect#1#2#3#4#5{\M@gettitle{#5}\@mem@old@ssect{#1}{#2}{#3}{#4}{#5}} - -\newcommand{\section}{% - \sechook% - \@startsection{section}{1}% level 1 - {\secindent}% heading indent - {\beforesecskip}% skip before the heading - {\aftersecskip}% skip after the heading - {\normalfont\secheadstyle}} % font -\newcommand{\sechook}{} -\newcommand{\setsechook}[1]{\renewcommand{\sechook}{#1}} -\newlength{\secindent} -\newcommand{\setsecindent}[1]{\setlength{\secindent}{#1}} - \setsecindent{\z@} -\newskip\beforesecskip -\newcommand{\setbeforesecskip}[1]{\setlength{\beforesecskip}{#1}} - \setbeforesecskip{-3.5ex \@plus -1ex \@minus -.2ex} -\newskip\aftersecskip -\newcommand{\setaftersecskip}[1]{\setlength{\aftersecskip}{#1}} - \setaftersecskip{2.3ex \@plus .2ex} -\newcommand{\secheadstyle}{} -\newcommand{\setsecheadstyle}[1]{\renewcommand{\secheadstyle}{#1}} - \setsecheadstyle{\Large\bfseries\raggedright} - -\newcommand{\subsection}{% - \subsechook% - \@startsection{subsection}{2}% level 2 - {\subsecindent}% heading indent - {\beforesubsecskip}% skip before the heading - {\aftersubsecskip}% skip after the heading - {\normalfont\subsecheadstyle}} % font -\newcommand{\subsechook}{} -\newcommand{\setsubsechook}[1]{\renewcommand{\subsechook}{#1}} -\newlength{\subsecindent} -\newcommand{\setsubsecindent}[1]{\setlength{\subsecindent}{#1}} - \setsubsecindent{\z@} -\newskip\beforesubsecskip -\newcommand{\setbeforesubsecskip}[1]{\setlength{\beforesubsecskip}{#1}} - \setbeforesubsecskip{-3.25ex \@plus -1ex \@minus -.2ex} -\newskip\aftersubsecskip -\newcommand{\setaftersubsecskip}[1]{\setlength{\aftersubsecskip}{#1}} - \setaftersubsecskip{1.5ex \@plus .2ex} -\newcommand{\subsecheadstyle}{} -\newcommand{\setsubsecheadstyle}[1]{\renewcommand{\subsecheadstyle}{#1}} - \setsubsecheadstyle{\large\bfseries\raggedright} - -\newcommand{\subsubsection}{% - \subsubsechook% - \@startsection{subsubsection}{3}% level 3 - {\subsubsecindent}% heading indent - {\beforesubsubsecskip}% skip before the heading - {\aftersubsubsecskip}% skip after the heading - {\normalfont\subsubsecheadstyle}} % font -\newcommand{\subsubsechook}{} -\newcommand{\setsubsubsechook}[1]{\renewcommand{\subsubsechook}{#1}} -\newlength{\subsubsecindent} -\newcommand{\setsubsubsecindent}[1]{\setlength{\subsubsecindent}{#1}} - \setsubsubsecindent{\z@} -\newskip\beforesubsubsecskip -\newcommand{\setbeforesubsubsecskip}[1]{\setlength{\beforesubsubsecskip}{#1}} - \setbeforesubsubsecskip{-3.25ex \@plus -1ex \@minus -.2ex} -\newskip\aftersubsubsecskip -\newcommand{\setaftersubsubsecskip}[1]{\setlength{\aftersubsubsecskip}{#1}} - \setaftersubsubsecskip{1.5ex \@plus .2ex} -\newcommand{\subsubsecheadstyle}{} -\newcommand{\setsubsubsecheadstyle}[1]{\renewcommand{\subsubsecheadstyle}{#1}} - \setsubsubsecheadstyle{\normalsize\bfseries\raggedright} - -\newcommand{\paragraph}{% - \parahook% - \@startsection{paragraph}{4}% level 4 - {\paraindent}% heading indent - {\beforeparaskip}% skip before the heading - {\afterparaskip}% skip after the heading - {\normalfont\paraheadstyle}} % font -\newcommand{\parahook}{} -\newcommand{\setparahook}[1]{\renewcommand{\parahook}{#1}} -\newlength{\paraindent} -\newcommand{\setparaindent}[1]{\setlength{\paraindent}{#1}} - \setparaindent{\z@} -\newskip\beforeparaskip -\newcommand{\setbeforeparaskip}[1]{\setlength{\beforeparaskip}{#1}} - \setbeforeparaskip{3.25ex \@plus 1ex \@minus .2ex} -\newskip\afterparaskip -\newcommand{\setafterparaskip}[1]{\setlength{\afterparaskip}{#1}} - \setafterparaskip{-1em} -\newcommand{\paraheadstyle}{} -\newcommand{\setparaheadstyle}[1]{\renewcommand{\paraheadstyle}{#1}} - \setparaheadstyle{\normalsize\bfseries} - -\newcommand{\subparagraph}{% - \subparahook% - \@startsection{subparagraph}{5}% level 5 - {\subparaindent}% heading indent - {\beforesubparaskip}% skip before the heading - {\aftersubparaskip}% skip after the heading - {\normalfont\subparaheadstyle}} % font -\newcommand{\subparahook}{} -\newcommand{\setsubparahook}[1]{\renewcommand{\subparahook}{#1}} -\newlength{\subparaindent} -\newcommand{\setsubparaindent}[1]{\setlength{\subparaindent}{#1}} - \setsubparaindent{\parindent} -\newskip\beforesubparaskip -\newcommand{\setbeforesubparaskip}[1]{\setlength{\beforesubparaskip}{#1}} - \setbeforesubparaskip{3.25ex \@plus 1ex \@minus .2ex} -\newskip\aftersubparaskip -\newcommand{\setaftersubparaskip}[1]{\setlength{\aftersubparaskip}{#1}} - \setaftersubparaskip{-1em} -\newcommand{\subparaheadstyle}{} -\newcommand{\setsubparaheadstyle}[1]{\renewcommand{\subparaheadstyle}{#1}} - \setsubparaheadstyle{\normalsize\bfseries} - -\newcommand{\sethangfrom}[1]{\renewcommand{\@hangfrom}[1]{#1}} -\newcommand{\setsecnumformat}[1]{\renewcommand{\@seccntformat}[1]{#1}} -\newcommand{\hangsecnum}{% - \def\@seccntformat##1{\llap{\csname the##1\endcsname\quad}}} -\newcommand{\defaultsecnum}{% - \def\@seccntformat##1{\csname the##1\endcsname\quad}} - -\newcommand{\plainbreak}{\@ifstar{\@spbreak}{\@pbreak}} -\newcommand*{\@pbreak}[1]{\par - \penalty -100 - \vskip #1\onelineskip \@plus 2\onelineskip - \penalty -20 - \vskip \z@ \@plus -2\onelineskip - \@afterindentfalse - \@afterheading} -\newcommand*{\@spbreak}[1]{\par - \penalty -100 - \vskip #1\onelineskip \@plus 2\onelineskip - \penalty -20 - \vskip \z@ \@plus -2\onelineskip - \@afterindenttrue - \@afterheading} - -\newcommand{\fancybreak}{\@ifstar{\@sfbreak}{\@fbreak}} -\newcommand{\@fbreak}[1]{\par - \penalty -100 - \noindent\parbox{\linewidth}{\centering #1}\null - \penalty -20 -%% \vskip -\onelineskip - \@afterindentfalse - \@afterheading} -\newcommand{\@sfbreak}[1]{\par - \penalty -100 - \noindent\parbox{\linewidth}{\centering #1}\null - \penalty -20 -%% \vskip -\onelineskip - \@afterindenttrue - \@afterheading} - -\newcommand{\plainfancybreak}{\@ifstar{\@spfbreak}{\@pfbreak}} -\newcommand{\@pfbreak}[3]{\par - \@tempdimc\pagegoal \advance\@tempdimc-\pagetotal - \ifdim #1>\@tempdimc \@fbreak{#3}\else \@pbreak{#2}\fi} -\newcommand{\@spfbreak}[3]{\par - \@tempdimc\pagegoal \advance\@tempdimc-\pagetotal - \ifdim #1>\@tempdimc \@sfbreak{#3}\else \@spbreak{#2}\fi} - -\newcommand*{\pen@ltyabovepfbreak}{2} -\newcommand*{\pen@ltybelowpfbreak}{-4} - -\newlength{\pfbreakskip} - \setlength{\pfbreakskip}{2\baselineskip} -\newcommand{\pfbreakdisplay}{*\quad*\quad*} - -\def\pfbre@kdispl@y{\vbox to 1\pfbreakskip{\vss - \hb@xt@ \columnwidth{\hss \pfbreakdisplay \hss}% - \vss}} - -\edef\nopfbreakOutput{\the\output} -\def\pfbreakOutput{% - \ifnum\outputpenalty=\pen@ltyabovepfbreak - \nopfbreakOutput - \pfbre@kdispl@y - \nobreak - \vskip-\pfbreakskip - \else\ifnum\outputpenalty=\pen@ltybelowpfbreak - \unvbox 255\relax - \nobreak - \vskip-\pfbreakskip - \pfbre@kdispl@y - \break - \else - \nopfbreakOutput - \fi - \fi} -\output={\pfbreakOutput} - -\newcommand{\pfbreak}{\@ifstar{\@spfbreakgap}{\@pfbreakgap}} -\newcommand{\@pfbreakgap}{% - \par {% - \skip@\lastskip - \nobreak - \vskip -\ifdim\prevdepth>\maxdepth \maxdepth - \else\ifdim\prevdepth>-1000pt\prevdepth - \else\ifinner 0pt - \else \pagedepth - \fi \fi \fi - \vskip -\skip@ - \ifdim\skip@<\pfbreakskip - \advance\skip@ -1\skip@ \advance\skip@ 1\pfbreakskip - \fi - \penalty\pen@ltyabovepfbreak - \vskip\skip@ - \penalty\pen@ltybelowpfbreak - } - \@afterindentfalse - \@afterheading -} -\newcommand{\@spfbreakgap}{% - \par {% - \skip@\lastskip - \nobreak - \vskip -\ifdim\prevdepth>\maxdepth \maxdepth - \else\ifdim\prevdepth>-1000pt\prevdepth - \else\ifinner 0pt - \else \pagedepth - \fi \fi \fi - \vskip -\skip@ - \ifdim\skip@<\pfbreakskip - \advance\skip@ -1\skip@ \advance\skip@ 1\pfbreakskip - \fi - \penalty\pen@ltyabovepfbreak - \vskip\skip@ - \penalty\pen@ltybelowpfbreak - } - \@afterindenttrue - \@afterheading -} - -\newcommand*{\noprelistbreak}{\@nobreaktrue\nopagebreak} - -\newcommand\appendix{\par - \setcounter{chapter}{0}% - \setcounter{section}{0}% - \gdef\@chapapp{\appendixname}% - \gdef\thechapter{\@Alph\c@chapter}} - -\newcommand{\appendixpage}{% - \@ifstar{\@sapppage}{\@apppage}} -\def\@apppage{% - \@setuppart - \addappheadtotoc - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \printparttitle{\appendixpagename}\par}% - \@endpart} -\def\@sapppage{% - \@setuppart - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \printparttitle{\appendixpagename}\par}% - \@endpart} - -\def\addappheadtotoc{\addcontentsline{toc}{chapter}{\appendixtocname}} -\newcounter{@ppsavesec} -\newcounter{@ppsaveapp} -\setcounter{@ppsaveapp}{0} -\newcommand{\@ppsavesec}{% - \setcounter{@ppsavesec}{\value{chapter}}} -\newcommand{\@pprestoresec}{% - \setcounter{chapter}{\value{@ppsavesec}}} -\newcommand{\@ppsaveapp}{% - \setcounter{@ppsaveapp}{\value{chapter}}} -\newcommand{\restoreapp}{% - \setcounter{chapter}{\value{@ppsaveapp}}} - -\newcommand{\@resets@pp}{ - \par - \@ppsavesec - \setcounter{section}{0} - \setcounter{chapter}{0} - \renewcommand\@chapapp{\appendixname} - \renewcommand\thechapter{\@Alph\c@chapter} - \restoreapp -} - -\newenvironment{appendices}{\@resets@pp}% - {\@ppsaveapp\@pprestoresec} - -\newcommand{\setthesection}{\thechapter.\Alph{section}} - -\newcommand{\@resets@ppsub}{ - \par - \setcounter{section}{0} - \renewcommand{\thesection}{\setthesection} -} - -\newif\ifnamesubappendix - \namesubappendixfalse - -\newenvironment{subappendices}{% - \@resets@ppsub - \def\addappheadtotoc{\addcontentsline{toc}{section}{\appendixtocname}} - \ifnamesubappendix - \def\sectionname{\appendixname} - \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }% - \csname the##1\endcsname\quad} - \fi - }{} - -\newcommand{\@formatsecmark@pp}[1]{% - \MakeUppercase{\appendixname\space - \ifnum \c@secnumdepth >\z@ - \thesection\quad - \fi - #1}} -\newdimen\ragrparindent - \setlength{\ragrparindent}{\parindent} -\newcommand{\raggedyright}[1][2em]{% - \let\\\@centercr\@rightskip \z@ \@plus #1\relax \rightskip\@rightskip - \leftskip\z@skip - \parindent\ragrparindent} - -\newcommand{\hangfrom}[1]{% - \setbox\@tempboxa\hbox{{#1}}% - \hangindent \wd\@tempboxa\noindent\box\@tempboxa} - -\newcommand{\hangpara}[2]{\hangindent#1\hangafter#2\noindent} -\newenvironment{hangparas}[2]{\setlength{\parindent}{\z@} - \everypar={\hangpara{#1}{#2}}}{\par} - -\if@twocolumn - \setlength{\leftmargini}{2em} -\else - \setlength{\leftmargini}{2.5em} -\fi -\leftmargin \leftmargini -\setlength{\leftmarginii}{2.2em} -\setlength{\leftmarginiii}{1.87em} -\setlength{\leftmarginiv}{1.7em} -\if@twocolumn - \setlength{\leftmarginv}{.5em} - \setlength{\leftmarginvi}{.5em} -\else - \setlength{\leftmarginv}{1em} - \setlength{\leftmarginvi}{1em} -\fi -\setlength{\itemindent}{\z@} -\setlength{\labelsep}{0.5em} -\setlength{\labelwidth}{\leftmargini} - \addtolength{\labelwidth}{-\labelsep} -\@beginparpenalty -\@lowpenalty -\@endparpenalty -\@lowpenalty -\@itempenalty -\@lowpenalty - -\newlength{\parsepi} -\newlength{\topsepi} -\newlength{\itemsepi} -\newlength{\parsepii} -\newlength{\topsepii} -\newlength{\topsepiii} - -\newcommand{\defaultlists}{% %% initialise for 10pt - \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@} - \parsepi= 4\p@ \@plus2\p@ \@minus\p@ - \topsepi= 8\p@ \@plus2\p@ \@minus4\p@ - \itemsepi= 4\p@ \@plus2\p@ \@minus\p@ - \parsepii= 2\p@ \@plus\p@ \@minus\p@ - \topsepii= 4\p@ \@plus2\p@ \@minus\p@ - \topsepiii= 2\p@ \@plus\p@ \@minus\p@ -\ifcase\@ptsize % 0 = 10pt -\or % 1 = 11pt - \setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@} - \parsepi= 4.5\p@ \@plus2\p@ \@minus\p@ - \topsepi= 9\p@ \@plus3\p@ \@minus5\p@ - \itemsepi= 4.5\p@ \@plus2\p@ \@minus\p@ - \parsepii= 2\p@ \@plus\p@ \@minus\p@ - \topsepii= 4.5\p@ \@plus2\p@ \@minus\p@ - \topsepiii= 2\p@ \@plus\p@ \@minus\p@ -\or % 2 = 12pt - \setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@} - \parsepi= 5\p@ \@plus2.5\p@ \@minus\p@ - \topsepi= 10\p@ \@plus4\p@ \@minus6\p@ - \itemsepi= 5\p@ \@plus2.5\p@ \@minus\p@ - \parsepii= 2.5\p@ \@plus\p@ \@minus\p@ - \topsepii= 5\p@ \@plus2.5\p@ \@minus\p@ - \topsepiii= 2.5\p@ \@plus\p@ \@minus\p@ -\or % 3 = 13pt %% not available -\or % 4 = 14pt - \setlength\partopsep{4\p@ \@plus 2\p@ \@minus 2\p@} - \parsepi= 6\p@ \@plus2.5\p@ \@minus\p@ - \topsepi= 12\p@ \@plus4\p@ \@minus6\p@ - \itemsepi= 6\p@ \@plus2.5\p@ \@minus\p@ - \parsepii= 3\p@ \@plus\p@ \@minus\p@ - \topsepii= 6\p@ \@plus2.5\p@ \@minus\p@ - \topsepiii= 3\p@ \@plus\p@ \@minus\p@ -\or % 5 = 15pt %% not available -\or % 6 = 16pt %% not available -\or % 7 = 17pt - \setlength\partopsep{5\p@ \@plus 2\p@ \@minus 2\p@} - \parsepi= 7\p@ \@plus3\p@ \@minus\p@ - \topsepi= 14\p@ \@plus6\p@ \@minus8\p@ - \itemsepi= 7\p@ \@plus3\p@ \@minus\p@ - \parsepii= 3\p@ \@plus\p@ \@minus\p@ - \topsepii= 7\p@ \@plus3\p@ \@minus\p@ - \topsepiii= 3.5\p@ \@plus\p@ \@minus\p@ -\or % 8 = 18pt %% not available -\or % 9 = 9pt - \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@} - \parsepi= 3.5\p@ \@plus2\p@ \@minus\p@ - \topsepi= 7\p@ \@plus3\p@ \@minus5\p@ - \itemsepi= 3.5\p@ \@plus2\p@ \@minus\p@ - \parsepii= 2\p@ \@plus\p@ \@minus\p@ - \topsepii= 4\p@ \@plus2\p@ \@minus\p@ - \topsepiii= 2\p@ \@plus\p@ \@minus\p@ -\fi -} - -\newcommand{\tightlists}{% - \setlength\partopsep{0.5\onelineskip \@plus 0\p@ \@minus 0\p@} - \parsepi= \parskip - \itemsepi = \p@ \@plus\p@ \@minus\p@ - \topsepi = 0.5\parskip - \parsepii = \parskip - \topsepii = 0.5\parskip - \topsepiii = 0.5\parskip -} - -\def\@listi{\leftmargin\leftmargini - \parsep\parsepi - \topsep\topsepi - \itemsep\itemsepi} -\let\@listI\@listi -\defaultlists -\@listi - -\def\@listii{\leftmargin\leftmarginii - \labelwidth\leftmarginii - \advance\labelwidth-\labelsep - \topsep\topsepii - \parsep\parsepii - \itemsep\parsep} - -\def\@listiii{\leftmargin\leftmarginiii - \labelwidth\leftmarginiii - \advance\labelwidth-\labelsep - \topsep\topsepiii - \parsep\z@ - \partopsep \p@ \@plus\z@ \@minus\p@ - \itemsep\topsep} - -\def\@listiv{\leftmargin\leftmarginiv - \labelwidth\leftmarginiv - \advance\labelwidth-\labelsep} - -\def\@listv{\leftmargin\leftmarginv - \labelwidth\leftmarginv - \advance\labelwidth-\labelsep} - -\def\@listvi{\leftmargin\leftmarginvi - \labelwidth\leftmarginvi - \advance\labelwidth-\labelsep} - -\newcommand{\firmlist}{% - \setlength{\itemsep}{0.5\itemsep}\setlength{\parskip}{0.5\parskip}} -\newcommand{\tightlist}{% - \setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}} - -\newskip\m@msavetopsep -\newskip\m@msavepartopsep -\newcommand*{\savetrivseps}{% - \m@msavetopsep\topsep - \m@msavepartopsep\partopsep} -\newcommand*{\restoretrivseps}{% - \topsep\m@msavetopsep - \partopsep\m@msavepartopsep} -\savetrivseps - -\newcommand*{\zerotrivseps}{% - \topsep\z@ - \partopsep\z@} - -\renewcommand{\theenumi}{\@arabic\c@enumi} -\renewcommand{\theenumii}{\@alph\c@enumii} -\renewcommand{\theenumiii}{\@roman\c@enumiii} -\renewcommand{\theenumiv}{\@Alph\c@enumiv} -\newcommand{\labelenumi}{\theenumi.} -\newcommand{\labelenumii}{\theenumii)} -\newcommand{\labelenumiii}{\theenumiii.} -\newcommand{\labelenumiv}{\theenumiv.} -\renewcommand{\p@enumii}{\theenumi} -\renewcommand{\p@enumiii}{\theenumi(\theenumii)} -\renewcommand{\p@enumiv}{\p@enumiii\theenumiii} -\newtoks\@enLab -\def\@enQmark{?} -\def\@enLabel#1#2{% - \edef\@enThe{\noexpand#1{\@enumctr}}% - \@enLab\expandafter{\the\@enLab\csname the\@enumctr\endcsname}% - \@enloop} -\def\@enSpace{\afterassignment\@enSp@ce\let\@memtempa= } -\def\@enSp@ce{\@enLab\expandafter{\the\@enLab\space}\@enloop} -\def\@enGroup#1{\@enLab\expandafter{\the\@enLab{#1}}\@enloop} -\def\@enOther#1{\@enLab\expandafter{\the\@enLab#1}\@enloop} -\def\@enloop{\futurelet\@entemp\@enloop@} -\def\@enloop@{% - \ifx A\@entemp \def\@memtempa{\@enLabel\Alph }\else - \ifx a\@entemp \def\@memtempa{\@enLabel\alph }\else - \ifx i\@entemp \def\@memtempa{\@enLabel\roman }\else - \ifx I\@entemp \def\@memtempa{\@enLabel\Roman }\else - \ifx 1\@entemp \def\@memtempa{\@enLabel\arabic}\else - \ifx \@sptoken\@entemp \let\@memtempa\@enSpace \else - \ifx \bgroup\@entemp \let\@memtempa\@enGroup \else - \ifx \@enum@\@entemp \let\@memtempa\@gobble \else - \let\@memtempa\@enOther - \@enhook - \fi\fi\fi\fi\fi\fi\fi\fi - \@memtempa} -%% \providecommand\@enhook{} - \newcommand\@enhook{} -\def\enumerate{% - \ifnum \@enumdepth >3 \@toodeep\else - \advance\@enumdepth \@ne - \edef\@enumctr{enum\romannumeral\the\@enumdepth}\fi - \@ifnextchar[{\@@enum@}{\@enum@}} -\def\@@enum@[#1]{% - \@enLab{}\let\@enThe\@enQmark - \@enloop#1\@enum@ - \ifx\@enThe\@enQmark\@warning{The counter will not be printed.% - ^^J\space\@spaces\@spaces\@spaces The label is: \the\@enLab}\fi - \expandafter\edef\csname label\@enumctr\endcsname{\the\@enLab}% - \expandafter\let\csname the\@enumctr\endcsname\@enThe - \csname c@\@enumctr\endcsname7 - \expandafter\settowidth - \csname leftmargin\romannumeral\@enumdepth\endcsname - {\the\@enLab\hspace{\labelsep}}% - \@enum@} -\def\@enum@{\list{\csname label\@enumctr\endcsname}% - {\usecounter{\@enumctr}\def\makelabel##1{\hss\llap{##1}}}} - -\newcommand{\labelitemi}{\textbullet} -\newcommand{\labelitemii}{\normalfont\bfseries \textendash} -\newcommand{\labelitemiii}{\textasteriskcentered} -\newcommand{\labelitemiv}{\textperiodcentered} -\renewcommand{\itemize}[1][\@empty]{% - \ifnum \@itemdepth >\thr@@\@toodeep\else - \advance\@itemdepth\@ne - \ifx \@empty #1\else % optional argument - \@namedef{labelitem\romannumeral\the\@itemdepth}{#1}% - \fi - \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% - \expandafter - \list - \csname\@itemitem\endcsname - {\def\makelabel##1{\hss\llap{##1}}}% - \fi} -\let\enditemize =\endlist - -\newenvironment{description}% - {\list{}{\labelwidth\z@ \itemindent-\leftmargin - \let\makelabel\descriptionlabel}}% - {\endlist} -\newcommand*{\descriptionlabel}[1]{\hspace\labelsep - \normalfont\bfseries #1} -\newenvironment{blockdescription}% - {\list{}{\labelwidth\z@ \itemindent 0.5em \labelsep 0.5em - \let\makelabel\blockdescriptionlabel}}% - {\endlist} -\newcommand*{\blockdescriptionlabel}[1]{%%% \hspace\labelsep - \normalfont\bfseries #1} -\newenvironment{quotation}% - {\list{}{\listparindent 1.5em% - \itemindent \listparindent - \rightmargin \leftmargin - \parsep \z@ \@plus\p@}% - \item[]}% - {\endlist} -\newenvironment{quote}% - {\list{}{\rightmargin\leftmargin}% - \item[]}% - {\endlist} -\newcommand{\symbollabel}[1]{{#1 \hfill}} -\newenvironment{symbols}{\list{}% - {\itemindent 0em \leftmargin 8em - \labelsep 1em \labelwidth 5em - \let\makelabel\symbollabel}}% - {\endlist} -\newcommand{\symboldef}[2]{\item[#1] #2} -\newcounter{vslineno} -\newcounter{poemline} -\newcounter{modulo@vs} - -\newcommand{\poemlines}[1]{\linenumberfrequency{#1}% - \@memwarn{Use \string\linenumberfrequency\space - instead of \string\poemlines}% -} - -\newif\ifaltindent - \altindentfalse -\newif\ifpattern - \patternfalse -\newif\ifstarpattern - \starpatternfalse - -\newlength{\vleftskip} - \setlength{\vleftskip}{3em} -\newlength{\vrightskip} - \setlength{\vrightskip}{1em} - -\newlength{\stanzaskip} - \setlength{\stanzaskip}{\onelineskip} - -\newcommand{\flagverse}[1]{\hskip-\vleftskip\llap{#1}\hskip\vleftskip\ignorespaces} - -\newlength{\versewidth} -\newlength{\vgap} \setlength{\vgap}{1.5em} -\newcommand{\vin}{\hspace*{\vgap}} -\newlength{\vindent} \setlength{\vindent}{2\vgap} -\newcommand{\vinphantom}[1]{\leavevmode\phantom{#1}} - -\newcommand{\verselinebreak}[1][\z@]{\newline\hspace*{#1}% extra verseindent -} -\newcommand{\incr@vsline}{% - \refstepcounter{poemline}% - \stepcounter{vslineno}} - -\newcommand{\@vsifbang}[1]{\@ifnextchar !{\@firstoftwo{#1}}} -\newcommand{\@vsifgt}[1]{\@ifnextchar >{\@firstoftwo{#1}}} - -\newcommand{\@vscentercr}{% - \ifhmode \unskip\else \@nolnerr\fi - \hfill\rlap{\kern\vrightskip\kern\rightmargin% - \vlvnumfont\getthelinenumber{poemline}}% - \@vsifgt{\verselinebreak}{% - \incr@vsline - \par\@ifstar{\nobreak\@vsxcentercr}{% - \@vsifbang{\@ifnextchar[ {\@vsicentercr}{}}{\@vsxcentercr}}}} -\newcommand{\@vsxcentercr}{\addvspace{-\parskip}% - \@ifnextchar[ {\@vsicentercr}{\start@vsline}} -\def\@vsicentercr[#1]{\vskip #1\ignorespaces \start@vsline} -\newcommand{\start@vsline}{% - \ifaltindent\ifodd\c@vslineno\else\vin\fi\fi% - \ifpattern\get@vsindent\fi% - \ifstarpattern\getstar@vsindent\fi} - -\newcounter{verse} -\setcounter{verse}{0} -\newcommand{\theHpoemline}{\theverse.\thepoemline} - -\newenvironment{verse}[1][\linewidth]{ - \refstepcounter{verse}% - \setcounter{poemline}{0}\refstepcounter{poemline}% - \setcounter{vslineno}{1}% - \let\\=\@vscentercr - \list{}{\itemsep \z@ - \itemindent -\vindent% - \listparindent\itemindent - \parsep \stanzaskip - \ifdim #1 < \linewidth %% short line - \rightmargin \z@ - \leftmargin \linewidth - \advance\leftmargin -#1% - \advance\leftmargin -0.5\leftmargin - \advance\leftmargin \vindent - \else - \ifdim #1 > \linewidth %% long line - \rightmargin \z@ - \leftmargin \vindent - \else %% default - \rightmargin \leftmargin - \advance\leftmargin \vindent - \fi - \fi - \item[]}}{\endlist} - -\newenvironment{altverse}% - {\starpatternfalse\patternfalse\altindenttrue\setcounter{vslineno}{1}}% - {\altindentfalse} - -\newcommand{\@nameedef}[1]{ - \expandafter\protected@edef\csname #1\endcsname} - -\newif\ifbounderror - \bounderrorfalse -\newif\ifinteger - -\newcounter{chrsinstr} % CHARactersINSTRing - -\newcommand{\newarray}[3]{% - \@nameedef{#1-low}{#2}% - \@nameedef{#1-high}{#3}% - \ifnum #3<#2 - \@memerror{Limits for array #1 are in reverse order}{\@ehc}% - \fi -} - -\newcommand{\stringtoarray}[2]{% - \def\@vsarrayname{#1}% - \protected@edef\the@vsstring{#2}% - \newarray{\@vsarrayname}{1}{1}% - \@ifmtarg{#2}{% - \c@chrsinstr \z@ - \@namedef{\@vsarrayname-1}{} - }{% - \c@chrsinstr \@ne - \expandafter\@vsstringtoarray \the@vsstring\@vsend - } -} - -\def\@vsstringtoarray #1#2\@vsend{% - \@namedef{\@vsarrayname-\the\c@chrsinstr}{#1} - \@nameedef{\@vsarrayname-high}{\the\c@chrsinstr} - \@ifmtarg{#2}{% - \def\@vsinext{}% - }{% - \advance\c@chrsinstr \@ne - \def\@vsinext{% - \@vsstringtoarray #2\@vsend% - }% - } - \@vsinext -} - -\newcommand{\setarrayelement}[3]{% - \checkarrayindex{#1}{#2}% - \@nameedef{#1-#2}{#3}% -} - -\newcommand{\getarrayelement}[3]{% - \checkarrayindex{#1}{#2}% - \protected@edef#3{\@nameuse{#1-#2}}% -} - -\newcommand{\checkarrayindex}[2]{% - \bounderrorfalse - \expandafter\ifx\csname #1-low\endcsname\relax% - \ifpattern\else - \@memerror{No array called #1}{\@ehc}% - \fi - \bounderrortrue - \fi - \ifnum #2<\@nameuse{#1-low}\relax% - \ifpattern\else - \@memerror{Index #2 outside limits for array #1}{\@ehc}% - \fi - \bounderrortrue - \fi - \ifnum #2>\@nameuse{#1-high}\relax% - \ifpattern\else - \@memerror{Index #2 outside limits for array #1}{\@ehc}% - \fi - \bounderrortrue - \fi -} - -\newcommand{\arraytostring}[2]{% - \def#2{}% - \c@chrsinstr = \@nameuse{#1-low}% - \@vsarraytostring{#1}{#2}% -} - -\newcommand{\@vsarraytostring}[2]{% - \ifnum\c@chrsinstr>\@nameuse{#1-high}\else - \protected@edef#2{#2\@nameuse{#1-\thechrsinstr}}% - \advance\c@chrsinstr\@ne% - \@vsarraytostring{#1}{#2}% - \fi% -} - -\newcommand{\checkifinteger}[1]{% - \protected@edef\@vsa{#1}% - \ifcat _\ifnum9<1\gobm{#1} _\else A\fi - \integertrue% - \else - \integerfalse% - \fi% -} -\newcommand{\gobm}[1]{#1} - -\newcommand{\indentpattern}[1]{% - \stringtoarray{Array@vs}{#1}} - -\newcommand{\get@vsindent}{% - \getarrayelement{Array@vs}{\number\value{vslineno}}{\@vspat}% - \ifbounderror - \arraytostring{Array@vs}{\@vsp@t}% - \@memwarn{% - Index `\thevslineno' for pattern `\@vsp@t' is out of bounds}% - \def\@vspat{0}% - \else - \checkifinteger{\@vspat}% - \ifinteger\else - \arraytostring{Array@vs}{\@vsp@t}% - \@memwarn{% - `\@vspat' at index `\thevslineno' in pattern `\@vsp@t' is not a digit}% - \def\@vspat{0}% - \fi - \fi - \ifcase\@vspat\else\hspace*{\@vspat\vgap}\fi} -\newcommand{\getstar@vsindent}{% - \expandafter\ifx\csname Array@vs-high\endcsname\relax - \@memerror{A pattern has not been specified}{\@ehc} - \else - \ifnum\c@vslineno>\@nameuse{Array@vs-high}% - \setcounter{vslineno}{1}% - \fi - \get@vsindent - \fi} - -\newenvironment{patverse}% - {\starpatternfalse\patterntrue\altindentfalse\setcounter{vslineno}{1}}% - {\patternfalse} - -\newenvironment{patverse*}% - {\starpatterntrue\patternfalse\altindentfalse\setcounter{vslineno}{1}}% - {\starpatternfalse} - -\newcommand{\poemtitle}{\par% - \secdef\@vsptitle\@vssptitle} -\newcommand{\poemtoc}{section} - -\long\def\@vsptitle[#1]#2{% - \phantomsection - \addcontentsline{toc}{\poemtoc}{#1}% - \M@gettitle{#1}% - \poemtitlemark{#1}% - \@vstypeptitle{#2}% - \@afterheading} - -\long\def\@vssptitle#1{% - \M@gettitle{#1}% - \@vstypeptitle{#1}% - \@afterheading} - -\newcommand{\@vstypeptitle}[1]{% - \vspace{\beforepoemtitleskip}% - {\poemtitlefont #1\par}% - \vspace{\afterpoemtitleskip}% -} - -\newcommand{\poemtitlefont}{\normalfont\large\bfseries\centering} -\newcommand{\poemtitlemark}[1]{} - -\newlength{\beforepoemtitleskip} - \setlength{\beforepoemtitleskip}{3.5ex \@plus 1ex \@minus .2ex} -\newlength{\afterpoemtitleskip} - \setlength{\afterpoemtitleskip}{2.3ex \@plus.2ex} - -\setlength\arraycolsep{5\p@} -\setlength\tabcolsep{6\p@} -\setlength\arrayrulewidth{.4\p@} -\setlength\doublerulesep{2\p@} -\setlength\tabbingsep{\labelsep} -\skip\@mpfootins = \skip\footins -\setlength\fboxsep{3\p@} -\setlength\fboxrule{.4\p@} -\@addtoreset{equation}{chapter} -\renewcommand{\theequation}{% - \ifnum \c@chapter>\z@ \thechapter.\fi \@arabic\c@equation} -%%%%%%%%%% Array package code %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% With acknowledgements to %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% Frank Mittelbach & David Carlisle %%%%%%%%%%%%%%%%%%%%% - -\def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}} -\def\@testpach{\@chclass - \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else - \ifnum \@lastchclass=7 5 \else - \ifnum \@lastchclass=8 \tw@ \else - \ifnum \@lastchclass=9 \thr@@ - \else \z@ - \ifnum \@lastchclass = 10 \else - \edef\@nextchar{\expandafter\string\@nextchar}% - \@chnum - \if \@nextchar c\z@ \else - \if \@nextchar l\@ne \else - \if \@nextchar r\tw@ \else - \z@ \@chclass - \if\@nextchar |\@ne \else - \if \@nextchar !6 \else - \if \@nextchar @7 \else - \if \@nextchar <8 \else - \if \@nextchar >9 \else - 10 - \@chnum - \if \@nextchar m\thr@@\else - \if \@nextchar p4 \else - \if \@nextchar b5 \else - \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi - \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi \fi} -\def\prepnext@tok{\advance \count@ \@ne - \toks\count@{}} - -\def\save@decl{\toks \count@ = \expandafter\expandafter\expandafter - {\expandafter\@nextchar\the\toks\count@}} - -\def\insert@column{% - \the@toks \the \@tempcnta - \ignorespaces \@sharp \unskip - \the@toks \the \count@ \relax} -\let\m@mold@addamp\@addamp -\newcommand*{\m@m@addamp}{% - \if@firstamp - \@firstampfalse - \global\@curtab\@ne - \else - \@addtopreamble{&} - \global\advance\@curtab\@ne - \fi} -\let\@addamp\m@m@addamp - -\newdimen\col@sep -\def\@acol{\@addtopreamble{\hskip\col@sep}} -\def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue - \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax - \@temptokena{#1}\@tempswatrue - \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}% - \count@\m@ne - \let\the@toks\relax - \prepnext@tok - \expandafter \@tfor \expandafter \@nextchar - \expandafter :\expandafter =\the\@temptokena \do - {\@testpach - \ifcase \@chclass \@classz \or \@classi \or \@classii - \or \save@decl \or \or \@classv \or \@classvi - \or \@classvii \or \@classviii - \or \@classx - \or \@classx \fi - \@lastchclass\@chclass}% - \ifcase\@lastchclass - \@acol \or - \or - \@acol \or - \@preamerr \thr@@ \or - \@preamerr \tw@ \@addtopreamble\@sharp \or - \or - \else \@preamerr \@ne \fi - \def\the@toks{\the\toks}} -\def\@classx{% - \ifcase \@lastchclass - \@acolampacol \or - \@addamp \@acol \or - \@acolampacol \or - \or - \@acol \@firstampfalse \or - \@addamp - \fi} -\def\@classz{\@classx - \@tempcnta \count@ - \prepnext@tok - \@addtopreamble{\ifcase \@chnum - \hfil - \d@llarbegin - \insert@column - \d@llarend \hfil \or - \hskip1sp\d@llarbegin \insert@column \d@llarend \hfil \or - \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \or - $\vcenter - \@startpbox{\@nextchar}\insert@column \@endpbox $\or - \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or - \vbox \@startpbox{\@nextchar}\insert@column \@endpbox - \fi}\prepnext@tok} - -\def\@classviii{\ifnum \@lastchclass >\z@\ifnum\@lastchclass=\tw@\else - \@preamerr 4\@chclass 6 \@classvi \fi\fi} - -\def\@arrayrule{\@addtopreamble \vline} - -\def\@classvii{\ifnum \@lastchclass = \thr@@ - \@preamerr \thr@@ \fi} - -\def\@classvi{\ifcase \@lastchclass - \@acol \or - \@addtopreamble{\hskip \doublerulesep}\or - \@acol \or - \@classvii - \fi} - -\def\@classii{\advance \count@ \m@ne - \save@decl\prepnext@tok} - -\def\@classv{\save@decl - \expandafter\NC@ecs\@nextchar\extracolsep{}\extracolsep\@@@ - \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}% - \prepnext@tok} -\def\NC@ecs#1\extracolsep#2#3\extracolsep#4\@@@{\def\@tempa{#2}% - \ifx\@tempa\@empty\else\toks\count@={#1\tabskip#2\relax#3}\fi} - -\def\@classi{\@classvi - \ifcase \@chnum \@arrayrule \or - \@classv \fi} - -\def\@startpbox#1{\bgroup - \setlength\hsize{#1}\@arrayparboxrestore - \everypar{% - \vrule \@height \ht\@arstrutbox \@width \z@ - \everypar{}}% - } -\def\@endpbox{\@finalstrut\@arstrutbox \egroup\hfil} -\def\@array[#1]#2{% - \@tempdima \ht \strutbox - \advance \@tempdima by\extrarowheight - \setbox \@arstrutbox \hbox{\vrule - \@height \arraystretch \@tempdima - \@depth \arraystretch \dp \strutbox - \@width \z@}% - \begingroup - \@mkpream{#2}% - \xdef\@preamble{\noexpand \ialign \@halignto - \bgroup \@arstrut \@preamble - \tabskip \z@ \cr}% - \endgroup - \@arrayleft - \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi - \bgroup - \let \@sharp ##\let \protect \relax - \lineskip \z@ - \baselineskip \z@ - \m@th - \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble} -\newdimen \extrarowheight -\extrarowheight=0pt -\def\@arstrut{\unhcopy\@arstrutbox} -\def\@arraycr{\relax\iffalse{\fi\ifnum 0=`}\fi - \@ifstar \@xarraycr \@xarraycr} -\def\@xarraycr{\@ifnextchar [% - \@argarraycr {\ifnum 0=`{}\fi\cr}} -\def\@argarraycr[#1]{\ifnum0=`{}\fi\ifdim #1>\z@ - \expandafter\@xargarraycr\else - \expandafter\@yargarraycr\fi{#1}} -\def\@xargarraycr#1{\unskip - \@tempdima #1\advance\@tempdima \dp\@arstrutbox - \vrule \@depth\@tempdima \@width\z@ \cr} -\def\@yargarraycr#1{\cr\noalign{\vskip #1}} -\long\def\multicolumn#1#2#3{% - \multispan{#1}\begingroup - \def\@addamp{\if@firstamp \@firstampfalse \else - \@preamerr 5\fi}% - \@mkpream{#2}\@addtopreamble\@empty - \endgroup - \def\@sharp{#3}% - \@arstrut \@preamble - \null - \ignorespaces} -\let\d@llarbegin\begingroup -\let\d@llarend\endgroup -\def\array{\col@sep\arraycolsep - \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}% - \@tabarray} -\def\@tabarray{\@ifnextchar[{\@@array}{\@@array[c]}} -\let\@@array\@array -\def\tabular{\gdef\@halignto{}\@tabular} -\expandafter\def\csname tabular*\endcsname#1{% - \setlength\dimen@{#1}% - \xdef\@halignto{to\the\dimen@}\@tabular} -\def\@tabular{% - \leavevmode - \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup - \let\d@llarend\endgroup - \@tabarray} -\def\endarray{\crcr \egroup \egroup \@arrayright \gdef\@preamble{}} -\let\@arrayleft\@empty -\let\@arrayright\@empty -\def\endtabular{\endarray $\egroup} -\expandafter\let\csname endtabular*\endcsname=\endtabular -\let\@ampacol=\relax \let\@expast=\relax -\let\@arrayclassiv=\relax \let\@arrayclassz=\relax -\let\@tabclassiv=\relax \let\@tabclassz=\relax -\let\@arrayacol=\relax \let\@tabacol=\relax -\let\@tabularcr=\relax \let\@@endpbox=\relax -\let\@argtabularcr=\relax \let\@xtabularcr=\relax -\def\@preamerr#1{\def\@tempd{{..} at wrong position: }% - \ClassError{memoir}{% - \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0 - Missing arg: token ignored\or %1 - Empty preamble: `l' used\or %2 - >\@tempd token ignored\or %3 - <\@tempd changed to !{..}\or %4 - Only one column-spec. allowed.\fi}\@ehc} %5 - -\def\newcolumntype#1{% - \edef\NC@char{\string#1}% - \@ifundefined{NC@find@\NC@char}% - {\@tfor\next:=<>clrmbp@!|\do{\if\noexpand\next\NC@char - \@memwarn{Redefining primitive column \NC@char}\fi}% - \NC@list\expandafter{\the\NC@list\NC@do#1}}% - {\@memwarn{Column \NC@char\space is already defined}}% - \@namedef{NC@find@\NC@char}##1#1{\NC@{##1}}% - \@ifnextchar[{\newcol@{\NC@char}}{\newcol@{\NC@char}[0]}} -\def\newcol@#1[#2]#3{\expandafter\@reargdef - \csname NC@rewrite@#1\endcsname[#2]{\NC@find#3}} -\def\NC@#1{% - \@temptokena\expandafter{\the\@temptokena#1}\futurelet\next\NC@ifend} -\def\NC@ifend{% - \ifx\next\relax - \else\@tempswatrue\expandafter\NC@rewrite\fi} -\def\NC@do#1{% - \expandafter\let\expandafter\NC@rewrite - \csname NC@rewrite@\string#1\endcsname - \expandafter\let\expandafter\NC@find - \csname NC@find@\string#1\endcsname - \expandafter\@temptokena\expandafter{\expandafter}% - \expandafter\NC@find\the\@temptokena#1\relax} -\def\showcols{{\def\NC@do##1{\let\NC@do\NC@show}\the\NC@list}} -\def\NC@show#1{% - \typeout{Column #1\expandafter\expandafter\expandafter\NC@strip - \expandafter\meaning\csname NC@rewrite@#1\endcsname\@@}} -\def\NC@strip#1:#2->#3 #4\@@{#2 -> #4} -\newtoks\NC@list -\newcolumntype{*}[2]{} -\long\@namedef{NC@rewrite@*}#1#2{% - \count@#1 - \loop - \ifnum\count@>\z@ - \advance\count@\m@ne - \@temptokena\expandafter{\the\@temptokena#2}% - \repeat - \NC@find} - -\newlength{\extratabsurround} -\setlength{\extratabsurround}{2pt} -\newlength{\backup@length} -\newcommand{\firsthline}{% - \multicolumn1c{% - \global\backup@length\ht\@arstrutbox - \global\advance\backup@length\dp\@arstrutbox - \global\advance\backup@length\arrayrulewidth - \raise\extratabsurround\copy\@arstrutbox - }\\[-\backup@length]\hline -} -\newcommand{\lasthline}{\hline\multicolumn1c{% - \global\backup@length2\ht\@arstrutbox - \global\advance\backup@length2\dp\@arstrutbox - \global\advance\backup@length\arrayrulewidth - }\\[-\backup@length]% - \multicolumn1c{% - \lower\extratabsurround\copy\@arstrutbox - }% -} -\CheckCommand*\@xhline{\ifx\reserved@a\hline - \vskip\doublerulesep - \vskip-\arrayrulewidth - \fi - \ifnum0=`{\fi}} -\renewcommand*\@xhline{\ifx\reserved@a\hline - \vskip\doublerulesep - \fi - \ifnum0=`{\fi}} - -%%%%%%%%%%% end Array package code %%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%% Dcolumn package code %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%% - -\def\DC@#1#2#3{% - \uccode`\~=`#1\relax - \m@th - \afterassignment\DC@x\count@#3\relax{#1}{#2}} -\def\DC@x#1\relax#2#3{% - \ifnum\z@>\count@ - \expandafter\DC@centre - \else - \expandafter\DC@right - \fi - {#2}{#3}{#1}} -\def\DC@centre#1#2#3{% - \let\DC@end\DC@endcentre - \uppercase{\def~}{$\egroup\setbox\tw@=\hbox\bgroup${#2}}% - \setbox\tw@=\hbox{${\phantom{{#2}}}$}% - \setbox\z@=\hbox\bgroup$\mathcode`#1="8000 } -\def\DC@endcentre{$\egroup - \ifdim \wd\z@>\wd\tw@ - \setbox\tw@=\hbox to\wd\z@{\unhbox\tw@\hfill}% - \else - \setbox\z@=\hbox to\wd\tw@{\hfill\unhbox\z@}\fi - \box\z@\box\tw@} -\def\DC@right#1#2#3{% - \ifx\relax#3\relax - \hfill - \let\DC@rl\bgroup - \else - \edef\DC@rl{to\the\count@\dimen@ii\bgroup\hss\hfill}% - \count@\@gobble#3\relax - \fi - \let\DC@end\DC@endright - \uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}% - \setbox\z@\hbox{$1$}\dimen@ii\wd\z@ - \dimen@\count@\dimen@ii - \setbox\z@\hbox{${#2}$}\advance\dimen@\wd\z@ - \setbox\tw@\hbox to\dimen@{}% - \setbox\z@\hbox\DC@rl$\mathcode`#1="8000 } -\def\DC@endright{$\hfil\egroup\box\z@\box\tw@} -\newcolumntype{D}[3]{>{\DC@{#1}{#2}{#3}}c<{\DC@end}} - -%%%%%%%%%% end Dcolumn package code %%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%% Delarray package code %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%% - -\def\@@array[#1]{\@ifnextchar\bgroup - {\let\@arrayleft\relax\let\@arrayright\relax\@array[#1]}% - {\@del@array[#1]}} -\def\@del@array[#1]#2#3#4{% - \setbox\z@\hbox{$\left#2\right#4$}% - \if#1c\def\@arrayleft{\left#2}\def\@arrayright{\right#4}% - \else\def\@arrayleft{\setbox\z@}% - \def\@arrayright{% - \dimen@=\dp\z@ - \advance\dimen@-\ht\z@ - \divide \dimen@ by \tw@ - \advance\dimen@ by\fontdimen22 \textfont\tw@ - \lower\dimen@\hbox{$\left#2\vcenter{\unvbox\z@}\right#4$}}% - \fi - \@array[#1]{#3}} -%%%%%%%%%% end Delarray package code %%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%% Tabularx package code %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% With acknowledgements to David Carlisle %%%%%%%%%%%%%%%%%%%%% - -\newdimen\TX@col@width -\newdimen\TX@old@table -\newdimen\TX@old@col -\newdimen\TX@target -\newdimen\TX@delta -\newcount\TX@cols -\newif\ifTX@ -\def\tabularx#1{% -\edef\TX@{\@currenvir}% - {\ifnum0=`}\fi - \setlength\TX@target{#1}% - \TX@typeout{Target width: #1 = \the\TX@target.}% - \toks@{}\TX@get@body} - -\let\endtabularx\relax -\long\def\TX@get@body#1\end - {\toks@\expandafter{\the\toks@#1}\TX@find@end} -\def\TX@find@end#1{% - \def\@tempa{#1}% - \ifx\@tempa\TX@\expandafter\TX@endtabularx - \else\toks@\expandafter - {\the\toks@\end{#1}}\expandafter\TX@get@body\fi} -\def\TX@{tabularx} -\def\TX@endtabularx{% - \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}% - \let\verb\TX@verb - \def\@elt##1{\global\value{##1}\the\value{##1}\relax}% - \edef\TX@ckpt{\cl@@ckpt}% - \let\@elt\relax - \TX@old@table\maxdimen - \TX@col@width\TX@target - \global\TX@cols\@ne - \TX@typeout@ - {\@spaces Table Width\@spaces Column Width\@spaces X Columns}% - \TX@trial{\def\NC@rewrite@X{% - \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}% - \loop - \TX@arith - \ifTX@ - \TX@trial{}% - \repeat - {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext - \csname tabular*\expandafter\endcsname\expandafter\TX@target - \the\toks@ - \csname endtabular*\endcsname}% - \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn - \ifnum0=`{\fi}% - \expandafter\end\expandafter{\TX@}} -\def\TX@arith{% - \TX@false - \ifdim\TX@old@table=\wd\@tempboxa - \TX@col@width\TX@old@col - \TX@typeout@{Reached minimum width, backing up.}% - \else - \dimen@\wd\@tempboxa - \advance\dimen@ -\TX@target - \ifdim\dimen@<\TX@delta - \TX@typeout@{Reached target.}% - \else - \ifnum\TX@cols>\@ne - \advance\TX@cols\m@ne - \fi - \divide\dimen@\TX@cols - \advance\dimen@ -\TX@col@width - \ifdim \dimen@ >\z@ - \@memwarn{X Columns too narrow (table too wide)\MessageBreak}% - \TX@col@width\TX@error@width\relax - \else - \TX@old@col\TX@col@width - \TX@old@table\wd\@tempboxa - \TX@col@width-\dimen@ - \TX@true - \fi - \fi - \fi} -\def\TX@error@width{1em} -\TX@delta\hfuzz -\newcolumntype{X}{} -\def\tabularxcolumn#1{p{#1}} -\def\TX@newcol{\newcol@{X}[0]} -\def\TX@trial#1{% - \setbox\@tempboxa\hbox{% - #1\relax - \let\@footnotetext\TX@trial@ftn - \let\TX@vwarn\@empty - \expandafter\let\expandafter\tabularx\csname tabular*\endcsname - \expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname - \def\write{\begingroup - \def\let{\afterassignment\endgroup\toks@}% - \afterassignment\let\count@}% - \hbadness\@M - \hfuzz\maxdimen - \let\hbadness\@tempcnta - \let\hfuzz\@tempdima - \expandafter\tabular\the\toks@ - \endtabular}% - \TX@ckpt - \TX@typeout@{\@spaces - \expandafter\TX@align - \the\wd\@tempboxa\space\space\space\space\space\@@ - \expandafter\TX@align - \the\TX@col@width\space\space\space\space\space\@@ - \@spaces\the\TX@cols}} -\def\TX@align#1.#2#3#4#5#6#7#8#9\@@{% - \ifnum#1<10 \space\fi - \ifnum#1<100 \space\fi - \ifnum#1<\@m\space\fi - \ifnum#1<\@M\space\fi - #1.#2#3#4#5#6#7#8\space\space} -\def\arraybackslash{\let\\\@arraycr} -\def\tracingtabularx{% - \def\TX@typeout{\ClassWarningNoLine{memoir}}% - \def\TX@typeout@##1{\typeout{(tabularx) ##1}}} -\let\TX@typeout\@gobble -\let\TX@typeout@\@gobble -\newtoks\TX@ftn -\long\def\TX@ftntext#1{% - \edef\@tempa{\the\TX@ftn\noexpand\footnotetext - [\the\csname c@\@mpfn\endcsname]}% - \global\TX@ftn\expandafter{\@tempa{#1}}}% -\long\def\TX@xftntext[#1]#2{% - \global\TX@ftn\expandafter{\the\TX@ftn\footnotetext[#1]{#2}}} -\long\def\TX@trial@ftn#1{} -{\uccode`\*=`\ % -\uppercase{\gdef\TX@verb{% - \leavevmode\null\TX@vwarn - {\ifnum0=`}\fi\ttfamily\let\\\ignorespaces - \@ifstar{\let~*\TX@vb}{\TX@vb}}}} -\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}% - \expandafter\TX@v\meaning\@tempa\\ \\\ifnum0=`{\fi}}\@tempa!} -\def\TX@v#1!{\afterassignment\TX@vfirst\let\@tempa= } -\begingroup -\catcode`\*=\catcode`\# -\catcode`\#=12 -\gdef\TX@vfirst{% - \if\@tempa#% - \def\@tempb{\TX@v@#}% - \else - \let\@tempb\TX@v@ - \if\@tempa\space~\else\@tempa\fi - \fi - \@tempb} -\gdef\TX@v@*1 *2{% - \TX@v@hash*1##\relax\if*2\\\else~\expandafter\TX@v@\fi*2} -\gdef\TX@v@hash*1##*2{*1\ifx*2\relax\else#\expandafter\TX@v@hash\fi*2} -\endgroup -\def\TX@vwarn{% - \@warning{\noexpand\verb may be unreliable inside tabularx}% - \global\let\TX@vwarn\@empty} - -%%%%%%%%%% end Tabularx package code %%%%%%%%%%%%%%%%%%%%% - -\@memfakeusepackage{array} -\@memfakeusepackage{dcolumn} -\@memfakeusepackage{delarray} -\@memfakeusepackage{tabularx} - -\newcommand*{\bktabrule}[1]{% - \hrule \@height#1} - -%%%%%%%%%% Booktabs package code %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% slightly modified by PRW %%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%% by permission of Simon Fear %%%%%%%%%%%%%%%%%%%%% - -\newdimen\heavyrulewidth -\newdimen\lightrulewidth -\newdimen\cmidrulewidth -\newdimen\belowrulesep -\newdimen\belowbottomsep -\newdimen\aboverulesep -\newdimen\abovetopsep -\newdimen\cmidrulesep -\newdimen\cmidrulekern -\newdimen\defaultaddspace -\heavyrulewidth=.08em -\lightrulewidth=.05em -\cmidrulewidth=.03em -\belowrulesep=.65ex -\belowbottomsep=\z@ -\aboverulesep=.4ex -\abovetopsep=\z@ -\cmidrulesep=\doublerulesep -\cmidrulekern=.5em -\defaultaddspace=.5em - -\newcount\@cmidla -\newcount\@cmidlb -\newdimen\@aboverulesep -\newdimen\@belowrulesep -\newcount\@thisruleclass -\newcount\@lastruleclass -\@lastruleclass=0 -\newdimen\@thisrulewidth - -\def\futurenonspacelet#1{\def\@BTcs{#1}% - \afterassignment\@BTfnslone\let\nexttoken= } -\def\@BTfnslone{\expandafter\futurelet\@BTcs\@BTfnsltwo} -\def\@BTfnsltwo{\expandafter\ifx\@BTcs\@sptoken\let\next=\@BTfnslthree - \else\let\next=\nexttoken\fi \next} -\def\@BTfnslthree{\afterassignment\@BTfnslone\let\next= } - - - - -\def\toprule{\noalign{\ifnum0=`}\fi - \@aboverulesep=\abovetopsep - \global\@belowrulesep=\aboverulesep %global cos for use in the next noalign - \global\@thisruleclass=\@ne - \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}} - -\def\midrule{\noalign{\ifnum0=`}\fi - \@aboverulesep=\aboverulesep - \global\@belowrulesep=\belowrulesep - \global\@thisruleclass=\@ne - \@ifnextchar[{\@BTrule}{\@BTrule[\lightrulewidth]}} - -\def\bottomrule{\noalign{\ifnum0=`}\fi - \@aboverulesep=\aboverulesep - \global\@belowrulesep=\belowbottomsep - \global\@thisruleclass=\@ne - \@ifnextchar[{\@BTrule}{\@BTrule[\heavyrulewidth]}} - -\def\specialrule#1#2#3{\noalign{\ifnum0=`}\fi - \@aboverulesep=#2\global\@belowrulesep=#3\global\@thisruleclass=\tw@ - \@BTrule[#1]} - -\def\addlinespace{\noalign{\ifnum0=`}\fi - \@ifnextchar[{\@addspace}{\@addspace[\defaultaddspace]}} -\def\@addspace[#1]{\global\@belowrulesep=#1\global\@thisruleclass=\tw@ - \futurelet\@tempa\@BTendrule} - -\def\@BTrule[#1]{% - \global\@thisrulewidth=#1\relax - \ifnum\@thisruleclass=\tw@\vskip\@aboverulesep\else - \ifnum\@lastruleclass=\z@\vskip\@aboverulesep\else - \ifnum\@lastruleclass=\@ne\vskip\doublerulesep\fi\fi\fi - - \ifx\longtable\undefined\let\@BTswitch\@BTnormal\else - \ifx\hline\LT@hline\let\@BTswitch\@BLTrule\else\let\@BTswitch\@BTnormal\fi\fi - \@BTswitch} - -\def\@BTnormal{% - \bktabrule{\@thisrulewidth}\futurenonspacelet\@tempa\@BTendrule} -\def\@BLTrule{\@ifnextchar({\@@BLTrule}{\@@BLTrule()}} -\def\@@BLTrule(#1){\@setrulekerning{#1}% -\global\@cmidlb\LT@cols -\ifnum0=`{\fi}% -\@cmidruleb -\noalign{\ifnum0=`}\fi -\futurenonspacelet\@tempa\@BTendrule} - -\def\@BTendrule{\ifx\@tempa\toprule\global\@lastruleclass=\@thisruleclass - \else\ifx\@tempa\midrule\global\@lastruleclass=\@thisruleclass - \else\ifx\@tempa\bottomrule\global\@lastruleclass=\@thisruleclass - \else\ifx\@tempa\cmidrule\global\@lastruleclass=\@thisruleclass - \else\ifx\@tempa\specialrule\global\@lastruleclass=\@thisruleclass - \else\ifx\@tempa\addlinespace\global\@lastruleclass=\@thisruleclass - \else\global\@lastruleclass=\z@\fi\fi\fi\fi\fi\fi - \ifnum\@lastruleclass=\@ne\relax\else\vskip\@belowrulesep\fi - \ifnum0=`{\fi}} -\def\@setrulekerning#1{\global\let\cmrkern@l\z@ - \global\let\cmrkern@r\z@ - \@tfor\@tempa :=#1\do - {\if\@tempa r\global\let\cmrkern@r\cmidrulekern - \def\cmrsideswitch{\cmrkern@r}\else - \if\@tempa l\global\let\cmrkern@l\cmidrulekern - \def\cmrsideswitch{\cmrkern@l}\else - \global\expandafter\let\cmrsideswitch\@tempa - \fi\fi}} - -\def\cmidrule{\noalign{\ifnum0=`}\fi - \@ifnextchar[{\@cmidrule}{\@cmidrule[\cmidrulewidth]}} -\def\@cmidrule[#1]{\@ifnextchar({\@@cmidrule[#1]}{\@@cmidrule[#1]()}} -\def\@@cmidrule[#1](#2)#3{\@@@cmidrule[#3]{#1}{#2}} - -\def\@@@cmidrule[#1-#2]#3#4{\global\@cmidla#1\relax - \global\advance\@cmidla\m@ne - \ifnum\@cmidla>0\global\let\@gtempa\@cmidrulea\else - \global\let\@gtempa\@cmidruleb\fi - \global\@cmidlb#2\relax - \global\advance\@cmidlb-\@cmidla - \global\@thisrulewidth=#3 - \@setrulekerning{#4} - \ifnum\@lastruleclass=\z@\vskip \aboverulesep\fi - \ifnum0=`{\fi}\@gtempa - \noalign{\ifnum0=`}\fi\futurenonspacelet\@tempa\@xcmidrule} -\def\@xcmidrule{\ifx\@tempa\cmidrule\vskip-\@thisrulewidth - \global\@lastruleclass=\@ne\else - \ifx\@tempa\morecmidrules\vskip \cmidrulesep - \global\@lastruleclass=\@ne\else - \vskip \belowrulesep\global\@lastruleclass=\z@\fi\fi - \ifnum0=`{\fi}} - -\def\@cmidrulea{\multispan\@cmidla&\multispan\@cmidlb - \unskip\hskip \cmrkern@l\leaders\bktabrule{\@thisrulewidth}\hfill - \hskip \cmrkern@r\cr} -\def\@cmidruleb{\multispan\@cmidlb - \unskip\hskip \cmrkern@l\leaders\bktabrule{\@thisrulewidth}\hfill - \hskip \cmrkern@r\cr} - -\def\morecmidrules{\noalign{\relax}} - -%%%%%%%%%% end of Booktabs package code %%%%%%%%%%%%%%%%%%%%% - -\newskip\ctableftskip \ctableftskip=\fill -\newskip\ctabrightskip \ctabrightskip=\fill - -\expandafter\def\csname ctabular*\endcsname{% - \@ifnextchar[ {\@ctabularstar}{\@ctabularstar[c]}} -\def\@ctabularstar[#1]#2{\global\@curtab\@ne - \ctableftskip\fill - \ctabrightskip\fill - \if l#1% left - \ctableftskip\z@ - \else - \if r#1% right - \ctabrightskip\z@ - \fi - \fi - \setlength\dimen@{#2}% - \xdef\@halignto{to\the\dimen@}\NC@tabular} -\newcommand*{\ctabular}[1][c]{\global\@curtab\@ne - \ctableftskip\fill - \ctabrightskip\fill - \if l#1% left - \ctableftskip\z@ - \else - \if r#1% right - \ctabrightskip\z@ - \fi - \fi - \gdef\@halignto{to\hsize}\NC@tabular} - -\newcommand*{\NC@tabular}{% - \par - \addvspace{\topsep} - \col@sep\tabcolsep - \let\d@llarbegin\begingroup - \let\d@llarend\endgroup - \@NCtabarray} - -\newcommand*{\@NCialign}{\everycr{}\tabskip\ctableftskip\halign} - -\newcommand*{\@NCtabarray}[1]{% - \@tempdima \ht\strutbox - \advance\@tempdima\extrarowheight - \setbox \@arstrutbox \hbox{\vrule - \@height \arraystretch \@tempdima - \@depth \arraystretch \dp\strutbox - \@width\z@}% - \begingroup -%% \@mkpream{@{\hspace{\@totalleftmargin}}#1@{}}% - \@mkpream{#1}% - \xdef\@preamble{\@NCialign \@halignto - \bgroup & \tabskip\z@ - \@arstrut - \@preamble - \tabskip\ctabrightskip - \cr}% - \endgroup - \let\@sharp ##\let\protect\relax - \lineskip\z@ - \baselineskip\z@ - \let\\\@arraycr - \let\tabularnewline\\% - \let\par\@empty - \ctabsetlines - \@preamble -} - -\def\endctabular{% - \crcr \egroup - \gdef\@preamble{}% - \addvspace{\topsep} - \noindent} -\expandafter\let\csname endctabular*\endcsname=\endctabular - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand*{\memcline}[2]{\m@m@cline[#1]#2\@nil} -\def\m@m@cline[#1]#2-#3\@nil{% - \omit - \@multicnt#2% - \advance\@multispan\m@ne - \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi - \@multicnt#3% - \advance\@multicnt-#2% - \advance\@multispan\@ne - \leaders\hrule\@height #1\hfill % <- variable \@height value - \cr - \noalign{\vskip- #1}} % <- variable \@height value - -\newcommand*{\memhline}[1][\arrayrulewidth]{\memcline{#1}{1-\@curtab}} -\newcommand*{\m@mhline}{\cline{1-\@curtab}} -\def\m@m@BTnormal{% - \ifnum0=`{\fi} % closes the \noalign - \multispan{\@curtab} \leaders\bktabrule{\@thisrulewidth}\hfill\cr - \noalign{\ifnum0=`}\fi - \futurenonspacelet\@tempa\@BTendrule} - -\def\ctabsetlines{% - \let\hline\m@mhline - \let\@BTnormal\m@m@BTnormal -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcount\abovecolumnspenalty - \abovecolumnspenalty=10000 -\newcount\@linestogo % lines remaining to be procesed -\newcount\@cellstogo % cells remaining in column or row -\newcount\@cellsincolumn % number of lines per column -\newtoks\crtok - \crtok = {\cr}% - -\newdimen\@mincolumnwidth -\let\c@lleftskip\hfil % left skip within a column -\let\c@lrightskip\hfil % right skip within a column - -\let\preautotab\relax -\let\postautotab\relax - -\newcommand{\autocols}[5][0pt]{\par\begingroup - \ctabsetlines - \if l#2 - \raggedright - \else - \if r#2 - \raggedleft - \else - \centering - \fi - \fi - \let\c@lleftskip\hfil - \let\c@lrightskip\hfil - \if l#4 - \let\c@lleftskip\relax - \else - \if r#4 - \let\c@lrightskip\relax - \fi - \fi - \@mincolumnwidth\z@ - \TX@cols=#3 - \@curtab=#3 - \@linestogo\z@ - \@for\@tempa:=#5\do{ - \advance\@linestogo\@ne - \settowidth{\@tempdima}{\@tempa} - \ifdim\@tempdima>\@mincolumnwidth - \@mincolumnwidth=\@tempdima - \fi - } - \advance\@mincolumnwidth\tabcolsep - \linespercol - \def\@endcolumnactions{% - \global\advance\@linestogo\m@ne - \ifnum\@cellstogo<\tw@ - \global\advance\TX@cols\m@ne - \ifnum\TX@cols>\z@\linespercol\fi - \the\crtok - \else - &\global\advance\@cellstogo\m@ne - \fi - } - \ifdim #1 > \z@ - \TX@col@width=#1 - \divide\TX@col@width \TX@cols - \else - \TX@col@width=\@mincolumnwidth - \fi - \penalty\abovecolumnspenalty - \noindent % usually not a paragraph - \def\@preamble{} - \begingroup - \let\@sharp\relax - \ifnum\@cellsincolumn>\@ne - \loop - \g@addto@macro{\@preamble}{% - \hbox to \TX@col@width{\c@lleftskip\strut\@sharp\c@lrightskip} &}% - \advance\@cellsincolumn\m@ne - \ifnum\@cellsincolumn>\@ne - \repeat - \fi - \g@addto@macro{\@preamble}{% - \hbox to \TX@col@width{\c@lleftskip\strut\@sharp\c@lrightskip}}% - \endgroup - \let\@sharp ## - \tabskip\ctableftskip -%% \tabskip\z@ - \valign \bgroup - \tabskip\z@ - \@preamble - \tabskip\ctabrightskip\cr - \@for\@tempa:=#5\do{ - \@tempa\unskip\space\@endcolumnactions}% - \the\crtok \egroup \par \endgroup -} - -\newcommand*{\linespercol}{% - \@cellsincolumn=\@linestogo - \divide\@cellsincolumn \TX@cols - \@cellstogo=\@cellsincolumn - \multiply\@cellstogo \TX@cols - \@tempcnta=\@linestogo - \advance\@tempcnta -\@cellstogo - \ifnum \@tempcnta>\z@ - \advance\@cellsincolumn \@ne - \fi - \global\@cellstogo=\@cellsincolumn -} - -\newcommand{\autorows}[5][0pt]{\par\begingroup - \ctabsetlines - \ctableftskip\fill - \ctabrightskip\fill - \if l#2 - \ctableftskip\z@ - \else - \if r#2 - \ctabrightskip\z@ - \fi - \fi - \let\c@lleftskip\hfil - \let\c@lrightskip\hfil - \if l#4 - \let\c@lleftskip\relax - \else - \if r#4 - \let\c@lrightskip\relax - \fi - \fi - \TX@cols=#3\relax - \@curtab=#3\relax - \@cellstogo = \TX@cols - \@mincolumnwidth\z@ - \@linestogo\z@ - \@for\@tempa:=#5\do{% - \advance\@linestogo\@ne - \settowidth{\@tempdima}{\@tempa} - \ifdim\@tempdima>\@mincolumnwidth - \@mincolumnwidth=\@tempdima - \fi}% - \advance\@mincolumnwidth\tabcolsep - \def\@endcolumnactions{% - \global\advance\@linestogo\m@ne - \global\advance\@cellstogo\m@ne - \ifnum\@cellstogo<\@ne - \global\@cellstogo=\TX@cols - \the\crtok - \else - & - \fi}% - \ifdim #1>\z@ - \TX@col@width=#1 - \else - \TX@col@width=\hsize - \fi - \divide\TX@col@width \TX@cols - \ifdim #1=\z@ - \TX@col@width=\@mincolumnwidth - \fi - \penalty\abovecolumnspenalty - \noindent % usually not a paragraph - \vskip -\z@ % don't know why we need this, but looks bad without it - \def\@preamble{} - \begingroup - \let\@sharp\relax - \ifnum\TX@cols>\@ne - \loop - \ifdim #1<\z@ - \g@addto@macro{\@preamble}{% - \strut\c@lleftskip\@sharp\c@lrightskip &}% - \else - \g@addto@macro{\@preamble}{% - \hb@xt@ \TX@col@width{\strut\c@lleftskip\@sharp\c@lrightskip} &}% - \fi - \advance\TX@cols\m@ne - \ifnum\TX@cols>\@ne - \repeat - \fi - \ifdim #1<\z@ - \g@addto@macro{\@preamble}{% - \strut\c@lleftskip\@sharp\c@lrightskip}% - \else - \g@addto@macro{\@preamble}{% - \hb@xt@ \TX@col@width{\strut\c@lleftskip\@sharp\c@lrightskip}}% - \fi - \endgroup - \let\@sharp ## - \tabskip\ctableftskip - \halign to \hsize \bgroup - \tabskip\z@ - \@preamble -%% \tabskip\ctabrightskip\cr \preautotab - \tabskip\ctabrightskip\cr - \@for\@tempa:=#5\do{% - \@tempa\unskip\space\@endcolumnactions}% -%% \the\crtok \postautotab \the\crtok \egroup \endgroup \par - \the\crtok \egroup \endgroup \par -} - -\newcounter{newflo@tctr} - \setcounter{newflo@tctr}{1} - -\newcommand{\newfloat}[4][\@empty]{% - \@namedef{ftype@#2}{\value{newflo@tctr}} - \addtocounter{newflo@tctr}{\value{newflo@tctr}} - \@ifundefined{c@#2}{% counter is not defined - \ifx \@empty#1\relax - \newcounter{#2} - \else - \newcounter{#2}[#1] - \expandafter\edef\csname the#2\endcsname{% - \expandafter\noexpand\csname the#1\endcsname.\noexpand\arabic{#2}} - \fi}{} - \setcounter{#2}{0} - - \@namedef{ext@#2}{#3} % file extension - \@ifundefined{c@#3depth}{\newcounter{#3depth}}{} - \setcounter{#3depth}{1} - - \@namedef{fps@#2}{tbp} % position - \@namedef{fnum@#2}{#4~\@nameuse{the#2}} % caption naming - \@namedef{fleg#2}{#4} % legend naming - \@namedef{flegtoc#2}##1{} % legend name in ToC - - \newenvironment{#2}{\@float{#2}}{\end@float} - \newenvironment{#2*}{\@dblfloat{#2}}{\end@dblfloat} -} % end \newfloat - -\newcommand{\newsubfloat}[1]{% - \newlistentry[#1]{sub#1}{\@nameuse{ext@#1}}{1} - \@namedef{ext@sub#1}{\csname ext@#1\endcsname} - \@namedef{thesub#1}{(\alph{sub#1})} - \@namedef{@thesub#1}{\@nameuse{thesub#1}% - \if@tightsubcap\hskip\subfloatlabelskip\else\space\fi} - \@namedef{@@thesub#1}{\@nameuse{thesub#1}} - \@namedef{p@sub#1}{\csname the#1\endcsname} - \@namedef{toclevel@sub#1}{1} -} - -\newif\ifdonemaincaption - \donemaincaptionfalse - -\let\@memoldfloat\@float -\renewcommand{\@float}[1]{\donemaincaptionfalse - \@ifundefined{c@sub#1}{}{\csname c@sub#1\endcsname = 0\relax}% - \@memoldfloat{#1}} -\let\@memolddblfloat\@dblfloat -\renewcommand{\@dblfloat}[1]{\donemaincaptionfalse - \@ifundefined{c@sub#1}{}{\csname c@sub#1\endcsname = 0\relax}% - \@memolddblfloat{#1}} - -\let\@memoldefloat\end@float -\renewcommand{\end@float}{% - \@memlistsubcaptions{\@captype}\@memoldefloat} -\let\@memoldedblfloat\end@dblfloat -\renewcommand{\end@dblfloat}{% - \@memlistsubcaptions{\@captype}\@memoldedblfloat} - -\newif\if@contcw -\newif\if@conthang -\newif\if@contindent - -\newcommand{\captiondelim}[1]{\def\@contdelim{#1}} -\captiondelim{: } - -\newcommand{\captionnamefont}[1]{\def\@contnfont{#1}} -\captionnamefont{} - -\newcommand{\captiontitlefont}[1]{\def\@conttfont{#1}} -\captiontitlefont{} - -\newcommand{\flushleftright}{% - \leftskip\z@ \rightskip\z@ - \parfillskip=\z@ plus 1fil} -\newcommand{\centerlastline}{% - \leftskip=\z@ plus 1fil - \rightskip=\z@ plus -1fil - \parfillskip=\z@ plus 2fil} - -\newcommand{\captionstyle}[1]{\def\@contcstyle{#1}} -\captionstyle{} - -\renewcommand{\captionstyle}{% - \@ifnextchar[ {\@memcshort}{\@memcnorm}} -\def\@memcshort[#1]#2{% - \def\@contcshortstyle{#1} - \def\@contcstyle{#2}} -\def\@memcnorm#1{% - \def\@contcshortstyle{#1} - \def\@contcstyle{#1}} -\captionstyle{} - -\newlength{\@contcwidth} -\newcommand{\captionwidth}[1]{\setlength{\@contcwidth}{#1}} -\captionwidth{\linewidth} -\newcommand{\changecaptionwidth}{\@contcwtrue} -\newcommand{\normalcaptionwidth}{\@contcwfalse} -\normalcaptionwidth - -\newlength{\@contindw} -\newcommand{\hangcaption}{\@conthangtrue\@contindentfalse} -\newcommand{\indentcaption}[1]{\setlength{\@contindw}{#1}% - \@conthangfalse\@contindenttrue} -\newcommand{\normalcaption}{\@conthangfalse\@contindentfalse} -\normalcaption - -\newcommand{\precaption}[1]{\def\@contpre{#1}} -\precaption{} -\newcommand{\postcaption}[1]{\def\@contpost{#1}} -\postcaption{} -\newcommand{\midbicaption}[1]{\def\@contmidbi{#1}} -\midbicaption{} - -\newlength{\abovecaptionskip} - \setlength{\abovecaptionskip}{0.5\onelineskip} -\newlength{\belowcaptionskip} - \setlength{\belowcaptionskip}{0.5\onelineskip} - -\let\@memoldcaption\caption -\def\caption{\donemaincaptiontrue\@memoldcaption} - -\let\@memold@caption\@caption -\long\def\@caption#1[#2]#3{% - \M@gettitle{#2}\@memold@caption{#1}[#2]{#3}} - -\long\def\@makecaption#1#2{\let\@memtempa\relax - \ifdim\prevdepth>-99\p@ \vskip\abovecaptionskip - \else \def\@memtempa{\vbox to\topskip{}}\fi - \let\@contfnote\footnote \renewcommand{\footnote}[2][]{} - \let\@contfmark\footnotemark \renewcommand{\footnotemark}[1][]{} - \sbox\@tempboxa{\@contnfont #1\@contdelim \@conttfont #2} - \let\footnote\@contfnote - \let\footnotemark\@contfmark - \ifdim\wd\@tempboxa<\linewidth \centering \fi - \if@contcw - \centering - \parbox{\@contcwidth}{% - \ifdim\wd\@tempboxa<\@contcwidth \centering \fi - \fi - \if@conthang - \sbox\@tempboxa{\@contnfont #1\@contdelim} - \@contpre% - {\@contcstyle\hangindent=\wd\@tempboxa\noindent\box\@tempboxa\@memtempa - \@conttfont #2\par} - \else - \if@contindent - \@contpre% - {\@contnfont #1\@contdelim}\@memtempa - {\@contcstyle\hangindent=\@contindw\hangafter=\@ne\@conttfont #2\par}% <- v1.4 - \else - \@contpre% - {\@contnfont #1\@contdelim}\@memtempa - {\ifdim\wd\@tempboxa<\linewidth \@contcshortstyle\else \@contcstyle\fi% <- v1.4 - \@conttfont #2\par} - \fi - \fi - \@contpost - \if@contcw - \par - } % end of the \parbox - \fi - \vskip\belowcaptionskip} - -\newcommand{\contcaption}{% - \addtocounter{\@captype}{\m@ne}\refstepcounter{\@captype}% - \@contcaption\@captype} - -\long\def\@@contcaption#1#2{% - \par - \begingroup - \@parboxrestore - \if@minipage - \@setminipage - \fi - \normalsize - \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #2}\par - \endgroup} - -\long\def\@contcaption#1#2{% - \if@contbotsub - \@memlistsubcaptions{#1}% - \@@contcaption{#1}{#2}% - \else - \@@contcaption{#1}{#2}% - \@memlistsubcaptions{#1}% - \fi} - -\newcommand{\legend}[1]{% - \M@gettitle{#1}% - \par - \begingroup - \@parboxrestore - \if@minipage - \@setminipage - \fi - \normalsize - \captiondelim{\mbox{}} - \@makecaption{}{\ignorespaces #1}\par - \endgroup} - -\newcommand{\namedlegend}{\@dblarg{\@legend\@captype}} - -\long\def\@legend#1[#2]#3{% - \M@gettitle{#2}% - \par - \csname flegtoc#1\endcsname{#2}% - \begingroup - \@parboxrestore - \if@minipage - \@setminipage - \fi - \normalsize - \@makecaption{\csname fleg#1\endcsname}{\ignorespaces #3}\par - \endgroup} - -\newcommand{\newfixedcaption}[3][\caption]{% - \newcommand{#2}{\def\@captype{#3}#1}} -\newcommand{\renewfixedcaption}[3][\caption]{% - \renewcommand{#2}{\def\@captype{#3}#1}} -\newcommand{\providefixedcaption}[3][\caption]{% - \providecommand{#2}{\def\@captype{#3}#1}} - -\newcommand{\bitwonumcaption}[6][\@empty]{% - \begingroup - \@ifmtarg{#2}{\caption{#3}}{\caption[#2]{#3}} - \ifx \@empty #1\else - \label{#1} - \fi - \setlength{\abovecaptionskip}{0pt} - \setlength{\belowcaptionskip}{0pt} - \edef\@memtempc{#4} - \expandafter \renewcommand \csname \@captype name\endcsname{\@memtempc} - \addtocounter{\@captype}{-1} - \@contmidbi - \@ifmtarg{#5}{\caption{#6}}{\caption[#5]{#6}} - \endgroup -} - -\newcommand{\bionenumcaption}[6][\@empty]{% - \begingroup - \@ifmtarg{#2}{\caption{#3}}{\caption[#2]{#3}} - \ifx \@empty #1\else - \label{#1} - \fi - \setlength{\abovecaptionskip}{0pt} - \setlength{\belowcaptionskip}{0pt} - \edef\@memtempc{#4} - \expandafter \renewcommand \csname \@captype name\endcsname{\@memtempc} - \@contmidbi - \contcaption{#6} - \@ifmtarg{#5}{% - \addcontentsline{\csname ext@\@captype\endcsname}{\@captype}% - {\protect\numberline{}{\ignorespaces #6}}}{% - \addcontentsline{\csname ext@\@captype\endcsname}{\@captype}% - {\protect\numberline{}{\ignorespaces #5}}} - \endgroup -} - -\newcommand{\bicaption}[5][\@empty]{% - \begingroup - \@ifmtarg{#2}{\caption{#3}}{\caption[#2]{#3}} - \ifx \@empty #1\else - \label{#1} - \fi - \setlength{\abovecaptionskip}{0pt} - \setlength{\belowcaptionskip}{0pt} - \edef\@memtempc{#4} - \expandafter \renewcommand \csname \@captype name\endcsname{\@memtempc} - \@contmidbi - \contcaption{#5} - \endgroup -} - -\newcommand{\bicontcaption}[3]{% - \begingroup - \contcaption{#1} - \setlength{\abovecaptionskip}{0pt} - \setlength{\belowcaptionskip}{0pt} - \edef\@memtempc{#2} - \expandafter \renewcommand \csname \@captype name\endcsname{\@memtempc} - \@contmidbi - \contcaption{#3} - \endgroup -} - -\newcommand{\subcaptionstyle}[1]{\def\@contsubcstyle{#1}} -\subcaptionstyle{} - -\newif\if@shortsubcap -\newif\if@hangsubcap -\newcommand*{\shortsubcaption}{\@shortsubcaptrue} -\newcommand*{\hangsubcaption}{\@hangsubcaptrue} -\newcommand*{\normalsubcaption}{\@shortsubcapfalse\@hangsubcapfalse} -\normalsubcaption - -\newskip\subfloattopskip -\newskip\subfloatcapskip -\newskip\subfloatcaptopadj -\newskip\subfloatbottomskip -\newskip\subfloatlabelskip -\newdimen\subfloatcapmargin -\newif\if@tightsubcap -\newcommand{\loosesubcaptions}{% - \subfloattopskip = 10\p@ - \subfloatcapskip = 10\p@ - \subfloatcaptopadj = \z@ - \subfloatbottomskip = 10\p@ - \subfloatlabelskip = 0.33em - \subfloatcapmargin = 10\p@ - \@tightsubcapfalse -} - -\newcommand{\tightsubcaptions}{% - \subfloattopskip = 5\p@ - \subfloatcapskip = \z@ - \subfloatcaptopadj = 3\p@ - \subfloatbottomskip = 5\p@ - \subfloatlabelskip = 0.33em \@plus 0.07em \@minus 0.03em - \subfloatcapmargin = \z@ - \@tightsubcaptrue -} -\tightsubcaptions - -\newcommand*{\subcaptionsize}[1]{\def\@subcapsize{#1}} -\newcommand*{\subcaptionlabelfont}[1]{\def\@subcaplabelfont{#1}} -\newcommand*{\subcaptionfont}[1]{\def\@subcapfont{#1}} -\subcaptionsize{\footnotesize} -\subcaptionlabelfont{\normalfont} -\subcaptionfont{\normalfont} - - \newcounter{@contsubnum} - \newcommand{\@contkeep}{\setcounter{@contsubnum}{\value{sub\@captype}}} - \newcommand{\@contset}{\setcounter{sub\@captype}{\value{@contsubnum}}} - \newcommand{\subconcluded}{\setcounter{sub\@captype}{0}} -\newif\if@contbotsub - \@contbotsubtrue - -\newcommand{\subcaption}{% - \bgroup - \let\label=\memsub@label - \ifdonemaincaption\else - \advance\csname c@\@captype\endcsname\@ne - \fi - \refstepcounter{sub\@captype}\@contkeep - \@ifnextchar [% - {\@memsubcap{sub\@captype}}% - {\@memsubcap{sub\@captype}[\@empty]}} -\long\def\@memsubcap#1[#2]#3{% - \@tempdima=\hsize - \vskip\subfloatcapskip - \ifx \@empty #2 - \@memsubcaption{#1}{#3}{#3}% - \else - \@memsubcaption{#1}{#2}{#3}% - \fi - \vskip\subfloatcapskip - \egroup} -\newcommand{\@memsubcaption}[3]{% - \ifx \relax#2\relax \else - \bgroup - \let\label\@gobble - \let\protect\string - \def\@memsubcaplabel{\@nameuse{@@the#1}}% - \xdef\@memsubfigcaptionlist{% - \@memsubfigcaptionlist,% - {\protect\numberline{\@memsubcaplabel}\noexpand{\ignorespaces #2}}}% - \egroup - \fi - \@makesubfloatcaption{\@nameuse{@the#1}}{#3}} - -\newcommand{\contsubcaption}{% - \bgroup - \let\label=\memsub@label - \@contset - \refstepcounter{sub\@captype}\@contkeep - \@ifnextchar [% - {\@memsubcap{sub\@captype}}% - {\@memsubcap{sub\@captype}[\@empty]}} -\newenvironment{subfloat}{}{} - -\newcommand{\subbottom}{% - \@contbotsubtrue - \@memsubbody} - -\newcommand{\@memsubbody}{% - \bgroup - \let\label=\memsub@label - \ifdonemaincaption\else - \advance\csname c@\@captype\endcsname\@ne - \fi - \refstepcounter{sub\@captype}\@contkeep% - \leavevmode - \@ifnextchar [% - {\@memsubfig}% - {\@memsubfig[\@empty]}} - -\newcommand{\contsubbottom}{% - \@contbotsubtrue - \@memcontsubbody} - -\newcommand{\@memcontsubbody}{% - \bgroup - \let\label=\memsub@label - \@contset - \refstepcounter{sub\@captype}\@contkeep% - \leavevmode - \@ifnextchar [% - {\@memsubfig}% - {\@memsubfig[\@empty]}} - -\newcommand{\subtop}{% - \@contbotsubfalse - \@memsubbody} - -\newcommand{\contsubtop}{% - \@contbotsubfalse - \@memcontsubbody} - -\def\@memsubfig[#1]{% - \@ifnextchar [% - {\@memsubfloat{sub\@captype}[#1]}% - {\@memsubfloat{sub\@captype}[\@empty #1][#1]}} - -\def\@memsubfloat#1[#2][#3]#4{% - \@tempcnta=\@ne - \if@tightsubcap - \if@minipage - \@tempcnta=\z@ - \else - \ifdim\lastskip=\z@ - \@tempcnta=\@ne - \else - \@tempcnta=\tw@ - \fi - \fi - \fi - \if@contbotsub - \def\subfig@top{\subfloattopskip}% - \def\subfig@bottom{\subfloatbottomskip}% - \else - \def\subfig@top{\subfloatbottomskip}% - \def\subfig@bottom{\subfloattopskip}% - \fi - \setbox\@tempboxa \hbox{#4}% - \@tempdima=\wd\@tempboxa - \vtop\bgroup - \vbox\bgroup - \ifcase\@tempcnta - \@minipagefalse - \or - \vspace{\subfig@top} - \or - \ifdim \lastskip=\z@ \else - \@tempskipb\subfig@top\@xaddvskip - \fi - \fi - \if@contbotsub - \box\@tempboxa\egroup - \ifx \@empty#3\relax \else - \vskip\subfloatcapskip - \@memsubcaption{#1}{#2}{#3}% - \fi - \else - \ifx \@empty#3\relax \else - \@memsubcaption{#1}{#2}{#3}% - \vskip\subfloatcapskip - \vskip\subfloatcaptopadj - \fi\egroup - \box\@tempboxa - \fi - \vspace{\subfig@bottom} - \egroup -\egroup} - -\newcommand*{\@memsubfigcaptionlist}{} -\newcommand*{\memlistsubcaptions}{% - \@ifstar - {\gdef\@memsubfigcaptionlist{}}% - {\@memlistsubcaptions{\@captype}}} - -\newcommand*{\@memlistsubcaptions}[1]{% - \@ifundefined{@captype}{}{% - \@ifundefined{ext@sub#1}{}{% - \@for \@tempa:=\@memsubfigcaptionlist \do {% - \ifx \@empty\@tempa\relax \else - \addcontentsline{\@nameuse{ext@sub#1}}{sub#1}{\@tempa}% - \fi}}}% - \gdef\@memsubfigcaptionlist{}} - -\newcommand{\@makesubfloatcaption}[2]{% - \setbox\@tempboxa\hbox{% - \@subcapsize - {\@subcaplabelfont #1}{\@subcapfont\ignorespaces #2}}% - \@tempdimb=-\subfloatcapmargin - \multiply\@tempdimb\tw@ - \advance\@tempdimb\@tempdima - \hb@xt@\@tempdima{% - \hss - \ifdim \wd\@tempboxa >\@tempdimb - \memsubfig@caption{#1}{#2}% - \else - \if@shortsubcap - \memsubfig@caption{#1}{#2}% - \else - \box\@tempboxa - \fi - \fi - \hss}} - -\newcommand{\memsubfig@caption}[2]{% - \if@hangsubcap - \sbox{\@tempboxa}{\@subcapsize\@subcaplabelfont #1}% - \addtolength{\@tempdimb}{-\wd\@tempboxa}% - \usebox{\@tempboxa}% - \memsubfig@captionpar{\@tempdimb}{% - {\@subcapfont\ignorespaces #2}}% - \else - \memsubfig@captionpar{\@tempdimb}{{\@subcaplabelfont #1}% - {\@subcapfont\ignorespaces #2}}% - \fi} - -\newcommand{\memsubfig@captionpar}[2]{% - \parbox[t]{#1}{\@subcapsize\@contsubcstyle #2}} - -\newcommand{\memsub@label}{% - \@ifnextchar (% - {\sf@memsub@label}% - {\sf@memsub@label(Sub\@captype\space - \@nameuse{p@sub\@captype}% - \@nameuse{thesub\@captype})}} -\def\sf@memsub@label(#1)#2{% - \protected@edef\mem@currentlabelname{#1}% - \sf@@memsub@label{#2}} - -\AtBeginDocument{% - \@ifpackageloaded{nameref}{% - \newcommand*{\sf@@memsub@label}[1]{% - \@bsphack - \protected@write\@auxout{}{% - \string\newlabel{#1}% - {{\@nameuse{p@sub\@captype}\@nameuse{@@thesub\@captype}}% - {\thepage}% - {\mem@currentlabelname\relax}% - {\@currentHref}{}}}% - \protected@write\@auxout{}{% - \string\newlabel{sub@#1}% - {{\@nameuse{@@thesub\@captype}}% - {\thepage}% - {\mem@currentlabelname\relax}% - {\@currentHref}{}}}% - \@esphack} - }{\@ifpackageloaded{hyperref}{% - \newcommand*{\sf@@memsub@label}[1]{% - \@bsphack - \protected@write\@auxout{}{% - \string\newlabel{#1}% - {{\@nameuse{p@sub\@captype}\@nameuse{@@thesub\@captype}}% - {\thepage}% - {\mem@currentlabelname\relax}% - {\@currentHref}{}}}% - \protected@write\@auxout{}{% - \string\newlabel{sub@#1}% - {{\@nameuse{@@thesub\@captype}}% - {\thepage}% - {\mem@currentlabelname\relax}% - {\@currentHref}{}}}% - \@esphack} - }{% - \let\@memoldlabel\label - \newcommand*{\sf@@memsub@label}[1]{% - \@bsphack - \@memoldlabel{#1}% - \protected@write\@auxout{}{% - \string\newlabel{sub@#1}% - {{\@nameuse{@@thesub\@captype}}% - {\thepage}}}% - \@esphack} - }{}% - } -} - -\newcommand*{\subcaptionref}{% - \@ifstar{\ssc@ref}{\sc@ref}} -\newcommand*{\ssc@ref}[1]{\ref{sub@#1}} -\newcommand*{\sc@ref}[1]{{\@subcaplabelfont\ref{sub@#1}}} - -\newlength{\beforeepigraphskip} - \setlength{\beforeepigraphskip}{.5\baselineskip} -\newlength{\afterepigraphskip} - \setlength{\afterepigraphskip}{.5\baselineskip} -\newlength{\epigraphwidth} - \setlength{\epigraphwidth}{.4\textwidth} -\newlength{\epigraphrule} - \setlength{\epigraphrule}{.4\p@} -\newcommand{\epigraphsize}{\small} -\newcommand{\epigraphflush}{flushright} -\newcommand{\textflush}{flushleft} -\newcommand{\sourceflush}{flushright} -\newcommand{\epigraphfontsize}[1]{\def\epigraphsize{#1}} -\newcommand{\epigraphposition}[1]{\long\def\epigraphflush{#1}} -\newcommand{\epigraphtextposition}[1]{\def\textflush{#1}} -\newcommand{\epigraphsourceposition}[1]{\def\sourceflush{#1}} - -\newcommand{\@epirule}{\rule[.5ex]{\epigraphwidth}{\epigraphrule}} -\newcommand{\@epitext}[1]{% - \begin{minipage}{\epigraphwidth}\begin{\textflush} #1\\ - \ifdim\epigraphrule>\z@ \@epirule \else \vspace*{1ex} \fi - \end{\textflush}\end{minipage}} -\newcommand{\@episource}[1]{% - \begin{minipage}{\epigraphwidth}\begin{\sourceflush} #1\end{\sourceflush} - \end{minipage}} -\newcommand{\epigraph}[2]{\vspace{\beforeepigraphskip} - {\epigraphsize\begin{\epigraphflush}\begin{minipage}{\epigraphwidth} - \@epitext{#1}\\ \@episource{#2} - \end{minipage}\end{\epigraphflush} - \vspace{\afterepigraphskip}}} -\newcommand{\qitem}[2]{{\raggedright\item \begin{minipage}{\epigraphwidth} - \@epitext{#1}\\ \@episource{#2} - \end{minipage}}} -\newcommand{\qitemlabel}[1]{\hfill} -\newenvironment{epigraphs}{% - \vspace{\beforeepigraphskip}\begin{\epigraphflush} - \epigraphsize - \begin{minipage}{\epigraphwidth} - \list{}% - {\itemindent\z@ \labelwidth\z@ \labelsep\z@ - \leftmargin\z@ \rightmargin\z@ - \let\makelabel\qitemlabel}}% - {\endlist\end{minipage}\end{\epigraphflush} - \vspace{\afterepigraphskip}} -\newcommand{\dropchapter}[1]{% - \let\@epichapapp\@chapapp - \renewcommand{\@chapapp}{\vspace*{#1}\@epichapapp}} -\newcommand{\undodrop}{\let\@chapapp\@epichapapp} -\newif\if@epirhs \@epirhstrue -\newif\if@epicenter \@epicentertrue -\newcommand{\@epipos}{ - \long\def\@ept{flushleft} - \ifx\epigraphflush\@ept - \@epirhsfalse \@epicenterfalse - \else - \long\def\@ept{center} - \ifx\epigraphflush\@ept - \@epirhsfalse \@epicentertrue - \else - \@epirhstrue \@epicenterfalse - \fi - \fi} -\newcommand{\epigraphhead}[2][95]{% - \def\@epitemp{\begin{minipage}{\epigraphwidth}#2\end{minipage}} - \def\ps@epigraph{\let\@mkboth\@gobbletwo - \@epipos - \if@epirhs - \def\@oddhead{\hfil\begin{picture}(0,0) - \put(0,-#1){\makebox(0,0)[r]{\@epitemp}} - \end{picture}} - \else - \if@epicenter - \def\@oddhead{\hfil\begin{picture}(0,0) - \put(0,-#1){\makebox(0,0)[b]{\@epitemp}} - \end{picture}\hfil} - \else - \def\@oddhead{\begin{picture}(0,0) - \put(0,-#1){\makebox(0,0)[l]{\@epitemp}} - \end{picture}\hfil} - \fi - \fi - \let\@evenhead\@oddhead - \def\@oddfoot{\reset@font\hfil\thepage\hfil} - \let\@evenfoot\@oddfoot} - \thispagestyle{epigraph}} - -\newcommand{\the@epigraph}{} -\newcommand{\@epidrop}{95} -\newcommand{\epigraphforheader}[2][95]{% - \def\@epidrop{#1}\long\def\the@epigraph{#2}} - -\newcommand{\epigraphpicture}{% - \def\@epitemp{\begin{minipage}{\epigraphwidth}\the@epigraph\end{minipage}}% - \@epipos - \if@epirhs - \begin{picture}(0,0)% - \put(0,-\@epidrop){\makebox(0,0)[r]{\@epitemp}}% - \end{picture}% - \else - \if@epicenter - \begin{picture}(0,0)% - \put(0,-\@epidrop){\makebox(0,0)[b]{\@epitemp}}% - \end{picture}% - \else - \begin{picture}(0,0)% - \put(0,-\@epidrop){\makebox(0,0)[l]{\@epitemp}}% - \end{picture}% - \fi - \fi} - -\newcommand*{\@memoldfonterr}[3]{% - \@memerror{Font command \protect#1\space is not supported}{% - Use \protect#2, or \protect#3{...}, or the oldfontcommands option}} -\newcommand*{\@memoldfontwarn}[3]{% - \@memwarn{The \protect#1\space font command is deprecated. - \MessageBreak Use \protect#2\space or \protect#3{...} instead}} - -\if@memoldfont - \def\@mem@rmwarn{\@memoldfontwarn{\rm}{\textrm}{\rmfamily}} - \DeclareOldFontCommand{\rm}{\@mem@rmwarn\gdef\@mem@rmwarn{}% - \normalfont\rmfamily}{\mathrm} -\else - \def\rm{\@memoldfonterr{\rm}{\textrm}{\rmfamily}} -\fi - -\if@memoldfont - \def\@mem@sfwarn{\@memoldfontwarn{\sf}{\textsf}{\sffamily}} - \DeclareOldFontCommand{\sf}{\@mem@sfwarn\gdef\@mem@sfwarn{}% - \normalfont\sffamily}{\mathsf} -\else - \def\sf{\@memoldfonterr{\sf}{\textsf}{\sffamily}} -\fi - -\if@memoldfont - \def\@mem@ttwarn{\@memoldfontwarn{\tt}{\texttt}{\ttfamily}} - \DeclareOldFontCommand{\tt}{\@mem@ttwarn\gdef\@mem@ttwarn{}% - \normalfont\ttfamily}{\mathtt} -\else - \def\tt{\@memoldfonterr{\tt}{\texttt}{\ttfamily}} -\fi - -\if@memoldfont - \def\@mem@bfwarn{\@memoldfontwarn{\bf}{\textbf}{\bfseries}} - \DeclareOldFontCommand{\bf}{\@mem@bfwarn\gdef\@mem@bfwarn{}% - \normalfont\bfseries}{\mathbf} -\else - \def\bf{\@memoldfonterr{\bf}{\textbf}{\bfseries}} -\fi - -\if@memoldfont - \def\@mem@itwarn{\@memoldfontwarn{\it}{\textit}{\itshape}} - \DeclareOldFontCommand{\it}{\@mem@itwarn\gdef\@mem@itwarn{}% - \normalfont\itshape}{\mathit} -\else - \def\it{\@memoldfonterr{\it}{\textit}{\itshape}} -\fi - -\if@memoldfont - \def\@mem@slwarn{\@memoldfontwarn{\sl}{\textsl}{\slshape}} - \DeclareOldFontCommand{\sl}{\@mem@slwarn\gdef\@mem@slwarn{}% - \normalfont\slshape}{\@nomath\sl} -\else - \def\sl{\@memoldfonterr{\sl}{\textsl}{\slshape}} -\fi - -\if@memoldfont - \def\@mem@scwarn{\@memoldfontwarn{\sc}{\textsc}{\scshape}} - \DeclareOldFontCommand{\sc}{\@mem@scwarn\gdef\@mem@scwarn{}% - \normalfont\scshape}{\@nomath\sc} -\else - \def\sc{\@memoldfonterr{\sc}{\textsc}{\scshape}} -\fi - -\if@memoldfont - \def\@mem@calwarn{\@memwarn{The \protect\cal\space font command is deprecated. - \MessageBreak Try to use \protect\mathcal\space instead}} - \DeclareRobustCommand*\cal{\@mem@calwarn\gdef\@mem@calwarn{}% - \@fontswitch\relax\mathcal} -\else - \def\cal{\@memerror{Font command \protect\cal\space is not supported}{% - Use \protect\mathcal, - or the oldfontcommands option}} -\fi - -\if@memoldfont - \def\@mem@mitwarn{\@memwarn{The \protect\mit\space font command is deprecated. - \MessageBreak Try to use \protect\mathnormal\space instead}} - \DeclareRobustCommand*\mit{\@mem@mitwarn\gdef\@mem@mitwarn{}% - \@fontswitch\relax\mathnormal} -\else - \def\mit{\@memerror{Font command \protect\mit\space is not supported}{% - Use \protect\mathnormal, - or the oldfontcommands option}} -\fi - -\def\@mem@emwarn{\@memwarn{The \protect\em\space font command is deprecated. - \MessageBreak Use \protect\emph{...} instead}} -\DeclareRobustCommand{\@m@m@m}{% - \@nomath\@m@m@m \ifdim \fontdimen\@ne\font >\z@ - \upshape \else \itshape \fi} -\DeclareTextFontCommand{\emph}{\@m@m@m} -\DeclareRobustCommand{\em}{\@mem@emwarn\gdef\@mem@emwarn{}\@m@m@m} - -\newcommand{\fref}[1]{\figurerefname~\ref{#1}} -\newcommand{\tref}[1]{\tablerefname~\ref{#1}} -\newcommand{\pref}[1]{\pagerefname~\pageref{#1}} -\newcommand{\Pref}[1]{\partrefname\ref{#1}} -\newcommand{\Cref}[1]{\chapterrefname\ref{#1}} -\newcommand{\Sref}[1]{\sectionrefname\ref{#1}} - -\newif\ifheadnameref - \headnamereffalse - -\newcommand{\theTitleReference}[2]{#2} - -\let\@mem@old@label\label -\def\label#1{\@bsphack\begingroup - \protected@edef\@currentlabel{\protect\M@TitleReference - {\@currentlabel}{\M@currentTitle}}% - \@mem@old@label{#1}% - \endgroup \@esphack}% - -\def\@mem@@gettitle#1{\begingroup \let\protect\@unexpandable@protect - \let\label\@mem@nestwarn - \let\index\@gobble \let\glossary\@gobble - \let\markboth\@gobbletwo \let\@mkboth\@gobbletwo \let\markright\@gobble - \edef\@tempa{\noexpand\def\noexpand\M@currentTitle{#1}}% - \expandafter\endgroup\@tempa} - -\let\@mem@nestwarn\@gobble -\let\M@TitleReference\@firstoftwo - -\DeclareRobustCommand{\titleref}[1]{\begingroup \let\numberline\@gobble - \let\M@TitleReference\@mem@theTR % interrupt recursion of \ref - \ref{#1}\endgroup} -\DeclareRobustCommand{\currenttitle}{\begingroup \let\numberline\@gobble - \theTitleReference\@currentlabel\M@currentTitle\endgroup} - -\let\M@currentTitle\@empty - -\def\@mem@theTR{\let\M@TitleReference\@firstoftwo \theTitleReference} - -\newcommand*{\namerefon}{\let\M@gettitle\@mem@@gettitle} -\newcommand*{\namerefoff}{\let\M@gettitle\@gobble} - \namerefon -\let\M@old@caption\@caption -\long\def\@caption#1[#2]#3{\M@gettitle{#2}\M@old@caption{#1}[{#2}]{#3}} - -\let\M@oldlegend\legend -\long\def\legend#1{\M@gettitle{#1}\M@oldlegend{#1}} -\let\M@old@legend\@legend -\long\def\@legend#1[#2]#3{\M@gettitle{#2}\M@old@legend{#1}[{#2}]{#3}} - -\let\M@old@vsptitle\@vsptitle -\long\def\@vsptitle[#1]#2{\M@gettitle{#1}\M@old@vsptitle[{#1}]{#2}} -\let\M@old@vssptitle\@vssptitle -\long\def\@vssptitle#1{\M@gettitle{#1}\M@old@vssptitle{#1}} - -\let\M@old@spart\@spart -\def\@spart#1{\M@gettitle{#1}\M@old@spart{#1}} -\let\M@old@part\@part -\def\@part[#1]{\M@gettitle{#1}\M@old@part[{#1}]} - - -\newcommand{\@pnumwidth}{1.55em} -\newcommand{\@tocrmarg} {2.55em} -\newcommand{\@dotsep}{4.5} -\newlength{\tocentryskip} \setlength{\tocentryskip}{1em} -\newlength{\tocbaseline} \setlength{\tocbaseline}{20pt} -\newcommand{\tocskip}[1]{% - \addtocontents{toc}{\protect\vspace{#1}}} -\newcommand*{\ensureonecol}{% - \if@twocolumn - \@restonecoltrue\onecolumn - \else - \@restonecolfalse - \fi} -\newcommand*{\restorefromonecol}{\if@restonecol\twocolumn\fi} - -\newlength{\cftparskip} -\setlength{\cftparskip}{0pt} - -\newcommand{\newlistof}[3]{% - \@namedef{ext@#2}{#2} - \@ifundefined{c@#2depth}{\newcounter{#2depth}}{} - \setcounter{#2depth}{1} - \@namedef{#2mark}{\markboth{#3}{#3}} - \@namedef{#1}{\@ifstar{\@nameuse{@star#2}}{\@nameuse{@plain#2}}} - \@namedef{@star#2}{% - \ensureonecol - \par - \begingroup -%%% \parindent\z@ \parskip\cftparskip - \@nameuse{@#2maketitle} - \@starttoc{#2}% - \endgroup - \restorefromonecol} - \@namedef{@plain#2}{% - \ensureonecol - \par - \begingroup -%%% \parindent\z@ \parskip\cftparskip - \@nameuse{@#2maketitle} - \phantomsection - \addcontentsline{toc}{chapter}{#3} - \@starttoc{#2}% - \endgroup - \restorefromonecol} - \@namedef{@#2maketitle}{% - \@nameuse{#2headstart} - {\parindent\z@ \parskip\cftparskip - \interlinepenalty\@M - \@nameuse{print#2nonum}% - \@nameuse{print#2title}{#3}% - \@nameuse{#2mark}% - \thispagestyle{chapter}% - \@nameuse{after#2title} - } - \@afterheading} - \@namedef{#2headstart}{\chapterheadstart} - \@namedef{after#2title}{\afterchaptertitle} - \@namedef{print#2nonum}{\printchapternonum} - \@namedef{print#2title}##1{\printchaptertitle{##1}} -} % end \newlistof - -\renewcommand{\@starttoc}[1]{% - \begingroup\makeatletter - \@input{\jobname.#1}% - \if@filesw - \AtEndDocument{% - \expandafter\newwrite\csname tf@#1\endcsname - \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax - }% - \fi - \@nobreakfalse - \endgroup} - -\newlistof{tableofcontents}{toc}{\contentsname} -\newcommand{\setpnumwidth}[1]{\renewcommand{\@pnumwidth}{#1}} -\newcommand{\setrmarg}[1]{\renewcommand{\@tocrmarg}{#1}} -\providecommand{\cftdot}{.} -\providecommand{\cftdotfill}[1]{% - \leaders\hbox{$\m@th\mkern #1 mu\hbox{\cftdot}\mkern #1 mu$}\hfill} -\providecommand{\cftdotsep}{4.5} -\newcommand{\cftnodots}{2000} -\newcommand{\cftparfillskip}{\parfillskip=0pt plus1fil} -\renewcommand{\numberline}[1]{% - \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb} -\newcommand{\@cftbsnum}{} -\newcommand{\@cftasnum}{} -\newcommand{\@cftasnumb}{} -\newcommand{\newlistentry}[4][\@empty]{% - \@ifundefined{c@#2}{% check & set the counter - \ifx \@empty#1\relax - \newcounter{#2} - \else - \newcounter{#2}[#1]% - \expandafter\edef\csname the#2\endcsname{% - \expandafter\noexpand\csname the#1\endcsname.\noexpand\arabic{#2}} - \fi}{} - \setcounter{#2}{0} - - \@namedef{l@#2}##1##2{% - \ifnum \@nameuse{c@#3depth} > #4\relax - \vskip \@nameuse{cftbefore#2skip} - {\leftskip \@nameuse{cft#2indent}\relax - \rightskip \@tocrmarg - \parfillskip -\rightskip - \parindent \@nameuse{cft#2indent}\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima \@nameuse{cft#2numwidth}\relax - \expandafter\let\expandafter\@cftbsnum\csname cft#2presnum\endcsname - \expandafter\let\expandafter\@cftasnum\csname cft#2aftersnum\endcsname - \expandafter\let\expandafter\@cftasnumb\csname cft#2aftersnumb\endcsname - \advance\leftskip\@tempdima \null\nobreak\hskip -\leftskip - {\@nameuse{cft#2font}##1}\nobreak - \@nameuse{cft#2fillnum}{##2}} - \fi - } % end of \l@#2 - - \expandafter\newlength\csname cftbefore#2skip\endcsname - \setlength{\@nameuse{cftbefore#2skip}}{\z@ \@plus .2\p@} - \expandafter\newlength\csname cft#2indent\endcsname - \expandafter\newlength\csname cft#2numwidth\endcsname - \ifcase #4\relax % 0 (level 1) - \setlength{\@nameuse{cft#2indent}}{0em} - \setlength{\@nameuse{cft#2numwidth}}{2.3em} - \or % 1 (level 2) - \setlength{\@nameuse{cft#2indent}}{2.3em} - \setlength{\@nameuse{cft#2numwidth}}{3.2em} - \or % 2 (level 3) - \setlength{\@nameuse{cft#2indent}}{5.5em} - \setlength{\@nameuse{cft#2numwidth}}{4.1em} - \or % 3 (level 4) - \setlength{\@nameuse{cft#2indent}}{8.5em} - \setlength{\@nameuse{cft#2numwidth}}{5.0em} - \else % anything else - \setlength{\@nameuse{cft#2indent}}{10.5em} - \setlength{\@nameuse{cft#2numwidth}}{6.0em} - \fi - \@namedef{cft#2font}{\normalfont} - \@namedef{cft#2presnum}{} - \@namedef{cft#2aftersnum}{} - \@namedef{cft#2aftersnumb}{} - \@namedef{cft#2dotsep}{\cftdotsep} - \@namedef{cft#2leader}{\normalfont\cftdotfill{\@nameuse{cft#2dotsep}}} - \@namedef{cft#2pagefont}{\normalfont} - \@namedef{cft#2afterpnum}{} - \@namedef{toclevel@#2}{#4} - \@namedef{cft#2fillnum}##1{% - {\@nameuse{cft#2leader}}\nobreak - \hb@xt@\@pnumwidth{% - \hfil\@nameuse{cft#2pagefont}##1}\@nameuse{cft#2afterpnum}\par} -} % end \newlistentry - -\newcommand{\cftsetindents}[3]{% - \setlength{\@nameuse{cft#1indent}}{#2} - \setlength{\@nameuse{cft#1numwidth}}{#3} -} - -\newcommand*{\l@part}[2]{% - \ifnum \c@tocdepth >-2\relax - \addpenalty{-\@highpenalty}% - \addvspace{\cftbeforepartskip}% - \begingroup - {\leftskip \cftpartindent\relax - \rightskip \@tocrmarg - \parfillskip -\rightskip - \parindent \cftpartindent\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima \cftpartnumwidth\relax - \let\@cftbsnum \cftpartpresnum - \let\@cftasnum \cftpartaftersnum - \let\@cftasnumb \cftpartaftersnumb - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - {\cftpartfont #1}% - \cftpartfillnum{#2}} - \nobreak - \global\@nobreaktrue - \everypar{\global\@nobreakfalse\everypar{}}% - \endgroup - \fi} - -\newcommand{\partnumberline}[1]{% - \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb} - - \newlength{\cftbeforepartskip} - \setlength{\cftbeforepartskip}{2.25em \@plus\p@} - \newlength{\cftpartindent} - \setlength{\cftpartindent}{0em} - \newlength{\cftpartnumwidth} - \setlength{\cftpartnumwidth}{1.5em} - \newcommand{\cftpartfont}{\large\bfseries} - \newcommand{\cftpartpresnum}{} - \newcommand{\cftpartaftersnum}{} - \newcommand{\cftpartaftersnumb}{} - \newcommand{\cftpartleader}{\large\bfseries\cftdotfill{\cftpartdotsep}} - \newcommand{\cftpartdotsep}{\cftnodots} - \newcommand{\cftpartpagefont}{\large\bfseries} - \newcommand{\cftpartafterpnum}{} - \newcommand{\cftpartfillnum}[1]{% - {\cftpartleader}% - {\hb@xt@\@pnumwidth{\hss {\cftpartpagefont #1}}}\cftpartafterpnum\par} - -\newcommand*{\l@chapter}[2]{% - \ifnum \c@tocdepth >\m@ne -%% \addpenalty{-\@highpenalty}% replaced this by next line - \cftchapterbreak - \vskip \cftbeforechapterskip - {\leftskip \cftchapterindent\relax - \rightskip \@tocrmarg - \parfillskip -\rightskip - \parindent \cftchapterindent\relax\@afterindenttrue - \interlinepenalty\@M - \leavevmode - \@tempdima \cftchapternumwidth\relax - \let\@cftbsnum \cftchapterpresnum - \let\@cftasnum \cftchapteraftersnum - \let\@cftasnumb \cftchapteraftersnumb - \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip - {\cftchapterfont #1}\nobreak - \cftchapterfillnum{#2}} - \fi} - -\newcommand{\chapternumberline}[1]{% - \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb} - - \newlength{\cftbeforechapterskip} - \setlength{\cftbeforechapterskip}{1.0em \@plus\p@} - \newlength{\cftchapterindent} - \setlength{\cftchapterindent}{0em} - \newlength{\cftchapternumwidth} - \setlength{\cftchapternumwidth}{1.5em} - \newcommand{\cftchapterfont}{\bfseries} - \newcommand{\cftchapterpresnum}{} - \newcommand{\cftchapteraftersnum}{} - \newcommand{\cftchapteraftersnumb}{} - \newcommand{\cftchapterleader}{\bfseries\cftdotfill{\cftchapterdotsep}} - \newcommand{\cftchapterdotsep}{\cftnodots} - \newcommand{\cftchapterpagefont}{\bfseries} - \newcommand{\cftchapterafterpnum}{} - \newcommand{\cftchapterfillnum}[1]{ - {\cftchapterleader}\nobreak - \hb@xt@\@pnumwidth{\hfil\cftchapterpagefont #1}\cftchapterafterpnum\par} - \newcommand{\cftchapterbreak}{\addpenalty{-\@highpenalty}} - -\newlistentry[chapter]{section}{toc}{0} - \cftsetindents{section}{1.5em}{2.3em} -\newlistentry[section]{subsection}{toc}{1} - \cftsetindents{subsection}{3.8em}{3.2em} -\newlistentry[subsection]{subsubsection}{toc}{2} - \cftsetindents{subsubsection}{7.0em}{4.1em} -\newlistentry[subsubsection]{paragraph}{toc}{3} - \cftsetindents{paragraph}{10.0em}{5.0em} -\newlistentry[paragraph]{subparagraph}{toc}{4} - \cftsetindents{paragraph}{12.0em}{6.0em} - -\newcommand{\@cftl@subfigtab}{ -\newlistentry[figure]{subfigure}{lof}{1} - \cftsetindents{subfigure}{2.3em}{2.5em} -\newlistentry[table]{subtable}{lot}{1} - \cftsetindents{subtable}{2.3em}{2.5em} -} - -\AtBeginDocument{\@ifpackageloaded{subfigure}{\@cftl@subfigtab}{}} - -\DeclareRobustCommand{\cftpagenumbersoff}[1]{% - \@namedef{cft#1fillnum}##1{% - \cftparfillskip\@nameuse{cft#1afterpnum}\par}} - -\DeclareRobustCommand{\cftpagenumberson}[1]{% - \@namedef{cft#1fillnum}##1{% - {\@nameuse{cft#1leader}}\nobreak - \hb@xt@\@pnumwidth{% - \hfil\@nameuse{cft#1pagefont}##1}\@nameuse{cft#1afterpnum}\par}} - -\newcommand{\chapterprecis}[1]{% - \chapterprecishere{#1} - \chapterprecistoc{#1}} -\newcommand{\chapterprecishere}[1]{% - \prechapterprecis #1\postchapterprecis} -\newcommand{\prechapterprecis}{% - \vspace*{-2\baselineskip}% - \begin{quote}\normalfont\itshape} -\newcommand{\postchapterprecis}{\end{quote}} - -\newcommand{\precistocfont}{\normalfont\itshape} -\newcommand{\chapterprecistoc}[1]{\addtocontents{toc}{\precistoctext{#1}}} -\DeclareRobustCommand{\precistoctext}[1]{% - {\leftskip \cftchapterindent\relax - \advance\leftskip \cftchapternumwidth\relax - \rightskip \@tocrmarg\relax - \precistocfont #1\par}} -\newcommand{\cftlocalchange}[3]{% - \addtocontents{#1}{\protect\setpnumwidth{#2} \protect\setrmarg{#3}}} -\newcommand{\cftaddtitleline}[4]{% - \addtocontents{#1}{\protect\contentsline{#2}{#3}{#4}}} -\newcommand{\cftaddnumtitleline}[5]{% - \addtocontents{#1}% - {\protect\contentsline{#2}{\protect\numberline{#3}{\protect\ignorespaces #4}}{#5}}} -\newcommand{\@setclcnt}[2]{ - \@tempswafalse - \nametest{#1}{none} - \ifsamename - \setcounter{#2}{-10} - \@tempswatrue - \fi - \nametest{#1}{part} - \ifsamename - \setcounter{#2}{-1} - \@tempswatrue - \fi - \nametest{#1}{chapter} - \ifsamename - \setcounter{#2}{0} - \@tempswatrue - \fi - \nametest{#1}{section} - \ifsamename - \setcounter{#2}{1} - \@tempswatrue - \fi - \nametest{#1}{subsection} - \ifsamename - \setcounter{#2}{2} - \@tempswatrue - \fi - \nametest{#1}{subsubsection} - \ifsamename - \setcounter{#2}{3} - \@tempswatrue - \fi - \nametest{#1}{paragraph} - \ifsamename - \setcounter{#2}{4} - \@tempswatrue - \fi - \nametest{#1}{subparagraph} - \ifsamename - \setcounter{#2}{5} - \@tempswatrue - \fi - \nametest{#1}{all} - \ifsamename - \setcounter{#2}{50} - \@tempswatrue - \fi - \if@tempswa\else - \@memerror{% - Unknown document division name (#1) - }{% - I'll ignore it. Type \space <return> and I'll continue.\MessageBreak - If you haven't mistyped the name then use \protect\setcounter\space instead.} - \fi -} -\newcommand{\settocdepth}[1]{% - \@tempswafalse - \nametest{#1}{none} - \ifsamename - \addtocontents{toc}{\changetocdepth{-10}} - \@tempswatrue - \fi - \nametest{#1}{part} - \ifsamename - \addtocontents{toc}{\changetocdepth{-1}} - \@tempswatrue - \fi - \nametest{#1}{chapter} - \ifsamename - \addtocontents{toc}{\changetocdepth{0}} - \@tempswatrue - \fi - \nametest{#1}{section} - \ifsamename - \addtocontents{toc}{\changetocdepth{1}} - \@tempswatrue - \fi - \nametest{#1}{subsection} - \ifsamename - \addtocontents{toc}{\changetocdepth{2}} - \@tempswatrue - \fi - \nametest{#1}{subsubsection} - \ifsamename - \addtocontents{toc}{\changetocdepth{3}} - \@tempswatrue - \fi - \nametest{#1}{paragraph} - \ifsamename - \addtocontents{toc}{\changetocdepth{4}} - \@tempswatrue - \fi - \nametest{#1}{subparagraph} - \ifsamename - \addtocontents{toc}{\changetocdepth{5}} - \@tempswatrue - \fi - \nametest{#1}{all} - \ifsamename - \addtocontents{toc}{\changetocdepth{50}} - \@tempswatrue - \fi - \if@tempswa\else - \@memerror{% - Unknown document division name (#1) - }{% - I'll ignore it. Type \space <return> and I'll continue.} - \fi -} -\DeclareRobustCommand{\changetocdepth}[1]{\setcounter{tocdepth}{#1}} - -\newcommand{\maxtocdepth}[1]{% - \@setclcnt{#1}{tocdepth}} -\newcommand{\setsecnumdepth}[1]{%\leavevmode% - \@setclcnt{#1}{secnumdepth}} -\newcounter{maxsecnumdepth} -\newcommand{\maxsecnumdepth}[1]{% - \@setclcnt{#1}{secnumdepth}\@setclcnt{#1}{maxsecnumdepth}} - -\newdimen\bibindent - \setlength\bibindent{1.5em} -\newlength{\bibitemsep} - \setlength{\bibitemsep}{\itemsep} -\newcommand{\biblistextra}{\itemsep=\bibitemsep} - -\newenvironment{bibitemlist}[1]{% - \typeout{bibitemlist} - \list{\@biblabel{\@arabic\c@enumiv}}% - {\settowidth\labelwidth{\@biblabel{#1}}% - \leftmargin\labelwidth - \advance\leftmargin\labelsep - \@openbib@code - \usecounter{enumiv}% - \let\p@enumiv\@empty - \renewcommand\theenumiv{\@arabic\c@enumiv}% - \biblistextra}% - \sloppy - \clubpenalty4000 - \@clubpenalty \clubpenalty - \widowpenalty4000% - \sfcode`\.\@m}% - {\def\@noitemerr - {\@latex@warning{Empty `thebibliography' environment}}% - \endlist} - -\newcommand{\newblock}{\hskip .11em\@plus.33em\@minus.07em} -\let\@openbib@code\@empty -\newcommand*{\setbiblabel}[1]{% - \renewcommand*{\@biblabel}[1]{#1}} -\setbiblabel{[#1]\hfill} -\newcommand{\@memb@bchap}{% - \chapter*{\bibname}% - \bibmark - \ifnobibintoc\else - \phantomsection - \addcontentsline{toc}{chapter}{\bibname}% - \fi - \prebibhook} -\newcommand{\@memb@bsec}{\section{\bibname}\prebibhook} -\newcommand{\bibsection}{\@memb@bchap} - -\newenvironment{thebibliography}[1]{% - \bibsection - \begin{bibitemlist}{#1}}{\end{bibitemlist}\postbibhook} -\newif\ifnobibintoc -\newcommand*{\bibintoc}{\nobibintocfalse} -\newcommand*{\nobibintoc}{\nobibintoctrue} -\bibintoc - -\newcommand{\prebibhook}{} -\newcommand{\postbibhook}{} - -\AtBeginDocument{% - \@ifpackageloaded{natbib}{% natbib is loaded - \addtodef{\endthebibliography}{}{\vskip-\lastskip\postbibhook} - \@ifpackagewith{natbib}{sectionbib}{% with sectionbib option - \renewcommand{\bibsection}{\@memb@bsec}}% - {\renewcommand{\bibsection}{\@memb@bchap}}}% - {} - \@ifpackagewith{chapterbib}{sectionbib}{% - \renewcommand{\sectionbib}[2]{} - \renewcommand{\bibsection}{\@memb@bsec}}{} -} - -\newif\ifonecolindex - \onecolindexfalse - -\newenvironment{theindex}{% - \if@twocolumn - \@restonecolfalse - \else - \@restonecoltrue - \fi - \ifonecolindex - \onecolumn - \chapter*{\indexname} - \preindexhook - \else - \twocolumn[\@makeschapterhead{\indexname} - \preindexhook]% - \fi - \indexmark - \setlength{\columnseprule}{\indexrule} - \setlength{\columnsep}{\indexcolsep} - \ifnoindexintoc\else - \phantomsection - \addcontentsline{toc}{chapter}{\indexname} - \fi - \thispagestyle{chapter}\parindent\z@ - \parskip\z@ \@plus .3\p@\relax - \let\item\@idxitem} - {\if@restonecol\onecolumn\else\twocolumn\fi} - -\newif\ifnoindexintoc -\newcommand*{\indexintoc}{\noindexintocfalse} -\newcommand*{\noindexintoc}{\noindexintoctrue} -\indexintoc - -\newlength{\indexcolsep} \setlength{\indexcolsep}{35pt} -\newlength{\indexrule} \setlength{\indexrule}{0pt} - -\newcommand{\preindexhook}{} -\newcommand{\l@index}{\@dottedtocline{1}{0em}{0pt}} -\newcommand{\@idxitem} {\par\hangindent 40\p@} -\newcommand{\subitem} {\par\hangindent 40\p@ \hspace*{20\p@}} -\newcommand{\subsubitem}{\par\hangindent 40\p@ \hspace*{30\p@}} -\newcommand{\indexspace}{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax} - -\newcommand*{\makememindexhook}{} -\renewcommand{\makeindex}[1][\jobname]{% - \def\index{\@bsphack% - \@ifnextchar [{\@index}{\@index[\jobname]}} - \def\specialindex{\@bsphack\@spindex}% - \makememindexhook - \if@filesw \expandafter\newwrite\csname #1@idxfile\endcsname - \expandafter\immediate\openout \csname #1@idxfile\endcsname #1.idx\relax - \typeout{Writing index file #1.idx }% - \fi} - -\renewcommand{\index}[2][\jobname]{\@bsphack\@esphack} -\newcommand{\specialindex}[3]{\@bsphack\@esphack} - -\newcommand{\printindex}[1][\jobname]{\@input@{#1.ind}} - -\newif\ifreportnoidxfile - \reportnoidxfilefalse -\newif\ifshowindexmark - \showindexmarkfalse - -\def\@index[#1]{% - \@ifundefined{#1@idxfile}% - {\ifreportnoidxfile - \@memwarn{Undefined index file #1}% - \fi - \begingroup - \@sanitize - \@nowrindex}% - {\def\@idxfile{#1}% - \begingroup - \@sanitize - \@wrindexm@m}} -\newcommand{\@nowrindex}[1]{% - \ifshowindexmark\@showidx{#1}\fi\endgroup\@esphack} - -\newcommand{\@wrindexm@m}[1]{\@@wrindexhyp#1||\\} -\def\@@wrindexhyp#1|#2|#3\\{% - \ifshowindexmark\@showidx{#1}\fi - \ifx\\#2\\% - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|hyperpage}{\thepage}}% - \else - \def\Hy@temp@A{#2}% - \ifx\Hy@temp@A\HyInd@ParenLeft - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|#2hyperpage}{\thepage}}% - \else - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|#2}{\thepage}}% - \fi - \fi - \endgroup - \@esphack} -\newcommand{\hyperpage}[1]{#1} -\newcommand{\hyperlink}[2]{#2} - -\newcommand{\@@wrindexm@m}[1]{\begingroup - \def\@idxfile{\@nameuse{#1@idxfile}} - \@sanitize - \@@@wrindexm@m} - -\newcommand{\@@@wrindexm@m}[2]{% - \immediate\write \@idxfile{\string\indexentry{#1}{#2}}% - \endgroup} -\AtBeginDocument{% - \def\@@@wrindexm@m#1#2{\endgroup}} - -\newcommand{\@spindex}[2]{% - \@ifundefined{#1@idxfile}% - {\ifreportnoidxfile - \@memwarn{Undefined index file #1}% - \fi - \begingroup - \@sanitize - \@nowrindex}% - {\def\@idxfile{#1}% - \def\@sptheidx{#2}% - \begingroup - \@sanitize - \@wrspindex}} - -\newcommand{\@wrspindex}[1]{\@@wrspindexhyp#1||\\} -\def\@@wrspindexhyp#1|#2|#3\\{% - \ifshowindexmark\@showidx{#1}\fi - \ifx\\#2\\% - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|hyperspindexpage(\thepage)}{\@nameuse{the\@sptheidx}}}% - \else - \def\Hy@temp@A{#2}% - \ifx\Hy@temp@A\HyInd@ParenLeft - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|#2hyperspindexpage(\thepage)}{\@nameuse{the\@sptheidx}}}% - \else - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1|#2}{\@nameuse{the\@sptheidx}}}% - \fi - \fi - \endgroup - \@esphack} -\def\hyperspindexpage(#1)#2{\hyperlink{page.#1}{#2}} - -\AtBeginDocument{% - \@ifpackageloaded{hyperref}{}{% - \def\@@wrindexhyp#1||\\{% - \ifshowindexmark\@showidx{#1}\fi - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1}{\thepage}} - \endgroup - \@esphack} - \def\@@wrspindexhyp#1||\\{% - \ifshowindexmark\@showidx{#1}\fi - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1}{\@nameuse{the\@sptheidx}}} - \endgroup - \@esphack} -}} - -\newcommand*{\see}[2]{\emph{\seename} #1} -\newcommand*{\seename}{see} -\newcommand*{\seealso}[2]{\emph{\alsoname} #1} -\newcommand*{\alsoname}{see also} - -\newcommand{\citeindexfile}{\jobname} -\AtBeginDocument{\@ifpackageloaded{natbib}{% - \def\NAT@index{\index[\citeindexfile]{\NAT@idxtxt}}}{}} - -\newtoks\indexmarkstyle - \indexmarkstyle{\normalfont\footnotesize\ttfamily} -\newinsert\@indexbox - \dimen\@indexbox\maxdimen - -\begingroup - \catcode`\@\active - \expandafter\gdef\csname\string @sanitizeat\endcsname - {\def @{\char`\@}} -\endgroup - -\newcommand{\@showidx}[1]{% - \insert\@indexbox{% - \@sanitizeat - \the\indexmarkstyle - \hsize\marginparwidth - \hangindent\marginparsep \parindent\z@ - \everypar{}\let\par\@@par \parfillskip\@flushglue - \lineskip\normallineskip - \baselineskip .8\normalbaselineskip\sloppy - \raggedright \leavevmode - \vrule \@height .7\normalbaselineskip \@width \z@\relax - #1\relax - \vrule \@height \z@ \@depth .3\normalbaselineskip \@width \z@\relax - }% - \ifhmode\penalty\@M \hskip\z@skip\fi -} - -\newcommand{\@leftidx}{\hskip-\marginparsep \hskip-\marginparwidth} -\newcommand{\@rightidx}{\hskip\columnwidth \hskip\marginparsep} - -\newcommand{\@mkidx}{\vbox to \z@{% - \rlap{% - \if@twocolumn - \if@firstcolumn \@leftidx \else \@rightidx \fi - \else - \if@twoside - \ifodd\c@page \@rightidx \else \@leftidx \fi - \else - \@rightidx - \fi - \fi - \box\@indexbox - }% - \vss -}} - -\renewcommand{\raggedbottom}{% - \def\@textbottom{\vskip\z@ plus.0001fil}% - \let\@texttop\@mkidx} -\renewcommand{\flushbottom}{% - \let\@textbottom\relax - \let\@texttop\@mkidx} -\let\@texttop\@mkidx - -\def\@addmarginpar{% - \checkoddpage - \@next\@marbox\@currlist{\@cons\@freelist\@marbox - \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne - \if@twocolumn - \if@firstcolumn \@tempcnta\m@ne \fi - \else - \if@mparswitch - \ifoddpage \else \@tempcnta\m@ne \fi - \fi - \if@reversemargin \@tempcnta -\@tempcnta \fi - \fi - \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi - \@tempdima\@mparbottom - \advance\@tempdima -\@pageht - \advance\@tempdima\ht\@marbox - \ifdim\@tempdima >\z@ - \@latex@warning@no@line {Marginpar on page - \thepage\space moved by \the\@tempdima}% - \else - \@tempdima\z@ - \fi - \global\@mparbottom\@pageht - \global\advance\@mparbottom\@tempdima - \global\advance\@mparbottom\dp\@marbox - \global\advance\@mparbottom\marginparpush - \advance\@tempdima -\ht\@marbox - \global\setbox \@marbox - \vbox {\vskip \@tempdima - \box \@marbox}% - \global \ht\@marbox \z@ - \global \dp\@marbox \z@ - \kern -\@pagedp - \nointerlineskip - \hb@xt@\columnwidth - {\ifnum \@tempcnta >\z@ - \hskip\columnwidth \hskip\marginparsep - \else - \hskip -\marginparsep \hskip -\marginparwidth - \fi - \box\@marbox \hss}% - \nointerlineskip - \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% -} - -\newcommand{\parnopar}{\parfillskip=0pt\par\parskip=0pt\noindent} - -\newlength{\sideparvshift} - \setlength{\sideparvshift}{-2.08ex}% seems to work for all font sizes - -\newif\ifreversesidepar - \reversesidepartrue -\newif\ifsideparswitch - \sideparswitchfalse -\if@twoside \sideparswitchtrue \fi - -\newcommand{\sidepar}{\@dblarg{\@sidepar}} -\long\def\@sidepar[#1]#2{\@bsphack\leavevmode\vadjust{% % - \checkoddpage - \ifsideparswitch - \ifreversesidepar - \ifoddpage - \oddpagefalse - \else - \oddpagetrue - \fi - \fi - \else - \oddpagetrue - \ifreversesidepar - \oddpagefalse - \fi - \fi - \rlap{\kern-\parindent - \if@twocolumn - \if@firstcolumn % put at left - \kern -\marginparsep \kern -\marginparwidth % at left - \else % put at right - \kern \columnwidth \kern \marginparsep % at right - \fi - \else - \ifoddpage % put at right - \kern \textwidth \kern \marginparsep % at right - \else % put at left - \kern -\marginparsep \kern -\marginparwidth % at left - \fi - \fi - \vbox to 0pt{% - \kern \sideparvshift% % vertical shift to align top text lines - \begin{minipage}{\marginparwidth}% - \ifoddpage #2\else #1\fi% - \end{minipage}% - \vss}}}\@esphack} - -\newinsert\sideins - \skip\sideins=0pt - \count\sideins=0 - -\newcommand{\setsidebarheight}[1]{\dimen\sideins= #1} - \setsidebarheight{20\onelineskip} - -\newlength{\sidebarhsep} \setlength{\sidebarhsep}{\marginparsep} -\newlength{\sidebarvsep} \setlength{\sidebarvsep}{2\onelineskip} -\newlength{\sidebarwidth} \setlength{\sidebarwidth}{\marginparwidth} - -\newcommand{\sidebarfont}{\normalfont} -\newcommand{\sidebarform}{\rightskip=\z@ \@plus 2em} - -\newif\ifsidebaroneside - \if@twoside\sidebaronesidefalse\else\sidebaronesidetrue\fi - -\newcommand{\sidecontents}{% - {\if@twocolumn% %% put outside nearest column - \if@firstcolumn% %% move to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \else% %% move to right - \setlength{\@tempdimc}{\columnwidth}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \fi - \else% %% put into foremargin? - \ifsidebaroneside% %% put into right hand margin - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \else% %% put into foremargin - \ifodd\c@page% %% move to right - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \else% %% move to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \fi - \fi - \fi - \vtop to0pt{% - \vskip\onelineskip - \unvbox\sideins \vss}% - }} - -\newcommand{\sidebar}[1]{% - \insert\sideins{% - \splittopskip\sidebarvsep\relax - \hsize \sidebarwidth - \@parboxrestore % <- added in v1.4 - \sidebarform \sidebarfont - \noindent\vbox to \sidebarvsep{}\ignorespaces #1% - \ifhmode\unskip\strut\fi\par}} - -\let\memold@makecol\@makecol -\gdef\mem@makecol{% - \ifvoid\footins - \setbox\@outputbox \box\@cclv - \else - \setbox\@outputbox \vbox{% - \boxmaxdepth\@maxdepth - \@tempdima\dp\@cclv - \unvbox\@cclv - \vskip-\@tempdima - \vskip \skip\footins - \color@begingroup - \normalcolor - \footnoterule - \unvbox \footins - \color@endgroup - } - \fi - \ifvoid\sideins\else %%% start of change - \setbox\@outputbox \vbox{% - \sidecontents - \unvbox\@outputbox - } - \fi %%% end of change - \xdef\@freelist{\@freelist\@midlist}% - \global\let\@midlist\@empty - \@combinefloats - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \setbox\@outputbox \vbox to\@colht{% - \boxmaxdepth \maxdepth - \@texttop - \dimen@ \dp\@outputbox - \unvbox \@outputbox - \vskip -\dimen@ - \@textbottom - }% - \fi - \global \maxdepth \@maxdepth -} - -\newif\if@mem@nofoot -\newcommand*{\@mem@testifnofoot}{% - \@mem@nofoottrue - \ifvoid\footins\else\@mem@nofootfalse\fi - \ifvoid\footinsv@r\else\@mem@nofootfalse\fi - \ifvoid\sideins\else\@mem@nofootfalse\fi - \@mem@extranofeet} -\newcommand*{\@mem@extranofeet}{} - -\let\memold@doclearpage\@doclearpage -\newcommand{\mem@doclearpage}{% -%%%% \typeout{Redefining @doclearpage} - \@mem@testifnofoot - \if@mem@nofoot - \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa - \setbox\@tempboxa\box\@cclv - \xdef\@deferlist{\@toplist\@botlist\@deferlist}% - \global\let\@toplist\@empty - \global\let\@botlist\@empty - \global\@colroom\@colht - \ifx \@currlist\@empty - \else - \@latexerr{Float(s) lost}\@ehb - \global\let\@currlist\@empty - \fi - \@makefcolumn\@deferlist - \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}% - \if@twocolumn - \if@firstcolumn - \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}% - \global\let\@dbltoplist\@empty - \global\@colht\textheight - \begingroup - \@dblfloatplacement - \@makefcolumn\@dbldeferlist - \@whilesw\if@fcolmade \fi{\@outputpage - \@makefcolumn\@dbldeferlist}% - \endgroup - \else - \vbox{}\clearpage - \fi - \fi - \else - \setbox\@cclv\vbox{\box\@cclv\vfil}% - \@makecol\@opcol - \clearpage - \fi -} - -\let\memold@reinserts\@reinserts -\gdef\mem@reinserts{% - \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi - \ifvbox\@kludgeins\insert\@kludegins{\unvbox\@kludgeins}\fi - \ifvoid\sideins\else\sidecontents\fi -} - -\gdef\@makecol{\mem@makecol} -\gdef\@doclearpage{\mem@doclearpage} - -\renewcommand{\footnoterule}{% - \kern-3\p@ - \hrule width .4\columnwidth - \kern 2.6\p@} -\skip\footins=\bigskipamount -\@addtoreset{footnote}{chapter} -\newcommand*{\multfootsep}{\textsuperscript{\normalfont,}} -\newcommand*{\multiplefootnotemarker}{3sp} -\newcommand*{\m@mmf@prepare}{% - \kern-\multiplefootnotemarker - \kern\multiplefootnotemarker\relax} -\newcommand*{\m@mmf@check}{% - \ifdim\lastkern=\multiplefootnotemarker\relax - \edef\@x@sf{\the\spacefactor}% - \unkern - \multfootsep - \spacefactor\@x@sf\relax - \fi} - -\let\m@mold@footnotetext\@footnotetext -\renewcommand{\@footnotetext}[1]{\m@mold@footnotetext{#1}\m@mmf@prepare} -\renewcommand*{\@footnotemark}{% - \leavevmode - \ifhmode - \edef\@x@sf{\the\spacefactor}% - \m@mmf@check - \nobreak - \fi - \@makefnmark - \m@mmf@prepare - \ifhmode\spacefactor\@x@sf\fi - \relax} - -\newlength{\footmarkwidth} -\newlength{\footmarksep} -\newlength{\footparindent} -\newcommand*{\footmarkstyle}[1]{\def\footscript##1{#1}} -\newcommand{\makefootmarkhook}{} - -\newcommand{\footfootmark}{% - \ifdim\footmarkwidth < \z@ - \llap{\hb@xt@ -\footmarkwidth{\hss\normalfont\footscript{\@thefnmark}}% - \hspace*{-\footmarkwidth}}% - \else - \ifdim\footmarkwidth = \z@ - {\normalfont\footscript{\@thefnmark}}% - \else - \hb@xt@\footmarkwidth{\hss\normalfont\footscript{\@thefnmark}}% - \fi - \fi} - -\newcommand{\makefootmark}[1]{% - \leavevmode - \parindent \footparindent\noindent - \leftskip\footmarksep\relax - \advance\leftskip \footmarkwidth \null\nobreak\hskip -\leftskip\relax - \makefootmarkhook\relax - \footfootmark #1} -\newcommand{\@makefntext}[1]{\makefootmark #1} -\footmarkstyle{\textsuperscript{#1}} -\setlength{\footmarkwidth}{1.8em} -\setlength{\footmarksep}{-1.8em} -\setlength{\footparindent}{1em} - -\newcommand{\footref}[1]{% - \begingroup - \unrestored@protected@xdef\@thefnmark{\ref{#1}}% - \endgroup - \@footnotemark} - -\def\verbfootnote{\@ifnextchar[\@xverbfootnote{\stepcounter\@mpfn - \protected@xdef\@thefnmark{\thempfn}% - \@footnotemark\@verbfootnotetext}} - -\def\@xverbfootnote[#1]{% - \begingroup - \csname c@\@mpfn\endcsname #1\relax - \unrestored@protected@xdef\@thefnmark{\thempfn}% - \endgroup - \@footnotemark\@verbfootnotetext} - -\long\def\@verbfootnotetext{% - \insert\footins\bgroup - \footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces}% - \futurelet\next\fo@t -} -\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t - \else \let\next\f@t\fi \next} -\def\f@@t{\bgroup\aftergroup\@foot\let\next} -\def\f@t#1{#1\@foot} -\def\@foot{\strut\egroup\color@endgroup} - -\long\def\@verbmpfootnotetext{% - \global\setbox\@mpfootins\vbox{% - \reset@font\footnotesize - \unvbox\@mpfootins - \bgroup - \hsize\columnwidth - \@parboxrestore - \edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% - \color@begingroup - \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces}% - } - \futurelet\next\fo@t -} - -\def\@minipagerestore{\let\@verbfootnotetext\@verbmpfootnotetext} - -%%%%%%%%%%%%%% major extension to footnoting - -\newcommand{\m@m@makecolfloats}{% - \xdef\@freelist{\@freelist\@midlist}% - \global\let\@midlist\@empty - \@combinefloats} -\newcommand{\m@m@makecoltext}{% - \ifvbox\@kludgeins - \@makespecialcolbox - \else - \setbox\@outputbox \vbox to\@colht{% - \@texttop - \dimen@ \dp\@outputbox - \unvbox \@outputbox - \vskip -\dimen@ - \@textbottom}% - \fi} - -\newcommand{\m@m@makecolintro}{} - -\gdef\mem@makecol{% - \m@m@makecolintro - \ifvoid\footins - \setbox\@outputbox \box\@cclv - \else - \setbox\@outputbox \vbox{% - \boxmaxdepth\@maxdepth - \@tempdima\dp\@cclv - \unvbox\@cclv - \vskip \skip\footins - \color@begingroup - \normalcolor - \footnoterule - \unvbox \footins - \color@endgroup - }% - \fi - \m@mdoextrafeet - \ifvoid\sideins\else - \setbox\@outputbox \vbox{% - \sidecontents - \unvbox\@outputbox}% - \fi - \m@m@makecolfloats - \m@m@makecoltext - \global \maxdepth \@maxdepth} - -\gdef\mem@makecolbf{% - \m@m@makecolintro - \setbox\@outputbox \box\@cclv - \m@m@makecolfloats - \ifvoid\footins - \else - \setbox\@outputbox \vbox{% - \boxmaxdepth\@maxdepth - \unvbox\@outputbox - \vskip \skip\footins - \color@begingroup - \normalcolor - \footnoterule - \unvbox \footins - \color@endgroup - }% - \fi - \m@mdoextrafeet - \ifvoid\sideins\else - \setbox\@outputbox \vbox{% - \sidecontents - \unvbox\@outputbox}% - \fi - \m@m@makecoltext - \global \maxdepth \@maxdepth} - -\newcommand{\feetabovefloat}{\gdef\@makecol{\mem@makecol}} -\newcommand{\feetbelowfloat}{\gdef\@makecol{\mem@makecolbf}} -\feetabovefloat - -\newcommand{\m@mdoextrafeet}{\extrafeetins} -\newcommand*{\extrafeetins}{ - \setbox\@outputbox \vbox{% - \unvbox\@outputbox - \ifvoid\footinsv@r\else\@footstartv@r\@footgroupv@r\fi - \extrafeetinshook}} -\newcommand{\extrafeetinshook}{} - -\gdef \@reinserts{% - \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi - \m@mdodoreinextrafeet - \ifvoid\sideins\else\sidecontents\fi - \ifvbox\@kludgeins\insert\@kludgeins{\unvbox\@kludgeins}\fi} -\newcommand{\m@mdodoreinextrafeet}{% - \ifvoid\footinsv@r\else\insert\footinsv@r{\unvbox\footinsv@r}\fi - \extrafeetreinshook} -\newcommand{\extrafeetreinshook}{} - -\newcommand{\foottextfont}{\footnotesize} -\newlength{\footinsdim} - \setlength{\footinsdim}{8in} % standard for \dimen\footins -\newcommand{\@preamfntext}{% - \interlinepenalty\interfootnotelinepenalty - \floatingpenalty \@MM - \splittopskip=\footnotesep - \splitmaxdepth=\dp\strutbox - \@parboxrestore} - -\renewcommand{\@footnotetext}[1]{\insert\footins{% - \foottextfont - \@preamfntext - \hsize\columnwidth - \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces{\foottextfont #1}\@finalstrut\strutbox}% - \color@endgroup}\m@mmf@prepare} -\renewcommand{\@mpfootnotetext}[1]{% - \global\setbox\@mpfootins\vbox{% - \unvbox\@mpfootins - \foottextfont \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% - \color@begingroup - \@makefntext{% - \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% - \color@endgroup}} - -\let\m@mold@footnotetext\@footnotetext -\let\m@mold@mpfootnotetext\@mpfootnotetext - -\newcommand{\m@mdoextrafeetmini}{% - \extrafeetminihook} -\newcommand{\extrafeetminihook}{} -\renewcommand{\@minipagerestore}{\m@mdoextrafeetmini} - -\newcommand{\extrafeetendmini}{% - \ifvoid\@mpfootinsv@r\else - \vskip\skip\@mpfootins - \normalcolor\footnoterule\mp@footgroupv@r - \fi - \extrafeetendminihook} -\newcommand{\extrafeetendminihook}{} - -\newcommand{\m@mdoextrafeetendmini}{\extrafeetendmini} -\def\endminipage{% - \par - \unskip - \ifvoid\@mpfootins\else - \vskip\skip\@mpfootins - \normalcolor - \footnoterule - \unvbox\@mpfootins - \fi - \m@mdoextrafeetendmini - \@minipagefalse - \color@endgroup - \egroup - \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} - -\newcommand{\plainfootnotes}{% - \let\@footnotetext\m@mold@footnotetext - \let\@mpfootnotetext\m@mold@mpfootnotetext} - -\newcommand{\newfootnoteseries}[1]{% - \expandafter\newinsert\csname footins#1\endcsname% - > \footins#1 - \expandafter\skip\csname footins#1\endcsname \bigskipamount% - > \skip\footins#1 % [RS] - \newcounter{footnote#1}% -> \c@footnote#1 - \@nameuse{c@footnote#1} \z@% -> \c@footnote#1=0 - \global\@namelet{p@footnote#1} \@empty% -> \p@footnote#1 - \@namedef{thefootnote#1}{\arabic{footnote#1}}% -> \thefootnote#1 - \@namedef{foottextfont#1}{\foottextfont}% -> \foottextfont#1 - \m@makefootnote{#1}% -> \footnote#1 - \m@make@xfootnote{#1}% -> \@xfootnote#1 - \m@make@footnotetext{#1}% -> \@footnotetext#1 - \m@makefootnotemark{#1}% -> \footnotemark#1 - \m@make@xfootnotemark{#1}% -> \@xfootnotemark#1 - \m@make@footnotemark{#1}% -> \@footnotemark#1 - \m@makefootnotetext{#1}% -> \footnotetext#1 - \m@make@xfootnotenext{#1}% -> \@xfootnotenext#1 - \m@make@mpfn{#1}% -> \@mpfn#1 - \m@makethempfn{#1}% -> \thempfn#1 - \m@make@makefnmark{#1}% -> \@makefnmark#1 - \m@makefootref{#1}% -> \footref#1 - \m@makefootfootmark{#1}% -> \footfootmark#1 - \m@makemakefootmark{#1}% -> \makefootmark#1 - \m@makefootmarkstyle{#1}% -> \footmarkstyle#1 - \@namedef{@makefntext#1}##1{\@nameuse{makefootmark#1} ##1}% - \m@make@footstart{#1}% -> \@footstart#1 - \m@make@footgroup{#1}% -> \@footgroup#1 - \expandafter\newinsert\csname @mpfootins#1\endcsname% -> \@mpfootins#1 - \newcounter{mpfootnote#1}% -> \c@mpfootnote#1 - \global\@namelet{p@mpfootnote#1}\@empty - \@namedef{thempfootnote#1}{\itshape\alph{mpfootnote#1}}% - \m@make@mpfootnotetext{#1}% -> \@mpfootnotetext#1 - \ifartopt\else% [RS] - \expandafter\@cons\csname cl@chapter\endcsname {{footnote#1}}% - \fi - \g@addto@macro{\extrafeetinshook}{% - \ifvoid\@nameuse{footins#1}\else - \@nameuse{@footstart#1}\@nameuse{@footgroup#1}\fi} - \g@addto@macro{\extrafeetreinshook}{% - \ifvoid\@nameuse{footins#1}\else - \insert\@nameuse{footins#1}{\unvbox\@nameuse{footins#1}}\fi} - \g@addto@macro{\extrafeetendminihook}{% - \ifvoid\@nameuse{@mpfootins#1}\else - \vskip\skip\@mpfootins - \normalcolor\footnoterule\@nameuse{mp@footgroup#1}\fi} - \g@addto@macro{\extrafeetminihook}{% - \@namedef{@mpfn#1}{mpfootnote#1} - \@namedef{thempfn#1}{\@nameuse{thempfootnote#1}} - \csname c@mpfootnote#1\endcsname\z@ - \expandafter\let\expandafter\@t@mp \csname @mpfootnotetext#1\endcsname - \expandafter\let \csname @footnotetext#1\endcsname \@t@mp} - \g@addto@macro{\@mem@extranofeet}{% % [RS] - \ifvoid\@nameuse{footins#1}\else\@mem@nofootfalse\fi} - \plainfootstyle{#1}% -} - -\newcommand{\m@makefootnote}[1]{ - \@namedef{footnote#1}{\@ifnextchar[ - {\@nameuse{@xfootnote#1}}{%\advance \@nameuse{c@\@mpfn#1} by \@ne - \stepcounter{\@mpfn#1}% - \@name@p@xdef{@thefnmark#1}{\@nameuse{thempfn#1}}% - \@nameuse{@footnotemark#1}\@nameuse{@footnotetext#1}}}} - -\newcommand{\m@make@xfootnote}[1]{ - \@namedef{@xfootnote#1}[##1]{% - \begingroup - \csname c@\@mpfn#1\endcsname ##1\relax - \@name@unresp@xdef{@thefnmark#1}{\@nameuse{thempfn#1}}% - \endgroup - \@nameuse{@footnotemark#1}\@nameuse{@footnotetext#1}}} - -\newcommand{\m@make@footnotetext}[1]{% - \@namelongdef{@footnotetext#1}##1{% - \insert\@nameuse{footins#1}{% - \@nameuse{foottextfont#1}% - \@preamfntext - \hsize\columnwidth - \protected@edef\@currentlabel{\csname p@footnote#1\endcsname\@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@makefntext#1}{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@make@mpfootnotetext}[1]{% - \@namelongdef{@mpfootnotetext#1}##1{% - \global\setbox\@nameuse{@mpfootins#1}\vbox{% - \unvbox\@nameuse{@mpfootins#1}% - \@nameuse{foottextfont#1} \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote#1\endcsname\@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@makefntext#1}{% - \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@makefootnotemark}[1]{ -\@namedef{footnotemark#1}{% - \@ifnextchar[ {\@nameuse{@xfootnotemark#1}} - {%\advance\@nameuse{c@footnote#1} by \@ne% - \stepcounter{footnote#1}% - \@name@p@xdef{@thefnmark#1}{\@nameuse{thefootnote#1}}% - \@nameuse{@footnotemark#1}}}} - -\newcommand{\m@make@xfootnotemark}[1]{% - \@namedef{@xfootnotemark#1}[##1]{% - \begingroup - \@nameuse{c@footnote#1} ##1\relax - \@name@unresp@xdef{@thefnmark#1}{\@nameuse{thefootnote#1}}% - \endgroup - \@nameuse{@footnotemark#1}}} - -\newcommand{\m@make@footnotemark}[1]{% -\@namedef{@footnotemark#1}{% - \leavevmode - \ifhmode - \edef\@x@sf{\the\spacefactor}% - \m@mmf@check - \nobreak - \fi - \@nameuse{@makefnmark#1}% - \m@mmf@prepare - \ifhmode\spacefactor\@x@sf\fi - \relax}} - -\newcommand{\m@makefootmarkstyle}[1]{% - \@namedef{footmarkstyle#1}##1{% - \@namedef{footscript#1}####1{##1}}} - -\newcommand{\m@makefootnotetext}[1]{% -\@namedef{footnotetext#1}{% - \@ifnextchar[ {\@nameuse{@xfootnotenext#1}}% - {\@name@p@xdef{@thefnmark#1}{\@nameuse{thempfn#1}}% - \@nameuse{@footnotetext#1}}}} - -\newcommand{\m@make@xfootnotenext}[1]{ -\@namedef{@xfootnotenext#1}[##1]{% - \begingroup - \csname c@\@mpfn#1\endcsname ##1\relax - \@name@unresp@xdef{@thefnmark#1}{\@nameuse{thempfn#1}}% - \endgroup - \@nameuse{@footnotetext#1}}} - -\newcommand{\m@make@mpfn}[1]{% - \@namedef{@mpfn#1}{\@nameuse{footnote#1}}} - -\newcommand{\m@makethempfn}[1]{% - \@namedef{thempfn#1}{\@nameuse{thefootnote#1}}} - -\newcommand{\m@make@makefnmark}[1]{% - \@namedef{@makefnmark#1}{% - \hbox{\@textsuperscript{\normalfont\@nameuse{@thefnmark#1}}}}} - -\newcommand{\m@makefootref}[1]{% - \@namedef{footref#1}##1{% - \begingroup - \@name@unresp@xdef{@thefnmark#1}{\ref{##1}}% - \endgroup - \@nameuse{@footnotemark#1}}} - -\newcommand{\m@makefootfootmark}[1]{% - \@namedef{footfootmark#1}{% - \ifdim\footmarkwidth < \z@ - \llap{\hb@xt@ -\footmarkwidth{% - \hss\normalfont\@nameuse{footscript#1}{\@nameuse{@thefnmark#1}}}% - \hspace*{-\footmarkwidth}}% - \else - \ifdim\footmarkwidth = \z@ - {\normalfont\@nameuse{footscript#1}{\@nameuse{@thefnmark#1}}}% - \else - \hb@xt@\footmarkwidth{% - \hss\normalfont\@nameuse{footscript#1}{\@nameuse{@thefnmark#1}}}% - \fi - \fi}} - -\newcommand{\m@makemakefootmark}[1]{% - \@namedef{makefootmark#1}##1{% - \leavevmode - \parindent \footparindent\noindent - \leftskip\footmarksep\relax - \advance\leftskip \footmarkwidth \null\nobreak\hskip -\leftskip\relax - \makefootmarkhook\relax - \@nameuse{footfootmark#1}##1}} - -\newcommand{\m@make@footgroup}[1]{% - \@namedef{@footgroup#1}{\unvbox\@nameuse{footins#1}}} - -\newcommand{\m@makemp@footgroup}[1]{% - \@namedef{mp@footgroup#1}{\unvbox\@nameuse{@mpfootins#1}}} - -\newcommand{\m@make@footstart}[1]{% - \@namedef{@footstart#1}{% - \vskip\bigskipamount - \leftskip=\z@ - \rightskip=\z@ - \footnoterule}} - -\newcommand{\plainfootstyle}[1]{% - \m@make@footnotetext{#1}% - \m@make@footgroup{#1}% - \m@make@footstart{#1}% - \m@make@mpfootnotetext{#1}% - \m@makemp@footgroup{#1}% - \@nameuse{footmarkstyle#1}{\textsuperscript{##1}} - \expandafter\dimen\csname footins#1\endcsname=\footinsdim - \expandafter\count\csname footins#1\endcsname=1000\relax} - -\newinsert\footinsv@r - \skip\footinsv@r\bigskipamount - \count\footinsv@r=1000 % no magnifcation - \dimen\footinsv@r=\footinsdim -\m@make@footstart{v@r} -\newcommand{\@footgroupv@r}{} - -\newinsert\@mpfootinsv@r -\newcommand{\mp@footgroupv@r}{} - -\newcount\m@m@k \newdimen\m@m@h -\newcommand*{\m@mrigidbalance}[3]{\setbox0=\box#1 \m@m@k=#2 \m@m@h=#3 - \@@line{\splittopskip=\m@m@h \vbadness=\@M \hfilneg - \valign{##\vfill\cr\m@mdosplits}}} -\newcommand*{\m@mdosplits}{\ifnum\m@m@k>0 \noalign{\hfil}\m@msplitoff - \global\advance\m@m@k-1\cr\m@mdosplits\fi} -\newcommand*{\m@msplitoff}{\dimen0=\ht0 - \divide\dimen0 by\m@m@k \advance\dimen0 by\m@m@h - \setbox2 \vsplit0 to \dimen0 - \unvbox2 } - -\newcommand{\twocolumnfootnotes}{% - \@namedef{foottextfontv@r}{\foottextfont}% % [RS] - \let\@footnotetext\@twocolfootnotetext - \dimen\footinsv@r=2\footinsdim - \count\footinsv@r=500\relax - \m@make@twocol@footgroup{v@r}% - \let\@footgroupv@r\@twocol@footgroupv@r - \let\@mpfootnotetext\@mptwocolfootnotetext - \m@make@mptwocol@footgroup{v@r}% - \let\mp@footgroupv@r\@mptwocol@footgroupv@r} - -\newcommand{\@twocolfootnotetext}[1]{\insert\footinsv@r{ - \foottextfont - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \@twocolfootfmt{#1}% - \color@endgroup}% - \m@mmf@prepare} - -\newcommand{\@preamtwofmt}{% - \hsize .45\hsize - \parindent=\z@ - \tolerance=5000\relax - \raggedright - \leavevmode} - -\newcommand{\@twocolfootfmt}[1]{% - \@preamtwofmt - {\footfootmark\strut {\foottextfont #1}\strut\par}\allowbreak} - -\newcommand{\@mptwocolfootnotetext}[1]{% - \global\setbox\@mpfootinsv@r\vbox{% - \unvbox\@mpfootinsv@r - \foottextfont \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% - \color@begingroup - \@twocolfootfmt{#1}% - \color@endgroup}% - \m@mmf@prepare} - -\newcommand{\twocolumnfootstyle}[1]{% - \m@make@twocolfootnotetext{#1}% - \m@make@mptwocolfootnotetext{#1}% - \m@make@twocolfootfmt{#1}% - \m@make@twocol@footgroup{#1}% - \m@make@mptwocol@footgroup{#1}% - \m@make@footstart{#1}% - \@namelongdef{@footnotetext#1}##1{\@nameuse{@twocolfootnotetext#1}{##1}}% - \@namelongdef{@mpfootnotetext#1}##1{\@nameuse{@mptwocolfootnotetext#1}{##1}}% - \@namedef{@footgroup#1}{\@nameuse{@twocol@footgroup#1}}% - \@namedef{mp@footgroup#1}{\@nameuse{@mptwocol@footgroup#1}}% - \expandafter\dimen\csname footins#1\endcsname=2\footinsdim - \expandafter\count\csname footins#1\endcsname=500\relax} - -\newcommand{\m@make@twocolfootnotetext}[1]{% - \@namelongdef{@twocolfootnotetext#1}##1{% - \insert\@nameuse{footins#1}{ - \@nameuse{foottextfont#1}% - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote#1\endcsname \@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@twocolfootfmt#1}{##1}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@make@mptwocolfootnotetext}[1]{% -\@namelongdef{@mptwocolfootnotetext#1}##1{% - \global\setbox\@nameuse{@mpfootins#1}\vbox{% - \unvbox\@nameuse{@mpfootins#1} - \@nameuse{foottextfont#1} \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote#1\endcsname\@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@twocolfootfmt#1}{##1}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@make@twocolfootfmt}[1]{% - \@namedef{@twocolfootfmt#1}##1{% - \@preamtwofmt - {\@nameuse{footfootmark#1}\strut - {\@nameuse{foottextfont#1}##1}\strut\par}\allowbreak}} - -\newcommand{\m@make@twocol@footgroup}[1]{% - \@namedef{@twocol@footgroup#1}{{% - \@nameuse{foottextfont#1} \splittopskip=\ht\strutbox - \m@mrigidbalance{\@nameuse{footins#1}}{\tw@}{\splittopskip}}}} - -\newcommand{\m@make@mptwocol@footgroup}[1]{% -\@namedef{@mptwocol@footgroup#1}{{% - \@nameuse{foottextfont#1} \splittopskip=\ht\strutbox - \m@mrigidbalance{\@nameuse{@mpfootins#1}}{\tw@}{\splittopskip}}}} - -\newcommand{\threecolumnfootnotes}{% - \@namedef{foottextfontv@r}{\foottextfont}% % [RS] - \let\@footnotetext\@threecolfootnotetext - \dimen\footinsv@r=3\footinsdim - \count\footinsv@r=333\relax - \m@make@threecol@footgroup{v@r}% - \let\@footgroupv@r\@threecol@footgroupv@r - \let\@mpfootnotetext\@mpthreecolfootnotetext - \m@make@mpthreecol@footgroup{v@r}% - \let\mp@footgroupv@r\@mpthreecol@footgroupv@r} - -\newcommand{\@threecolfootnotetext}[1]{\insert\footinsv@r{ - \foottextfont - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \@threecolfootfmt{#1}% - \color@endgroup}% - \m@mmf@prepare} - -\newcommand{\@preamthreefmt}{% - \hsize .3\hsize - \parindent=\z@ - \tolerance=5000\relax - \raggedright - \leavevmode} - -\newcommand{\@threecolfootfmt}[1]{% - \@preamthreefmt - {\footfootmark\strut {\foottextfont #1}\strut\par}\allowbreak} - -\newcommand{\@mpthreecolfootnotetext}[1]{% - \global\setbox\@mpfootinsv@r\vbox{% - \unvbox\@mpfootinsv@r - \foottextfont \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% - \color@begingroup - \@threecolfootfmt{#1}% - \color@endgroup}% - \m@mmf@prepare} - -\newcommand{\threecolumnfootstyle}[1]{% - \m@make@threecolfootnotetext{#1}% - \m@make@mpthreecolfootnotetext{#1}% - \m@make@threecolfootfmt{#1}% - \m@make@threecol@footgroup{#1}% - \m@make@mpthreecol@footgroup{#1}% - \m@make@footstart{#1}% - \@namelongdef{@footnotetext#1}##1{\@nameuse{@threecolfootnotetext#1}{##1}}% - \@namelongdef{@mpfootnotetext#1}##1{\@nameuse{@mpthreecolfootnotetext#1}{##1}}% - \@namedef{@footgroup#1}{\@nameuse{@threecol@footgroup#1}}% - \@namedef{mp@footgroup#1}{\@nameuse{@mpthreecol@footgroup#1}}% - \expandafter\dimen\csname footins#1\endcsname=3\footinsdim - \expandafter\count\csname footins#1\endcsname=333\relax} - -\newcommand{\m@make@threecolfootnotetext}[1]{% -\@namelongdef{@threecolfootnotetext#1}##1{% - \insert\@nameuse{footins#1}{ - \@nameuse{foottextfont#1}% - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote#1\endcsname \@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@threecolfootfmt#1}{##1}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@make@mpthreecolfootnotetext}[1]{% -\@namelongdef{@mpthreecolfootnotetext#1}##1{% - \global\setbox\@nameuse{@mpfootins#1}\vbox{% - \unvbox\@nameuse{@mpfootins#1} - \@nameuse{foottextfont#1} \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote#1\endcsname\@nameuse{@thefnmark#1}}% - \color@begingroup - \@nameuse{@threecolfootfmt#1}{##1}% - \color@endgroup}% - \m@mmf@prepare}} - -\newcommand{\m@make@threecolfootfmt}[1]{% -\@namelongdef{@threecolfootfmt#1}##1{% - \@preamthreefmt - {\@nameuse{footfootmark#1}\strut - {\@nameuse{foottextfont#1}##1}\strut\par}\allowbreak}} - -\newcommand{\m@make@threecol@footgroup}[1]{% -\@namedef{@threecol@footgroup#1}{{% - \@nameuse{foottextfont#1} \splittopskip=\ht\strutbox - \m@mrigidbalance{\@nameuse{footins#1}}{\thr@@}{\splittopskip}}}} - -\newcommand{\m@make@mpthreecol@footgroup}[1]{% -\@namedef{@mpthreecol@footgroup#1}{{% - \@nameuse{foottextfont#1} \splittopskip=\ht\strutbox - \m@mrigidbalance{\@nameuse{@mpfootins#1}}{\thr@@}{\splittopskip}}}} - -\newcommand{\m@munvxh}[1]{% - \setbox0=\vbox{\unvbox#1% - \global\setbox1=\lastbox}% - \unhbox1 - \unskip - \unskip - \unpenalty - \hskip\m@mipn@skip} - -\newcommand{\m@mungebox}{% - \setbox0=\hbox{\m@munvxh0}% - \dp0=\z@ - \ht0=\footfudgefactor\wd0 - \box0 - \penalty0} - -\newskip\m@mipn@skip -\newcommand*{\m@minterparanoteglue}[1]{% - {\foottextfont\global\m@mipn@skip=#1\relax}} -\m@minterparanoteglue{1em plus.4em minus.4em} - -\newcommand*{\m@mmakehboxofhboxes}{\setbox0=\hbox{}% - \loop - \unpenalty - \setbox2=\lastbox - \ifhbox2 - \setbox0=\hbox{\box2\unhbox0} - \repeat} - -\newcommand*{\m@mremovehboxes}{\setbox0=\lastbox - \ifhbox0{\m@mremovehboxes}\unhbox0 \fi} - -\newcommand*{\footfudgefiddle}{64} - -\newcommand{\paragraphfootnotes}{% - \@namedef{foottextfontv@r}{\foottextfont}% % [RS] - \let\@footnotetext\@parafootnotetext - \dimen\footinsv@r=\footinsdim - \count\footinsv@r=1000\relax - \m@make@para@footgroup{v@r}% - \let\@footgroupv@r\@para@footgroupv@r - \let\@mpfootnotetext\@mpparafootnotetext - \m@make@mppara@footgroup{v@r}% - \let\mp@footgroupv@r\@mppara@footgroupv@r - {\foottextfont - \dimen0=\baselineskip - \multiply\dimen0 by 1024 - \divide\dimen0 by \hsize \multiply\dimen0 by \footfudgefiddle - \xdef\footfudgefactor{\expandafter\strip@pt\dimen0 }}} - -\newcommand{\@parafootnotetext}[1]{\insert\footinsv@r{ - \foottextfont - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \setbox0=\vbox{\hsize=\maxdimen - \color@begingroup - \noindent \@parafootfmt{#1}% - \color@endgroup}% - \m@mungebox}% - \m@mmf@prepare} - -\newcommand{\@parafootfmt}[1]{% - \parindent=\z@ - \parfillskip=0pt \@plus 1fil - {\footfootmark\strut {\foottextfont #1}\penalty-10}} - -\newcommand{\@mpparafootnotetext}[1]{% - \global\setbox\@mpfootinsv@r\vbox{% - \unvbox\@mpfootinsv@r - \foottextfont \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% - \setbox0=\vbox{\hsize=\maxdimen - \color@begingroup - \noindent \@parafootfmt{#1}% - \color@endgroup}% - \m@mungebox}% - \m@mmf@prepare} - -\newcommand{\paragraphfootstyle}[1]{% - \m@make@parafootnotetext{#1}% - \m@make@mpparafootnotetext{#1}% - \m@make@parafootfmt{#1}% - \m@make@para@footgroup{#1}% - \m@make@mppara@footgroup{#1}% - \m@make@para@footstart{#1}% - \@namelongdef{@footnotetext#1}##1{\@nameuse{@parafootnotetext#1}{##1}}% - \@namelongdef{@mpfootnotetext#1}##1{\@nameuse{@mpparafootnotetext#1}{##1}}% - \@namedef{@footgroup#1}{\@nameuse{@para@footgroup#1}}% - \@namedef{mp@footgroup#1}{\@nameuse{@mppara@footgroup#1}}% - \@namedef{@footstart#1}{\@nameuse{@para@footstart#1}}% - \expandafter\dimen\csname footins#1\endcsname=\footinsdim - \expandafter\count\csname footins#1\endcsname=1000\relax - {\@nameuse{foottextfont#1}% - \dimen0=\baselineskip - \multiply\dimen0 by 1024 - \divide\dimen0 by \hsize \multiply\dimen0 by 64 - \xdef\footfudgefactor{\expandafter\strip@pt\dimen0 }}} - -\newcommand{\m@make@parafootnotetext}[1]{% -\@namelongdef{@parafootnotetext#1}##1{% - \insert\@nameuse{footins#1}{ - \@nameuse{foottextfont#1}% - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote#1\endcsname \@nameuse{@thefnmark#1}}% - \setbox0=\vbox{\hsize=\maxdimen - \color@begingroup - \noindent \@nameuse{@parafootfmt#1}{##1}% - \color@endgroup}% - \m@mungebox}% - \m@mmf@prepare}} - -\newcommand{\m@make@mpparafootnotetext}[1]{% -\@namelongdef{@mpparafootnotetext#1}##1{% - \global\setbox\@nameuse{@mpfootins#1}\vbox{% - \unvbox\@nameuse{@mpfootins#1} - \@nameuse{foottextfont#1} \hsize\columnwidth \@parboxrestore - \protected@edef\@currentlabel{\csname p@mpfootnote#1\endcsname\@nameuse{@thefnmark#1}}% - \setbox0=\vbox{\hsize=\maxdimen - \color@begingroup - \noindent \@nameuse{@parafootfmt#1}{##1}% - \color@endgroup}% - \m@mungebox}% - \m@mmf@prepare}} - -\newcommand{\m@make@parafootfmt}[1]{% -\@namelongdef{@parafootfmt#1}##1{% - \parindent=\z@ - \parfillskip=0pt \@plus 1fil - {\@nameuse{footfootmark#1}\strut - {\@nameuse{foottextfont#1}##1}\penalty-10}}} - -\newcommand{\m@make@para@footgroup}[1]{% -\@namedef{@para@footgroup#1}{% - \unvbox\@nameuse{footins#1} - \m@mmakehboxofhboxes - \setbox0=\hbox{\unhbox0 \m@mremovehboxes}% - \@nameuse{foottextfont#1}% - \noindent\unhbox0\par}} - -\newcommand{\m@make@mppara@footgroup}[1]{% -\@namedef{@mppara@footgroup#1}{% - \unvbox\@nameuse{@mpfootins#1} - \m@mmakehboxofhboxes - \setbox0=\hbox{\unhbox0 \m@mremovehboxes}% - \@nameuse{foottextfont#1}% - \noindent\unhbox0\par}} - -\newcommand{\m@make@para@footstart}[1]{% -\@namedef{@para@footstart#1}{% - \vskip\bigskipamount - \leftskip=\z@ - \rightskip=\z@ - \parindent=\z@ - \vskip\skip\@nameuse{footins#1}% - \footnoterule}} - -\newif\ifchangemarks\changemarksfalse -\newcommand{\v@rid}[2]{% - \@bsphack - \ifchangemarks - \ifdraftdoc - \marginpar[#1]{#2}% - \fi\fi - \@esphack} - -\newcommand{\added}[1]{% - \@bsphack - \ifchangemarks - \v@rid{\small$\oplus$ #1}{\small$\oplus$ #1}% - \fi - \@esphack} -\newcommand{\deleted}[1]{% - \@bsphack - \ifchangemarks - \v@rid{\small$\neq$ #1}{\small$\neq$ #1}% - \fi - \@esphack} -\newcommand{\changed}[1]{% - \@bsphack - \ifchangemarks - \v@rid{\small$\Leftrightarrow$ #1}{\small$\Leftrightarrow$ #1}% - \fi - \@esphack} - -\newcommand*{\trimmark}{% - \begin{picture}(0,0) - \unitlength 1cm - \thinlines - \put(-2,0){\line(1,0){4}} - \put(0,-2){\line(0,1){4}} - \end{picture}} - -\newcommand*{\Ltrimpictl}{% - \begin{picture}(0,0) - \unitlength 1mm - \thinlines - \put(-2,0){\line(-1,0){18}} - \put(0,2){\line(0,1){18}} - \end{picture}} -\newcommand*{\Ltrimpictr}{% - \begin{picture}(0,0) - \unitlength 1mm - \thinlines - \put(2,0){\line(1,0){18}} - \put(0,2){\line(0,1){18}} - \end{picture}} -\newcommand*{\Ltrimpicbl}{% - \begin{picture}(0,0) - \unitlength 1mm - \thinlines - \put(-2,0){\line(-1,0){18}} - \put(0,-2){\line(0,-1){18}} - \end{picture}} -\newcommand*{\Ltrimpicbr}{% - \begin{picture}(0,0) - \unitlength 1mm - \thinlines - \put(2,0){\line(1,0){18}} - \put(0,-2){\line(0,-1){18}} - \end{picture}} - -\newcommand*{\Ftrimpicbl}{% - \begin{picture}(0,0) - \unitlength 1pt - \thinlines - \put(0,0){\framebox(\strip@pt\paperwidth,\strip@pt\paperheight){}} - \end{picture}} - -\newcommand*{\tmarktl}{\trimmark} -\newcommand*{\tmarktr}{\trimmark} -\newcommand*{\tmarkbl}{\trimmark} -\newcommand*{\tmarkbr}{\trimmark} - -\newcommand*{\tmarktm}{} -\newcommand*{\tmarkml}{} -\newcommand*{\tmarkmr}{} -\newcommand*{\tmarkbm}{} - -\newcommand*{\trimXmarks}{% - \let\tmarktl\trimmark - \let\tmarktr\trimmark - \let\tmarkbl\trimmark - \let\tmarkbr\trimmark -} -\newcommand*{\trimLmarks}{% - \let\tmarktl\Ltrimpictl - \let\tmarktr\Ltrimpictr - \let\tmarkbl\Ltrimpicbl - \let\tmarkbr\Ltrimpicbr -} -\newcommand*{\trimFrame}{% - \let\tmarktl\null - \let\tmarktr\null - \let\tmarkbl\Ftrimpicbl - \let\tmarkbr\null -} -\newcommand*{\trimNone}{% - \let\tmarktl\relax - \let\tmarktr\relax - \let\tmarkbl\relax - \let\tmarkbr\relax - \let\tmarktm\relax - \let\tmarkml\relax - \let\tmarkmr\relax - \let\tmarkbm\relax -} - -\newcommand*{\trimmarks}{% - \vbox to \z@{\vskip-1in \vskip\trimtop % top of logical page - \hb@xt@\z@{\hskip-1in - \ifodd\c@page - \hskip\stockwidth \hskip-\trimedge \hskip-\paperwidth - \else - \if@twoside - \hskip\trimedge % left of logical page - \else - \hskip\stockwidth \hskip-\trimedge \hskip-\paperwidth - \fi - \fi - \vbox to \paperheight{% - \let\protect\relax % <- v1.4 addition - \hb@xt@\paperwidth{\tmarktl\hfil\tmarktm\hfil\tmarktr}% - \vfil - \hb@xt@\paperwidth{\tmarkml\hfil\tmarkmr}% - \vfil - \hb@xt@\paperwidth{\tmarkbl\hfil\tmarkbm\hfil\tmarkbr}}% - \hss}% - \vss}} - -\newcounter{sheetsequence} - \setcounter{sheetsequence}{1} - \renewcommand{\thesheetsequence}{\@arabic\c@sheetsequence} -\g@addto@macro{\@outputpage}{\stepcounter{sheetsequence}} - -\newcounter{lastsheet} - \setcounter{lastsheet}{0} -\newcounter{lastpage} - \setcounter{lastpage}{0} -\newcommand{\dol@stsheet}{\addtocounter{sheetsequence}{-1}% - \immediate\write\@auxout% - {\string\setcounter{lastsheet}{\the\c@sheetsequence}}% - \stepcounter{sheetsequence}} -\newcommand{\dol@stpage}{\addtocounter{page}{-1}% - \immediate\write\@auxout% - {\string\setcounter{lastpage}{\the\c@page}}% - \stepcounter{page}} -\AtBeginDocument{\AtEndDocument{\clearpage\dol@stsheet\dol@stpage}} - -\let\mem@oldshipout\shipout -\newcommand*{\mem@shipi}{% - \ifvoid\@cclv\expandafter\aftergroup\fi\mem@shipii} -\newcommand*\mem@shipii{\mem@oldshipout\vbox{\trimmarks\unvbox\@cclv}} -\ifshowtrims - \renewcommand*{\shipout}{\afterassignment\mem@shipi\setbox\@cclv=} -\fi - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newtoks\every@verbatim - \every@verbatim={} -\newtoks\afterevery@verbatim - \afterevery@verbatim={} - -\def\@makeother#1{\catcode`#112\relax} -\begingroup - \catcode`\ =\active% - \def\x{\def\@vobeyspaces{\catcode`\ \active\let \@xobeysp}} - \expandafter\endgroup\x -\def\@xobeysp{\leavevmode\penalty\@M\ } -\newtoks\verbatim@line -\newcount\tab@position -\def\@xobeytab{% - \loop - \toks@\expandafter{\the\toks@\@xobeysp}% - \advance\tab@position-1 - \ifnum\tab@position>0 \repeat -} -\begingroup - \catcode`\^^I=\active - \gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}% -\endgroup -\def\verbatim@tabexpand#1{% - \ifx#1\@nil - \the\toks@ - \expandafter\par - \else - \ifx#1\@xobeytab - \@xobeytab - \else - \toks@\expandafter{\the\toks@#1}% - \advance\tab@position\m@ne - \fi - \ifnum\tab@position=0 \tab@position\tab@size \fi - \expandafter\verbatim@tabexpand - \fi -} - -\newif\ift@bs -\newcommand{\tabson}[1][4]{% - \ifnum\@ne > #1\relax - \tabsoff - \else - \t@bstrue - \def\tab@size{#1\relax}% - \def\@maybeobeytabs{\@vobeytabs}% - \fi -} -\newcommand{\tabsoff}{% - \t@bsfalse - \def\tab@size{\z@}% - \def\@maybeobeytabs{}% -} -\tabsoff - -\def\tabverbatim@processline{\tab@position\tab@size - \toks@{}% - \expandafter\verbatim@tabexpand\the\verbatim@line\@nil} -\def\notabverbatim@processline{\the\verbatim@line\par} - -\def\verbatim@startline{\verbatim@line{}} -\def\verbatim@addtoline#1{% - \verbatim@line\expandafter{\the\verbatim@line#1}} -\def\verbatim@processline{\notabverbatim@processline} -\def\verbatim@finish{\ifcat$\the\verbatim@line$\else - \verbatim@processline\fi} -\newcommand{\setverbatimfont}[1]{\def\m@mverbfont{#1}} -\setverbatimfont{\normalfont\ttfamily} - -\def\verbatim@font{\m@mverbfont - \hyphenchar\font\m@ne - \let\do\do@noligs - \verbatim@nolig@list} - -\def\@verbatim{\the\every@verbatim - \trivlist \item \relax - \if@minipage\else\vskip\parskip\fi - \@beginparpenalty \predisplaypenalty - \leftskip\@totalleftmargin\rightskip\z@ - \parindent\z@\parfillskip\@flushglue\parskip\z@ - \@@par - \def\par{% - \if@tempswa - \leavevmode\null\@@par\penalty\interlinepenalty - \else - \@tempswatrue - \ifhmode\@@par\penalty\interlinepenalty\fi - \fi}% - \def\@noitemerr{\@warning{No verbatim text}}% - \obeylines - \let\do\@makeother \dospecials - \verbatim@font - \everypar \expandafter{\the\everypar \unpenalty}% - \wrapright\the\afterevery@verbatim} -\def\verbatim{\begingroup - \ift@bs - \def\verbatim@processline{\tabverbatim@processline}% - \fi - \@verbatim \frenchspacing\@vobeyspaces\@maybeobeytabs\verbatim@start} -\@namedef{verbatim*}{\begingroup - \ift@bs - \def\verbatim@processline{\tabverbatim@processline}% - \fi - \@verbatim\@maybeobeytabs\verbatim@start} -\def\endverbatim{\endtrivlist\endgroup\@doendpe} -\@namelet{endverbatim*}\endverbatim - -\newcommand{\setupcomment}{% - \let\do\@makeother\dospecials\catcode`\^^M\active - \let\verbatim@startline\relax - \let\verbatim@addtoline\@gobble - \let\verbatim@processline\relax - \let\verbatim@finish\relax} -\newcommand{\newcomment}[1]{% - \expandafter\def\csname #1\endcsname{\@bsphack\setupcomment\verbatim@}% - \expandafter\let\csname end#1\endcsname=\@esphack} -\newcommand{\commentsoff}[1]{% - \expandafter\def\csname #1\endcsname{}% - \expandafter\def\csname end#1\endcsname{}} -\newcommand{\commentson}[1]{\newcomment{#1}} - -\newcomment{comment} - -\@ifundefined{vrb@catcodes}% - {\def\vrb@catcodes{% - \catcode`\!12\catcode`\[12\catcode`\]12}}{} -\begingroup - \vrb@catcodes - \lccode`\!=`\\ \lccode`\[=`\{ \lccode`\]=`\} - \catcode`\~=\active \lccode`\~=`\^^M - \lccode`\C=`\C - \lowercase{\endgroup - \def\verbatim@start#1{% - \verbatim@startline - \if\noexpand#1\noexpand~% - \let\next\verbatim@ - \else \def\next{\verbatim@#1}\fi - \next}% - \def\verbatim@#1~{\verbatim@@#1!end\@nil}% - \def\verbatim@@#1!end{% - \verbatim@addtoline{#1}% - \futurelet\next\verbatim@@@}% - \def\verbatim@@@#1\@nil{% - \ifx\next\@nil - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else - \def\@tempa##1!end\@nil{##1}% - \@temptokena{!end}% - \def\next{\expandafter\verbatim@test\@tempa#1\@nil~}% - \fi \next}% - \def\verbatim@test#1{% - \let\next\verbatim@test - \if\noexpand#1\noexpand~% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena}% - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else \if\noexpand#1 - \@temptokena\expandafter{\the\@temptokena#1}% - \else \if\noexpand#1\noexpand[% - \let\@tempc\@empty - \let\next\verbatim@testend - \else - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena}% - \def\next{\verbatim@#1}% - \fi\fi\fi - \next}% - \def\verbatim@testend#1{% - \if\noexpand#1\noexpand~% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc}% - \verbatim@processline - \verbatim@startline - \let\next\verbatim@ - \else\if\noexpand#1\noexpand]% - \let\next\verbatim@@testend - \else\if\noexpand#1\noexpand!% - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc}% - \def\next{\verbatim@!}% - \else \expandafter\def\expandafter\@tempc\expandafter - {\@tempc#1}\fi\fi\fi - \next}% - \def\verbatim@@testend{% - \ifx\@tempc\@currenvir - \verbatim@finish - \edef\next{\noexpand\end{\@currenvir}% - \noexpand\verbatim@rescan{\@currenvir}}% - \else - \expandafter\verbatim@addtoline - \expandafter{\the\@temptokena[}% - \expandafter\verbatim@addtoline - \expandafter{\@tempc]}% - \let\next\verbatim@ - \fi - \next}% - \def\verbatim@rescan#1#2~{\if\noexpand~\noexpand#2~\else - \@warning{Characters dropped after `\string\end{#1}'}\fi}} -\newread\verbatim@in@stream -\def\verbatim@readfile#1{% - \verbatim@startline - \openin\verbatim@in@stream #1\relax - \ifeof\verbatim@in@stream - \typeout{No file #1.}% - \else - \@addtofilelist{#1}% - \ProvidesFile{#1}[(verbatim)]% - \expandafter\endlinechar\expandafter\m@ne - \expandafter\verbatim@read@file - \expandafter\endlinechar\the\endlinechar\relax - \closein\verbatim@in@stream - \fi - \verbatim@finish -} -\def\verbatim@read@file{% - \read\verbatim@in@stream to\next - \ifeof\verbatim@in@stream - \else - \expandafter\verbatim@addtoline\expandafter{\next}% - \verbatim@processline - \verbatim@startline - \expandafter\verbatim@read@file - \fi -} -\def\verbatiminput{\begingroup - \ift@bs - \def\verbatim@processline{\tabverbatim@processline}% - \fi - \@ifstar{\verbatim@input{\@maybeobeytabs}}% - {\verbatim@input{\frenchspacing\@vobeyspaces\@maybeobeytabs}}} -\def\verbatim@input#1#2{% - \IfFileExists {#2}{\@verbatim #1\relax - \verbatim@readfile{\@filef@und}\endtrivlist\endgroup\@doendpe}% - {\typeout {No file #2.}\endgroup}} -\newlength{\verbatimindent} - \setlength{\verbatimindent}{3em} -\newcommand*{\verbatimbreakchar}{\char`\%} -\newcommand*{\setverbatimbreak}{% - \vspace*{-\baselineskip}% - \def\@xobeysp{~\discretionary{\verbatimbreakchar}{\kern\verbatimindent}{}}% -} - -\newcommand{\wrappingon}{% - \def\@xobeysp{~\discretionary{\verbatimbreakchar}{\kern\verbatimindent}{}}% - \def\wrapright{\raggedright}% -} -\newcommand{\wrappingoff}{% - \def\@xobeysp{\leavevmode\penalty\@M\ }% - \def\wrapright{}% -} -\wrappingoff - -\newwrite \verbatim@out -\def\verbatimoutput#1{% - \@bsphack - \immediate\openout \verbatim@out #1 - \let\do\@makeother\dospecials - \catcode`\^^M\active %% \catcode`\^^I=12 %% PW with this TABs are written ^^I - \def\verbatim@processline{% - \immediate\write\verbatim@out - {\the\verbatim@line}}% - \verbatim@start} -\def\endverbatimoutput{% - \immediate\closeout\verbatim@out - \@esphack} -\def\fboxverbatim{\begingroup% - \tabsoff %% PW otherwise box fills the width - \def\verbatim@processline{% - {\setbox0=\hbox{\the\verbatim@line}% - \hsize=\wd0 \the\verbatim@line\par}}% - \@minipagetrue%%%DPC%%% - \@tempswatrue%%%DPC%%% - \setbox0=\vbox\bgroup \verbatim -} -\def\endfboxverbatim{% - \endverbatim - \unskip\setbox0=\lastbox %%%DPC%%% - \egroup - \fbox{\box0}% <<<=== change here for centering,... -\endgroup} -\def\MakeShortVerb#1{% - \expandafter\ifx\csname cc\string#1\endcsname\relax - \@shortvrbinfo{Made }{#1}% - \add@special{#1}% - \expandafter - \xdef\csname cc\string#1\endcsname{\the\catcode`#1}% - \begingroup - \catcode`\~\active \lccode`\~`#1% - \lowercase{% - \global\expandafter\let - \csname ac\string#1\endcsname~% - \gdef~{\verb~}}% - \endgroup - \global\catcode`#1\active - \else - \@shortvrbinfo\@empty{#1 already}% - \fi} -\def\DeleteShortVerb#1{% - \expandafter\ifx\csname cc\string#1\endcsname\relax - \else - \@shortvrbinfo{Deleted }{#1 as}% - \rem@special{#1}% - \global\catcode`#1\csname cc\string#1\endcsname - \global \expandafter\let \csname cc\string#1\endcsname \relax - \ifnum\catcode`#1=\active - \begingroup - \catcode`\~\active \lccode`\~`#1% - \lowercase{% - \global\expandafter\let\expandafter~% - \csname ac\string#1\endcsname}% - \endgroup \fi \fi} -\def\@shortvrbinfo#1#2{% - \PackageInfo{shortvrb}{% - #1\expandafter\@gobble\string#2 a short reference - for \string\verb}} -\def\add@special#1{% - \rem@special{#1}% - \expandafter\gdef\expandafter\dospecials\expandafter - {\dospecials \do #1}% - \expandafter\gdef\expandafter\@sanitize\expandafter - {\@sanitize \@makeother #1}} -\def\rem@special#1{% - \def\do##1{% - \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}% - \xdef\dospecials{\dospecials}% - \begingroup - \def\@makeother##1{% - \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}% - \xdef\@sanitize{\@sanitize}% - \endgroup} -\newcommand{\linenumberfont}[1]{\def\vlvnumfont{#1}} -%%% \linenumberfont{\small\rmfamily} - -\newcommand{\linenumberfrequency}[1]{% - \ifnum #1< \@ne - \def\linemodnum{0\relax} - \bvcountlinesfalse - \else - \def\linemodnum{#1\relax} - \bvcountlinestrue - \fi -} -%%%%\linenumberfrequency{0} - -\newcommand{\getthelinenumber}[1]{% - \ifnum\@ne=\linemodnum - \@nameuse{the#1} - \else - \ifnum\@ne<\linemodnum - \@tempcnta=\@nameuse{c@#1} - \divide\@tempcnta\linemodnum \multiply\@tempcnta\linemodnum - \ifnum\@tempcnta=\@nameuse{c@#1}\@nameuse{the#1}\fi - \fi - \fi -} - -\def\boxverbflag{14 } -\newlength{\bvboxsep} % user can change this -\setlength{\bvboxsep}{1em} - -\newif\ifbvperpage % start/end lines on every page of multipage verbatim -\bvperpagetrue - -\newcommand{\bvtopofpage}[1]{% - \long\def\b@vtop{#1} -} -\def\b@vtop{} % used in \boxverb@split for heading - -\newcounter{bvlinectr} -\def\theb@vlinenumber{\getthelinenumber{bvlinectr}} -\newcommand{\resetbvlinenumber}{\setcounter{bvlinectr}{0}} - -\newif\ifbvcountlines % TRUE to print line numbers of verbatim lines - \bvcountlinesfalse -\def\b@vdocount{\ifbvcountlines\stepcounter{bvlinectr}\fi} -\newlength{\bvnumlength} -%% \settowidth{\bvnumlength}{\vlvnumfont 9999} -\settowidth{\bvnumlength}{\normalfont 999} - -\newif\ifbvcountinside % TRUE if line numbers inside box - \bvcountinsidetrue -\newcommand{\bvnumbersinside}{\bvcountinsidetrue} -\newcommand{\bvnumbersoutside}{\bvcountinsidefalse} - -\def\b@vdoinside{% - \ifbvcountlines\ifbvcountinside% - \makebox[\bvnumlength][r]{\vlvnumfont \theb@vlinenumber\space}% - \fi\fi} - -\def\b@vdooutside{% - \ifbvcountlines\ifbvcountinside\else% - \llap{\makebox[\bvnumlength][r]{\vlvnumfont \theb@vlinenumber\space}}% - \fi\fi} - -\newcommand{\setupboxverb@line}{% - \par - \ifbvperpage - \output=\expandafter{\expandafter\boxverb@split \the\output} - \fi - \def\verbatim@processline{\leavevmode - \b@vdocount% - \bvleftsidehook\vbox{\advance\hsize-.8\p@ \@@line - {\b@vdooutside\strut\kern\bvboxsep% - \b@vdoinside% - \ift@bs - \tabverbatim@processline - \else - \the\verbatim@line - \fi - \hss}% - \kern\bvboxsep}\bvrightsidehook\par}% -} - -\newcommand{\setupbox@verb}{% - \leftskip\z@skip \rightskip\z@skip - \interlinepenalty\boxverbflag - \parfillskip\z@ plus\p@ minus\p@ - \lineskip-\bvboxsep \baselineskip\z@skip - \frenchspacing\@vobeyspaces\@maybeobeytabs - \boxverb@toprule -} - -\def\boxedverbatim{\begingroup - \setupboxverb@line - \@verbatim - \setupbox@verb - \verbatim@start -} -\def\endboxedverbatim{\bvendrulehook\endtrivlist\endgroup\@doendpe} - -\@namedef{boxedverbatim*}{\let\frenchspacing\@gobble \boxedverbatim} -\@namelet{endboxedverbatim*}\endboxverbatim - -\def\boxverb@toprule{\bvtoprulehook - \@@line{\bvleftsidehook \bvtopmidhook \bvrightsidehook}} - -\def\boxverb@split{\ifnum\outputpenalty=\boxverbflag - \ifdim\dp\@cclv=\z@ - \setbox\@cclv\vbox{\unvbox\@cclv\hrule\kern-.4pt}% - \null \kern-.7\topskip \b@vtop \boxverb@toprule - \fi -\fi -} - -\def\bvtoprulehook{\hrule \nobreak \vskip-.1\p@} -\def\bvendrulehook{\hrule} -\def\bvleftsidehook{\vrule} -\def\bvrightsidehook{\vrule} -\def\bvtopmidhook{\rule{0\p@}{2\bvboxsep} \hss} - -\newcommand{\boxedverbatiminput}{\begingroup - \@ifstar{\let\frenchspacing\@gobble - \boxedverbatim@input\relax}% - {\boxedverbatim@input{\frenchspacing\@vobeyspaces}}} - -\def\boxedverbatim@input#1#2{% - \setupboxverb@line - \IfFileExists {#2}{\@verbatim #1\relax - \setupbox@verb - \verbatim@readfile{\@filef@und}\bvendrulehook\endtrivlist\endgroup\@doendpe}% - {\typeout {No file #2.}\endgroup} -} - -\newcommand{\bvbox}{% - \bvperpagetrue% - \renewcommand{\bvtoprulehook}{\hrule \nobreak \vskip-.1\p@}% - \renewcommand{\bvleftsidehook}{\vrule}% - \renewcommand{\bvrightsidehook}{\vrule}% - \renewcommand{\bvendrulehook}{\hrule}% -} - -\newcommand{\nobvbox}{% - \bvperpagefalse% - \renewcommand{\bvtoprulehook}{}% - \renewcommand{\bvleftsidehook}{}% - \renewcommand{\bvrightsidehook}{}% - \renewcommand{\bvendrulehook}{}% -} - -\newcommand{\bvtopandtail}{% - \bvperpagefalse% - \renewcommand{\bvtoprulehook}{\hrule \nobreak \vskip-.1\p@}% - \renewcommand{\bvleftsidehook}{}% - \renewcommand{\bvrightsidehook}{}% - \renewcommand{\bvendrulehook}{\hrule}% -} - -\newcommand{\bvsides}{% - \bvperpagefalse% - \renewcommand{\bvtoprulehook}{\vskip 3ex}% - \renewcommand{\bvleftsidehook}{\vrule}% - \renewcommand{\bvrightsidehook}{\vrule}% - \renewcommand{\bvendrulehook}{}% -} - -\let\framed\relax \let\endframed\relax -\let\shaded\relax \let\endshaded\relax - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%% BEGIN FRAMED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%% PW -- can't have \ProvidesPpackage -%%\ProvidesPackage{framed}[2003/07/21 v 0.8a: -%% framed or shaded text with page breaks] - -%% PW added \ifframeasnormal % TRUE normal paras, FALSE minipage paras -%% PW default is (FALSE to match DA v0.5, or TRUE to match DA v0.6) -\newif\ifframeasnormal - \frameasnormaltrue - -%% PW Define some things AtBeginDocument if they have not already -%% been defined via someone using the framed package. -\AtBeginDocument{\@ifundefined{framed}{% -\def\endMakeFramed{\par - \kern\z@ \penalty-100 % put depth into height - \egroup - \begingroup \put@frame \endgroup} - -\newenvironment{framed}% using default \FrameCommand - {\MakeFramed {\advance\hsize-\width \FrameRestore}}% - {\endMakeFramed} - -\newenvironment{shaded}{% - \def\FrameCommand{\colorbox{shadecolor}}% - \MakeFramed {\FrameRestore}}% - {\endMakeFramed} - -\newenvironment{leftbar}{% - \def\FrameCommand{\vrule width 3pt \hspace{10pt}}% - \MakeFramed {\advance\hsize-\width \FrameRestore}}% - {\endMakeFramed} - -}{}} % end of AtBeginDocument - -%% \def\MakeFramed#1{\par %% PW change to \newcommand -\newcommand{\MakeFramed}[1]{\par - % measure added width and height; call result \width and \height - \setbox\z@\vbox{\vskip-1in \hbox{\hskip-1in - \FrameCommand{\hbox{\vrule \@height .7in \@depth.3in \@width 1in}}}% - \vskip\z@skip}% - \def\width{\wd\z@}\def\height{\ht\z@}% - \edef\fb@frw{\the\width}\edef\fb@frh{\the\height}% - % insert pre-penalties and skips - \begingroup - \skip@\lastskip - \if@nobreak\else - \penalty9999 % updates \page parameters - \ifdim\pagefilstretch=\z@ \ifdim\pagefillstretch=\z@ - \edef\@tempa{\the\skip@}% - \ifx\@tempa\zero@glue \penalty-30 - \else \vskip-\skip@ \penalty-30 \vskip\skip@ - \fi\fi\fi - \penalty\z@ - % Give a stretchy breakpoint that will always be taken in preference - % to the \penalty 9999 used to update page parameters. The cube root - % of 10000/100 indicates a multiplier of 0.21545, but the maximum - % calculated badness is really 8192, not 10000, so the multiplier - % is 0.2301. - \advance\skip@ \z@ plus-.5\baselineskip - \advance\skip@ \z@ plus-.231\height - \advance\skip@ \z@ plus-.231\skip@ - \advance\skip@ \z@ plus-.231\topsep - \vskip-\skip@ \penalty 1800 \vskip\skip@ - \fi - \addvspace{\topsep}% - \endgroup - % clear out pending page break - \penalty\@M \vskip 2\baselineskip \vskip\height - \penalty9999 \vskip -2\baselineskip \vskip-\height - \penalty9999 % updates \pagetotal - \fb@adjheight - \setbox\@tempboxa\vbox\bgroup - #1% Modifications to \hsize (can use \width and \height) - \textwidth\hsize \columnwidth\hsize -} - -\def\put@frame{\relax - \ifdim\pagegoal=\maxdimen \pagegoal\vsize \fi - \ifinner \else - \dimen@\pagegoal \advance\dimen@-\pagetotal % natural space left on page - \ifdim\dimen@<2\baselineskip - \eject \fb@adjheight \put@frame - \else % there's appreciable room left on the page - \begingroup % temporarily set \dimen@ to be... - \advance\dimen@.8\pageshrink % maximum space available on page - \advance\dimen@-\fb@frh\relax % space available for frame's contents - \expandafter\endgroup - % restore \dimen@ to real room left on page - \ifdim\dimen@>\ht\@tempboxa % whole box does fit - \else % box must be split - \setbox\@tempboxa\vbox{% simulate frame and flexiblity of the page: - \vskip \fb@frh \@plus\pagestretch \@minus.8\pageshrink - \kern137sp\kern-137sp\penalty-30 - \unvbox\@tempboxa}% - \edef\fb@resto@set{\boxmaxdepth\the\boxmaxdepth \splittopskip\the\splittopskip}% % v0.8a - \boxmaxdepth\z@ \splittopskip\z@ - \setbox\tw@\vsplit\@tempboxa to\dimen@ - \setbox\tw@\vbox{\unvbox\tw@}% natural-sized - % If the split-to size > (\vsize-\topskip), then set box to full size - \begingroup - \advance\dimen@\topskip - \expandafter\endgroup - \ifdim\dimen@>\pagegoal - \dimen@ii\pagegoal - \advance\dimen@ii -\topskip - \advance\dimen@ii \FrameHeightAdjust\relax - \else % suspect this is wrong: - % If the split-to size > feasible room_on_page, rebox it smaller. - \advance\dimen@.8\pageshrink - \ifdim\ht\tw@>\dimen@ - \dimen@ii\dimen@ - \else % use natural size - \dimen@ii\ht\tw@ - \fi - \fi - % Re-box contents to desired size \dimen@ii - \advance\dimen@ii -\fb@frh - \setbox\tw@\vbox to\dimen@ii \bgroup - % remove simulated frame and page flexibility: - \vskip -\fb@frh \@plus-\pagestretch \@minus-.8\pageshrink - \unvbox\tw@ \unpenalty\unpenalty - \ifdim\lastkern=-137sp % whole box went to next page - \egroup \fb@resto@set \eject % (\vskip for frame size was discarded) % v 0.8a - \fb@adjheight - \else % - \egroup \fb@resto@set % v0.8a - \ifvoid\@tempboxa % it all fit after all - \setbox\@tempboxa\box\tw@ - \else % it really did split - \ifdim\wd\tw@>\z@ - \centerline{\FrameCommand{\box\tw@}}% ??? \centerline bad idea - \else - \box\tw@ - \fi - \hrule \@height\z@ - \eject - \fb@adjheight - \put@frame - \fi\fi\fi\fi\fi - \ifvoid\@tempboxa\else - \centerline{\FrameCommand{\box\@tempboxa}}% - \nointerlineskip \null %{\showoutput \showlists} - \penalty-30 \vskip\topsep - \fi} - -\def\fb@adjheight{% - \vbox to\FrameHeightAdjust{}% get proper baseline skip from above. - \penalty\@M \nointerlineskip - \vskip-\FrameHeightAdjust - \penalty\@M} % useful for tops of pages - -\edef\zero@glue{\the\z@skip} - -%% Define configuration commands: -\def\FrameCommand{\fboxrule=\FrameRule \fboxsep=\FrameSep \fbox} -\newdimen\FrameRule \FrameRule= \fboxrule -\newdimen\FrameSep \FrameSep = 3\fboxsep - -%% Height of frame above first baseline when frame starts a page: -%%\def\FrameHeightAdjust{6pt} % PW changed the value -\def\FrameHeightAdjust{0.6em} - -%% PW: I have added my \ifframeasnormal to the original \FrameRestore -%% The commented out lines are commented out by DA in the framed package - -\newcommand{\FrameRestore}{% - \let\if@nobreak\iffalse - \let\if@noskipsec\iffalse - \let\-\@dischyp - \let\'\@acci\let\`\@accii\let\=\@acciii - \linewidth\hsize - \sloppy -\ifframeasnormal\else - \let\par\@@par - \parindent\z@ \parskip\z@skip - \everypar{}% - \@totalleftmargin\z@ - \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip - \parfillskip\@flushglue \lineskip\normallineskip - \baselineskip\normalbaselineskip - \let\\\@normalcr -\fi -} - -%%\let\fram@d=\MakeFramed \let\endfram@d=\endMakeFramed - -%%%%%%%%%%%% END FRAMED %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand{\newoutputstream}[1]{% - \@ifundefined{#1outstre@m}% - {\expandafter\newwrite\csname #1outstre@m\endcsname - \csname newif\expandafter\endcsname - \csname ifstre@m#1open\endcsname - \global\csname stre@m#1openfalse\endcsname - \expandafter\ifx\csname atstreamopen#1\endcsname\relax - \global\@namedef{atstreamopen#1}{}% - \fi - \expandafter\ifx\csname atstreamclose#1\endcsname\relax - \global\@namedef{atstreamclose#1}{}% - \fi - }% - {\@memwarn{Output stream #1\space is already defined}}} - -\newcommand{\newinputstream}[1]{% - \@ifundefined{#1instre@m}% - {\expandafter\newread\csname #1instre@m\endcsname - \csname newif\expandafter\endcsname - \csname ifstre@m#1open\endcsname - \global\csname stre@m#1openfalse\endcsname - \expandafter\ifx\csname atstreamopen#1\endcsname\relax - \global\@namedef{atstreamopen#1}{}% - \fi - \expandafter\ifx\csname atstreamclose#1\endcsname\relax - \global\@namedef{atstreamclose#1}{}% - \fi - }% - {\@memwarn{Input stream #1\space is already defined}}} - -\newcommand{\IfStreamOpen}[3]{% - \csname ifstre@m#1open\endcsname#2\else#3\fi} -\newcommand{\instre@mandopen}[2]{% - \@ifundefined{#1instre@m}{% - \@memwarn{#1\space is not an input stream}}% - {\IfStreamOpen{#1}{#2}{% - \@memwarn{Input stream #1\space is not open}}}} - -\newcommand{\instre@mandclosed}[2]{% - \@ifundefined{#1instre@m}{% - \@memwarn{#1\space is not an input stream}}% - {\IfStreamOpen{#1}{% - \@memwarn{Input stream #1\space is open}}{#2}}} - -\newcommand{\outstre@mandopen}[2]{% - \@ifundefined{#1outstre@m}{% - \@memwarn{#1\space is not an output stream}}% - {\IfStreamOpen{#1}{#2}{% - \@memwarn{Output stream #1\space is not open}}}} - -\newcommand{\outstre@mandclosed}[2]{% - \@ifundefined{#1outstre@m}{% - \@memwarn{#1\space is not an output stream}}% - {\IfStreamOpen{#1}{% - \@memwarn{Output stream #1\space is open}}{#2}}} - -\newcommand{\openoutputfile}[2]{% - \outstre@mandclosed{#2}{% - \global\@namedef{#1@filename}{#1}% - \if@filesw - \immediate\openout\@nameuse{#2outstre@m}=\@nameuse{#1@filename}% - \fi - \global\csname stre@m#2opentrue\endcsname% - \@nameuse{atstreamopen#2}% - }% -} - -\newcommand{\closeoutputstream}[1]{% - \outstre@mandopen{#1}{% - \@nameuse{atstreamclose#1}% - \immediate\closeout\@nameuse{#1outstre@m}% - \global\csname stre@m#1openfalse\endcsname}% -} - -\newcommand{\openinputfile}[2]{% - \IfFileExists{#1}{% file exists - \instre@mandclosed{#2}{% - \@addtofilelist{#1}% - \global\@namedef{#1@filename}{#1}% - \immediate\openin\@nameuse{#2instre@m}=\@nameuse{#1@filename}% - \global\csname stre@m#2opentrue\endcsname% - \@nameuse{atstreamopen#2}}}% - {% file not found - \typeout{No file #1.} - }% -} - -\newcommand{\closeinputstream}[1]{% - \instre@mandopen{#1}{% - \@nameuse{atstreamclose#1}% - \immediate\closein\@nameuse{#1instre@m}% - \global\csname stre@m#1openfalse\endcsname}% -} - -\def\writeverbatim#1{% - \@bsphack - \let\do\@makeother\dospecials - \catcode`\^^M\active - \def\verbatim@processline{% - \immediate\write\@nameuse{#1outstre@m}{\the\verbatim@line}}% - \verbatim@start} -\def\endwriteverbatim{\@esphack} - -\newcommand{\addtostream}[2]{% - \@bsphack - \outstre@mandopen{#1}{% - {\let\protect\string - \immediate\write\@nameuse{#1outstre@m}{#2}% - }}% - \@esphack -} - -\newif\ifstre@mnoteof -\newcommand{\checkstre@meof}[1]{% - \stre@mnoteoftrue\ifeof\@nameuse{#1instre@m}\stre@mnoteoffalse\fi} - -\def\readstream#1{ - \instre@mandopen{#1}{% - \loop \checkstre@meof{#1} \ifstre@mnoteof - \read\@nameuse{#1instre@m} to\temptokstre@m - \temptokstre@m - \repeat - }% -} - -\def\readaline#1{ - \instre@mandopen{#1}{% - \ifeof\@nameuse{#1instre@m} - \@memwarn{No more to read from stream #1} - \else - \read\@nameuse{#1instre@m} to\temptokstre@m - \temptokstre@m - \fi - }% -} - -\def\readverbatim{\begingroup - \ift@bs - \def\verbatim@processline{\tabverbatim@processline}% - \fi - \@ifstar{\stre@mverb@input{\@maybeobeytabs}}% - {\stre@mverb@input{\frenchspacing\@vobeyspaces\@maybeobeytabs}}} - -\newcommand{\stre@mverb@input}[2]{% - \IfStreamOpen{#2}% - {\@verbatim #1\relax - \def\@verbinstre@m{\@nameuse{#2instre@m}} - \verb@readstre@m\endtrivlist\endgroup\@doendpe}% - {\@memwarn{Stream #2\space is not open}\endgroup}% -} - -\newcommand{\verb@readstre@m}{% - \verbatim@startline - \expandafter\endlinechar\expandafter\m@ne - \expandafter\verbatim@read@stre@m - \expandafter\endlinechar\the\endlinechar\relax - \verbatim@finish -} - -\newcommand{\verbatim@read@stre@m}{% - \read\@verbinstre@m to\next - \ifeof\@verbinstre@m - \else - \expandafter\verbatim@addtoline\expandafter{\next}% - \verbatim@processline - \verbatim@startline - \expandafter\verbatim@read@stre@m - \fi -} - -\newcommand{\readboxedverbatim}{\begingroup - \@ifstar{\stre@mbvin\relax}% - {\stre@mbvin{\frenchspacing\@vobeyspaces}}} - -\newcommand{\stre@mbvin}[2]{% - \IfStreamOpen{#2}% - {\setupboxverb@line - \@verbatim #1\relax - \def\@verbinstre@m{\@nameuse{#2instre@m}}% - \setupbox@verb - \verb@readstre@m\bvendrulehook\endtrivlist\endgroup\@doendpe}% - {\@memwarn{Stream #2\space is not open}\endgroup}% -} - -\newcommand{\provideenvironment}{\@star@or@long\m@mprovenv} -\newcommand{\m@mprovenv}[1]{\@ifundefined{#1}% - {\new@environment{#1}}% % create new environment - {\@memwarn{Environment `#1' already defined}% - \m@mgobbleoptsandtwo}} -\newcommand{\m@mgobbleoptsandtwo}{% - \@ifnextchar [{\m@mgobbleoptandtwo}{\@gobbletwo}} -\def\m@mgobbleoptandtwo[#1]{% - \@ifnextchar [{\m@mgobbleoptandtwo}{\@gobbletwo}} - -\newcommand*{\providecounter}[1]{% - \@ifundefined{c@#1}% - {\newcounter{#1}}% - {\@memwarn{Counter `#1' already defined}% - \@ifnextchar[{\m@mgobbleopt}{}}% -} -\def\m@mgobbleopt[#1]{} - -\newcommand*{\providelength}[1]{% - \begingroup - \escapechar\m@ne\xdef\@gtempa{{\string#1}}% - \endgroup - \expandafter\@ifundefined\@gtempa - {\newlength{#1}}% - {\@memwarn{Length #1 already defined}}% -} - -\newcommand*{\newloglike}{\@ifstar{\m@mnewlogs}{\m@mnewlog}} -\newcommand*{\m@mnewlogs}[2]{% - \newcommand*{#1}{\mathop{\operator@font #2}}} -\newcommand*{\m@mnewlog}[2]{% - \newcommand*{#1}{\mathop{\operator@font #2}\nolimits}} - -\newcommand*{\provideloglike}{\@ifstar{\m@mprovlogs}{\m@mprovlog}} -\newcommand*{\m@mprovlogs}[2]{% - \providecommand*{#1}{\mathop{\operator@font #2}}} -\newcommand*{\m@mprovlog}[2]{% - \providecommand*{#1}{\mathop{\operator@font #2}\nolimits}} - -\providecommand{\@removefromreset}[2]{{% - \expandafter\let\csname c@#1\endcsname\@removefromreset - \def\@elt##1{% - \expandafter\ifx\csname c@##1\endcsname\@removefromreset - \else - \noexpand\@elt{##1}% - \fi}% - \expandafter\xdef\csname cl@#2\endcsname{% - \csname cl@#2\endcsname}}} - -\newcommand{\@ifbothcntrs}[3]{% - \@ifundefined{c@#1}{% counter undefined - \@memerror{#1 is not a counter}{\@eha}}% - {% else counter is defined - \@ifundefined{c@#2}{% within undefined - \@memerror{#2 is not a counter}{\@eha}}% - {% else both counter and within are defined - #3}}} - -\newcommand{\counterwithin}{\@ifstar{\@csinstar}{\@csin}} -\newcommand{\@csinstar}[2]{% - \@ifbothcntrs{#1}{#2}{\@addtoreset{#1}{#2}}} -\newcommand{\@csin}[2]{% - \@ifbothcntrs{#1}{#2}{\@addtoreset{#1}{#2}% - \@namedef{the#1}{\@nameuse{the#2}.\arabic{#1}}}} - -\newcommand{\counterwithout}{\@ifstar{\@csoutstar}{\@csout}} -\newcommand{\@csoutstar}[2]{% - \@ifbothcntrs{chngcntr}{#1}{#2}{\@removefromreset{#1}{#2}}} -\newcommand{\@csout}[2]{% - \@ifbothcntrs{#1}{#2}{\@removefromreset{#1}{#2}% - \@namedef{the#1}{\arabic{#1}}}} - -\newif\ifoddpage -\newif\ifstrictpagecheck - \strictpagecheckfalse -\newcounter{cp@cntr} -\newcommand{\cplabel}{^_} -\DeclareRobustCommand{\checkoddpage}{% - \oddpagefalse% - \ifstrictpagecheck% - \stepcounter{cp@cntr}\pmemlabel{\cplabel\thecp@cntr}% - \@memcnta=\pmemlabelref{\cplabel\thecp@cntr}\relax - \ifodd\@memcnta\oddpagetrue\fi - \else - \ifodd\c@page\oddpagetrue\fi - \fi} - -\gdef\thepmemc@@page{\the\c@page} - -\long\def\pmemprotected@write#1#2#3{% - \begingroup - \let\thepmemc@@page\relax - #2% - \let\protect\@unexpandable@protect - \edef\reserved@a{\write#1{#3}}% - \reserved@a - \endgroup - \if@nobreak\ifvmode\nobreak\fi\fi} - -\newcommand{\pmemlabel}[1]{\@bsphack - \pmemprotected@write\@auxout{}% - {\string\newpmemlabel{#1}{\thepmemc@@page}}% - \@esphack} -\newcommand{\newpmemlabel}[2]{{\global\@namedef{m@#1}{#2}}} -\newcommand{\pmemlabelref}[1]{% - \expandafter\ifx\csname m@#1\endcsname\relax - 0% - \else - \csname m@#1\endcsname - \fi} - -\begingroup -\catcode`\Q=3 -\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} -\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} -\long\gdef\@ifnotmtarg#1{\@xifmtarg#1QQ\@firstofone\@gobble\@nil} -\endgroup - -\DeclareRobustCommand{\ch@ngetext}{% - \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}% - \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}% - \if@twocolumn% - \advance\columnwidth-\columnsep \divide\columnwidth\tw@% - \@firstcolumntrue% - \fi% - \setlength{\hsize}{\columnwidth}% - \setlength{\linewidth}{\hsize}% -} - -\DeclareRobustCommand{\changetext}[5]{% - \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}% - \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}% - \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}% - \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}% - \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}% - \ch@ngetext% -} - -\newenvironment{adjustwidth}[2]{% - \begin{list}{}{% - \topsep\z@% - \listparindent\parindent% - \parsep\parskip% - \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}{\setlength{\leftmargin}{#1}}% - \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}{\setlength{\rightmargin}{#2}}% - } - \item[]}{\end{list}} - -\newenvironment{adjustwidth*}[2]{% - \begin{list}{}{% - \topsep\z@% - \listparindent\parindent% - \parsep\parskip% - \checkoddpage - \ifoddpage % odd numbered page - \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}{\setlength{\leftmargin}{#1}}% - \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}{\setlength{\rightmargin}{#2}}% - \else % even numbered page - \@ifmtarg{#2}{\setlength{\leftmargin}{\z@}}{\setlength{\leftmargin}{#2}}% - \@ifmtarg{#1}{\setlength{\rightmargin}{\z@}}{\setlength{\rightmargin}{#1}}% - \fi - } - \item[]}{\end{list}} - -\newcommand{\calccentering}[1]{ - #1 = \paperwidth - \advance #1 by -\textwidth - \divide #1 by \tw@ - \advance #1 by -\spinemargin -} - -\newcommand{\cleartoevenpage}[1][\@empty]{% - \clearpage% - \ifodd\c@page\hbox{}#1\clearpage\fi} - -\newcommand{\movetoevenpage}[1][\@empty]{% - \newpage% - \ifodd\c@page\hbox{}#1\newpage\fi} - -\newcommand{\cleartooddpage}[1][\@empty]{% - \clearpage% - \ifodd\c@page\else\hbox{}#1\clearpage\fi} - -\newcommand{\movetooddpage}[1][\@empty]{% - \newpage% - \ifodd\c@page\else\hbox{}#1\newpage\fi} - -\newcommand{\needspace}[1]{\begingroup\setlength{\dimen@}{#1}% - \vskip\z@\@plus\dimen@\penalty -100\vskip\z@\@plus-\dimen@ - \vskip\dimen@\penalty 9999\vskip-\dimen@\endgroup} - -\newcommand{\Needspace}{\@ifstar{\M@sneedsp@}{\M@needsp@}} -\newcommand{\M@sneedsp@}[1]{\par \penalty-100\begingroup - \setlength{\dimen@}{#1}% - \dimen@ii\pagegoal \advance\dimen@ii-\pagetotal - \ifdim \dimen@>\dimen@ii - \break - \fi\endgroup} -\newcommand{\M@needsp@}[1]{\par \penalty-100\begingroup - \setlength{\dimen@}{#1}% - \dimen@ii\pagegoal \advance\dimen@ii-\pagetotal - \ifdim \dimen@>\dimen@ii - \ifdim \dimen@ii>\z@ - \vfil - \fi - \break - \fi\endgroup} - -\newcommand{\medspace}{\kern .22222em } -\DeclareRobustCommand{\:}{% - \relax\ifmmode\mskip\medmuskip\else\medspace\fi} -\DeclareRobustCommand{\!}{% - \relax\ifmmode\mskip-\thinmuskip\else\negthinspace\fi} - -\DeclareRobustCommand*{\slashfracstyle}[1]{% - {\m@th\ensuremath{\mbox{\fontsize\sf@size\z@\selectfont #1}}}} -\DeclareRobustCommand*{\slashfrac}[2]{\leavevmode - \raise.5ex\hbox{\slashfracstyle{#1}}\kern-.13em/% - \kern-.15em\lower.25ex\hbox{\slashfracstyle{#2}}} - -\DeclareRobustCommand*{\textsubscript}[1]{% - \@textsubscript{\selectfont#1}} -\newcommand*{\@textsubscript}[1]{% - {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}} - -%%%%%%%%%%%%%%%%%%%% number formatting - -\newif\iflowernumtoname - \lowernumtonamefalse -\newif\ifpriornum -\newif\ifminusnumber -\newif\ifnotnumtonameallcaps -\newif\ifmakeordinal - -\newcommand*{\namenumberand}{ and } -\newcommand*{\namenumbercomma}{, } -\newcommand*{\lcminusname}{minus } -\newcommand*{\ucminusname}{Minus } -\let\minusname\lcminusname -\newcommand*{\fnumbersep}{,} -\newcommand*\tensunitsep{-} -\newcommand*{\nthstring}{th} % nth -\newcommand*{\iststring}{st} % 1st -\newcommand*{\iindstring}{nd} % 2nd -\newcommand*{\iiirdstring}{rd} % 3rd -\newcommand*{\tiethstring}{tieth} % tieth -\newcommand*{\teenstring}{teen} % teen -\newcommand{\ordscript}[1]{#1} - -\chardef\m@mten=10 % shorthand for 10 - -\newcounter{ism@mctr} % units -\newcounter{xsm@mctr} % tens -\newcounter{csm@mctr} % hundreds -\newcounter{ksm@mctr} % thousands -\newcounter{xksm@mctr} % ten thousands -\newcounter{cksm@mctr} % hundred thousands -\newcounter{msm@mctr} % millions -\newcounter{xmsm@mctr} % ten millions -\newcounter{cmsm@mctr} % hundred millions -\newcounter{bsm@mctr} % billions -\newcounter{workm@mctr} - -\newcommand*{\numdigits}[1]{% - \setcounter{ism@mctr}{0}% - \setcounter{xsm@mctr}{0}% - \setcounter{csm@mctr}{0}% - \setcounter{ksm@mctr}{0}% - \setcounter{xksm@mctr}{0}% - \setcounter{cksm@mctr}{0}% - \setcounter{msm@mctr}{0}% - \setcounter{xmsm@mctr}{0}% - \setcounter{cmsm@mctr}{0}% - \setcounter{bsm@mctr}{0}% - \setcounter{workm@mctr}{#1}% - \minusnumberfalse - \ifnum \c@workm@mctr < \z@ % negative - \minusnumbertrue - \c@workm@mctr = -\c@workm@mctr - \fi - \ifnum \c@workm@mctr > \m@ne % units - \c@ism@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@ism@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % tens - \c@xsm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@xsm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % hundreds - \c@csm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@csm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % thousands - \c@ksm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@ksm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % ten thousands - \c@xksm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@xksm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % hundred thousands - \c@cksm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@cksm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % millions - \c@msm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@msm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % ten millions - \c@xmsm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@xmsm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@ % hundred millions - \c@cmsm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@cmsm@mctr by -\c@workm@mctr - \divide \c@workm@mctr by \m@mten - \fi - \ifnum \c@workm@mctr > \z@% billions - \c@bsm@mctr = \c@workm@mctr - \divide \c@workm@mctr by \m@mten - \multiply \c@workm@mctr by \m@mten - \advance \c@bsm@mctr by -\c@workm@mctr - \fi -} - -\newcommand*{\form@tnumber}[1]{% - \numdigits{#1}% - \ifminusnumber-\fi - \priornumfalse - \ifnum \c@bsm@mctr > \z@ % billions - \priornumtrue - \thebsm@mctr\fnumbersep - \fi - \ifpriornum % hundred millions - \thecmsm@mctr - \else - \ifnum \c@cmsm@mctr > \z@ - \priornumtrue - \thecmsm@mctr - \fi - \fi - \ifpriornum % ten millions - \thexmsm@mctr - \else - \ifnum \c@xmsm@mctr > \z@ - \priornumtrue - \thexmsm@mctr - \fi - \fi - \ifpriornum % millions - \themsm@mctr\fnumbersep - \else - \ifnum \c@msm@mctr > \z@ - \priornumtrue - \themsm@mctr\fnumbersep - \fi - \fi - \ifpriornum % hundred thousands - \thecksm@mctr - \else - \ifnum \c@cksm@mctr > \z@ - \priornumtrue - \thecksm@mctr - \fi - \fi - \ifpriornum % ten thousands - \thexksm@mctr - \else - \ifnum \c@xksm@mctr > \z@ - \priornumtrue - \thexksm@mctr - \fi - \fi - \ifpriornum % thousands - \theksm@mctr\fnumbersep - \else - \ifnum \c@ksm@mctr > \z@ - \priornumtrue - \theksm@mctr\fnumbersep - \fi - \fi - \ifpriornum % hundreds - \thecsm@mctr - \else - \ifnum \c@csm@mctr > \z@ - \priornumtrue - \thecsm@mctr - \fi - \fi - \ifpriornum % tens - \thexsm@mctr - \else - \ifnum \c@xsm@mctr > \z@ - \priornumtrue - \thexsm@mctr - \fi - \fi - \theism@mctr % units -} - -\newcommand*{\cardinal}[1]{% - \begingroup - \let\fnumbersep\relax - \form@tnumber{#1}% - \endgroup} -\newcommand*{\fcardinal}[1]{% - \begingroup - \form@tnumber{#1}% - \endgroup} - -\newcommand*{\ordinal}[1]{% - \begingroup - \let\fnumbersep\relax - \form@tnumber{#1}% - \let\ordstring\nthstring - \ifnum \c@xsm@mctr=\@ne\else - \ifcase \c@ism@mctr - \or \let\ordstring\iststring% 1st - \or \let\ordstring\iindstring% 2nd - \or \let\ordstring\iiirdstring% 3rd - \fi - \fi - \ordscript{\ordstring}% - \endgroup -} -\newcommand*{\fordinal}[1]{% - \begingroup - \form@tnumber{#1}% - \let\ordstring\nthstring - \ifnum \c@xsm@mctr=\@ne\else - \ifcase \c@ism@mctr - \or \let\ordstring\iststring% 1st - \or \let\ordstring\iindstring% 2nd - \or \let\ordstring\iiirdstring% 3rd - \fi - \fi - \ordscript{\ordstring}% - \endgroup -} - -\newcommand*\nNameo{\iflowernumtoname z\else Z\fi ero} -\newcommand*\nNamec{\iflowernumtoname h\else H\fi undred} -\newcommand*\nNamem{\iflowernumtoname t\else T\fi housand} -\newcommand*\nNamemm{\iflowernumtoname m\else M\fi illion} -\newcommand*\nNamemmm{\iflowernumtoname b\else B\fi illion} - -\newcommand*\nNamei{\iflowernumtoname o\else O\fi ne} -\newcommand*\nNameii{\iflowernumtoname t\else T\fi wo} -\newcommand*\nNameiii{\iflowernumtoname t\else T\fi hree} -\newcommand*\nNameiv{\iflowernumtoname f\else F\fi our} -\newcommand*\nNamev{\iflowernumtoname f\else F\fi ive} -\newcommand*\nNamevi{\iflowernumtoname s\else S\fi ix} -\newcommand*\nNamevii{\iflowernumtoname s\else S\fi even} -\newcommand*\nNameviii{\iflowernumtoname e\else E\fi ight} -\newcommand*\nNameix{\iflowernumtoname n\else N\fi ine} -\newcommand*\nNamex{\iflowernumtoname t\else T\fi en} -\newcommand*\nNamexi{\iflowernumtoname e\else E\fi leven} -\newcommand*\nNamexii{\iflowernumtoname t\else T\fi welve} -\newcommand*\nNamexiii{\iflowernumtoname t\else T\fi hir\teenstring} -\newcommand*\nNamexiv{\iflowernumtoname f\else F\fi our\teenstring} -\newcommand*\nNamexv{\iflowernumtoname f\else F\fi if\teenstring} -\newcommand*\nNamexvi{\iflowernumtoname s\else S\fi ix\teenstring} -\newcommand*\nNamexvii{\iflowernumtoname s\else S\fi even\teenstring} -\newcommand*\nNamexviii{\iflowernumtoname e\else E\fi igh\teenstring} -\newcommand*\nNamexix{\iflowernumtoname n\else N\fi ine\teenstring} -\newcommand*\nNamexx{\iflowernumtoname t\else T\fi wenty} -\newcommand*\nNamexxx{\iflowernumtoname t\else T\fi hirty} -\newcommand*\nNamexl{\iflowernumtoname f\else F\fi orty} -\newcommand*\nNamel{\iflowernumtoname f\else F\fi ifty} -\newcommand*\nNamelx{\iflowernumtoname s\else S\fi ixty} -\newcommand*\nNamelxx{\iflowernumtoname s\else S\fi eventy} -\newcommand*\nNamelxxx{\iflowernumtoname e\else E\fi ighty} -\newcommand*\nNamexc{\iflowernumtoname n\else N\fi inety} - -\newcommand*{\unitnumbername}[1]{% - \ifcase #1 \nNameo\or - \nNamei\or - \nNameii\or - \nNameiii\or - \nNameiv\or - \nNamev\or - \nNamevi\or - \nNamevii\or - \nNameviii\or - \nNameix\fi} - -\newcommand*{\teennumbername}[1]{% - \ifcase #1 \nNamex\or - \nNamexi\or - \nNamexii\or - \nNamexiii\or - \nNamexiv\or - \nNamexv\or - \nNamexvi\or - \nNamexvii\or - \nNamexviii\or - \nNamexix\fi} - -\newcommand*{\tensnumbername}[2]{% - \ifnum #1=\@ne - \teennumbername{#2}\ifnotnumtonameallcaps\lowernumtonametrue\fi - \else - \ifcase #1 - \or - \or \nNamexx - \or \nNamexxx - \or \nNamexl - \or \nNamel - \or \nNamelx - \or \nNamelxx - \or \nNamelxxx - \or \nNamexc - \fi - \ifnotnumtonameallcaps\lowernumtonametrue\fi - \ifnum #2 > \z@ \tensunitsep\unitnumbername{#2}\fi - \fi} - -\newcommand*\nthNameo{\nNameo\nthstring} -\newcommand*\nthNamei{\iflowernumtoname f\else F\fi irst} -\newcommand*\nthNameii{\iflowernumtoname s\else S\fi econd} -\newcommand*\nthNameiii{\iflowernumtoname t\else T\fi hird} -\newcommand*\nthNameiv{\nNameiv\nthstring} -\newcommand*\nthNamev{\iflowernumtoname f\else F\fi if\nthstring} -\newcommand*\nthNamevi{\nNamevi\nthstring} -\newcommand*\nthNamevii{\nNamevii\nthstring} -\newcommand*\nthNameviii{\iflowernumtoname e\else E\fi igh\nthstring} -\newcommand*\nthNameix{\iflowernumtoname n\else N\fi in\nthstring} -\newcommand*\nthNamexii{\iflowernumtoname t\else T\fi welf\nthstring} - -\newcommand*{\unitordinalname}[1]{% - \ifcase #1 \nthNameo\or - \nthNamei\or - \nthNameii\or - \nthNameiii\or - \nthNameiv\or - \nthNamev\or - \nthNamevi\or - \nthNamevii\or - \nthNameviii\or - \nthNameix\fi} - -\newcommand*{\teenordinalname}[1]{% - \ifcase #1 \nNamex\nthstring\or - \nNamexi\nthstring\or - \nthNamexii\or - \nNamexiii\nthstring\or - \nNamexiv\nthstring\or - \nNamexv\nthstring\or - \nNamexvi\nthstring\or - \nNamexvii\nthstring\or - \nNamexviii\nthstring\or - \nNamexix\nthstring\fi} - -\newcommand*{\tensordinalname}[2]{% - \ifnum #1=\@ne - \teenordinalname{#2}\ifnotnumtonameallcaps\lowernumtonametrue\fi - \else - \ifnum #2> \z@ - \ifcase #1 - \or - \or \nNamexx - \or \nNamexxx - \or \nNamexl - \or \nNamel - \or \nNamelx - \or \nNamelxx - \or \nNamelxxx - \or \nNamexc - \fi - \ifnotnumtonameallcaps\lowernumtonametrue\fi - \tensunitsep\unitordinalname{#2} - \else - \ifcase #1 - \or - \or \nthNamexx - \or \nthNamexxx - \or \nthNamexl - \or \nthNamel - \or \nthNamelx - \or \nthNamelxx - \or \nthNamelxxx - \or \nthNamexc - \fi - \ifnotnumtonameallcaps\lowernumtonametrue\fi - \fi - \fi} - -\newcommand*\nthNamexx{\iflowernumtoname t\else T\fi wen\tiethstring} -\newcommand*\nthNamexxx{\iflowernumtoname t\else T\fi hir\tiethstring} -\newcommand*\nthNamexl{\iflowernumtoname f\else F\fi or\tiethstring} -\newcommand*\nthNamel{\iflowernumtoname f\else F\fi if\tiethstring} -\newcommand*\nthNamelx{\iflowernumtoname s\else S\fi ix\tiethstring} -\newcommand*\nthNamelxx{\iflowernumtoname s\else S\fi even\tiethstring} -\newcommand*\nthNamelxxx{\iflowernumtoname e\else E\fi igh\tiethstring} -\newcommand*\nthNamexc{\iflowernumtoname n\else N\fi ine\tiethstring} - -\newcommand*{\n@me@number}[1]{% -\begingroup - \numdigits{#1}% - \ifminusnumber\minusname\fi - \priornumfalse -%% billions - \ifnum \c@bsm@mctr > \z@ - \unitnumbername{\thebsm@mctr}\space - \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamemmm - \priornumtrue - \fi -%% hundred millions - \ifnum \c@cmsm@mctr > \z@ - \ifpriornum\namenumbercomma\fi - \unitnumbername{\thecmsm@mctr}\space - \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec - \priornumtrue - \fi -%% tens/units millions - \ifnum \c@xmsm@mctr > \z@ - \ifpriornum - \ifnum\c@cmsm@mctr>\z@\namenumberand\else\namenumbercomma\fi - \fi - \tensnumbername{\thexmsm@mctr}{\themsm@mctr}% - \priornumtrue - \else - \ifnum \c@msm@mctr > \z@ - \ifpriornum - \ifnum\c@cmsm@mctr>\z@\namenumberand\else\namenumbercomma\fi - \fi - \unitnumbername{\themsm@mctr}% - \ifnotnumtonameallcaps\lowernumtonametrue\fi - \priornumtrue - \fi - \fi - \ifnum \c@cmsm@mctr > \z@ - \ifpriornum\space\fi - \nNamemm - \else - \ifnum \c@xmsm@mctr > \z@ - \ifpriornum\space\fi - \nNamemm - \else - \ifnum \c@msm@mctr > \z@ - \ifpriornum\space\fi - \nNamemm - \fi - \fi - \fi -%% hundred thousands - \ifnum \c@cksm@mctr > \z@ - \ifpriornum\namenumbercomma\fi - \unitnumbername{\thecksm@mctr}\space - \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec - \priornumtrue - \fi -%% tens/units thousands - \ifnum \c@xksm@mctr > \z@ - \ifpriornum - \ifnum\c@cksm@mctr>\z@\namenumberand\else\namenumbercomma\fi - \fi - \tensnumbername{\thexksm@mctr}{\theksm@mctr}% - \priornumtrue - \else - \ifnum \c@ksm@mctr > \z@ - \ifpriornum - \ifnum\c@cksm@mctr>\z@\namenumberand\else\namenumbercomma\fi - \fi - \unitnumbername{\theksm@mctr}% - \ifnotnumtonameallcaps\lowernumtonametrue\fi - \priornumtrue - \fi - \fi - \ifnum \c@cksm@mctr > \z@ - \ifpriornum\space\fi - \nNamem - \else - \ifnum \c@xksm@mctr > \z@ - \ifpriornum\space\fi - \nNamem - \else - \ifnum \c@ksm@mctr > \z@ - \ifpriornum\space\fi - \nNamem - \fi - \fi - \fi -%% hundreds - \ifnum \c@csm@mctr > \z@ - \ifpriornum\namenumbercomma\fi - \unitnumbername{\thecsm@mctr}\space - \ifnotnumtonameallcaps\lowernumtonametrue\fi\nNamec - \priornumtrue - \fi -%% tens/units - \ifmakeordinal - \ifnum \c@xsm@mctr > \z@ - \ifpriornum\namenumberand\fi - \tensordinalname{\thexsm@mctr}{\theism@mctr}% - \else - \ifnum \c@ism@mctr > \z@ - \ifpriornum\namenumberand\fi - \unitordinalname{\theism@mctr}% - \else - \ifpriornum\nthstring\else\unitordinalname{\theism@mctr}\fi - \fi - \fi - \else % not ordinal - \ifnum \c@xsm@mctr > \z@ - \ifpriornum\namenumberand\fi - \tensnumbername{\thexsm@mctr}{\theism@mctr}% - \else - \ifnum \c@ism@mctr > \z@ - \ifpriornum\namenumberand\fi - \unitnumbername{\theism@mctr}% - \else - \ifpriornum\else\unitnumbername{\theism@mctr}\fi - \fi - \fi - \fi % end ifmakeordinal -\endgroup -} - -\newcommand*{\numtoname}[1]{% - \makeordinalfalse - \notnumtonameallcapstrue% - \lowernumtonametrue% - \n@me@number{#1}} - -\newcommand*{\numtoName}[1]{% - \makeordinalfalse - \notnumtonameallcapstrue% - \lowernumtonamefalse% - \n@me@number{#1}} - -\newcommand*{\NumToName}[1]{% - \makeordinalfalse - \notnumtonameallcapsfalse% - \lowernumtonamefalse% - \n@me@number{#1}} - -\newcommand*{\ordinaltoname}[1]{% - \makeordinaltrue - \notnumtonameallcapstrue% - \lowernumtonametrue% - \n@me@number{#1}} - -\newcommand*{\ordinaltoName}[1]{% - \makeordinaltrue - \notnumtonameallcapstrue% - \lowernumtonamefalse% - \n@me@number{#1}} - -\newcommand*{\OrdinalToName}[1]{% - \makeordinaltrue - \notnumtonameallcapsfalse% - \lowernumtonamefalse% - \n@me@number{#1}} - -\long\def \@topnewpage [#1]{% - \@nodocument - \@next\@currbox\@freelist{}{}% - \global \setbox\@currbox - \vbox {% - \break - \prevdepth\z@ - \begingroup - \normalcolor - \hsize\textwidth - \@parboxrestore - \col@number \@ne - #1% - \vskip -\dbltextfloatsep - \endgroup - \null % ordinary \baselineskip - \vskip -\topskip - }% - \begingroup %% \showbox\@currbox - \splitmaxdepth\maxdepth \splittopskip\topskip - \setbox\@tempboxa \vsplit\@currbox to \z@ - \endgroup %% \showbox\@currbox - \ifdim \ht\@currbox>\textheight - \ht\@currbox \textheight - \fi - \global \count\@currbox \tw@ - \@tempdima -\ht\@currbox - \advance \@tempdima -\dbltextfloatsep - \global \advance \@colht \@tempdima - \ifx \@dbltoplist \@empty - \else - \@latexerr{Float(s) lost}\@ehb - \let \@dbltoplist \@empty - \fi - \@cons \@dbltoplist \@currbox - \global \@dbltopnum \m@ne - \ifdim \@colht<2.5\baselineskip - \@latex@warning@no@line {Optional argument of \noexpand\twocolumn - too tall on page \thepage}% - \@emptycol - \if@firstcolumn - \else - \@emptycol - \fi - \else - \global \vsize \@colht - \global \@colroom \@colht - \@floatplacement - \fi -} - -\newcommand{\abstractname}{Abstract} -\newcommand{\contentsname}{Contents} -\newcommand{\listfigurename}{List of Figures} -\newcommand{\listtablename}{List of Tables} -\newcommand{\partname}{Part} -\newcommand{\chaptername}{Chapter} -\newcommand{\appendixname}{Appendix} -\newcommand{\appendixtocname}{Appendices} -\newcommand{\appendixpagename}{Appendices} -\newcommand{\bibname}{Bibliography} -\newcommand{\indexname}{Index} -\newcommand{\figurename}{Figure} -\newcommand{\tablename}{Table} -\newcommand{\figurerefname}{Figure} -\newcommand{\tablerefname}{Table} -\newcommand{\pagename}{page} -\newcommand{\pagerefname}{page} -\newcommand{\partrefname}{Part~} -\newcommand{\chapterrefname}{Chapter~} -\newcommand{\sectionrefname}{\S} -\newcommand{\today}{\ifcase\month\or - January\or February\or March\or April\or May\or June\or - July\or August\or September\or October\or November\or December\fi - \space\number\day, \number\year} -\setlength\columnsep{10\p@} -\setlength\columnseprule{0\p@} -\pagestyle{headings} -\pagenumbering{arabic} - -\setcounter{part}{0} -\setcounter{chapter}{0} -\setcounter{tocdepth}{1} -\setcounter{secnumdepth}{2} -\maxsecnumdepth{section} - -\linenumberfrequency{0} -\linenumberfont{\small\rmfamily} -\settowidth{\bvnumlength}{\vlvnumfont 9999} - -\if@twoside -\else - \raggedbottom -\fi -\if@twocolumn - \twocolumn - \sloppy - \flushbottom -\else - \onecolumn -\fi - -\newfloat[chapter]{figure}{lof}{\figurename} - \kill@lastcounter{lofdepth} -\renewcommand{\thefigure}{\thechapter.\@arabic\c@figure} - -\newlistof{listoffigures}{lof}{\listfigurename} - \kill@lastcounter{lofdepth} -\newlistentry[chapter]{figure}{lof}{0} - \cftsetindents{figure}{0em}{2.3em} -%% \kill@lastcounter{lofdepth} - -\newfloat[chapter]{table}{lot}{\tablename} - \kill@lastcounter{lotdepth} -\renewcommand{\thetable}{\thechapter.\@arabic\c@table} - -\newlistof{listoftables}{lot}{\listtablename} - \kill@lastcounter{lotdepth} -\newlistentry[chapter]{table}{lot}{0} - \cftsetindents{table}{0em}{2.3em} -%% \kill@lastcounter{lotdepth} - -\AtBeginDocument{% - \@ifundefined{c@lofdepth}{\newcounter{lofdepth}\setcounter{lofdepth}{1}}{} - \@ifundefined{c@lotdepth}{\newcounter{lotdepth}\setcounter{lotdepth}{1}}{} -} - -\ifartopt - \chapterstyle{article} - \counterwithout{figure}{chapter} - \counterwithout{table}{chapter} - \counterwithout{footnote}{chapter} - \counterwithout{equation}{chapter} - \renewcommand{\chaptername}{} - \renewcommand{\maketitlehookb}{\vskip -1.5\topsep\vskip -1.5\partopsep} - \renewcommand{\maketitlehookc}{\vskip -1.5\topsep\vskip -1.5\partopsep} -\fi - -\newcommand{\msdoublespacing}{} -\newcommand{\mssinglespacing}{} -\ifmsdoc - \renewcommand{\msdoublespacing}{% - \renewcommand{\baselinestretch}{1.6}\large\normalsize} - \renewcommand{\mssinglespacing}{% - \renewcommand{\baselinestretch}{1.0}\large\normalsize} - \renewcommand{\familydefault}{cmtt} - \renewcommand{\rmdefault}{cmtt} - \renewcommand{\sfdefault}{cmtt} - \renewcommand{\bfdefault}{m} - \renewcommand{\itdefault}{n} - \renewcommand{\sldefault}{n} - \renewcommand{\scdefault}{n} - \renewcommand{\baselinestretch}{1.6} - \@twocolumnfalse - \onecolumn - \sloppy - \@twosidefalse - \raggedbottom - \pagestyle{plain} -\fi - -\InputIfFileExists{mempatch.sty} % should be this - -\endinput -%% -%% End of file `memoir.cls'. diff --git a/Documentation/PhysicsTools/mempatch.sty b/Documentation/PhysicsTools/mempatch.sty deleted file mode 100644 index ce959b89264..00000000000 --- a/Documentation/PhysicsTools/mempatch.sty +++ /dev/null @@ -1,382 +0,0 @@ -%% -%% This is file `mempatch.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% mempatch.dtx (with options: `patch') -%% -%% Author: Peter Wilson (Herries Press) herries dot press at earthlink dot net -%% Copyright 2001 --- 2005 Peter R. Wilson -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either -%% version 1.3 of this license or (at your option) any -%% later version. -%% The latest version of the license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of -%% LaTeX version 2003/06/01 or later. -%% -%% This work has the LPPL maintenance status "author-maintained". -%% -%% This work consists of the files listed in the README file. -%% -\ProvidesFile{mempatch.sty}[2005/01/18 v3.4 Patches for memoir class v1.61] - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% Version 2.0 was released simultaneously with version 1.6 of memoir. -%%% By definition there were no patches. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Version 2.1 (2004/02/19), and 2.2 (2004/03/01) patches were folded -%% into version 1.61 of memoir. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Version 2.3 (2004/04/26 and later) - -%%%% remove extraneous spaces from indexing code -\AtBeginDocument{% - \@ifpackageloaded{hyperref}{}{% - \def\@@wrindexhyp#1||\\{% - \ifshowindexmark\@showidx{#1}\fi - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1}{\thepage}}% - \endgroup - \@esphack} - \def\@@wrspindexhyp#1||\\{% - \ifshowindexmark\@showidx{#1}\fi - \protected@write\@auxout{}% - {\string\@@wrindexm@m{\@idxfile}{#1}{\@nameuse{the\@sptheidx}}}% - \endgroup - \@esphack}% -}} - -%%%% fix misalignment of (sub)paragraph headings in the ToC -\cftsetindents{paragraph}{10.0em}{5.0em} -\cftsetindents{subparagraph}{12.0em}{6.0em} - -%%%% fix color handling in \verbfootnote -\long\def\@verbfootnotetext{% - \insert\footins\bgroup - \footnotesize - \interlinepenalty\interfootnotelinepenalty - \splittopskip\footnotesep - \splitmaxdepth \dp\strutbox \floatingpenalty \@MM - \hsize\columnwidth \@parboxrestore - \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% -%%%% \color@begingroup - \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces}% - \futurelet\next\fo@t} -\def\f@t#1{\color@begingroup - #1\@foot - \color@endgroup} -\def\@foot{\strut\egroup -%%%% \color@endgroup -} - -%%%% fix bookmark for \appendixpage -\renewcommand{\addappheadtotoc}{\phantomsection - \addcontentsline{toc}{chapter}{\appendixtocname}} - -%%%% fix memoir/listings spacing problem (from Cartsten Heinz) -\renewcommand*{\extrafeetins}{% <-- Missing % - \setbox\@outputbox \vbox{% - \unvbox\@outputbox - \ifvoid\footinsv@r\else\@footstartv@r\@footgroupv@r\fi - \extrafeetinshook}} - -\newcommand{\bvendofpage}[1]{% - \def\boxverb@botpage{#1}} -\bvendofpage{\hrule\kern-.4pt} -\def\boxverb@split{\ifnum\outputpenalty=\boxverbflag - \ifdim\dp\@cclv=\z@ -%%%% \setbox\@cclv\vbox{\unvbox\@cclv\hrule\kern-.4pt}% - \setbox\@cclv\vbox{\unvbox\@cclv\boxverb@botpage}% - \null \kern-.7\topskip \b@vtop \boxverb@toprule - \fi -\fi} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%% Version 3.0 (2004/11/23 and later) - -%%% Dan Luecking noted that the second argument should be enclosed in -%%% braces so that ] can be used as part of the optional -\long\def\@caption#1[#2]#3{% - \M@gettitle{#2}\@memold@caption{#1}[{#2}]{#3}} - -%%% Lars Madsen indicated the following fix for \absleftindent not working as advertised -\newdimen\abs@leftindent - \abs@leftindent=\leftmargin -\renewcommand*{\setup@bstract}{% - \if@twocolumn - \if@bsonecol - \abs@leftindent=\absleftindent - \else - \abs@leftindent=\z@ - \renewcommand*{\abstractnamefont}{\normalfont\Large\bfseries}% - \renewcommand*{\abstracttextfont}{\normalfont}% - \renewcommand{\absnamepos}{flushleft}% - \setlength{\abstitleskip}{-2ex}% - \fi - \else - \abs@leftindent=\absleftindent - \fi - \setlength{\absrightindent}{\abs@leftindent}% -} -\renewenvironment{@bstr@ctlist}{% - \list{}{% - %%\topsep \z@ - \partopsep \z@ - \listparindent \absparindent - \itemindent \listparindent - \leftmargin \abs@leftindent - \rightmargin \absrightindent - \parsep \absparsep}% - \item\relax}% -{\endlist} - -%%% Don't deprecate \em -\DeclareRobustCommand{\em}{\@m@m@m} - -%%% Adjust the braces for the second and third arguments (courtesy of Lars Madsen) -\renewcommand*{\@memoldfontwarn}[3]{% - \@memwarn{The \protect#1\space font command is deprecated. - \MessageBreak Use \protect#2{...} or {\protect#3... } instead}} - -%%% \newleadpage[<page-style>]{<\command>}{<title>} creates new macros -%%% called <\command> and <\command*> that when called typesets a page -%%% like an Appendixpage, with a title <title> using page style <page-style> -%%% (default empty). The plain version adds an entry to the ToC but the -%%% starred <\command*> does not. \renewleadpage changes the definition. -%%% The ToC entry style is set by \leadpagetoclevel (default chapter). To -%%% have a part type entry: \renewcommand*{\leadpagetoclevel}{part}. -%%% (Suggested by Lars Madsen on 2004/11/28) -%%% -\newcommand*{\leadpagetoclevel}{chapter} -\newcommand*{\newleadpage}[3][empty]{% - \newcommand*{#2}{\@ifstar{\dlfm@msapppage{#1}{#3}}% - {\dlfm@mapppage{#1}{#3}}}} -\newcommand*{\renewleadpage}[3][empty]{% - \renewcommand*{#2}{\@ifstar{\dlfm@msapppage{#1}{#3}}% - {\dlfm@mapppage{#1}{#3}}}} - -\newcommand*{\dlfm@msapppage}[2]{% - \@setuppart - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \printparttitle{#2}\par - \thispagestyle{#1}}% - \@endpart} -\newcommand*{\dlfm@mapppage}[2]{% - \@setuppart - \phantomsection - \addcontentsline{toc}{\leadpagetoclevel}{#2} - \markboth{}{}% - {\centering - \interlinepenalty \@M - \normalfont - \printparttitle{#2}\par - \thispagestyle{#1}}% - \@endpart} - -%%%%%%%%%%%%%%%%%%%%%% Version 3.1 additions %%%%%%%%%%%%%%%%%%%%%%%%% - -%%% Morten Hogholm (2004/12/17) found that \boxmaxdepth had to be set in \extrafeetins. -\renewcommand*{\extrafeetins}{% - \setbox\@outputbox \vbox{% - \boxmaxdepth \@maxdepth - \unvbox\@outputbox - \ifvoid\footinsv@r\else\@footstartv@r\@footgroupv@r\fi - \extrafeetinshook}} - -%%% Morten Hogholm (2004/12/17) noted a missing % in \@twocolfootnotetext -\renewcommand*{\@twocolfootnotetext}[1]{\insert\footinsv@r{% - \foottextfont - \@preamfntext - \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}% - \color@begingroup - \@twocolfootfmt{#1}% - \color@endgroup}% - \m@mmf@prepare} - -%%%%%%%%%%%%%%%%%%%%%% Version 3.2 additions %%%%%%%%%%%%%%%%%%%%%%%%% - -%%% Fix these so that \maketitle does not throw an extra blank page when used -%%% within adjustwidth inside titlingpage environments. -\renewcommand{\maketitle}{\par - \begingroup - \@bsmarkseries - \def\@makefnmark{\@textsuperscript{% - \normalfont\@bsthanksheadpre \tamark \@bsthanksheadpost}}% - \long\def\@makefntext##1{\makethanksmark ##1}% - \if@twocolumn - \ifnum\col@number=\@ne - \@maketitle - \else - \twocolumn[\@maketitle]% - \fi - \else - \ifdim\pagetotal>\z@ - \newpage - \fi - \global\@topnum\z@ - \@maketitle - \fi - \thispagestyle{title}\@thanks - \endgroup - \@bscontmark} -\renewcommand{\@maketitle}{% - \let\footnote\m@m@titlefootkill - \ifdim\pagetotal>\z@ - \newpage - \fi - \null - \vskip 2em% - \vspace*{\droptitle} - \maketitlehooka - {\@bspretitle \@title \@bsposttitle} - \maketitlehookb - {\@bspreauthor \@author \@bspostauthor} - \maketitlehookc - {\@bspredate \@date \@bspostdate} - \maketitlehookd - \par - \vskip 1.5em} - -%%% \sidebarmargin{<side>} sets the side where sidebars will be printed. -%%% Valid arguments are: left, right, outer, or inner -%%% Only effects onecolumn documents with \sidebaronesidefalse -%%% (\sidebarmargin{right} is equivalent to \sidebaronesidetrue) -\newcommand*{\sidebarmargin}[1]{% - \def\@tempa{#1}\def\@tempb{left}% - \ifx\@tempa\@tempb - \gdef\m@msidebar@margin{0}% - \else - \def\@tempb{right}% - \ifx\@tempa\@tempb - \gdef\m@msidebar@margin{1}% - \else - \def\@tempb{outer}% - \ifx\@tempa\@tempb - \gdef\m@msidebar@margin{2}% - \else - \def\@tempb{inner}% - \ifx\@tempa\@tempb - \gdef\m@msidebar@margin{3}% - \else - \@memwarn{Bad \string\sidebarmargin\space argument}% - \gdef\m@msidebar@margin{1}% - \fi - \fi - \fi - \fi} -%%% default outer -\gdef\m@msidebar@margin{2} - -\renewcommand{\sidecontents}{{% - \if@twocolumn% put outside nearest column - \if@firstcolumn% move to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \else% move to right - \setlength{\@tempdimc}{\columnwidth}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \fi - \else% - \ifsidebaroneside% put in right margin - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \else - \ifcase\m@msidebar@margin% 0 to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \or% 1 to right - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \or% 2 to outer - \ifodd\c@page% to right - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \else% to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \fi - \or% 3 to inner - \ifodd\c@page% to left - \setlength{\@tempdimc}{\sidebarwidth}% - \advance\@tempdimc\sidebarhsep - \moveleft\@tempdimc - \else% to right - \setlength{\@tempdimc}{\hsize}% - \advance\@tempdimc\sidebarhsep - \moveright\@tempdimc - \fi - \fi - \fi - \fi - \vtop to0pt{% - \vskip\onelineskip - \unvbox\sideins \vss}% -}} - -%%%%%%%%%%%%%%%%%%%%%% Version 3.3 additions %%%%%%%%%%%%%%%%%%%%%%%%% - -%%%% fix vertical spacing in the verse environment -\renewenvironment{verse}[1][\linewidth]{% - \refstepcounter{verse}% - \setcounter{poemline}{0}\refstepcounter{poemline}% - \setcounter{vslineno}{1}% - \let\\=\@vscentercr - \list{}{\itemsep \z@ - \itemindent -\vindent - \listparindent\itemindent - \parsep \stanzaskip - \ifdim #1<\linewidth %% short line - \rightmargin \z@ - \leftmargin \linewidth - \advance\leftmargin -#1\relax - \advance\leftmargin -0.5\leftmargin - \advance\leftmargin \vindent - \else - \ifdim #1>\linewidth %% long line - \rightmargin \z@ - \leftmargin \vindent - \else %% default - \rightmargin \leftmargin - \advance\leftmargin \vindent - \fi - \fi} - \item[]}{\endlist} - -%%% David Carlisle noted on CTT (2005/01/17, Re: array-package and *) -%%% that this macro had a bug in the original array package. -\long\@namedef{NC@rewrite@*}#1#2{% - \count@#1\relax - \loop - \ifnum\count@>\z@ - \advance\count@\m@ne - \@temptokena\expandafter{\the\@temptokena#2}% - \repeat - \NC@find} - -%%%%%%%%%%%%%%%%%%%%%% Version 3.3 additions %%%%%%%%%%%%%%%%%%%%%%%%% - -\renewcommand*{\@csoutstar}[2]{% - \@ifbothcntrs{#1}{#2}{\@removefromreset{#1}{#2}}} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\endinput -%% -%% End of file `mempatch.sty'. diff --git a/Documentation/PhysicsTools/miktex.mk b/Documentation/PhysicsTools/miktex.mk deleted file mode 100644 index 4a608f0bf84..00000000000 --- a/Documentation/PhysicsTools/miktex.mk +++ /dev/null @@ -1,36 +0,0 @@ -############################################################ -# -# GNUmakefile for generation of PDF document from LaTeX source. -# -# This is not a very clever makefile; if you have an installation of -# MiKTeX, use 'makefile' instead -# -# $Id: miktex.mk,v 1.2 2005/05/09 13:25:20 paterno Exp $ -# -# -############################################################ - -all: view - -view: RoadMap.pdf - cygstart $< - -RoadMap.dvi: RoadMap.tex GNUmakefile memarticle.cls - texify --silent RoadMap.tex - -#RoadMap.ps: RoadMap.dvi -# dvips -o RoadMap.ps -Ppdf RoadMap.dvi - -#RoadMap.pdf: RoadMap.ps -# ps2pdf RoadMap.ps - -RoadMap.pdf: RoadMap.dvi - dvipdfm RoadMap.dvi - -clean: - rm -f RoadMap.out RoadMap.toc RoadMap.qst RoadMap.aux RoadMap.log RoadMap.dvi RoadMap.ps RoadMap.tex.bak RoadMap.tex~ GNUmakefile~ - -clobber: clean - rm -f RoadMap.pdf - - diff --git a/Documentation/PhysicsTools/notes.rst b/Documentation/PhysicsTools/notes.rst deleted file mode 100644 index 6cb4d54b35a..00000000000 --- a/Documentation/PhysicsTools/notes.rst +++ /dev/null @@ -1,262 +0,0 @@ -===================================== -Development Guidelines and Principles -===================================== - -.. contents:: Contents - -Declaration of Principles and Guidelines -======================================== - -User interactions are most important. - -The number of rules required to perform an activity -properly should be minimized. - -Complimentary operations should be used similarly. - -Generate objects that match the users "mental model" -for solving the problem. - -Common boilerplate code within a user's program should be minimized. -It represents something that will be left out or become unchangable, -or will evolve into something poor and wrong. - -Generate objects with a single purpose. Objects created by -cleanly separating concerns during analysis are more readily -usuable in a broader range of contexts -and can also be more easily used to build larger components with more -complex behavior. - -Requirements -============ - -First get the simple scheduled reconstruction working properly. -Do not create interfaces that make a demand driven system impossible. - -Demand driven capabilities can be introduced after the first -scheduled system is available. - -Common job configuration ------------------------- - -Groups of analysis users will likely create a common job -configuration capable of reconstituting any `EDProducts` of -interest within any `Event`, -in any sample for which they are interested. - -The users will not want to modify this configuration with regard to -differences in available `EDProucts` from run to run of their jobs. - -The users will not want to experience any noticable overhead -associated with the extra code that may be present in their -application to accomodate any `EDProducts` that they may -encounter in their event samples (change from run to run or -event to event). - -Question: In a system that has an `Event` that does not distinguish -between "reconstitution" and "creation", is their a penalty -to be paid for having more `EDProduct` code available than is -really used by the `Analysis` modules? Does each event of -each run need to contain an `EDProduct` index, which is used -to populate "reconstitutors" - one for each product that the -executable knows about? If no, then how does one express which -"reconstitutors" to populate? - - -Application of Principles and Guidelines -======================================== - - -How do users access data products for a given collision? --------------------------------------------------------- - - -Solution One -++++++++++++ - -Data products are accessed through a `Getter`. -`Getters` maintain an association with the current `Event`. - -`Getters` have appeared under two solutions: - - 1. One variety of `Getter` uses the `Event` interface internally: - it is passed an `Event`, and reaches into the `Event` to find - the datum it (the `Getter`) is to return. - - 2. The other variety of `Getter` is wired directly to the output of - the `EDProducer` (or `Provider`) that provides the `EDProduct` - the `Getter` is intended to return. - Multiple `Getters` are synchronized - so that they obtain `EDProducts` from the same collision. - -User code interacts directly with the `Getter`. -It is not necessary for the user to see the `Event`, -or even for the `Event` to exist. - -Solution Two -++++++++++++ - -Data products are accessed through the `Event`. - -The "get" method of the `Event` is used to acquire `EDProducts`. -This method is parameterized -on the specific type of `EDProduct` to be retrieved. - -A `Selector` is used to specify *which* `EDProduct` -(or `EDProducts`) -of that type is (or are) -to be returned. - -Solution Three -++++++++++++++ - -Data products are accessed through the `Event`. - -The "get" method of the `Event` is used to acquire `EDProducts`. -This method is parameterized -on the specific type of `EDProduct` to be retrieved. - -A `Label` is a simple human readable string -(or group of strings) -that uniquely identifies an `EDProduct` of a certain type. -A `Label` is used to specify *which* `EDProduct` of that type -is to be returned. -`Labels` are always meant to be unique. - -Unlike a `Selector`, -a `Label` does not itself determine what `EDProduct` matches it. -Something outside the `Label` and `EDProduct` -performs the comparison. - -How do we put things into the event? ------------------------------------- - -Solution One -++++++++++++ - -Data products are allocated -and inserted -through the `Event`. - -The `Event` contains a "put" method. -This method is parameterized on the type of `EDProduct` -and is used to allocate an object -that will automatically be placed permanently into the `Event` -when the `EDProducer` successfully completes its task. - -`EProducers` that make more than one `EDProduct` -will invoke "put" for each of the products they generate. -All the products will be successfully added to the `Event`, -or none will be added. - -Provanance information is added automatically -by the framework -during the final commit. -The user is not responsible -for handling this information. - -Solution Two -++++++++++++ - -Data products are allocated dynamically -and returned by the "produce" method of the `EDProducer`. -Ownership of the created products is passed during the return. - -The framework handles inserting the created products -into the `Event`. -Provanance information is added automatically -by the framework. - -How do we access conditions data associated with an event? ----------------------------------------------------------- - -The framework will associate each event with a -complete set of calibration and alignment objects -(and any other conditions data) -that are correct for that event. -The user does not supply arguments -to specify the proper conditions objects -associated with the event being processed. - -We anticipate that different categories of conditions data -(conditions subsystems) -will have different interfaces to retrieve the data. -Every subsystem will label objects with a numeric ID. - -Should `Producer` developers register things required and things produced? --------------------------------------------------------------------------- - -Registering things required is most useful -in validating an execution schedule. - -Registering things produced is necessary for a demand driven system -and is useful for validation during configuration of a scheduled system. - -Should things produced or required information be available at compile-time? ----------------------------------------------------------------------------- - -What kind of information should be available at compile time -concerning things produced or required? - -Open Questions -============== - -Many problems are arising -when we consider allowing multiple objects of the same type -to be produced by a single `EDProducer`. -The source of the problem -is the fact that the produced objects -are distinguishable neither by -type -nor by -provenance (which describes the configuration -of the producer -and the "context" in which the producer was run). -Thus, -to distinguish between multiple objects of the same type -produced by a single `EDProducer`, -one is forced to look at -the data of the `EDProduct` itself. - -The problems include: - -1. Schedule validation becomes difficult. - It seems to require creation of prototype instances - of the `EDProducts` at configuration time, - so that the relevant data can be matched - (by a `Selector` that knows about that specific - `EDProduct`). - -2. The need to create these prototype objects - limits our flexibility in having `EDProducers` - announce what they make. - -3. It requires that we support `Selectors` that look - at `EDProducts` (and concrete subclasses), - not just `Provenances`. - This puts a greater demand on the authors - of `EDProducers` and `EDProducts` - to create the relevant `Selectors`. - Previous experience leads us to believe - it will be difficult to assure all - `EDProduct` designers - will produce the appropriate `Selector` classes. - -We propose that `Selectors` -passed to the `Event` should only operate on -`Provenances`. - -When combined with the requirement -that `EDProducers` -use only the `Event::get` function -which returns a single `EDProduct`, -there is a drawback to this choice. -It means that `EDProducers` -can not make use of the output of -other `EDProducers` which make multiple instances -of the same type. -One way around this -is for the `Provenance` to carry -a user-supplied bit of data -which can then be used by the `Selector` -to identify a single matching `EDProduct`. diff --git a/Documentation/PhysicsTools/pdfdraftcopy.sty b/Documentation/PhysicsTools/pdfdraftcopy.sty deleted file mode 100644 index 85e99bb079c..00000000000 --- a/Documentation/PhysicsTools/pdfdraftcopy.sty +++ /dev/null @@ -1,198 +0,0 @@ -%% -%% -%% This is file 'pdfdraftcopy.sty', -%% generated with the docstrip utility. -%% -%% The original source files were: -%% -%% -%% pdfdraftcopy.dtx (with options: 'package') -%% -%% File: pdfdraftcopy.dtx Copyright (c) 2003, C. V. Radhakrishnan -%% C. V. Rajagopal -%% River Valley Technologies, Floor III, SJP Buildings -%% Cotton Hills, Trivandrum, India 695014 -%% http://www.river-valley.com -%% -%% This package may be distributed under the terms of the LaTeX Project -%% Public License, as described in lppl.txt in the base LaTeX distribution. -%% Either version 1.0 or, at your option, any later version. -%% -%% $Id: pdfdraftcopy.sty,v 1.1 2005/02/02 20:21:41 wmtan Exp $ -%% -\NeedsTeXFormat{LaTeX2e} -\def\Fileversion$#1: #2 ${\gdef\fileversion{#2}} -\def\Filedate$#1: #2 #3 ${\gdef\filedate{#2}} -\Fileversion$Revision: 1.1 $ -\Filedate$Date: 2005/02/02 20:21:41 $ -\ProvidesPackage{pdfdraftcopy} - [\filedate\space\fileversion\space Draft copy in PDF (CVR)] -\PackageWarningNoLine{pdfdraftcopy} - {****************************************\MessageBreak - Package pdfdraftcopy v,\fileversion\space loaded\MessageBreak - [Draft copy in PDF (CVR)]\MessageBreak - ****************************************} -\DeclareOption{watermark}{\AtBeginDocument{% - \begingroup\watermark\endgroup}} -\DeclareOption{draft}{\AtBeginDocument{% - \begingroup\draftcopy\endgroup}} -\ExecuteOptions{draft} -\ProcessOptions\relax - -\RequirePackage{color,graphicx} - -\let\@DRAFTout@Hook\@empty -\newcommand{\DRAFTout}{\g@addto@macro\@DRAFTout@Hook} -\newcommand{\@DRAFTout@Out}{% - \afterassignment\@DRAFTout@Test - \global\setbox\@cclv= % - } -\newcommand{\@DRAFTout@Test}{% - \ifvoid\@cclv\relax - \aftergroup\@DRAFTout@Output - \else - \@DRAFTout@Output - \fi% - } -\newcommand{\@DRAFTout@Output}{% - \@DRAFTout@Hook% - \@DRAFTout@Org@Out\box\@cclv% - } -\newcommand{\@DRAFTout@Org@Out}{} -\newcommand*{\@DRAFTout@Init}{% - \let\@DRAFTout@Org@Out\shipout - \let\shipout\@DRAFTout@Out - } -\AtBeginDocument{\@DRAFTout@Init} -\newcommand{\@DraftOverlay@Hook}{} -\newcommand{\AddToDraftOverlay}{\g@addto@macro\@DraftOverlay@Hook} -\newcommand{\ClearDraftOverlay}{\let\@DraftOverlay@Hook\@empty} -\newcommand{\@DraftOverlay}{% - \ifx\@DraftOverlay@Hook\@empty - \else - \bgroup - \@tempdima=1in - \@tempcnta=\@tempdima - \@tempcntb=-\@tempdima - \advance\@tempcntb\paperheight - \global\setbox\@cclv\vbox{% - \vbox{\let\protect\relax% - \unitlength=1sp% - \pictur@(0,0)(\@tempcnta,\@tempcntb)% - \@DraftOverlay@Hook% - \endpicture}% - \box\@cclv% - }% - \egroup - \fi -} - -\definecolor{gray30}{gray}{.7} -\definecolor{gray20}{gray}{.8} -\definecolor{gray10}{gray}{.9} - -\DRAFTout{\@DraftOverlay} -\newdimen\LLY -\newdimen\LLX -\newdimen\URX -\newdimen\URY -\newdimen\topmargin -\newdimen\bottommargin -\def\@printdimen{%\ifthenelse{\equal{\@debug}{true}}% - {\PackageWarningNoLine{PDFdraftcopy}% - {\LLX::::::::::::=\the\LLX\MessageBreak - \LLY::::::::::::=\the\LLY\MessageBreak - \URX::::::::::::=\the\URX\MessageBreak - \URY::::::::::::=\the\URY\MessageBreak - \oddsidemargin::=\the\oddsidemargin\MessageBreak - \evensidemargin:=\the\evensidemargin\MessageBreak - \textheight:::::=\the\textheight\MessageBreak - \textwidth::::::=\the\textwidth\MessageBreak - \paperwidth:::::=\the\paperwidth\MessageBreak - \paperheight::::=\the\paperheight\MessageBreak - \topmargin::::::=\the\topmargin\MessageBreak - \headheight:::::=\the\headheight\MessageBreak - \headsep::::::::=\the\headsep\MessageBreak - \footskip:::::::=\the\footskip\MessageBreak - \topskip::::::::=\the\topskip\MessageBreak - Now fixing the overlay in place - }}{} -} -\def\@DRAFTdimen{% - \setlength\LLY{\paperheight} - \addtolength\LLY{-\textheight} - \addtolength\LLY{-\headheight} - \addtolength\LLY{-\headsep} - \addtolength\LLY{-1in} - \addtolength\LLY{-3pt} - \setlength\LLX{1in} - \ifodd\thepage - \addtolength\LLX{\oddsidemargin}\else - \addtolength\LLX{\evensidemargin}\fi - \setlength\URX{\textwidth} - \setlength\URY{\textheight} -} -\def\LoadWaterMark{\watermark} -\def\watermark{\AddToDraftOverlay{% - \@DRAFTdimen%\@printdimen% - \setlength{\@tempdima}{0pt} - \setlength{\@tempdimb}{\paperwidth} - \addtolength{\@tempdimb}{-\@tempdima} - \addtolength{\@tempdimb}{-\@tempdima} - \setlength{\@tempdimc}{\paperheight} - \addtolength{\@tempdimc}{-\@tempdima} - \addtolength{\@tempdimc}{-\@tempdima} - \setlength{\unitlength}{1pt}\thinlines% -% - \put(0,\strip@pt\paperheight){\fboxrule0pt\fboxsep0pt% - %\fcolorbox{white}{red}% - {\begin{minipage}[t][\paperheight][c]{\paperwidth} - \centering - \ifx\@@watermark\@empty\relax\else - \includegraphics%[width=\paperwidth,height=\paperheight]% - {\@@watermark}\fi% - \end{minipage}}}}}% - -\let\@@watermark\@empty -\def\watermarkgraphic#1{\gdef\@@watermark{#1}} - -\def\draftcopy{\AddToDraftOverlay{% - \@DRAFTdimen%\@printdimen% - \setlength{\@tempdima}{0pt} - \setlength{\@tempdimb}{\paperwidth} - \addtolength{\@tempdimb}{-\@tempdima} - \addtolength{\@tempdimb}{-\@tempdima} - \setlength{\@tempdimc}{\paperheight} - \addtolength{\@tempdimc}{-\@tempdima} - \addtolength{\@tempdimc}{-\@tempdima} - \setlength{\unitlength}{1pt}\thinlines% -% - \put(0,\strip@pt\paperheight){\fboxrule0pt\fboxsep0pt% - %\fcolorbox{white}{red}% - {\begin{minipage}[t][\paperheight][c]{\paperwidth} - \centering - \begingroup - \rotatebox{\@draftangle}{\color{\@draftcolor} - \fontfamily{\@draftfontfamily}% - \fontsize{\@draftfontsize}{\@draftfontsize}\selectfont - {\@draftfontattrib\@draftstring} - }\endgroup - \end{minipage}}}}}% - -\def\@draftangle{45} -\def\@draftstring{DRAFT COPY} -\def\@draftcolor{gray10} -\def\@draftfontfamily{ptm} -\def\@draftfontsize{80} -\def\@draftfontattrib{\upshape} -\def\draftstring#1{\gdef\@draftstring{#1}} -\def\draftcolor#1{\gdef\@draftcolor{#1}} -\def\draftfontfamily#1{\gdef\@draftfontfamily{#1}} -\def\draftfontsize#1{\gdef\@draftfontsize{#1}} -\def\draftfontattrib#1{\gdef\@draftfontattrib{#1}} -\def\draftangle#1{\gdef\@draftangle{#1}} -\endinput -%% -%% -%% End of package 'pdfdraftcopy.sty' -%% diff --git a/Documentation/PhysicsTools/rcs.sty b/Documentation/PhysicsTools/rcs.sty deleted file mode 100644 index 6044556efd4..00000000000 --- a/Documentation/PhysicsTools/rcs.sty +++ /dev/null @@ -1,1033 +0,0 @@ -% $StyleId: rcs.doc,v 2.10 2003/02/02 20:42:38 schrod Exp $ -%---------------------------------------------------------------------- -% Written by Joachim Schrod <jschrod@acm.org>. -% Copyright conditions see below. - -% -% LaTeX package rcs -% to use RCS tag values in one's document, and typeset revision logs -% -% [LaTeX in MAKEPROG] -% (history at end) - -% If you have received this style file without the user manual (in the -% file rcs-user.tex or the respective DVI file), it's incomplete and -% near to useless. If it was given to you as something that you shall -% use as an author -- complain bitterly to your provider. You need the -% documentation and you have a right on it! (Below you can find info -% where to get the reference version.) - - - -%%%% -%%%% -%%%% These TeX macros were documented with the documentation system -%%%% MAKEPROG and automatically converted to the current form. -%%%% If you have MAKEPROG available you may transform it back to -%%%% the original input: Remove every occurence of three percents -%%%% and one optional blank from the beginning of a line and remove -%%%% every line which starts with four percents. The following Perl -%%%% command will do this: -%%%% -%%%% perl -pe 's/^%%%%.*\n//; s/^%%%( )?//' -%%%% -%%%% If you just want to print the documentation you may fetch -%%%% the archive print-makeprog.tar.Z from ftp.th-darmstadt.de (directory -%%%% pub/tex/latex). It contains *all* used styles -- but beware, they -%%%% may not be in a documented form... -%%%% -%%%% -%%% \documentclass{progltx} - -%%% \usepackage{rcs-doc} -%%% \usepackage{path} -%%% \usepackage{alltt} -%%% \usepackage{fullpage} - - -%%% \RCS $StyleDate: 2003/02/02 20:42:38 $ - - -%%% \begin{document} - - -%%% \title{The \texttt{rcs} Package\\ -%%% {\large (Implementation)}% -%%% } -%%% \author{% % LaTeX does not discard unnecessary glue... -%%% Joachim Schrod% -%%% \thanks{% -%%% \protect\raggedright -%%% R\"odermark, Germany. -%%% Email: \texttt{jschrod@acm.org}% -%%% }% -%%% } -%%% \date{% -%%% Revision \RCSStyleRevision\\ -%%% (as of \RCSStyleDate)% -%%% } - -%%% \maketitle - - - -%%% % ------------------------------------------------------------ -%%% % -%%% % subdocument: The user interface of rcs.sty -%%% % - -%%% \input{rcs-user} - -%%% % -%%% % ------------------------------------------------------------ -%%% % -%%% % subdocument: The internal interface -%%% % - -%%% \input{rcs-conf} - -%%% % -%%% % ------------------------------------------------------------ - - - -%%% \chap Implementation. - -%%% This module reserves the namespace |rcs|. - -%%% \beginprog -\ifx \rcs@loaded\undefined - \def\rcs@loaded{$StyleRevision: 2.10 $} -\else - \PackageWarningNoLine{rcs}% - {Some other package already uses namespace `rcs'} -\fi -%%% \endprog - - -%%% \sect Let's identify this package. - -%%% Now I'm caught in a catch-22 situation. The code below---part of my -%%% standard templates for \LaTeX{} packages---uses principles that are -%%% explained later in this document. In particular, the explanation how -%%% the information from the following RCS fields are gathered starts at -%%% chunk~\ref{chunk:value-split}. - -%%% There you'll find also the explanation for the funny strings behind -%%% the RCS fields. Actually, I would not need them any more, they make -%%% the initial document (before the first check-in) work. But they won't -%%% be discarded in this package source, as they'll demonstrate another -%%% utilization of RCS at work. - -%%% \beginprog -\begingroup - \def\RCSPackage#1#2 $#3: #4 #5\endRCS $#6: #7 #8\endRCS{% - \def\date{#4}\def\id{v#7}% - \ProvidesPackage{#1}[\date\space\id\space #2]% - } - - \RCSPackage{rcs}{typeset info from RCS fields} - $StyleDate: 2003/02/02 20:42:38 $: 9999/00/00 \endRCS - $StyleRevision: 2.10 $: 0.0 \endRCS -\endgroup -%%% \endprog - - -%%% \sect This module is supported. Send bug reports, comments, and -%%% repairs. - -%%% The reference version may be retrieved via anonymous ftp from CTAN, -%%% directory \path|/tex-archive/macros/latex/contrib/supported/rcs|. - - -%%% \sect This is freely distributable software; you can redistribute it -%%% and/or modify it under the terms of the GNU General Public License -%%% (version~2) as published by the Free Software Foundation. - -%%% This software is distributed in the hope that it will be useful, but -%%% \textbf{without any warranty}; without even the implied warranty of -%%% \textbf{merchantability} or \textbf{fitness for a particular purpose}. -%%% See the GNU General Public License for more details. - -%%% You should have received a copy of the GNU General Public License in -%%% the file |License| along with this package; if not, write to the Free -%%% Software Foundation, Inc., 675~Mass Ave, Cambridge, MA~02139,~USA. - - -%%% \sect Before we start we declare some shorthands for category codes. -%%% By declaring the underscore~`(|_|)' as letter we can use it in our -%%% macros. (I agree with {\sc D.~Knuth} that -%%% |\identifier_several_words_long| is more readable than -%%% |\IdentifierSeveralWordsLong| and in every case better than -%%% |\p@@@s|.) As this is a \LaTeX{} style option the at sign is a letter -%%% anyhow; so we can use the ``private'' Plain and \LaTeX{} macros; and -%%% with the underscore we can make our own macros more readable. But as -%%% we have to restore this category code at the end of this macro file -%%% we store its former value in the control sequence |\CatUsCode|. This -%%% method is better than to use a group because not all macros have to -%%% be defined global this way. - -%%% \beginprog -\ifx \CatEscape\undefined - \chardef\CatEscape=0 - \chardef\CatOpen=1 - \chardef\CatClose=2 - \chardef\CatIgnore=9 - \chardef\CatLetter=11 - \chardef\CatOther=12 - \chardef\CatActive=13 - - \chardef\CatUsCode=\catcode`\_ -\fi - -\catcode`\_=\CatLetter % top level macro file -%%% \endprog - - - - -%%% \chap Parsing RCS fields. - -%%% Each RCS field consists of a keyword and an optional value. The value -%%% is delimited by `\verb*|: |' from the keyword, this delimiter is -%%% missing if no value does exist. At the end of a value there's always -%%% a space. I.e., the possible input looks like one of the two following -%%% lines: -%%% % -%%% \begin{quote} -%%% \itshape -%%% |\RCS $|Keyword\/|$|\\ -%%% |\RCS $|Keyword\/\verb*|: |value\/\verb*| $| -%%% \end{quote} -%%% % -%%% where \textit{Keyword} and \textit{value} may be arbitrary strings. In -%%% fact, we assume that \textit{Keyword} is a sequence of letters---only -%%% then the creation of a cseq |\RCS|\textit{Keyword} is sensible. Our -%%% implementation will not produce an error with an obscure keyword, but -%%% the result will not be of use for the author. -%%% We must not depend on a fixed set of keywords, this style shall be -%%% usable with a configurable RCS version. In such a version one can -%%% bind arbitrary keywords to the information available in RCS\@. This -%%% means we will parse all RCS fields with the same macro, -%%% |\rcs_split_field|. This macro will place its results in two macros: -%%% |\RCS_keyword| and |\RCS_value|. Afterwards we can bind the expansion -%%% of |\RCS_value| to the target cseq. - - -%%% \sect |\RCS_value| will be set to the expansion of |\RcsEmptyValue| -%%% if there was no RCS value available, i.e., if the field was not -%%% processed by RCS yet. This way the values of non-expanded RCS fields -%%% can be configured. The default value is the empty token list. - -%%% \beginprog -\def\RcsEmptyValue{} -%%% \endprog - - -%%% \sect For those fields where a special handling is demanded, a cseq -%%% |\RcsHandle|\textit{Keyword} must exist. This cseq must handle the -%%% parsing of the value. Usually this means that it will create a macro -%%% named |\RCS|\textit{Keyword} with a transformed (or filtered) value. -%%% If you happen to write a handler you might want to look at the -%%% definition of |\RcsHandleDate| starting at section~\ref{sec:date} -%%% If a special handler for a field exists, the original value is -%%% placed automatically in the macro |\RCSRaw|\textit{Keyword}. This is done -%%% before the handler is called. - - -%%% \sect \label{chunk:value-split} The macro -%%% |\rcs_split_field| will split the field into |\RCS_keyword| and -%%% |\RCS_value|. This split is done by the argument parsing capability -%%% of \TeX{}: We can separate parameters by token lists and \TeX{} will -%%% use a shortest pattern match to determine the arguments. - -%%% Let's look what kind of pattern we can use. As an example we use the -%%% RCS field `\verb*|$Revision: 1.1 $|', i.e., the unexpanded field is -%%% `|$Revision: 1.1 $|'. The macro |\RCS| will use dollars to delimit its -%%% argument, we don't need to worry for them. Eventually we'll have to -%%% discard the space of the expanded field's value---after all, -%%% |\RCSRevision| shall expand to `1.1', not to `1.1~'. - -%%% First, we can see that the token list $\it (colon, space)$ may be used -%%% as the seperator of keyword and value: -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\(: \)1.1 \]\\end_value} -%%% \end{quote} -%%% % -%%% ($d_i$ is the separating token list between parameter $i$ and~$i+1$. -%%% |#1| denotes the argument of |\RCS|. |\end_value| is a stop token, -%%% used to delimit the last parameter; we have to supply this token at -%%% the call. In fact, all tokens marked by $s$ and the dotted -%%% line---i.e., those after |#1|---are supplied by us.) - -%%% When we want this token list as a separator, we have to supply it for -%%% the unexpanded field, since there is no $\it (colon, space)$ in there: -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\]\(: \)\\end_value} -%%% \end{quote} -%%% % -%%% Then the call with the expanded field gets -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\(: \)1.1 \]: \\end_value} -%%% \end{quote} - -%%% Well, we want neither the space nor the colon and the other space -%%% after the value---we have to get rid of them. We can utilize the fact -%%% that no RCS field will ever have the token list $\it (space, colon)$ -%%% in it. This means we can use it as a terminator for the RCS value: -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\(: \)1.1\( \]:\) \\end_value} -%%% \end{quote} -%%% % -%%% Please note, one token of the delimiter~$d_2$ comes from the -%%% |#1|~argument, the other from the tokens we'll add at the call. - -%%% Let's check our unexpanded field again---we don't have $d_2$ there. We -%%% have to add it by the caller: -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\]\(: \)\{\}\( :\)\\end_value} -%%% \end{quote} -%%% % -%%% (Without the empty group the two spaces would be combined into one -%%% token.) Going back to the expanded field, we notice that these -%%% additional tokens do not harm us---we'll ignore everything after $d_2$ -%%% anyhow. -%%% % -%%% \begin{quote} -%%% \macroCall{\\rcs_split_field \[Revision\(: \)1.1\( \]:\) \{\} :\\end_value} -%%% \end{quote} - -%%% We can take another look at the whole affair and point out the -%%% parameters we get for the split. Remember, that spaces after a control -%%% word belong to this word. First, the expanded field: -%%% % -%%% \begin{quote} -%%% \macroCall -%%% [p]{\\rcs_split_field \[\(Revision\): \(1.1\) \]:\( \{\} :\)\\end_value} -%%% \end{quote} -%%% % -%%% Then the unexpanded one: -%%% % -%%% \begin{quote} -%%% \macroCall[p]{\\rcs_split_field \[\(Revision\)\]: \(\{\}\) :\(\|\)\\end_value} -%%% \end{quote} -%%% % -%%% ($p_3$, the third parameter will be empty in this case.) - -%%% \medskip - -%%% \noindent As explained above: if the value does not exist, a default -%%% value is supplied. - -%%% \beginprog -\def\rcs_split_field #1: #2 :#3\end_value{% - \def\RCS_keyword{#1}% - \def\RCS_value{#2}% - \ifx \RCS_value\empty - \let\RCS_value\RcsEmptyValue - \fi - } -%%% \endprog - - -%%% \sect |\RCS| triggers the split. After it has occured, we can bind the -%%% expansion of |\RCS_value| to a new name. This name is constructed from -%%% the prefix |RCS|, the string |Raw| iff a handle for this field exists, -%%% and the keyword itself. - -%%% Afterwards we call the handle, on non-existance this will be a no-op. - -%%% Gathering the field is a bit more complicated, as we need to pay -%%% attention to underscores in file names. - -%%% \beginprog -\def\RCS{% - \bgroup - \catcode`\_ \CatActive - \RCS_get_argument - } -\def\RCS_get_argument $#1${% - \gdef\RCS_argument{#1}% - \egroup - \RCS_process - } - -\def\RCS_process{% - \expandafter\rcs_split_field \RCS_argument: {} :\end_value - \expandafter\let \csname RCS\rcs_raw_if_handle\RCS_keyword\endcsname - \RCS_value - \csname RcsHandle\RCS_keyword\endcsname - } -\def\rcs_raw_if_handle{% - \@ifundefined{RcsHandle\RCS_keyword}{}{Raw}% - } -%%% \endprog - - - - -%%% \chap Transforming the value of \Date{} fields. -%%% \label{sec:date} - -%%% When we implement the special handling for the \Date{} field, we take -%%% care that we don't rely on the fact that the keyword is |Date|. -%%% Certain RCS versions (one of them created at our site) allow the -%%% configuration of the used keywords. I.e., there might be another -%%% keyword used for this field, but we still want to use the -%%% functionality provided here. -%%% For example, let's assume the keyword of the \Date{} field is -%%% |StyleDate|. Then the assignment -%%% % -%%% \begin{quote} -%%% |\let\RcsHandleStyleDate=\RcsHandleDate| -%%% \end{quote} -%%% % -%%% is all that's needed to turn on the `date special handling' for this -%%% field. (In fact, that's done in this style file you're reading.) - - -%%% \sect The special handler for \Date{} fields sets up -%%% |\RCS|\textit{Keyword} (|\RCSDate| usually) to produce a textual -%%% representation of the date part of the \Date{} value in a -%%% |\today|-like format. Thus the constructed tag can be used in many -%%% circumstances, e.g., as the argument of the |\date| tag on the -%%% titlepage. - -%%% In addition, |\RCSTime| is defined; it expands to the checkin time. - -%%% If the value is empty, i.e., if there's no \Date{} value from RCS -%%% available, we use the current date. Later we might supply the current -%%% time, too---currently |\RCSTime| expands to an empty token list in -%%% such a case. -%%% Of course, this whole special handling is only done if |\today| is -%%% defined in some way; otherwise we just handle the \Date{} field like -%%% every other RCS field: The value is stored unfiltered in -%%% |\RCS|\textit{Keyword}. - -%%% \beginprog -\def\RcsHandleDate{% - \ifx \today\undefined - \expandafter\let \csname RCS\RCS_keyword\endcsname \RCS_value - \else - \ifx \RCS_value\RcsEmptyValue - \@namedef{RCS\RCS_keyword}{\today}% - \let\RCSTime\empty - \else - \expandafter\rcs_set_date \RCS_value\end_date - \fi - \fi - } -%%% \endprog - - -%%% \sect If the value is not empty we split it using the argument parsing -%%% mechanism of \TeX{}. Then we'll define the value using the current -%%% definition of |\today|. This way language-specific styles (e.g., from -%%% the \textsf{babel} system) may supply their own way to present a date. - -%%% \beginprog -\def\rcs_set_date #1/#2/#3 #4\end_date{% - \begingroup - \day #3 % <-- space! - \month #2 % <-- space! - \year #1 % <-- space! - \expandafter\xdef \csname RCS\RCS_keyword\endcsname {\today}% - \endgroup - \def\RCSTime{#4}% - } -%%% \endprog - - - - -%%% \chap Typesetting revision logs. - -%%% If a revision log is to be typeset, we demand a special format. -%%% Namely, it is to be enclosed in the |rcslog| environment. This -%%% environment has an optional parameter, the configuration tokens. The -%%% contents of the environment is the \Log{} field followed by a list of -%%% revision entries. The \Log{} field must be on a line of its own. Each -%%% revision entry is introduced by a line consisting of the tag -%%% |\Revision|, the revision number, the checkin date, the checkin time, -%%% and the author's user id. - -%%% I.e., the input looks like the following example sketch, where italic -%%% material is substituted by current values. -%%% % -%%% \begin{quote} -%%% \chardef\\=`\\ % just for the example -%%% \chardef\{=`\{ -%%% \chardef\}=`\} -%%% \begin{alltt}\frenchspacing -%%% \\begin\{rcslog\} -%%% $Log: rcs.sty,v $ -%%% Revision 1.1 2005/02/02 20:21:41 wmtan -%%% RoadMap -%%% -%%% Revision 1.1 2005/01/27 19:49:21 wmtan -%%% RoadMap -%%% -%%% Revision 1.1 2004/11/30 16:20:57 paterno -%%% Adding files to supported limited TeX installations -%%% -%%% Revision 2.11 2003/02/02 22:30:22 schrod -%%% Removed dependeny on \LaTeX2.09 font selection commands. (Though -%%% they're still used in the package documentation, as convenience.) - -%%% \\Revision {\it revision date time uid} -%%% \qquad {\it log text\/} - -%%% \quad \([\,\ldots\) {\it perhaps more entries\/} \(\ldots\,]\) - -%%% \\end\{rcslog\} -%%% \end{alltt} -%%% \end{quote} - -%%% We typeset the revision log similar to a |description| environment. -%%% Each revision entry is an item. - - -%%% \sect The tag for the log intro is implemented as a token register. In -%%% fact, |\rcsLogIntro| is a hook. - -%%% \beginprog -\newtoks\rcsLogIntro - \rcsLogIntro={} -%%% \endprog - - -%%% \sect The author names are stored in a table named |rcs_author|. We -%%% supply the lookup macro |\RCS_get_author|, which expands to the table -%%% value or to the table key itself. - -%%% \beginprog -\def\rcsAuthor#1#2{\@namedef{rcs_author:#1}{#2}} -\def\RCS_get_author#1{% - \@ifundefined{rcs_author:#1}{#1}{\@nameuse{rcs_author:#1}}% - } -%%% \endprog - - -%%% \sect Since this style option shall be usable with many styles, we -%%% must provide means to configure its behaviour. In particular, it must -%%% be possible to configure the layout. What remains fixed, is the layout -%%% of the log like a |description| list. I might add this flexibility if -%%% there is enough interest (or if somebody sends me tested changes). - -%%% The first thing to parametrize is the overall layout and the header. -%%% This is set up by |\RcsLogStyle|. This cseq \emph{must} define -%%% |\RcsLogHeading|, which is the macro to set the header. E.g., here -%%% one could insert a |\newpage| to start a new page for the revision log. - -%%% In addition, we reduce the base size of the log. That's the reason why -%%% these two configurations are combined in one macro---if you change -%%% one, you also have to consider to change the other. - -%%% \beginprog -\def\RcsLogStyle{% - \def\RcsLogHeading{\subsubsection*}% - \footnotesize - } -%%% \endprog - - -%%% \sect The header itself is created by |\rcs_log_hdr|, which is called -%%% with the expanded \Log{} value as its argument, terminated by -%%% |\end_value|. We use \TeX{}'s parameter parsing mechanism to chop off -%%% the tail of the value---if the value exists, it always ends in~`|,v|'. -%%% Since only an existing value ends in~`|,v|', we have to supply a -%%% fitting empty value. We will use |\rcs_empty_log_value| for that. - -%%% The empty log value gets a bit more complicated: If we have an empty -%%% \Log{} value, we will not have any revision entries. (Well, except in -%%% pathological cases. Then we will produce spurious text.) Missing -%%% revision entries are missing items; since \LaTeX{} will complain -%%% about a missing |\item|, we must provide one to stop it from doing -%%% so. But here is no place for such tokens, the list environment hasn't -%%% started yet. We will set the flag |@rcs_empty_log@| and check this -%%% flag after we invoked the list. - -%%% \beginprog -\def\rcs_log_hdr#1,v\end_value{% - \@rcs_empty_log@false - \RcsLogHeading{\RcsLogHeadingName #1}% - \the\rcsLogIntro - } -\def\rcs_empty_log_value{% - \global\@rcs_empty_log@true % that's most probably in a group! - \RcsUnknownFile % text for unknown file name - ,v% % assert calling env - } -\newif\if@rcs_empty_log@ -%%% \endprog - - -%%% \sect The user might want to adapt the text output. He can do so by -%%% redefining |\RcsLogHeadingName|, |\RcsUnknownFile|, and |\RcsEmptyLog|. - -%%% \beginprog -\def\RcsLogHeadingName{Revision Log for \ttfamily} % file name in monospace -\def\RcsUnknownFile{\rmfamily\mdseries $\langle\,$Unknown file name$\,\rangle$} -\def\RcsEmptyLog{{\itshape No log entries available.}} -%%% \endprog - - -%%% \sect OK, we have fixed the header, let's address the entries. Each -%%% entry is typeset by |\RcsLogRevision| which is called with four -%%% arguments: (1)~the revision number, (2)~the checkin date, (3)~the -%%% checkin time, and (4)~the uid of the author. - -%%% Such an entry is inserted as an item in the list. The uid is -%%% transformed to an author name, if the respective information is -%%% available. The checkin timestamp is mapped to a neater appearance by -%%% |\RcsLogDate| and |\RcsLogTime|. - -%%% \beginprog -\def\RcsLogRevision#1#2#3#4{% - \item [Revision #1]% - (created at \RcsLogDate #2\endDate\space \RcsLogTime{#3} % <-- space! - by \RCS_get_author{#4})\\\relax - } -%%% \endprog - - -%%% \sect |\RcsLogDate| sets the date. We can use \TeX{}'s parameter parsing -%%% mechanism to separate the date value (passed as the argument) in its -%%% sub-values. The code is very similar to |\rcs_set_date|. - -%%% |\RcsLogTime| sets the time. As explained in the user manual, the time -%%% is ignored usually. (I don't think that this info is relevant in a -%%% printout.) Here we assume something about the context it's expanded -%%% in: Spaces will be before and after the tag. One of them must be -%%% discarded. The user option |\settime| is implemented here as a -%%% private macro, too. - -%%% \beginprog -\def\RcsLogDate #1/#2/#3\endDate{% - \begingroup - \day #3 % <-- space! - \month #2 % <-- space! - \year #1 % <-- space! - \today - \endgroup - } - -\def\RcsLogTime#1{\ignorespaces} -\def\rcs_settime{% - \def\RcsLogTime##1{[##1]}% - } -%%% \endprog - - -%%% \sect Well, that are all possibilities to configure the revision log. -%%% Let's put together the pieces. Within the |rcslog| environment the -%%% tags |\Revision| and |\settime| are used, they are implemented in -%%% the |rcs| namespace. - -%%% At the start, we use the optional argument of the environment to -%%% configure it. |\settime| might be placed here, or font switches, etc. - -%%% The next entity shall be the \Log{} field. In fact, it shall be on -%%% the next line. If an optional environment argument was there, the -%%% newline is still in the input and must be discarded before we can use -%%% |\RCS| to parse the field. - -%%% \beginprog -\def\rcslog{% - \@ifnextchar[% % ] (Emacs) - \rcslog_configure - {\rcslog_configure[]}% - } -\def\rcslog_configure[#1]{% - \let\Revision\rcslog_revision - \let\settime\rcs_settime - \RcsLogStyle - #1% - \afterassignment\rcslog_skipcr - \let\next - } -%%% \endprog - - -%%% \sect There are users---programmer's life would be so nice without -%%% them. An empty line (i.e., a |\par|) might have been inserted between -%%% |\begin{rcslog}| and the \Log{} field. There might be even other -%%% garbage between them. We have to check these possibilities and provide -%%% proper responses. - -%%% \beginprog -\def\rcslog_skipcr{% - \ifx \next $% - \def\next{\rcslog_field $}% - \else\ifx \next\par - \let\next\rcslog_field - \else - \PackageError{rcs}{Missing RCS Log field in environment}{% -The RCS Log field must be the very first text in the rcslog\MessageBreak -environment. I will discard the rest of your input line and try to\MessageBreak -recover then. If you think this won't work, exit now.\MessageBreak -Otherwise press <Return> and cross your fingers!} - \let\next\rcslog_discard_line - \fi\fi - \next - } -%%% \endprog - - -%%% \sect This is the code for the luser. He provided tokens we didn't -%%% wait for---we discard them and check anew if we've got it right now. -%%% (Remember, we're waiting for the `|$|' of the \Log{} field.) %$ Emacs - -%%% \beginprog -\def\rcslog_discard_line{% - \begingroup - \obeylines - \rcslog_gobble_line - } -\begingroup -\obeylines -\gdef\rcslog_gobble_line #1^^M{% - \endgroup% - \afterassignment\rcslog_skipcr% - \let\next% - } -\endgroup -%%% \endprog - - -%%% \sect Yep, we've reached a dollar; let's hope that it's our \Log{} -%%% field. It must be on one line, this line is fetched first and then -%%% analyzed. - -%%% \beginprog -\def\rcslog_field{% - \begingroup - \obeylines - \catcode`\_ \CatActive - \rcslog_get_field - } - -\begingroup -\obeylines -\gdef\rcslog_get_field $#1$^^M{% - \gdef\RCS_argument{#1}% - \endgroup% - \rcslog_set_field% - } -\endgroup -%%% \endprog - - -%%% \sect When we analyze the \Log{} field, we must supply the default -%%% value. Within the log list there will be no other RCS fields, -%%% therefore we can redefine |\RcsEmptyValue| in this environment. - -%%% The header gets passed the expanded \Log{} value, as explained above. -%%% We use |\RCS_value| instead of |\RCSLog| since we don't know which -%%% RCS keyword is used. - -%%% At last, we start the list and check the |@rcs_empty_log@| flag, -%%% perhaps we have to supply a dummy |\item|. - -%%% \beginprog -\def\rcslog_set_field{% - \let\RcsEmptyValue\rcs_empty_log_value - \RCS_process - \expandafter\rcs_log_hdr \RCS_value\end_value - \list{}\RcsLogListStyle % empty label, layout configurable - \if@rcs_empty_log@ - \item []\RcsEmptyLog % supply missing item - \fi - } -%%% \endprog - - -%%% \sect The setup of the log list is done by a macro from the protected -%%% interface, the user shall be able to change it. In the default -%%% supplied, there is no skip between paragraphs, but a quad indentation. -%%% |rcslog| is here no list environment in the sense like |itemize| or -%%% |enumerate|, therefore a usage of these environments within an entry -%%% shall result in top-level item markers. - -%%% \textbf{Caveat}:\quad Since we globally set |\@listdepth| at the start -%%% of the environment, we must not execute |\endlist| that decrements it. -%%% Instead we use |\endtrivlist| for the termination of the |rcslog| -%%% environment. It might be, that this must be changed if -%%% |\RcsLogListStyle| is changed. - -%%% \beginprog -\def\RcsLogListStyle{% - \global\@listdepth\z@ - \labelwidth\z@ % item label w/o fixed size - \itemindent -\leftmargin % move label before start of line - \advance\itemindent \labelsep % label was moved too much - \def\makelabel##1{\bf ##1}% % how to typeset labels - \parsep\z@skip % no space between pars in items - \listparindent 1em % <-- space! indent pars in items - }% - -\let\endrcslog\endtrivlist -%%% \endprog - - -%%% \sect The arguments of |\Revision| are separated by spaces and -%%% terminated by the end of the line. We have to fetch them, then we can -%%% pass them to |\RcsLogRevision| which does the real work. - -%%% \beginprog -\def\rcslog_revision{% - \begingroup - \obeylines - \rcslog_get_revinfo - } - -\begingroup -\obeylines -\gdef\rcslog_get_revinfo #1 #2 #3 #4^^M{% - \endgroup% - \RcsLogRevision{#1}{#2}{#3}{#4}% - } -\endgroup -%%% \endprog - - - - -%%% \chap Convenience tags. - -%%% As a shortcut we -%%% support the direct supply of the checkin date for the titlepage -%%% material. Here we also take care not to depend on the keyword. - -%%% \beginprog -\def\RCSdate $#1${% - \RCS $#1$% - \expandafter\date \expandafter{\csname RCS\RCS_keyword\endcsname}% - } -%%% \endprog - - -%%% \sect |\RCSID| parses the RCS field and redefines the footline. This -%%% tag is from Nelson's |rcs| style. In his style he defines that the RCS -%%% field is passed as an argument to the macro. To be upward compatible, -%%% we have to support this as well: We look at the next token, if it is -%%% an opening brace we fetch the param and trigger the `real' invocation -%%% by |\rcs_id|. If no brace follows, we call |\rcs_id| immediately. - -%%% \beginprog -\def\RCSID{% - \@ifnextchar\bgroup - \rcsid_get_field - \rcs_id - } -\def\rcsid_get_field#1{\rcs_id #1} -%%% \endprog - - -%%% \sect As a side effect, we'll produce the normal value tags. When we -%%% define the footline, we must assert that |\RCS_keyword| and -%%% |\RCS_value| are expanded. (They will get new bindings at the next -%%% invocation of |\RCS|.) All other macros must not be expanded, they -%%% shall be used in the context of the footline, not in our definition -%%% context. We utilize |\protect| for that, |\framebox| is the only macro -%%% that must be protected. - -%%% \beginprog -\def\rcs_id $#1${% - \RCS $#1$% - \begingroup - \let\protect\noexpand - \xdef\@oddfoot{% - \reset@font - \protect\framebox[\textwidth]{\RCS_keyword: \RCS_value}% - }% - \endgroup - \global\let\@evenfoot\@oddfoot - } -%%% \endprog - - -%%% \sect |\RCSdef| just outputs its parameter before it's passed to -%%% |\RCS|. This tag is from Tom Verhoeff's |rcs| style. In fact, we're -%%% not fully compatible: Tom did output `RCS keyword string'. I -%%% substitute this by `RCS field', this is consistent with the rest of -%%% this style's description. - -%%% \beginprog -\def\RCSdef $#1${% - \typeout{RCS field: $#1$}% - \RCS $#1$% - } -%%% \endprog - - - - -%%% \chap The end. - -%%% Well, after all we're finished with this style. We must not forget to -%%% restore the underscore catcode. - -%%% \beginprog -\catcode`\_=\CatUsCode - -\endinput -%%% \endprog - - -%%% \sect I would like to thank those who helped me to improve this style. -%%% % In particular, XXX provided XXXsubstantial parts of the code. - -%%% \textsc{Marcus Speh} pointed out that Nelson's style option exists. -%%% \textsc{Lee Wittenberg} pointed out that Tom style option exists---Tom -%%% posted the style option on |comp.programming.literate| afterwards. I -%%% borrowed the idea of appending a second colon to the call of -%%% |\rcs_split_field| from Tom's style. \textsc{Harald Fuchs} asked for the -%%% possibility to configure the log list layout. - -%%% \textsc{Dave Love} brought the problem with the |-kv| option of |co| to -%%% my attention. It's a pitty that I haven't found a solution yet. (I -%%% mean, one that convinces me.) - -%%% \textsc{Christine Detig} told me where my documentation was -%%% uncomprehensible. In particular, you won't have the visual explanation -%%% of |\rcs_split_field| without her. barbara beeton proofread the user -%%% manual. In addition, she pointed out where a non-programmer does not -%%% understand it. - -%%% After 7.5 years of quiteness, \textsc{Martin Kneißl} emerged and asked -%%% for support of underscores in file names. He got it, and I used the -%%% opportunity to update contact information. - - - -%%% \vskip \PltxPreSectSkip - -%%% \rcsLogIntro{Of course, we shouldn't stop without the RCS log of this -%%% style file.} - - -%%% \begin{rcslog} -%%% $StyleLog: rcs.doc,v $ -%%% \Revision 2.10 2003/02/02 20:42:38 schrod -%%% Support underscores in file names in RCS field values. E.g., in -%%% \rcsField{Id} or \Log{}. - -%%% Update my contact information. - -%%% \Revision 2.9 1995/08/02 12:09:07 schrod -%%% Transformed this style option into a \LaTeXe{} package. - -%%% Updated to \LaTeXe{}. - -%%% \Revision 2.8 1993/11/10 12:29:49 schrod -%%% Added acknowledgement of barbara. - -%%% \Revision 2.7 1993/11/08 20:15:15 schrod -%%% Added possibility to configure the layout of the log list -%%% (|\RcsLogListStyle|). - -%%% Now the log list is on level~0. Thereby item lists or enumerations in -%%% revision entries get first-level labels. This has consequences for -%%% the configuration, this implementation strategy must therefore be -%%% specified in the internal interface description. - -%%% \Revision 2.6 1993/11/03 20:04:57 schrod -%%% Cleaned up for distribution: Added email address to each document, -%%% added copyright info to |rcs.doc|, added acknowledgements. Checked my -%%% English and the spacing. - -%%% Explained the restriction concerning the |-kv| option of |co|. - -%%% Rewrote the explanation to |\rcs_split_field|. Added the visual clues -%%% to explain the (mis?)usage of macro expansion and pattern matching. - -%%% \Revision 2.5 1993/11/02 20:02:51 schrod -%%% Implemented |\RCSdef|. - -%%% Deleted unnecessary macro that did discard the space of an RCS value. -%%% Moved this in the parameter context of |\rcs_split_field|. Added an -%%% explanation to |\RCS| where it is called. - -%%% \Revision 2.4 1993/11/02 18:44:49 schrod -%%% Implemented |\RCSID|.\\ -%%% Need |\reset@font| now, for the definition of the footline in |\RCSID|. - -%%% Paragraphs in revision logs are not separated by vertical space any -%%% more. They are indented instead. I use the ``classic'' indentation of -%%% one quad. - -%%% \Revision 2.3 1993/11/01 19:49:49 schrod -%%% Added subdocument about the internal interface. - -%%% Cleaned the cseq names: All public names start with `|RCS|' or -%%% `|rcs|', protected names start with `|Rcs|', both have only letters. -%%% Observer names start with `|RCS|', internal names with `|rcs|', both -%%% feature non-letters in the names. - -%%% \Revision 2.2 1993/11/01 19:20:58 schrod -%%% Cleaned up the documentation. The enhancement of the |rcslog| -%%% environment was just appended, now it's integrated in the whole -%%% document. Improved the explanation of the implementation: the valid -%%% input is now explained more clearly. - -%%% Use |rcs-doc.sty| for documentation of |rcs| style. It does not only -%%% load style options, but does also define |\RCSStyleRevision| for -%%% access of the style's revision. - -%%% Added hint that the user manual is urgently needed.\\ -%%% The load tag is now in the protected interface.\\ -%%% Commented out section with definition of |\reset@font|, that cseq is -%%% not needed in the implementation.\\ -%%% OALD tells me to use ``heading'' instead of ``header.'' - -%%% \Revision 2.1 1993/10/29 19:07:38 schrod -%%% Reorganized the source structure---the style gets too large to keep -%%% everything in one directory. I use the usual setup for my larger -%%% styles. - -%%% Changed the RCS keywords. All keywords in use now start with -%%% `|Style|'. Stuff in the text which looks like RCS fields, but where -%%% the keywords do not start with `|Style|', are examples! - -%%% \Revision 1.3 1993/10/29 18:08:19 schrod -%%% Each field value supplied by RCS ends with a space; this space is -%%% discarded. - -%%% Supports the typesetting of revision logs. The overall documentation -%%% is not yet fully integrated. Of course, our own revision log is -%%% typeset at the end, too.\\ -%%% But we'll have to use other RCS keywords for this document in the -%%% future. E.g., I can't use original RCS keywords currently in the -%%% examples without much hassle. - -%%% An hook for the configuration of this style option is provided. - -%%% \Revision 1.2 1993/09/08 15:49:00 schrod -%%% Use canonical names for category codes. - -%%% \Revision 1.1 1993/09/03 21:01:29 schrod -%%% Re-implemented |rcs| style option. Made it a documented option. - -%%% \end{rcslog} - - - - -%%% \end{document} - - -%%% -%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% Local Variables: -%%% mode: LaTeX -%%% TeX-brace-indent-level: 4 -%%% indent-tabs-mode: t -%%% TeX-auto-untabify: nil -%%% TeX-auto-regexp-list: LaTeX-auto-regexp-list -%%% End: diff --git a/Documentation/PhysicsTools/tasks.rst b/Documentation/PhysicsTools/tasks.rst deleted file mode 100644 index c5ae9486fb5..00000000000 --- a/Documentation/PhysicsTools/tasks.rst +++ /dev/null @@ -1,456 +0,0 @@ -=============== -Framework tasks -=============== - -Overview -======== - -For each task, we identify the following products -(some tasks may not have code deliverables). -Each product should be produced in order; -we should review after each product -before moving on to the next. - -D. Design products: documentation, in the RoadMap, describing - the how and why of the design, and prototype interface - consisting of public headers in the repository. - -I. Implementation: working code, in the repository, with - functioning unit tests. It may be necessary to modify - the prototype interfaces at this time. - -C. Integration of the product into the remainder of the core - software. More modification of interface may be needed. - Example use in a framework program context (when relevant) - should be included. - -R. Review with others. - -Stages are: - D=design, - I=implementation and unit testing, - C=complete integration of task - R=review of the task - A=D, I, and C - -We expect that most tasks will have incremental releases, each -including more functionality. Each step or item within a -task has a release phase number assigned to it. -This phase number is relative to the task. -Earlier phases indicate higher priority. - -Until we invent or find a better system, each part (or step) -of a task is tagged with: - <stage>(phase, required_input_in_terms_of_the_task_step_list) - -If dutput products are included anywhere, they will be stated -as object names i.e. single strings. - -Notes ------ -1) Design of a deliverable depends only on design of inputs -2) Implementation (up to unit testing) depends only on design - and public headers of inputs. -3) Complete integration of a deliverable depends can complete - integration of its input deliverables - -Graph production ----------------- -Given a task number and phase within a the task, produce a -dependency graph that only includes subtasks from the -given task <= the given phase number, -and all other tasks that is depends on. - -Most of the subtask names below are too long to include in a graph. -Short names for subtasks will be identified {like this}. - -Tasks -===== - -We can identify the following deliverable products. - -1. Module Registry {ModuleRegistry} - - *Modules* are things that are manipulated through *Workers*. - ModuleRegistry, which is a caching layer on top of the ModuleFactory. - This is used by schedule builder and such, and not ModuleFactory. - The main interface should have the same signature as - ModuleFactory::makeWorker(...). - - a. Interface for locating and iterating through worker instances, - and for getting workers using parameter set and - job information, and {repository for created worker} instances. - <A>(1,none) - b. Handling {version management} and validation for "plug-ins". - Using "cvs tags", verify that all modules come from the same - release. Support a development mode, where untagged modules - can be mixed in with released one, but provenance clearly - indicates this. This implies that the cvs tag string will - probably need to be compiled into the plugin library by - the build system (PluginManager may already do this). - <A>(2,1a) - - Input: ModuleFactory, Pset, Worker interface - Output: ModuleRegistry design and version support, - interface published, class definition and implementation - -2. Scheduler Builder and Validator {ScheduleBuilder} - - Use the parsed path expression (within a process section) to - create a schedule. A schedule is basically one list of modules - per path. - - a. {substitute sequence nodes} into path nodes (sequences - are just aliases) - <A>(1,12j) - b. Verify that {prerequisites as declared} in path expressions are - consistent as specified in the parsed file. - <A>(1,2a) - c. {Remove redundency} in each of the paths - <A>(1,2a) - d. Verify that {prerequisite EDProducts} are available before each - module is invoked - <A>(2,3c) - e. Build ScheduleExecutor's {lists of workers} from path nodes - <D>(1,12b,1a,2b,2c) - <I>(1,12c,1a,2b,2c) - <C>(1,12b,12c,1a,2b,2c) - f. Allow requests of {reconfiguration} of modules in a schedule. - <A>(4,?) - - Inputs: Node trees from PSet for paths and sequences, - "ProcessDesc" object (this has PSet that represents the job and - allows access to the parsed path nodes), - PSet representing a job, - ModuleRegistry(1b-D), - "I make this..." objects (part of phase 3) - Outputs: Schedule builder class - -3. "I make this" and "I use this" interface. {announcing product requirements} - - Each EDProducer module must declare what it adds to the event and - what it uses from the event. - - a. {EDProducer interface modification} (1) - b. The {examples} need to be modified to use these features (1) - c. Modify and add {code to manage} and make use of this information (2) - - Inputs: base classes for "modules", Provenance and Selectors. - Outputs: list of dependent products and ways to get to them, - list of things that are made if this is a producer - -4. {Unscheduled Executor} - - Demand driven mode. - - a. Addition of a "proxy" map associated with the EventPrincipal that - uses provenance information to locate an EDProducer when a EDProduct - is requested from the Event. [3c] - b. Locate the filters and analyzers (ordered list) to be used as the - starting points to trigger production of necessary products. [3c] - c. The event loop - d. additions to configuration to support this mode (if necessary) - e. Event/EventPrincipal modifications to support this mode - - We skip this for now. - -5. Schedule Executor - - a. Get event from the event source or get handed event - (two possible implementations) (1) - b. Propagation of events through list of list of modules produced - from the Builder (the schedule). (1) - c. Handle control flow change requested by error/message handling - subsystem. - Some examples of these requests are: - - a filter terminates a path (1) - - a producer fails to converge on a solution (2 - design first) - - a "stop processing" request (of segment or event or other) - was given from a Producer or Filter or other module (3) - - a producer throws an exception (1-trivial way, 2-standard way) - d. Handle signals (user interrupts like cntl-c, QUIT) properly (2) - e. Configuration rules - - Trivial = fail the path, standard = configurable reactions and exception - hierarchy - - Inputs: Design work for separation of concerns - who calls the event - source, who has the event loop? - Output of schedule builder, PSet for configuration (probably from - "ProcessDesc"), Exception heirarchy, Error/message logging facility - - Outputs: SchedulerExecutor interface and implementation. - -6. Floating point exception management - - There are several examples of other experiments and projects that - do this well. Get one of them and integrate it. - - Outputs: object for management of FPU - -7. Argument parsing and processing (command line) - - Boost has a promising command line parsing library. Attempt to use - it here, after the requirements for such a facility are written. - - Output: object that can be used to print command line option help, - and parse command line options and allow for overrides from - environment variables. - -8. Event Processor object - - This is the object that encapsulates all the event processing, - including configuration, and the event loop (which may be delegated - to the schedule executor or another utility class). Control is - not returned to the caller until all event processing is done - i.e. the event loop stops - - a. Return codes from "go" method defined - b. Allow for module reconfiguration - 0. first phase supports only untracked parameter editting - 1. may change schedule (cause rebuild due to PSet nesting) - 2. manage module registry - 3. defines interface for reconfiguration of existing modules - 4. coordinate reconfiguration - c. State management - what actions are allowed at what time? - 1. right now all we need to worry mostly about "RunSegments" - 2. define this as a state machine - d. interact with Input Service - (analysis involves deciding where the actual event loop lives) - - Inputs: CommandLineOption object (not needed immediately), - Schedule Builder/Executor, InputModule, PSet - Outputs: EventProcessor object - -9. Context Factory and Context Framework and Context Building - - How does this Context come into existence? (1) - How is it configured? (1) - How is it managed? - How do modules register callback function to be called when - part of the context changes? - - The inputs and outputs of this task have not been completely - identified yet. - - Inputs: EventProcessor - Output: Mixin method of registering for callbacks - -10. InputService - - A factory is needed for generating instances of input modules. - Input service modules are distinct from worker-type modules. - Some of the features below may be useful when doing data logging. - - a. Factory (1) - b. Selecting specific products for inclusion/exclusion (3) - c. Selecting based on trigger bits (3) - d. making events invisible/visible (2) - - Inputs: InputService interface - Outputs: Factory that makes instances of input modules - -11. Output module additions - - To better support streams, the output modules will need to be enhanced - to take advantage of routing information held within an event. - - a. Selecting specific products for inclusion/exclusion based on - tagging (2) - b. Selecting based on trigger bits (2) - c. decide whether or not all or part of the tagging information will - persist (1) - - Inputs: tagging and trigger bit locating interface in the - EventPrinicipal, - Outputs: Utility classes for selecting products and events. - -12. PSet - - a. Local database management - storage of PSets with event data files - <A>(2,12c) - b. Local name lookup of PSets using in-memory cache - <A>(1,12c) - c. Generation of PSET_ID - <A>(1,none) - d. Empty - e. Global database design and implementation - <A>(4,12a) - f. Communication with global and other databases - <A>(4,12e) - g. updating of global database from local files - <A>(4,12f) - h. integration of help information with PSets - <A>(3,none) - i. enumeration of details of various tools for handling - parameter sets and their configuration files - <A>(4,none) - j. create Path nodes from a stored PSet, i.e. generate a - ProcessDesc object from a job PSet - <A>(2,none) - k. untracked parameter changing - <A>(3,none) - - Outputs: PSet, ProcessDesc, parse tree Nodes, utilities - -13. Tagging of events and EDProducts within an event - - Support for arbitrary tagging of products and events for - routing purposes. Output modules can select events and products - based on this information. Multiple tags are allowed per event - or product. This feature is useful in support of output streams. - - a. design interface for adding tags (temporary strings - lifetime of - the event in memory) (1) - b. design interface for selections based on tags (1) - - Inputs: Event,EventPrincipal,EDProduct - -14. Keeping track of trigger bits (path results) - - The output modules will access events based on this information. - - a. paths must track decision information (1) - b. products must be marked with trigger bits that caused its - existence (2) - c. output module must be capable of selection on this information (1) - d. storage of this information (global scope, not temporary) - within the event (1) - e extra configuration of filters, including pay attention to filter answer, - ignore filter answer, or return opposite response of filter (1) - - Inputs: Worker - Outputs: Trigger bit object - -15. Pre/Post worker and event loop functions - - Workers must allow for an arbitrary number of callback functions to - be registered and invoked before and after the call to produce. - Callback lists will also be needed for top and bottom of event loop. - Support for functions shared amongst all modules is needed along - with unique functions per worker instance. This is a general facility. - - a. arguments to callback functions need definition - 1. ModuleDescription? - 2. Collision ID? - b. registration method needs to be established - - Inputs: Worker - Output: utilities for calling all functions - -16. Standard pre/post handlers - - Here is a list of tools that will be need and implemented using the - pre/post function callback mechanism. - - a. Statistics gathering - 1. call counts to modules - 2. pass/fail counting per module/path - b. Status of filters for HLT - c. timing measurements (per event, per module) - d. Simple memory leak checking - e. Root-o-gram directory management - -17. State change handler registration and management - - Module writers may be interested in getting calls when the - "RunSegments" change. We agreed that these handlers would be - introduced using mixin classes. - - a. Define mixin class - b. develop state interface / protocol between input service - and event process - -18. Define Root-o-gram interaction service - - a. is this service needed? - b. review DQM-flavor histogram interface and its applicability to - all producers - c. what other things like this service are necessary? - -19. Thread Safety (this is in dispute as to whether or not it is a task) - - Of course all tasks must be careful to design their stuff to - be thread safe - for example, don't use static variables to hold state. - Questions of unique collision ID have come up in discusions about this - task: is there more than one event with a particular collision ID? - - a. Protection of the Event during use of visualization tools - or any other thing that needs multithreaded access to products - b. protection when reconfiguring modules or interacting with them - c. make changes and test them - - This item is delayed. - -20. logging - - It seems we have identified three reasons why someone may want to - send information to a log: (1) the program is reporting on progress - and prints general information based on a verbosity level, - (2) A situation has been determined that is not really an error - (the code knows how to proceed - such as over time budget) - and a message is logged indicating - what type of situation it is and some information about it, and - (3) An error occurred or was recognized (and possibly ignored) or - some action was taken. - - a. identify the requirements for each of the above sitations - and propose an API for each - b. identify configuration needs. How are actions associated with - logging message specified? How are they configured at runtime? - How is the verbosity level set? - c. propose a way to connect handlers to message type and allow program - flow to be changed based on log messages received. - d. "context" interface e.g. module name, event ID, runsegment, - etc. are automatically attached to logged messages. - -21: external representation of logging data - - a. propose a way to handle externally representing the log - information. There will need to be several external representations - available for different areas: HLT, production, analysis, DQM. - There are several external system that may be useful for this - function including Apache's LogForCxx. - b. Implement or integrate solutions - -22. Exception processing - - The only way to alter the flow of control within the framework is - by an exception throw. Module code that cannot continue must throw - an exception. If log message handlers need to alter program flow, - they will need to throw an exception and have it ripple back through - the user's code (the code that logged the message). - Each exception caught will be logged. - The action or control flow change that occurs as a result of an - exception catch is configurable and determined at runtime. - The framework will know about Four classes of basic exceptions: - (1) std::exception, (2) cms::exception, (3) edm::exception, and (4) - anything else. - - a. determine the configuration options for directing control - control - b. determine the exception hierarchy and catch blocks within - the framework. Specify when and where each of the exception - types are used. - c. determine how configurable handlers will be dispatched on - receipt of an exception by the program and the protocol - between handlers and framework. - d. determine what errors the EventProcessor handles and what it - does not - -23. Recording errors with event data - - When exceptions occur, products are likely to be missing from the - event that are needed downstream. The system should allow these - events to be tagged, under user configuration control, so that - output modules can decide what to do with them. - - a. decide where and how event tagging can take place. - b. decide on configuration options (e.g. output module error streams, - tag names, if tagging occurs). - c. decide if error objects should be present in the event data - to indicate what is missing and why. Design and implement - if this feature is needed - - - diff --git a/Documentation/ReferenceManualPages/doc/AodData.doc b/Documentation/ReferenceManualPages/doc/AodData.doc index ef644f8a2fd..c41565429a3 100755 --- a/Documentation/ReferenceManualPages/doc/AodData.doc +++ b/Documentation/ReferenceManualPages/doc/AodData.doc @@ -10,14 +10,32 @@ The Data Format is defined in the following package sets: - \ref CommonData "Common data format packagess" \section Event Content - -AOD contains a subset of \ref RecoData "RECO" data. - -\htmlinclude datatable_begin.doi - -\htmlinclude RecoLocalTrackerAOD.doi - -\htmlinclude datatable_end.doi +AOD will be a subset of \ref RecoData "RECO" data, still to be defined. + +\htmlonly + +<script type="text/javascript"> +<!-- + function alternate() { + var i,t,row,table, tables; + tables = document.getElementsByTagName("table"); + for( t = 0; t < tables.length; ++t ) { + table = tables[ t ]; + if ( table.className == 'reftable' ) { + for(i = 1; (row = table.getElementsByTagName("tr")[i]); ++i) + if ( row.className != 'colgroup' ) + if(i % 2 == 1) { row.className='odd'; } + else { row.className='even'; } + } + } + } window.onload = alternate; +--> +</script> + +\endhtmlonly + +\section status Status +Empty at the moment. \section contact Contact persons - Luca Lista diff --git a/Documentation/ReferenceManualPages/doc/PhysicsTools.doc b/Documentation/ReferenceManualPages/doc/PhysicsTools.doc new file mode 100755 index 00000000000..5fbfcf60dfe --- /dev/null +++ b/Documentation/ReferenceManualPages/doc/PhysicsTools.doc @@ -0,0 +1,42 @@ +/*! +\page PhysicsTools Physics Tools Packages + +This page lists all packages related to Physics Analysis Tools within the <a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/?cvsroot=CMSSW>CMSSW repository</a>. Links point to the package documentation. + +For additional information please visit the <a href="http://cmsdoc.cern.ch/cms/cpt/Software/html/PhysicsTools/candidates/">candidate model</a> under the <a href="http://cmsdoc.cern.ch/cms/cpt/Software/html/PhysicsTools/">Phisics Tools Web page</a> . + +- <b>Data Formats</b><br> +Generic particle candidates. Those packages are also listed under the \ref RecoPackages "Reco data format" section. + - \ref DataFormats_Candidate "Candidate": generic particle candidates definitions.<br> + - \ref DataFormats_RecoCandidate "RecoCandidate": candidates with compontents from \ref RecoPackages "Reco objects".<br> + - \ref DataFormats_HepMCCandidate "HepMCCandidate": candidates with compontents from HepMC Generator particle.<br> + +- <b>Utility packages</b><br> +Common utilities to manipulate and analyze particle candidates + - \ref PhysicsTools_Utilities "Utilities": genericl utility classes.<br> + - \ref PhysicsTools_CandUtils "CandUtils": candidate common utilities.<br> + - \ref PhysicsTools_Parser "Parser": cut string parser.<br> + - \ref PhysicsTools_PythonAnalysis "PythonAnalysis": interactive python analysis tools.<br> + +- <b>Framework module packages</b><br> +Framework module for common particle candidate manupulation + - \ref PhysicsTools_UtilAlgos "UtilAlgos": genericl framework modules.<br> + - \ref PhysicsTools_CandAlgos "CandAlgos": common framework modules for \ref PhysicsTools_Candidate "particle candidates".<br> + - \ref PhysicsTools_RecoAlgos "RecoAlgos": common framework modules for \ref RecoPackages "Reco objects".<br> + - \ref PhysicsTools_RecoCandAlgos "RecoCandAlgos": framework modules that produce \ref PhysicsTools_Candidate "particle candidates" with \ref RecoPackages "Reco" components.<br> + - \ref PhysicsTools_HepMCCandAlgos "HepMCCandAlgos": framework modules that produce \ref PhysicsTools_Candidate "particle candidates" with HepMC Generator components.<br> + +- <b>Example packages</b><br> + - \ref PhysicsTools_CandExamples "CandExamples": common analysis examples based on particle candidates.<br> + - \ref PhysicsTools_RecoExamples "RecoExamples": common analysis examples based on \ref RecoPackages "Reco objects".<br> + - \ref PhysicsTools_RecoQA "RecoQA": utilities and script to perform "standard" quality evaluation, including + object count and event size.<br> + - \ref PhysicsTools_ParallelAnalysis "ParallelAnalysis": examples of interactive analysis based on TSelector + to be used under Proof, ROOT's parallel processing system accessing EDM data.<br> + +\section contact Contact persons +- Luca Lista + +<hr> +Last updated: 2006-04-05 L.Lista +*/ diff --git a/Documentation/ReferenceManualPages/doc/PixelRecoCollections.doi b/Documentation/ReferenceManualPages/doc/PixelRecoCollections.doi new file mode 100644 index 00000000000..eab51791c25 --- /dev/null +++ b/Documentation/ReferenceManualPages/doc/PixelRecoCollections.doi @@ -0,0 +1,18 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Pixel local reconstruction</td> +</tr> +<tr> + <td><a href="classSiPixelCluster.html">SiPixelCluster</a></td> + <td><a href="DataFormats_SiPixelCluster.html">SiPixelClusterCollection</a></td> + <td><a href="RecoLocalTracker_SiPixelClusterizer.html">siPixelClusters</a></td> + <td class="description">Pixel clusters</td> + <td>V.Chiochia</td> +</tr> +<tr> + <td><a href="classSiPixelRecHit.html">SiPixelRecHit</a></rd> + <td><a href="DataFormats_TrackerRecHit2D.html">SiPixelRecHitCollection</a></td> + <td><a href="RecoLocalTracker_SiPixelRecHits.html">siPixelRecHits</a></td> + <td class="description">Pixel reconstructed hits</td> + <td>V.Chiochia</td> +</tr> + diff --git a/Documentation/ReferenceManualPages/doc/RecoData.doc b/Documentation/ReferenceManualPages/doc/RecoData.doc index 4fcaccece4d..b727e3c7e97 100755 --- a/Documentation/ReferenceManualPages/doc/RecoData.doc +++ b/Documentation/ReferenceManualPages/doc/RecoData.doc @@ -13,10 +13,9 @@ The Data Format is defined in the following package sets: \htmlinclude datatable_begin.doi -<!-- new format --> -\htmlinclude RecoLocalTrackerRECO.doi -<!-- old format --> \htmlinclude TrackRecoCollections.doi +\htmlinclude StripRecoCollections.doi +\htmlinclude PixelRecoCollections.doi \htmlinclude VertexRecoCollections.doi \htmlinclude EcalRecoCollections.doi \htmlinclude CaloJetRecoCollections.doi @@ -26,11 +25,14 @@ The Data Format is defined in the following package sets: \htmlinclude datatable_end.doi +\section status Status +Close to completion. Still some collections missing. + \section contact Contact persons - Luca Lista - Tommaso Boccali <hr> -Last updated: @DATE@ L.Lista +Last updated: 2006-06-14 L.Lista */ diff --git a/Documentation/ReferenceManualPages/doc/Reconstruction.doc b/Documentation/ReferenceManualPages/doc/Reconstruction.doc index a051d47b650..f88926aeebf 100755 --- a/Documentation/ReferenceManualPages/doc/Reconstruction.doc +++ b/Documentation/ReferenceManualPages/doc/Reconstruction.doc @@ -1,10 +1,27 @@ /*! \page Reconstruction Reconstruction Packages -This page lists all subsystems related to Reconstruction within the <a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/?cvsroot=CMSSW>CMSSW repository</a>. +This page lists all packages related to Reconstruction within the <a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/?cvsroot=CMSSW>CMSSW repository</a>. Links point to the package documentation. + +<h3>Tracking-related packages</h3> +- <b>Alignment</b><br> + - \ref Alignment_CommonAlignment "CommonAlignment"<br> + +- <b>DataFormats</b><br> + - \ref DataFormats_TrackingRecHit "TrackingRecHit"<br> + + +- <b>\ref Geometry "Geometry"</b><br> + + +<h3>Detector specific pages</h3> +- <b>\ref MuonPackages "Muon"</b> +- <b>\ref CaloPackages "Calorimetry"</b> +- <b>\ref TrackerPackages "Tracker"</b> + +<h3>Examples ofReconstruction sequences</h3> +- <b>Tracking</b>: <a href="https://twiki.cern.ch/twiki/bin/view/CMS/RoadSearch">RoadSearch track reconstruction</a> -<h3>Reconstruction Subsystems</h3> -- \ref RecoLocalTracker_Configuration "RecoLocalTracker": local tracker reconstruction \section contact Contact persons - Tommaso Boccali diff --git a/Documentation/ReferenceManualPages/doc/StripRecoCollections.doi b/Documentation/ReferenceManualPages/doc/StripRecoCollections.doi new file mode 100644 index 00000000000..e3249019070 --- /dev/null +++ b/Documentation/ReferenceManualPages/doc/StripRecoCollections.doi @@ -0,0 +1,24 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Strip local reconstruction</td> +</tr> +<tr> + <td><a href="classSiStripCluster.html">SiStripCluster</a></td> + <td><a href="DataFormats_SiStripCluster.html">edm::DetSetVector<SiStripCluster></a></td> + <td><a href="#">siStripClusters</a></td> + <td class="description">Strip clusters</td> + <td>D.Giodano</td> +</tr> +<tr> + <td><a href="classSiStripRecHit2DLocalPos.html">SiStripRecHit2DLocalPos</a></td> + <td><a href="DataFormats_TrackerRecHit2D.html">SiStripRecHit2DLocalPosCollection</a></td> + <td><a href="RecoLocalTracker_SiStripRecHitConverter.html">siStripRecHits</a></td> + <td class="description">Strip reconstructed hits</td> + <td>C.Genta</td> +</tr> +<tr> + <td><a href="classSiStripRecHit2DMatchedLocalPos.html">SiStripRecHit2DMatchedLocalPos</a></td> + <td><a href="DataFormats_TrackerRecHit2D.html">SiStripRecHit2DMatchedLocalPosCollection</a></td> + <td><a href="RecoLocalTracker_SiStripRecHitConverter.html">siStripMatchedRecHits</a></td> + <td class="description">Strip reconstructed and matched hits</td> + <td>C.Genta</td> +</tr> diff --git a/Documentation/ReferenceManualPages/doc/TrackerPackages.doc b/Documentation/ReferenceManualPages/doc/TrackerPackages.doc index f7ff03f424d..b641ea412dd 100644 --- a/Documentation/ReferenceManualPages/doc/TrackerPackages.doc +++ b/Documentation/ReferenceManualPages/doc/TrackerPackages.doc @@ -141,21 +141,16 @@ A set of tools used in track reconstruction - <b>RecoVertex</b><br> Vertexing algorithms - \ref RecoVertex_KalmanVertexFit "KalmanVertexFit"<br> - - \ref RecoVertex_AdaptiveVertexFit "AdaptiveVertexFit"<br> - - \ref RecoVertex_TrimmedKalmanVertexFinder "TrimmedKalmanVertexFinder"<br> - \ref RecoVertex_KinematicFit "KinematicFit"<br> - \ref RecoVertex_KinematicFitPrimitives "KinematicFitPrimitives"<br> - \ref RecoVertex_LinearizationPointFinders "LinearizationPointFinders"<br> - \ref RecoVertex_PrimaryVertexProducer "PrimaryVertexProducer"<br> + - \ref RecoVertex_TrimmedKalmanVertexFinder "TrimmedKalmanVertexFinder"<br> - \ref RecoVertex_VertexPrimitives "VertexPrimitives"<br> - \ref RecoVertex_VertexTools "VertexTools"<br> - <b>RecoPixelVertexing</b><br> - pixel stand-alone vertex reconstruction for HLT - - \ref RecoPixelVertexing_PixelTrackFitting "PixelTrackFitting"<br> - - \ref RecoPixelVertexing_PixelTriplets "PixelTriplets"<br> - - \ref RecoPixelVertexing_PixelVertexFinding "PixelVertexFinding"<br> - + pixel stand-alone vertex reconstruction - <b>RecoBTag</b><br> b-tagging algorithms diff --git a/Documentation/ReleaseNotes/TagLog b/Documentation/ReleaseNotes/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Documentation/ReleaseNotes/doc/ReleaseNotes010.txt b/Documentation/ReleaseNotes/doc/ReleaseNotes010.txt deleted file mode 100644 index bc9b680bf63..00000000000 --- a/Documentation/ReleaseNotes/doc/ReleaseNotes010.txt +++ /dev/null @@ -1,214 +0,0 @@ -$Id: ReleaseNotes010.txt,v 1.1 2005/09/20 14:37:49 argiro Exp $ - -CMSSW 0-1-0 Release Notes -------------------------- - -Preamble ----------- -Release notes will in the future follow a more convenient structure, with notes -for every subsystem. For the time being, we provide this top-level text file. - -1. General Remarks ------------------- - - -1.1 What to expect ------------------- - -CMSSW 010 is the first developer's release of the restructured CMS simulation/reconstruction -software. Therefore, it is targeted to developers, not end users. -No actual physics results are expected to be produced with this release. -However, we do provide some working examples and skeletons that should allow getting started in contributing to CMSSW. - -1.2 Examples ------------- - -- Skeletons: - The FWCore/Integration shows examples and the FWCore/Skeletons (which are explained in https://uimon.cern.ch/twiki/bin/view/CMS/ SkeletonCodeGenerator) will create the 'skeletons' that writes all the 'boiler plate' code and let people just fill in with their algorithms. - -- EventFilter/*RawToDigi/test - Examples of conversions from raw to digi. Run cmsRun --parameter-set *.txt - -- RecoJets/JetProducers/test/Midpoint.txt is the official CMSSW jets example. - Run "cmsRun --parameter-set Midpoint.txt " - -- RecoJets/JetProducers/test/Kt.txt is an example for Kt jets. - Run "cmsRun --parameter-set Kt.txt " - - -1.3 Bug Reports ------------------ -Please use http://savannah.cern.ch/projects/cms-bugs/ - -1.4 Find out more ------------------ -Other entry points to CMSSW documentation include the official software page: - -http://cmsdoc.cern.ch/cms/cpt/Software/html/General/ - -and the live Wiki pages: - -https://uimon.cern.ch/twiki/bin/view/CMS/WebHome - - -2. Subsystem Detail -------------------- - -Below are the detailed release notes for the subsystem for which they were provided - - -2.1 DataFormats ----------------- -This Subsystem contains Data Format definition for real data (not simulation). Implamented for the moment are: - -Digis for all the SubDets (CSCDigi, DTDigis, EcalDigi, HcalDigi, SiPixelDigi, SiStripDigi) - -RecHits for some SubDets (CaloRecHit, HcalRecHit, SiStripCluster) - -DetIds for all the SubDets (DetId, EcalDetId, HcalDetId, MuonDetId, SiPixelDetId, SiStripDetId) - - -CaloObjects: - Contains the definitions of calorimetry related EDProducts for use in the Jet Reconstructon demo. - -JetObjects: - Contains the definition of EDProducts representing Jets. Currently, only calorimeter jets are defined. Currently used in the JetReconstruction Demo. - -JetAlgorithms - Contains algorithms for reconstructing jets. - -JetProducers - Contains the EDProducers for producing jets. - -JetDemo - Contains tools needed to create the input file for the JetReconstruction Demo. - - - -2.2 Geometry ------------- - -This SubSystem contains code to build detector geometries, at various levels (flat geometry, complete one etc.) The general Structure contains some packager named Algo, containing code, and Sata, containing for example the xml files for DDD geometry. - -Records: Record definitions for EventSetup objects. - -CommonDetUnit , CommonTopology , CommonDetAlgo : - contain the port of ORCA/CommonDet geometric part - -TrackerBaseAlgo : - contains high level Tracker Geometry, which contains the numbering scheme building - -TrackerSimAlgo : - contains concrete Tracker geometry. In particular, use test/runP.txt to see a - running example - - -GeometryReaders : - This Subsystem contains various accesses to Geometry (from file, from DB etc) - -DBIdealGeometryESSource : - access to Ideal Geometry from POOL/ORA - -XMLIdealGeometryESSource : - access to Ideal Geometry from XML (DDD files) - - -2.3 CalibCalorimetry --------------------- - -This subsysem should contain ECAL and HCAl code interacting with the conditions database (CdB ). In general the Algos directories will contain pure algorithms and the Plugins directories the framework modules running such algorithms. - - * EcalAlgos : empty - * EcalPlugins : empty - * HcalAlgos : algorithms interacting with CdB - * HcalPlugins : framework modules using the algorithms - - -2.4 Framework -------------- - -FWCore/EDProduct: - Contains the minimal portion of the framework needed by EDProduct definitions. Packages defining data formats should link against this package. - This package consists of the definitions for classes that are or may be used in EDProducts, or in the wrappers of EDProducts used for persistency. - -FWCore/Framework: - Contains the bulk of the framework. Producers, analyzers, filters, etc. must link against this package. - - This package depends on FWCore/EDProduct, FWCore/ParameterSet, FWCore/ServiceRegistry, and FWCore/Utilities. -Loading FWCore/Framework will automatically load these other packages. - - This packkage contains many things: - - 1) The cmsRun executable for executing framework jobs. - - 2) The "Event" class, by which the user accesses events through "get" methods, and populates the event through "put" methods.. - - 3) The "EventSetup" (ES) system for delivering 'non-event' data (e.g. calibrations) that are relevant for the Event being processed. - - 4) Base classes used by inheritance by EDAnalyzers, EDProducers, EDFilters, ESProducers, OutputModules, and InputServices. - - 5) The EventScheduler, which runs the various services and modules in the proper order. - - 6) The Provenance information for each EDProduct in an event, divided into separate event-dependent and event-independent portions. The event independent portion is stored in a ProductRegistry. - -FWCore/Integration: - Contains inter-package tests of FWCore code. Used only internally by the framework. - -FWCore/ParameterSet: - Contains the system for interpreting run-time parameters. - - Some of the elements in a framework application can be configured at run-time by the user. Such elements are configured by a common parameter set system. To configure a cmsRun executable, the user writes a text file in the configuration language described in the section 'Informal ParameterSet language specification' of the FWCore RoadMap document. Each configurable element in the framework application is configured at construction time with parameter values supplied by a ParameterSet object. ParameterSet objects contain a collection of name/value pairs. -See the section 'The ParameterSet System' in the FWCore RoadMap document for details. - -FWCore/Services (a plug-in): - Contains specific services, input services, and modules used by the framework, in tests, examples, or in actual framework code. - -FWCore/ServiceRegistry: - The system for delivering services (i.e. application extensions that have no effect on physics). - -FWCore/Skeletons: - Contains scripts for generating working 'skeletons' of code for EDAnalyzers, EDFilters, EDProducers, ESProducers and EventSetup records. - -FWCore/Utilities: - Contains framework specific utilities. Currently this package is used only for exception and assert handling within the framework. - -IOPool/CommonService: - Holds code common to the PoolOutputModule and PoolInputService, to avoid duplication. - Will be loaded automatically when either the PoolOutputModule or PoolInputService is loaded. - -IOPool/InputService (a plug-in): - Provides an InputService (PoolInputService) to read back files written by the PoolOutputModule. - -IOPool/OutputService: (a plug-in): - Provides an OutputModule (PoolOutputModule) to make events persistent by writing them to a POOL/ROOT output file. Output EDProducts may be selected by Module label. By default, all products are output. - -IOPool/Streamer: (a plug-in) - Provides an InputService (EventStreamInput) template and OutputModule (EventStreamOutput) template that serialize and unserialize an edm::Event into a memory buffer and pass the buffer to a "tranport handler" (provided as a template parameter). The class template allows for a user defined buffer handler to be plugged into the system (e.g. network transfer protocol handler to move events from a client to a server). The package also provides a simple example for writing and reading the streamed data buffer to and from standard binary files in the filesystem. - - - - -2.5 Visualisation ------------------ - -VisFramework /VisFrameworkBase: Shared Framework-based visualisation core. Migrated from IGUANACMS. - -VisCosmics /VisCosmicsBase: New package to provide a plugin for basic cosmic visualisation. Migrated from IGUANACMS. - -VisCosmics /VisCosmicsSetup: New package to provide a setup plugin for cosmic challenge event display. Migrated from IGUANACMS. - -VisCosmics /VisCosmicsApp: New package to provide an application plugin for cosmic challenge event display. Migrated from IGUANACMS. - -VisReco /VisTracker: New package to visualize the Tracker geometry. - - -2.6 Jets --------- - -Please see - -http://physics.bu.edu/~fvarela/edm/index.html - -and - -http://www.uscms.org/LPC/lpc_jetmet/jetEdm_fernando.pdf diff --git a/Documentation/ReleaseNotes/doc/html/index.html b/Documentation/ReleaseNotes/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Documentation/ReleaseNotes/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Documentation/ReleaseNotes/doc/html/overview.html b/Documentation/ReleaseNotes/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Documentation/ReleaseNotes/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Documentation/RepositoryAndReleases/TagLog b/Documentation/RepositoryAndReleases/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/EgammaAnalysis/CSA07Skims/doc/html/index.html b/EgammaAnalysis/CSA07Skims/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EgammaAnalysis/CSA07Skims/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EgammaAnalysis/CSA07Skims/doc/html/overview.html b/EgammaAnalysis/CSA07Skims/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EgammaAnalysis/CSA07Skims/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EgammaAnalysis/Configuration/doc/html/index.html b/EgammaAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EgammaAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EgammaAnalysis/Configuration/doc/html/overview.html b/EgammaAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EgammaAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EgammaAnalysis/ElectronIDESSources/doc/html/index.html b/EgammaAnalysis/ElectronIDESSources/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EgammaAnalysis/ElectronIDESSources/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EgammaAnalysis/ElectronIDESSources/doc/html/overview.html b/EgammaAnalysis/ElectronIDESSources/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EgammaAnalysis/ElectronIDESSources/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EgammaAnalysis/PhotonIDProducers/doc/html/index.html b/EgammaAnalysis/PhotonIDProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EgammaAnalysis/PhotonIDProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EgammaAnalysis/PhotonIDProducers/doc/html/overview.html b/EgammaAnalysis/PhotonIDProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EgammaAnalysis/PhotonIDProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/Configuration/doc/html/index.html b/ElectroWeakAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/Configuration/doc/html/overview.html b/ElectroWeakAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/Skimming/doc/html/index.html b/ElectroWeakAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/Skimming/doc/html/overview.html b/ElectroWeakAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/Utilities/doc/html/index.html b/ElectroWeakAnalysis/Utilities/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/Utilities/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/Utilities/doc/html/overview.html b/ElectroWeakAnalysis/Utilities/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/Utilities/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/WENu/doc/html/index.html b/ElectroWeakAnalysis/WENu/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/WENu/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/WENu/doc/html/overview.html b/ElectroWeakAnalysis/WENu/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/WENu/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/WMuNu/doc/html/index.html b/ElectroWeakAnalysis/WMuNu/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/WMuNu/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/WMuNu/doc/html/overview.html b/ElectroWeakAnalysis/WMuNu/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/WMuNu/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/WReco/doc/html/index.html b/ElectroWeakAnalysis/WReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/WReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/WReco/doc/html/overview.html b/ElectroWeakAnalysis/WReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/WReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/ZEE/doc/html/index.html b/ElectroWeakAnalysis/ZEE/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/ZEE/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/ZEE/doc/html/overview.html b/ElectroWeakAnalysis/ZEE/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/ZEE/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/ZMuMu/doc/html/index.html b/ElectroWeakAnalysis/ZMuMu/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/ZMuMu/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/ZMuMu/doc/html/overview.html b/ElectroWeakAnalysis/ZMuMu/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/ZMuMu/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/ElectroWeakAnalysis/ZReco/doc/html/index.html b/ElectroWeakAnalysis/ZReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/ElectroWeakAnalysis/ZReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/ElectroWeakAnalysis/ZReco/doc/html/overview.html b/ElectroWeakAnalysis/ZReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/ElectroWeakAnalysis/ZReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/CSCRawToDigi/interface/CSCAnodeData.h b/EventFilter/CSCRawToDigi/interface/CSCAnodeData.h index 808b2b5e562..7681dcb90f9 100644 --- a/EventFilter/CSCRawToDigi/interface/CSCAnodeData.h +++ b/EventFilter/CSCRawToDigi/interface/CSCAnodeData.h @@ -2,7 +2,9 @@ #define CSCAnodeData_h #include <vector> #include <cassert> +#ifndef UNPCK_ONLY #include "DataFormats/CSCDigi/interface/CSCWireDigi.h" +#endif class CSCALCTHeader; #include <iostream> // get rid of when debug is gone @@ -66,9 +68,11 @@ public: /** turns on/off debug flag for this class */ static void setDebug(bool value) {debug = value;}; +#ifndef UNPCK_ONLY /// input layer is from 1 to 6 std::vector<CSCWireDigi> wireDigis(int layer) const; std::vector<std::vector<CSCWireDigi> > wireDigis() const; +#endif const CSCAnodeDataFrame & rawHit(int afeb, int tbin, int layer, int halfLayer) const { return (const CSCAnodeDataFrame &)(theDataFrames[index(afeb, tbin, layer)+halfLayer]); @@ -79,7 +83,10 @@ public: return (CSCAnodeDataFrame &)(theDataFrames[index(afeb, tbin, layer)+halfLayer]); } + +#ifndef UNPCK_ONLY void add(const CSCWireDigi &, int layer); +#endif static bool selfTest(); diff --git a/EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h b/EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h index 7c09de154a6..49814453990 100644 --- a/EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h +++ b/EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h @@ -4,11 +4,12 @@ #define CSCDCCEventData_h #include <vector> -#include <boost/dynamic_bitset.hpp> #include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" #include "EventFilter/CSCRawToDigi/interface/CSCDCCHeader.h" #include "EventFilter/CSCRawToDigi/interface/CSCDCCTrailer.h" +class BitVector; + class CSCDCCEventData { public: CSCDCCEventData(int sourceId, int nDDUs, int bx, int l1a); @@ -37,7 +38,7 @@ public: /// from the header or trailer int sizeInWords() const {return theSizeInWords;} - boost::dynamic_bitset<> pack(); + BitVector pack(); static bool debug; diff --git a/EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h b/EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h index a9a54165e7f..a5e55823cf4 100644 --- a/EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h +++ b/EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h @@ -12,7 +12,8 @@ #include "EventFilter/CSCRawToDigi/interface/CSCDDUTrailer.h" #include "EventFilter/CSCRawToDigi/interface/CSCDCCHeader.h" #include "EventFilter/CSCRawToDigi/interface/CSCDCCTrailer.h" -#include <boost/dynamic_bitset.hpp> + +class BitVector; class CSCDDUEventData { public: @@ -52,10 +53,8 @@ public: void decodeStatus() const; int sizeInWords() const {return theSizeInWords;} int size() const {return theSizeInWords*16;} ///Alex check this 16 or 64 - /// returns the binary event data - boost::dynamic_bitset<> pack(); - + BitVector pack(); static bool debug; static unsigned int errMask; diff --git a/EventFilter/CSCRawToDigi/interface/CSCEventData.h b/EventFilter/CSCRawToDigi/interface/CSCEventData.h index e4bf6e23d20..76a21cfaffd 100644 --- a/EventFilter/CSCRawToDigi/interface/CSCEventData.h +++ b/EventFilter/CSCRawToDigi/interface/CSCEventData.h @@ -17,6 +17,7 @@ class CSCTMBTrailer; class CSCWireDigi; class CSCStripDigi; class CSCComparatorOutput; +class BitVector; #include <map> #include <vector> #include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" @@ -28,8 +29,10 @@ class CSCComparatorOutput; #include "EventFilter/CSCRawToDigi/interface/CSCALCTTrailer.h" #include "EventFilter/CSCRawToDigi/interface/CSCTMBData.h" #include "EventFilter/CSCRawToDigi/interface/CSCDMBTrailer.h" +#ifndef UNPCK_ONLY #include "DataFormats/CSCDigi/interface/CSCRPCDigi.h" -#include <boost/dynamic_bitset.hpp> +#endif + class CSCEventData { public: @@ -101,13 +104,15 @@ class CSCEventData { /// routines to add digis to the data void add(const CSCStripDigi &, int layer); void add(const CSCWireDigi &, int layer); + void add(const CSCComparatorOutput &, int layer); /// this will fill the DMB header, and change all related fields in /// the DMBTrailer, ALCTHeader, and TMBHeader void setEventInformation(int bxnum, int lvl1num); /// returns the packed event data. - boost::dynamic_bitset<> pack(); + std::pair<int, unsigned short *> pack(); + BitVector packVector(); /// adds an empty ALCTHeader, trailer, and anode data void addALCTStructures(); @@ -115,7 +120,6 @@ class CSCEventData { /// might not be set in real data int chamberType() const {return theChamberType;} - static bool debug; private: diff --git a/EventFilter/CSCRawToDigi/interface/CSCTMBData.h b/EventFilter/CSCRawToDigi/interface/CSCTMBData.h index 978a1543e81..c8ca78608dd 100644 --- a/EventFilter/CSCRawToDigi/interface/CSCTMBData.h +++ b/EventFilter/CSCRawToDigi/interface/CSCTMBData.h @@ -14,8 +14,8 @@ #include "EventFilter/CSCRawToDigi/interface/CSCTMBTrailer.h" #include "EventFilter/CSCRawToDigi/interface/CSCRPCData.h" #include <bitset> -#include <boost/dynamic_bitset.hpp> +class BitVector; class CSCTMBData { @@ -43,7 +43,7 @@ class CSCTMBData { CSCRPCData & rpcData() {return theRPCData;} /// not const because it sets size int TMBTrailer - boost::dynamic_bitset<> pack(); + BitVector pack(); std::bitset<22> calCRC22(const std::vector< std::bitset<16> >& datain); std::bitset<22> nextCRC22_D16(const std::bitset<16>& D, const std::bitset<22>& C); int TMBCRCcalc(); diff --git a/EventFilter/CSCRawToDigi/src/CSCAnodeData.cc b/EventFilter/CSCRawToDigi/src/CSCAnodeData.cc index 0682a153f5a..2fe54faf962 100644 --- a/EventFilter/CSCRawToDigi/src/CSCAnodeData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCAnodeData.cc @@ -89,31 +89,4 @@ std::vector < std::vector<CSCWireDigi> > CSCAnodeData::wireDigis() const { return result; } -void CSCAnodeData::add(const CSCWireDigi & digi, int layer) { - - int wireGroup = digi.getWireGroup(); - int bxn=digi.getBeamCrossingTag(); - int alctBoard = (wireGroup-1) / 16; - int localGroup = (wireGroup-1) % 16; - - // crash if there's a bad strip number, but don't freak out - // if a time bin is out of range - // assert(alctBoard < nAFEBs_); - if(alctBoard > nAFEBs_) { - edm::LogError("CSCAnodeData") << "Bad Wire Number for this digi."; - return; - } - - if(bxn >= 0 && bxn < nTimeBins_) { - // 12 16-bit words per time bin, two per layer - // wiregroups 0-7 go on the first line, 8-15 go on the 2nd. - unsigned halfLayer = (localGroup > 7); - unsigned bitNumber = localGroup % 8; - // and pack it in the 8 bits allocated - rawHit(alctBoard, bxn, layer, halfLayer).addHit(bitNumber); - } else { - edm::LogWarning("CSCAnodeData")<< "warning: not saving anode data in bx " << bxn - << ": out of range "; - } -} diff --git a/EventFilter/CSCRawToDigi/src/CSCCFEBData.cc b/EventFilter/CSCRawToDigi/src/CSCCFEBData.cc index c1094d91b2e..934a23b2f6f 100644 --- a/EventFilter/CSCRawToDigi/src/CSCCFEBData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCCFEBData.cc @@ -71,17 +71,6 @@ CSCCFEBData::CSCCFEBData(unsigned number, bool sixteenSamples) theSize = theNumberOfSamples*100; } -void CSCCFEBData::add(const CSCStripDigi & digi, int layer) { - for(unsigned itime = 0; itime < theNumberOfSamples; ++itime) { - unsigned channel = (digi.getStrip()-1) % 16 + 1; - std::vector<int> scaCounts = digi.getADCCounts(); - unsigned value = scaCounts[itime] & 0xFFF; // 12-bit - // assume it's good, since we're working with simulation - const CSCCFEBTimeSlice * slice = timeSlice(itime); - assert(slice != 0); - slice->timeSample(layer, channel)->adcCounts = value; - } -} const CSCCFEBTimeSlice * CSCCFEBData::timeSlice(unsigned i) const { const CSCCFEBTimeSlice * result; diff --git a/EventFilter/CSCRawToDigi/src/CSCDCCEventData.cc b/EventFilter/CSCRawToDigi/src/CSCDCCEventData.cc index fd707d5dc09..23df5ebf39c 100644 --- a/EventFilter/CSCRawToDigi/src/CSCDCCEventData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCDCCEventData.cc @@ -13,7 +13,6 @@ #include <iostream> #include <vector> #include <cstdio> -#include <boost/dynamic_bitset.hpp> bool CSCDCCEventData::debug = false; @@ -91,18 +90,4 @@ bool CSCDCCEventData::check() const { return theDCCHeader.check() && theDCCTrailer.check(); } -boost::dynamic_bitset<> CSCDCCEventData::pack() { - - boost::dynamic_bitset<> result; - boost::dynamic_bitset<> dccHeader( theDCCHeader.sizeInWords()*16, *(const unsigned int *)&theDCCHeader); - result = dccHeader; - - for(size_t i = 0; i < theDDUData.size(); ++i) { - result &= theDDUData[i].pack(); - } - boost::dynamic_bitset<> dccTrailer( theDCCTrailer.sizeInWords()*16, *(const unsigned *)&theDCCTrailer); - result &= dccTrailer; - - return result; -} diff --git a/EventFilter/CSCRawToDigi/src/CSCDDUEventData.cc b/EventFilter/CSCRawToDigi/src/CSCDDUEventData.cc index aadc386119b..d2ef59cbee9 100644 --- a/EventFilter/CSCRawToDigi/src/CSCDDUEventData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCDDUEventData.cc @@ -218,18 +218,3 @@ bool CSCDDUEventData::check() const { return theDDUHeader.check() && theDDUTrailer.check(); } -boost::dynamic_bitset<> CSCDDUEventData::pack() { - - boost::dynamic_bitset<> result; - boost::dynamic_bitset<> dduHeader( theDDUHeader.sizeInWords()*16, *(const unsigned*)&theDDUHeader); - result = dduHeader; - - for(unsigned int i = 0; i < theData.size(); ++i) { - result &= theData[i].pack(); - } - - boost::dynamic_bitset<> dduTrailer( theDDUTrailer.sizeInWords()*16, *(const unsigned*)&theDDUTrailer); - result &= dduTrailer; - - return result; -} diff --git a/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc b/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc deleted file mode 100644 index a257398eb52..00000000000 --- a/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.cc +++ /dev/null @@ -1,152 +0,0 @@ -/** \file - * - * $Date: 2006/11/17 22:30:47 $ - * $Revision: 1.2 $ - * \author A. Tumanov - Rice - */ - -#include "DataFormats/MuonDetId/interface/CSCDetId.h" -#include "EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" - -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "CondFormats/CSCObjects/interface/CSCReadoutMappingFromFile.h" - -using namespace edm; -using namespace std; - -CSCDigiToRaw::CSCDigiToRaw(){} - - -CSCDigiToRaw::~CSCDigiToRaw(){} - -map<CSCDetId, CSCEventData> -CSCDigiToRaw::fillChamberDataMap(const CSCStripDigiCollection & stripDigis, - const CSCWireDigiCollection & wireDigis, - CSCReadoutMappingFromFile & mapping) { - - map<CSCDetId, CSCEventData> chamberMap; - ///iterate over chambers with strip digis in them - for (CSCStripDigiCollection::DigiRangeIterator j=stripDigis.begin(); j!=stripDigis.end(); j++) { - CSCDetId const cscDetId=(*j).first; - CSCDetId chamberID =cscDetId.chamberId(); - /// find the entry into the map - map<CSCDetId, CSCEventData>::iterator chamberMapItr = chamberMap.find(chamberID); - if(chamberMapItr == chamberMap.end()) { - /// make an entry, telling it the correct chamberType - int istation = cscDetId.station(); - int iring = cscDetId.ring(); - int chamberType = 2 * istation + iring; // i=2S+R - if ( istation == 1 ) { - --chamberType; // ring 1R -> i=1+R (2S+R-1=1+R for S=1) - if ( chamberType > 4 ) { - chamberType = 1; // But ring 1A (R=4) -> i=1 - } - } - chamberMapItr = chamberMap.insert(pair<CSCDetId, CSCEventData>(chamberID, CSCEventData(chamberType))).first; - } - CSCEventData & cscData = chamberMapItr->second; - cscData.dmbHeader().setCrateAddress(mapping.crate(cscDetId), mapping.dmbId(cscDetId)); - ///add strip digis to that chamber - std::vector<CSCStripDigi>::const_iterator digiItr = (*j).second.first; - std::vector<CSCStripDigi>::const_iterator last = (*j).second.second; - for( ; digiItr != last; ++digiItr) { - cscData.add(*digiItr, cscDetId.layer() ); - } - } - ///repeat the same for wire digis - for (CSCWireDigiCollection::DigiRangeIterator j=wireDigis.begin(); j!=wireDigis.end(); j++) { - CSCDetId const cscDetId=(*j).first; - CSCDetId chamberID =cscDetId.chamberId(); - /// find the entry into the map - map<CSCDetId, CSCEventData>::iterator chamberMapItr = chamberMap.find(chamberID); - if(chamberMapItr == chamberMap.end()) { - /// make an entry, telling it the correct chamberType - int istation = cscDetId.station(); - int iring = cscDetId.ring(); - int chamberType = 2 * istation + iring; // i=2S+R - if ( istation == 1 ) { - --chamberType; // ring 1R -> i=1+R (2S+R-1=1+R for S=1) - if ( chamberType > 4 ) { - chamberType = 1; // But ring 1A (R=4) -> i=1 - } - } - chamberMapItr = chamberMap.insert(pair<CSCDetId, CSCEventData>(chamberID, CSCEventData(chamberType))).first; - } - CSCEventData & cscData = chamberMapItr->second; - cscData.dmbHeader().setCrateAddress(mapping.crate(cscDetId), mapping.dmbId(cscDetId)); - ///add strip digis to that chamber - std::vector<CSCWireDigi>::const_iterator digiItr = (*j).second.first; - std::vector<CSCWireDigi>::const_iterator last = (*j).second.second; - for( ; digiItr != last; ++digiItr) { - cscData.add(*digiItr, cscDetId.layer() ); - } - } - - return chamberMap; - -} - - - - -void CSCDigiToRaw::createFedBuffers(const CSCStripDigiCollection& stripDigis, - const CSCWireDigiCollection& wireDigis, - FEDRawDataCollection& fed_buffers, - CSCReadoutMappingFromFile& mapping){ - - ///bits of code from ORCA/Muon/METBFormatter - thanks, Rick:)! - - ///get fed object from fed_buffers - /// make a map from the index of a chamber to the event data from it - map<CSCDetId, CSCEventData> chamberDataMap - = fillChamberDataMap(stripDigis, wireDigis, mapping); - - - int l1a=1; ///need to add increments or get it from lct digis - int bx = 0;///same as above - int startingFED = FEDNumbering::getCSCFEDIds().first; - - for (int idcc=FEDNumbering::getCSCFEDIds().first-startingFED; - idcc<=FEDNumbering::getCSCFEDIds().second-startingFED;idcc++) { - ///idcc goes from 0 to 7 - /// @@ if ReadoutMapping changes, this'll have to change - /// DCCs 1, 2,4,5have 5 DDUs. Otherwise, 4 - ///int nDDUs = (idcc < 2) || (idcc ==4) || (idcc ==5) - /// ? 5 : 4; - ///@@ WARNING some DCCs only have 4 DDUs, but I'm giving them all 5, for now - int nDDUs = 5; - CSCDCCEventData dccEvent(idcc, nDDUs, bx, l1a); - /// for every chamber with data, add to a DDU in this DCC Event - for(map<CSCDetId, CSCEventData>::iterator chamberItr = chamberDataMap.begin(); - chamberItr != chamberDataMap.end(); ++chamberItr) { - int indexDCC = mapping.DCC(chamberItr->first); - if (idcc==indexDCC) { ///fill the right dcc - int indexDDU = mapping.DDU(chamberItr->first); ///get ddu index based on ChamberId - dccEvent.dduData()[indexDDU].add(chamberItr->second); - FEDRawData * rawData = new FEDRawData(dccEvent.pack().size()); - unsigned char * data = rawData->data(); - for (unsigned int i=0;i<dccEvent.pack().size();i++) { - data[8*i] = ((dccEvent.pack())[8*i]<<7)&& - ((dccEvent.pack())[8*i+1]<<6)&& - ((dccEvent.pack())[8*i+2]<<5)&& - ((dccEvent.pack())[8*i+3]<<4)&& - ((dccEvent.pack())[8*i+4]<<3)&& - ((dccEvent.pack())[8*i+5]<<2)&& - ((dccEvent.pack())[8*i+6]<<2)&& - ((dccEvent.pack())[8*i+7]); - } - FEDRawData& fedRawData = fed_buffers.FEDData(startingFED+idcc); - fedRawData = *rawData; - } - } - } -} - - - diff --git a/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h b/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h deleted file mode 100644 index 013a46e510c..00000000000 --- a/EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef EventFilter_CSCDigiToRaw_h -#define EventFilter_CSCDigiToRaw_h - -/** \class CSCDigiToRaw - * - * $Date: 2006/11/17 22:30:47 $ - * $Revision: 1.2 $ - * \author A. Tumanov - Rice - */ - -#include <FWCore/Framework/interface/EDProducer.h> -#include <DataFormats/CSCDigi/interface/CSCStripDigiCollection.h> -#include <DataFormats/CSCDigi/interface/CSCWireDigiCollection.h> - -class FEDRawDataCollection; -class CSCReadoutMappingFromFile; -class CSCEventData; -class CSCDigiToRaw { - public: - /// Constructor - CSCDigiToRaw(); - - /// Destructor - virtual ~CSCDigiToRaw(); - - /// Take a vector of digis and fill the FEDRawDataCollection - void createFedBuffers(const CSCStripDigiCollection& stripDigis, - const CSCWireDigiCollection& wireDigis, - FEDRawDataCollection& fed_buffers, - CSCReadoutMappingFromFile& theMapping); - - std::map <CSCDetId, CSCEventData> fillChamberDataMap(const CSCStripDigiCollection& stripDigis, - const CSCWireDigiCollection& wireDigis, - CSCReadoutMappingFromFile& theMapping); - - private: - -}; -#endif diff --git a/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.cc b/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.cc deleted file mode 100644 index eb1f71f7d46..00000000000 --- a/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.cc +++ /dev/null @@ -1,50 +0,0 @@ -/** \file - * - * $Date: 2006/11/17 22:30:47 $ - * $Revision: 1.2 $ - * \author A. Tumanov - Rice - */ - -#include <EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h> -#include <EventFilter/CSCRawToDigi/src/CSCDigiToRaw.h> -#include <DataFormats/FEDRawData/interface/FEDRawDataCollection.h> -#include <DataFormats/CSCDigi/interface/CSCStripDigiCollection.h> -#include <DataFormats/CSCDigi/interface/CSCWireDigiCollection.h> -#include <FWCore/Framework/interface/Handle.h> -#include <FWCore/Framework/interface/Event.h> -#include "CondFormats/CSCObjects/interface/CSCReadoutMappingFromFile.h" - -using namespace edm; -using namespace std; - -CSCDigiToRawModule::CSCDigiToRawModule(const edm::ParameterSet & pset): - packer(new CSCDigiToRaw) { - theMapping = CSCReadoutMappingFromFile(pset); - produces<FEDRawDataCollection>("CSCRawData"); -} - - -CSCDigiToRawModule::~CSCDigiToRawModule(){ - delete packer; -} - - -void CSCDigiToRawModule::produce(Event & e, const EventSetup& c){ - - - auto_ptr<FEDRawDataCollection> fed_buffers(new FEDRawDataCollection); - // Take digis from the event - Handle<CSCStripDigiCollection> stripDigis; - e.getByLabel("MuonCSCStripDigi", stripDigis); - Handle<CSCWireDigiCollection> wireDigis; - e.getByLabel("MuonCSCWireDigis", wireDigis); - - - // Create the packed data - packer->createFedBuffers(*stripDigis, *wireDigis, *(fed_buffers.get()), theMapping); - - // put the raw data to the event - e.put(fed_buffers, "CSCRawData"); -} - - diff --git a/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h b/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h deleted file mode 100644 index 41e223c08e2..00000000000 --- a/EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef EventFilter_CSCDigiToRawModule_h -#define EventFilter_CSCDigiToRawModule_h - -/** \class CSCDigiToRawModule - * - * $Date: 2006/11/17 22:30:47 $ - * $Revision: 1.2 $ - * \author A. Tumanov - Rice - */ - -#include <FWCore/Framework/interface/EDProducer.h> -#include "CondFormats/CSCObjects/interface/CSCReadoutMappingFromFile.h" - -class CSCDigiToRaw; - -class CSCDigiToRawModule : public edm::EDProducer { - public: - /// Constructor - CSCDigiToRawModule(const edm::ParameterSet & pset); - - /// Destructor - virtual ~CSCDigiToRawModule(); - - // Operations - virtual void produce( edm::Event&, const edm::EventSetup& ); - - private: - CSCDigiToRaw * packer; - CSCReadoutMappingFromFile theMapping; - -}; -#endif - - diff --git a/EventFilter/CSCRawToDigi/src/CSCEventData.cc b/EventFilter/CSCRawToDigi/src/CSCEventData.cc index 3c1cebda51f..4040a8f18f1 100644 --- a/EventFilter/CSCRawToDigi/src/CSCEventData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCEventData.cc @@ -301,29 +301,6 @@ void CSCEventData::createALCTClasses() { } -void CSCEventData::add(const CSCStripDigi & digi, int layer) { - //@@ need special logic here for ME11 - unsigned cfeb = (digi.getStrip()-1)/16; - bool sixteenSamples = false; - if (digi.getADCCounts().size()==16) sixteenSamples = true; - if(theCFEBData[cfeb] == 0) { - theCFEBData[cfeb] = new CSCCFEBData(cfeb, sixteenSamples); - theDMBHeader.addCFEB(cfeb); - } - theCFEBData[cfeb]->add(digi, layer); -} - - -void CSCEventData::add(const CSCWireDigi & digi, int layer) { - if(theAnodeData == NULL) { - createALCTClasses(); - } - theAnodeData->add(digi, layer); -} - - - - std::ostream & operator<<(std::ostream & os, const CSCEventData & evt) { for(int ilayer = 1; ilayer <= 6; ++ilayer) { @@ -336,39 +313,3 @@ std::ostream & operator<<(std::ostream & os, const CSCEventData & evt) { return os; } -boost::dynamic_bitset<> CSCEventData::pack() { - - boost::dynamic_bitset<> result; - boost::dynamic_bitset<> dmbHeader( theDMBHeader.sizeInWords()*16, *(const unsigned *)&theDMBHeader); - result = dmbHeader; - - if(theALCTHeader != NULL) { - boost::dynamic_bitset<> alctHeader(theALCTHeader->sizeInWords()*16, *theALCTHeader->data()); - result &=alctHeader; - } - if(theAnodeData != NULL) { - boost::dynamic_bitset<> anodeData(theAnodeData->sizeInWords()*16, *theAnodeData->data()); - result &= anodeData; - } - if(theALCTTrailer != NULL) { - boost::dynamic_bitset<> alctTrailer(theALCTTrailer->sizeInWords()*16, *theALCTTrailer->data()); - result &= alctTrailer; - } - - if(theTMBData != NULL) { - result &= theTMBData->pack(); - } - - for(int icfeb = 0; icfeb < 5; ++icfeb) { - if(theCFEBData[icfeb] != NULL) { - boost::dynamic_bitset<> cfebData( theCFEBData[icfeb]->sizeInWords()*16, *theCFEBData[icfeb]->data()); - result &= cfebData; - } - } - - boost::dynamic_bitset<> dmbTrailer( theDMBTrailer.sizeInWords()*16, *(const unsigned*)&theDMBTrailer); - result &= dmbTrailer; - - return result; -} - diff --git a/EventFilter/CSCRawToDigi/src/CSCTMBData.cc b/EventFilter/CSCRawToDigi/src/CSCTMBData.cc index b66f724469a..2306be5a72f 100644 --- a/EventFilter/CSCRawToDigi/src/CSCTMBData.cc +++ b/EventFilter/CSCRawToDigi/src/CSCTMBData.cc @@ -16,7 +16,6 @@ #include <iostream> #include <bitset> #include <cstdio> -#include <boost/dynamic_bitset.hpp> bool CSCTMBData::debug =false; @@ -235,15 +234,3 @@ std::bitset<22> CSCTMBData::nextCRC22_D16(const std::bitset<16>& D, return NewCRC; } - -boost::dynamic_bitset<> CSCTMBData::pack() { - boost::dynamic_bitset<> result(theTMBHeader.sizeInWords()*16,*(const unsigned*)&theTMBHeader); - boost::dynamic_bitset<> clctData(theCLCTData.sizeInWords()*16, (const unsigned)*theCLCTData.data()); - result &= clctData; - int finalSize = result.size()/16 + theTMBTrailer.sizeInWords(); //size() returns # of bits - - theTMBTrailer.setWordCount(finalSize); - boost::dynamic_bitset<> tmbTrailer( theTMBTrailer.sizeInWords()*16, *(const unsigned*)&theTMBTrailer); - result &= tmbTrailer; - return result; -} diff --git a/EventFilter/CSCRawToDigi/src/SealModule.cc b/EventFilter/CSCRawToDigi/src/SealModule.cc index 952f78d0416..7368383ffae 100644 --- a/EventFilter/CSCRawToDigi/src/SealModule.cc +++ b/EventFilter/CSCRawToDigi/src/SealModule.cc @@ -2,9 +2,7 @@ #include "FWCore/Framework/interface/MakerMacros.h" #include <EventFilter/CSCRawToDigi/interface/CSCDCCUnpacker.h> #include <EventFilter/CSCRawToDigi/interface/DigiAnalyzer.h> -#include <EventFilter/CSCRawToDigi/src/CSCDigiToRawModule.h> DEFINE_FWK_MODULE(CSCDCCUnpacker); DEFINE_ANOTHER_FWK_MODULE(DigiAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCDigiToRawModule); diff --git a/EventFilter/CastorRawToDigi/doc/html/index.html b/EventFilter/CastorRawToDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/CastorRawToDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/CastorRawToDigi/doc/html/overview.html b/EventFilter/CastorRawToDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/CastorRawToDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/Configuration/doc/html/index.html b/EventFilter/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/Configuration/doc/html/overview.html b/EventFilter/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/Cosmics/doc/html/index.html b/EventFilter/Cosmics/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/Cosmics/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/Cosmics/doc/html/overview.html b/EventFilter/Cosmics/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/Cosmics/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/DTTFRawToDigi/doc/html/index.html b/EventFilter/DTTFRawToDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/DTTFRawToDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/DTTFRawToDigi/doc/html/overview.html b/EventFilter/DTTFRawToDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/DTTFRawToDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/ESDigiToRaw/doc/html/index.html b/EventFilter/ESDigiToRaw/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/ESDigiToRaw/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/ESDigiToRaw/doc/html/overview.html b/EventFilter/ESDigiToRaw/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/ESDigiToRaw/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/ESRawToDigi/doc/html/index.html b/EventFilter/ESRawToDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/ESRawToDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/ESRawToDigi/doc/html/overview.html b/EventFilter/ESRawToDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/ESRawToDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/EcalDigiToRaw/doc/html/index.html b/EventFilter/EcalDigiToRaw/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/EcalDigiToRaw/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/EcalDigiToRaw/doc/html/overview.html b/EventFilter/EcalDigiToRaw/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/EcalDigiToRaw/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/EcalRawToDigiDev/doc/html/index.html b/EventFilter/EcalRawToDigiDev/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/EcalRawToDigiDev/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/EcalRawToDigiDev/doc/html/overview.html b/EventFilter/EcalRawToDigiDev/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/EcalRawToDigiDev/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/FEDInterface/doc/html/index.html b/EventFilter/FEDInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/FEDInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/FEDInterface/doc/html/overview.html b/EventFilter/FEDInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/FEDInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/GctRawToDigi/BuildFile b/EventFilter/GctRawToDigi/BuildFile deleted file mode 100644 index 17609ef75b2..00000000000 --- a/EventFilter/GctRawToDigi/BuildFile +++ /dev/null @@ -1,10 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<flags SEAL_PLUGIN_NAME="EventFilterGctRawToDigi"> -<export> - <lib name=EventFilterGctRawToDigi> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> -</export> diff --git a/EventFilter/GctRawToDigi/src/GctUnpacker.cc b/EventFilter/GctRawToDigi/src/GctUnpacker.cc deleted file mode 100644 index e002c5dc273..00000000000 --- a/EventFilter/GctRawToDigi/src/GctUnpacker.cc +++ /dev/null @@ -1,65 +0,0 @@ -#include "EventFilter/GctRawToDigi/src/GctUnpacker.h" - - -GctUnpacker::GctUnpacker(const edm::ParameterSet& iConfig) { - //register your products -/* Examples - produces<ExampleData2>(); - - //if do put with a label - produces<ExampleData2>("label"); -*/ - //now do what ever other initialization is needed - -} - - -GctUnpacker::~GctUnpacker() -{ - - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) - -} - - -// -// member functions -// - -// ------------ method called to produce the data ------------ -void -GctUnpacker::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; -/* This is an event example - //Read 'ExampleData' from the Event - Handle<ExampleData> pIn; - iEvent.getByLabel("example",pIn); - - //Use the ExampleData to create an ExampleData2 which - // is put into the Event - std::auto_ptr<ExampleData2> pOut(new ExampleData2(*pIn)); - iEvent.put(pOut); -*/ - -/* this is an EventSetup example - //Read SetupData from the SetupRecord in the EventSetup - ESHandle<SetupData> pSetup; - iSetup.get<SetupRecord>().get(pSetup); -*/ -} - -// ------------ method called once each job just before starting event loop ------------ -void -GctUnpacker::beginJob(const edm::EventSetup&) -{ -} - -// ------------ method called once each job just after ending the event loop ------------ -void -GctUnpacker::endJob() { -} - -//define this as a plug-in -DEFINE_FWK_MODULE(GctUnpacker); diff --git a/EventFilter/GctRawToDigi/src/GctUnpacker.h b/EventFilter/GctRawToDigi/src/GctUnpacker.h deleted file mode 100644 index 4a1a96b17fb..00000000000 --- a/EventFilter/GctRawToDigi/src/GctUnpacker.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef GctUnpacker_h -#define GctUnpacker_h - -// -*- C++ -*- -// -// Package: GctUnpacker -// Class: GctUnpacker -// -/**\class GctUnpacker GctUnpacker.cc GctRawToDigi/GctUnpacker/src/GctUnpacker.cc - - Description: <one line class summary> - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Jim Brooke -// Created: Wed Nov 1 11:57:10 CET 2006 -// $Id$ -// -// - - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -// -// class decleration -// - -class GctUnpacker : public edm::EDProducer { - public: - explicit GctUnpacker(const edm::ParameterSet&); - ~GctUnpacker(); - - private: - virtual void beginJob(const edm::EventSetup&) ; - virtual void produce(edm::Event&, const edm::EventSetup&); - virtual void endJob() ; - - // ----------member data --------------------------- -}; - -#endif diff --git a/EventFilter/Goodies/doc/html/index.html b/EventFilter/Goodies/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/Goodies/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/Goodies/doc/html/overview.html b/EventFilter/Goodies/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/Goodies/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/L1GlobalTriggerRawToDigi/BuildFile b/EventFilter/L1GlobalTriggerRawToDigi/BuildFile deleted file mode 100644 index 211380c5b38..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/BuildFile +++ /dev/null @@ -1,14 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=DataFormats/FEDRawData> -<use name=DataFormats/L1GlobalMuonTrigger> -<flags SEAL_PLUGIN_NAME="EventFilterL1GlobalTriggerRawToDigi"> -<export> - <lib name=EventFilterL1GlobalTriggerRawToDigi> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=DataFormats/FEDRawData> - <use name=DataFormats/L1GlobalMuonTrigger> -</export> diff --git a/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h b/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h deleted file mode 100644 index c0292dc9e83..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h +++ /dev/null @@ -1,53 +0,0 @@ -// -/**\class L1GTDigiToRaw - - Description: generate raw data from digis - for testing pouposes - -*/ -// -// Author: Ivan Mikulec -// Created: Fri Sep 29 17:10:49 CEST 2006 -// -#ifndef EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h -#define EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -// -// class decleration -// -class FEDRawDataCollection; -class L1MuGMTReadoutRecord; -class L1MuGMTReadoutCollection; - -using namespace std; - -class L1GTDigiToRaw : public edm::EDProducer { - public: - explicit L1GTDigiToRaw(const edm::ParameterSet&); - ~L1GTDigiToRaw(); - - private: - virtual void beginJob(const edm::EventSetup&) {} - virtual void produce(edm::Event&, const edm::EventSetup&); - virtual void endJob() {} - - void pack(L1MuGMTReadoutCollection const*, auto_ptr<FEDRawDataCollection>&); - unsigned packGTFE(unsigned char*); - unsigned packGMT(L1MuGMTReadoutRecord const&, unsigned char*); - - // ----------member data --------------------------- - -}; - -#endif // EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h diff --git a/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h b/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h deleted file mode 100644 index 22cfd7033dd..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h +++ /dev/null @@ -1,49 +0,0 @@ -// -/**\class L1GlobalTriggerRawToDigi - - Description: generate raw data from digis - for testing pouposes - -*/ -// -// Author: Ivan Mikulec -// Created: Fri Sep 29 17:10:49 CEST 2006 -// -#ifndef EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h -#define EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -// -// class decleration -// -class L1MuGMTReadoutCollection; - -using namespace std; - -class L1GlobalTriggerRawToDigi : public edm::EDProducer { - public: - explicit L1GlobalTriggerRawToDigi(const edm::ParameterSet&); - ~L1GlobalTriggerRawToDigi(); - - private: - virtual void beginJob(const edm::EventSetup&) {} - virtual void produce(edm::Event&, const edm::EventSetup&); - virtual void endJob() {} - - void unpackGMT(const unsigned char*, auto_ptr<L1MuGMTReadoutCollection>&); - - // ----------member data --------------------------- - -}; - -#endif // EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h diff --git a/EventFilter/L1GlobalTriggerRawToDigi/src/L1GTDigiToRaw.cc b/EventFilter/L1GlobalTriggerRawToDigi/src/L1GTDigiToRaw.cc deleted file mode 100644 index ad0854f78eb..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/src/L1GTDigiToRaw.cc +++ /dev/null @@ -1,157 +0,0 @@ -#include "EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDHeader.h" -#include "DataFormats/FEDRawData/interface/FEDTrailer.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTExtendedCand.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h" - -L1GTDigiToRaw::L1GTDigiToRaw(const edm::ParameterSet& ps) { - produces<FEDRawDataCollection>(); -} - - -L1GTDigiToRaw::~L1GTDigiToRaw() {} - - -// -// member functions -// - -// ------------ method called to produce the data ------------ -void -L1GTDigiToRaw::produce(edm::Event& e, const edm::EventSetup& es) { - edm::Handle<L1MuGMTReadoutCollection> gmtrc_handle; - e.getByType(gmtrc_handle); - L1MuGMTReadoutCollection const* gmtrc = gmtrc_handle.product(); - - auto_ptr<FEDRawDataCollection> gtrd(new FEDRawDataCollection); - pack(gmtrc,gtrd); - e.put(gtrd); -} - - -void L1GTDigiToRaw::pack(L1MuGMTReadoutCollection const* digis, auto_ptr<FEDRawDataCollection>& rawCol){ - - FEDRawData& raw = rawCol->FEDData(FEDNumbering::getTriggerGTPFEDIds().first); - raw.resize(1480); - unsigned char* p = raw.data(); - // to do: set eventNr, bxNr., version in the generated header - FEDHeader::set(p, 1, 0, 0, FEDNumbering::getTriggerGTPFEDIds().first, 0, false); - p+=8; - unsigned gtfesize = 0; - gtfesize = packGTFE(p); - p+=gtfesize; - - unsigned gmtsize = 0; - for(int ibx=-1; ibx<=1; ibx++) { - L1MuGMTReadoutRecord const& gmtrr = digis->getRecord(ibx); - gmtsize = packGMT(gmtrr,p); - p+=gmtsize; - } - - // to do: add crc, evt_stat... - FEDTrailer::set(p, (8+gtfesize+3*gmtsize+8)/8, 0, 0, 0, false); - -} - -unsigned L1GTDigiToRaw::packGTFE(unsigned char* chp) { - const unsigned SIZE = 16; - unsigned* p = (unsigned*) chp; - // setup version - *p++ = 0; - // bxnr(0), length, boardID(?) - *p++ = (SIZE<<16); - // total triggenr(0) - *p++ = 0; - // active boards (GMT) - *p++ = (8<<16); - - return SIZE; -} - -unsigned L1GTDigiToRaw::packGMT(L1MuGMTReadoutRecord const& gmtrr, unsigned char* chp) { - const unsigned SIZE=128; - memset(chp,0,SIZE); - unsigned* p = (unsigned*) chp; - // event number + bcerr - *p++ = (gmtrr.getEvNr()&0xffffff) | ((gmtrr.getBCERR()&0xff)<<24); - // bx number, bx in event, length(?), board-id(?) - *p++ = (gmtrr.getBxNr()&0xfff) | ((gmtrr.getBxInEvent()&0xf)<<12); - - vector<L1MuRegionalCand> vrc; - vector<L1MuRegionalCand>::const_iterator irc; - unsigned* pp = p; - - vrc = gmtrr.getDTBXCands(); - pp = p; - for(irc=vrc.begin(); irc!=vrc.end(); irc++) { - *pp++ = (*irc).getDataWord(); - } - p+=4; - - vrc = gmtrr.getBrlRPCCands(); - pp = p; - for(irc=vrc.begin(); irc!=vrc.end(); irc++) { - *pp++ = (*irc).getDataWord(); - } - p+=4; - - vrc = gmtrr.getCSCCands(); - pp = p; - for(irc=vrc.begin(); irc!=vrc.end(); irc++) { - *pp++ = (*irc).getDataWord(); - } - p+=4; - - vrc = gmtrr.getFwdRPCCands(); - pp = p; - for(irc=vrc.begin(); irc!=vrc.end(); irc++) { - *pp++ = (*irc).getDataWord(); - } - p+=4; - - vector<L1MuGMTExtendedCand> vgc; - vector<L1MuGMTExtendedCand>::const_iterator igc; - - vgc = gmtrr.getGMTBrlCands(); - pp = p; - for(igc=vgc.begin(); igc!=vgc.end(); igc++) { - *pp++ = (*igc).getDataWord(); - } - p+=4; - - vgc = gmtrr.getGMTFwdCands(); - pp = p; - for(igc=vgc.begin(); igc!=vgc.end(); igc++) { - *pp++ = (*igc).getDataWord(); - } - p+=4; - - vgc = gmtrr.getGMTCands(); - pp = p; - for(igc=vgc.begin(); igc!=vgc.end(); igc++) { - *pp++ = (*igc).getDataWord(); - } - p+=4; - - unsigned char* chpp; - - vgc = gmtrr.getGMTBrlCands(); - chpp = (unsigned char*) p; - for(igc=vgc.begin(); igc!=vgc.end(); igc++) { - *chpp++ = (*igc).rank(); - } - p++; - - vgc = gmtrr.getGMTFwdCands(); - chpp = (unsigned char*) p; - for(igc=vgc.begin(); igc!=vgc.end(); igc++) { - *chpp++ = (*igc).rank(); - } - p++; - - return SIZE; -} - diff --git a/EventFilter/L1GlobalTriggerRawToDigi/src/L1GlobaTriggerRawToDigi.cc b/EventFilter/L1GlobalTriggerRawToDigi/src/L1GlobaTriggerRawToDigi.cc deleted file mode 100644 index 69ee9971f2e..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/src/L1GlobaTriggerRawToDigi.cc +++ /dev/null @@ -1,86 +0,0 @@ -#include "EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDHeader.h" -#include "DataFormats/FEDRawData/interface/FEDTrailer.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTExtendedCand.h" -#include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h" - -L1GlobalTriggerRawToDigi::L1GlobalTriggerRawToDigi(const edm::ParameterSet& ps) { - // produces<L1GlobalTriggerReadoutRecord>(); - produces<L1MuGMTReadoutCollection>(); -} - - -L1GlobalTriggerRawToDigi::~L1GlobalTriggerRawToDigi() {} - - -// -// member functions -// - -// ------------ method called to produce the data ------------ -void -L1GlobalTriggerRawToDigi::produce(edm::Event& e, const edm::EventSetup& es) { - edm::Handle<FEDRawDataCollection> fed_handle; - e.getByType(fed_handle); - const FEDRawData& raw = (fed_handle.product())->FEDData(FEDNumbering::getTriggerGTPFEDIds().first); - - // get pointer to the GMT block (tmp solution) - const unsigned char* p = raw.data(); - p+=8; // skip header - p+=16; // skip GTFE block (later need to determine from here the active boards) - - auto_ptr<L1MuGMTReadoutCollection> gmtrc(new L1MuGMTReadoutCollection); - unpackGMT(p,gmtrc); - e.put(gmtrc); -} - - - -void L1GlobalTriggerRawToDigi::unpackGMT(const unsigned char* chp, auto_ptr<L1MuGMTReadoutCollection>& gmtrc) { - - const unsigned* p = (const unsigned*) chp; - - // for the moment assume 3 bx's - for(int ib=-1; ib<=1; ib++) { - - L1MuGMTReadoutRecord gmtrr(ib); - - gmtrr.setEvNr((*p)&0xffffff); - gmtrr.setBCERR(((*p)>>24)&0xff); - p++; - - gmtrr.setBxNr((*p)&0xfff); - gmtrr.setBxInEvent(((*p)>>12)&0xf); - // to do: check here the block length and the board id - p++; - - for(int im=0; im<16; im++) { - gmtrr.setInputCand(im,*p++); - } - - unsigned char* prank = (unsigned char*) (p+12); - - for(int im=0; im<4; im++) { - gmtrr.setGMTBrlCand(im, *p++, *prank++); - } - - for(int im=0; im<4; im++) { - gmtrr.setGMTFwdCand(im, *p++, *prank++); - } - - for(int im=0; im<4; im++) { - gmtrr.setGMTCand(im, *p++); - } - - // skip the two sort rank words - p+=2; - - gmtrc->addRecord(gmtrr); - - } -} - diff --git a/EventFilter/L1GlobalTriggerRawToDigi/src/SealModule.cc b/EventFilter/L1GlobalTriggerRawToDigi/src/SealModule.cc deleted file mode 100644 index 4d2b734b1dc..00000000000 --- a/EventFilter/L1GlobalTriggerRawToDigi/src/SealModule.cc +++ /dev/null @@ -1,9 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "EventFilter/L1GlobalTriggerRawToDigi/interface/L1GTDigiToRaw.h" -#include "EventFilter/L1GlobalTriggerRawToDigi/interface/L1GlobalTriggerRawToDigi.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(L1GTDigiToRaw); -DEFINE_ANOTHER_FWK_MODULE(L1GlobalTriggerRawToDigi); diff --git a/EventFilter/Modules/doc/html/index.html b/EventFilter/Modules/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/Modules/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/Modules/doc/html/overview.html b/EventFilter/Modules/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/Modules/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/Processor/interface/FUEventProcessor.h b/EventFilter/Processor/interface/FUEventProcessor.h index 93b54c5a2ed..b21c7b6ca61 100644 --- a/EventFilter/Processor/interface/FUEventProcessor.h +++ b/EventFilter/Processor/interface/FUEventProcessor.h @@ -59,6 +59,11 @@ namespace evf {css_.css(in,out);} void moduleWeb (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception); + void microState(xgi::Input *in, + xgi::Output *out) throw (xgi::exception::Exception); + void jsGen(xgi::Input *in, + xgi::Output *out, std::string url) + throw (xgi::exception::Exception); xdata::String offConfig_; diff --git a/EventFilter/Processor/src/FUEventProcessor.cc b/EventFilter/Processor/src/FUEventProcessor.cc index 75009d7a648..6c819bb27a1 100644 --- a/EventFilter/Processor/src/FUEventProcessor.cc +++ b/EventFilter/Processor/src/FUEventProcessor.cc @@ -10,6 +10,7 @@ #include "FWCore/Utilities/interface/PresenceFactory.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/MessageService/interface/MessageLogger.h" #include "toolbox/include/TaskGroup.h" @@ -105,7 +106,8 @@ outPut_(true), inputPrescale_(1), outputPrescale_(1), outprev_(true), // Bind web interface xgi::bind(this, &FUEventProcessor::css , "styles.css"); xgi::bind(this, &FUEventProcessor::defaultWebPage, "Default" ); - xgi::bind(this, &FUEventProcessor::moduleWeb , "moduleWeb" ); + xgi::bind(this, &FUEventProcessor::moduleWeb , "moduleWeb" ); + xgi::bind(this, &FUEventProcessor::microState , "microState"); // logger_ = this->getApplicationLogger(); } @@ -121,6 +123,9 @@ FUEventProcessor::~FUEventProcessor() #include "EventFilter/Message2log4cplus/interface/MLlog4cplus.h" #include "DQMServices/Daemon/interface/MonitorDaemon.h" #include "FWCore/ParameterSet/interface/MakeParameterSets.h" + #include "EventFilter/Utilities/interface/MicroStateService.h" + +using edm::service::MessageLogger; void FUEventProcessor::configureAction(toolbox::Event::Reference e) throw (toolbox::fsm::exception::Exception) { @@ -138,18 +143,6 @@ void FUEventProcessor::configureAction(toolbox::Event::Reference e) throw (toolb try { ah_ = new edm::AssertHandler(); - LOG4CPLUS_DEBUG(this->getApplicationLogger(), - "Trying to create message service presence "); - edm::PresenceFactory *pf = edm::PresenceFactory::get(); - LOG4CPLUS_DEBUG(this->getApplicationLogger(), - "presence factory pointer is " << hex << (int) pf - << dec); - if(pf != 0) - m_messageServicePresence = boost::shared_ptr<edm::Presence>(pf->makePresence("MessageServicePresence").release()); - else - LOG4CPLUS_ERROR(this->getApplicationLogger(), - "Unable to create message service presence "); - } catch(seal::Error& e) { @@ -174,41 +167,111 @@ void FUEventProcessor::configureAction(toolbox::Event::Reference e) throw (toolb } } - //test it - edm::LogInfo("FUEventProcessor") << "started MessageLogger Service "; - - ParameterSetRetriever pr(offConfig_.value_); std::string configString = pr.getAsString(); - // boost::shared_ptr<ParameterSet> params; // change this name! - // makeParameterSets(configString, params, pServiceSets); + boost::shared_ptr<edm::ParameterSet> params; // change this name! + boost::shared_ptr<vector<edm::ParameterSet> >pServiceSets; + makeParameterSets(configString, params, pServiceSets); if(!servicesDone_) { - vector<edm::ParameterSet> pServiceSets; - internal::addServiceMaybe(pServiceSets, "DaqMonitorROOTBackEnd"); - internal::addServiceMaybe(pServiceSets, "MLlog4cplus"); - internal::addServiceMaybe(pServiceSets, "MonitorDaemon"); - serviceToken_ = edm::ServiceRegistry::createSet(pServiceSets); - servicesDone_ = true; + + internal::addServiceMaybe(*pServiceSets, "DaqMonitorROOTBackEnd"); + internal::addServiceMaybe(*pServiceSets, "MonitorDaemon"); + // internal::addServiceMaybe(*pServiceSets, "MessageLogger"); + internal::addServiceMaybe(*pServiceSets, "MLlog4cplus"); + internal::addServiceMaybe(*pServiceSets, "MicroStateService"); + try{ + serviceToken_ = edm::ServiceRegistry::createSet(*pServiceSets); + } + catch(seal::Error& e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.explainSelf()); + } + catch(cms::Exception &e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.explainSelf()); + } + + catch(std::exception &e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.what()); + } + catch(...) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + "Unknown Exception"); + } + } + edm::ServiceRegistry::Operate operate(serviceToken_); try{ rmt_p = edm::Service<MonitorDaemon>()->rmt(add_, port_, del_, nam_, rdel_); edm::Service<ML::MLlog4cplus>()->setAppl(this); + // edm::Service<MessageLogger>(); } catch(...) { LOG4CPLUS_INFO(this->getApplicationLogger(),"exception when trying to get service MonitorDaemon"); } + if(!servicesDone_) + + { + try{ + LOG4CPLUS_DEBUG(this->getApplicationLogger(), + "Trying to create message service presence "); + edm::PresenceFactory *pf = edm::PresenceFactory::get(); + LOG4CPLUS_DEBUG(this->getApplicationLogger(), + "presence factory pointer is " << (int) pf); + if(pf != 0) + m_messageServicePresence = boost::shared_ptr<edm::Presence>(pf->makePresence("MessageServicePresence").release()); + else + LOG4CPLUS_ERROR(this->getApplicationLogger(), + "Unable to create message service presence "); + servicesDone_ = true; + + } + catch(seal::Error& e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.explainSelf()); + } + catch(cms::Exception &e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.explainSelf()); + } + + catch(std::exception &e) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + e.what()); + } + catch(...) + { + LOG4CPLUS_ERROR(this->getApplicationLogger(), + "Unknown Exception"); + } + + } + //test it + edm::LogInfo("FUEventProcessor") << "started MessageLogger Service "; edm::LogInfo("FUEventProcessor") << "Using config string \n" << configString; try{ - - proc_ = new edm::EventProcessor(configString, serviceToken_, edm::serviceregistry::kTokenOverrides); + std::vector<std::string> defaultServices; + defaultServices.push_back("MessageLogger"); + defaultServices.push_back("InitRootHandlers"); + defaultServices.push_back("LoadAllDictionaries"); + defaultServices.push_back("JobReportService"); + proc_ = new edm::EventProcessor(configString, serviceToken_, edm::serviceregistry::kTokenOverrides, defaultServices); if(!outPut_) //proc_->toggleOutput(); // proc_->prescaleInput(inputPrescale_); // proc_->prescaleOutput(outputPrescale_); @@ -470,10 +533,15 @@ void FUEventProcessor::defaultWebPage (xgi::Input *in, xgi::Output *out) throw (xgi::exception::Exception) { std::string urn = getApplicationDescriptor()->getURN(); + ostringstream ourl; + ourl << "'/" << urn << "/microState'"; *out << "<!-- base href=\"/" << urn << "\"> -->" << endl; *out << "<html>" << endl; *out << "<head>" << endl; + //insert javascript code + jsGen(in,out,ourl.str()); + *out << "<STYLE type=\"text/css\"> #T1 {border-width: 2px; border: solid blue; text-align: center} </STYLE> " << endl; *out << "<link type=\"text/css\" rel=\"stylesheet\""; *out << " href=\"/" << urn << "/styles.css\"/>" << endl; @@ -481,63 +549,66 @@ void FUEventProcessor::defaultWebPage (xgi::Input *in, xgi::Output *out) << getApplicationDescriptor()->getInstance() << " MAIN</title>" << endl; *out << "</head>" << endl; - *out << "<body>" << endl; - *out << "<table border=\"0\" width=\"100%\">" << endl; - *out << "<tr>" << endl; - *out << " <td align=\"left\">" << endl; - *out << " <img" << endl; - *out << " align=\"middle\"" << endl; - *out << " src=\"/daq/evb/examples/fu/images/fu64x64.gif\"" << endl; - *out << " alt=\"main\"" << endl; - *out << " width=\"64\"" << endl; - *out << " height=\"64\"" << endl; - *out << " border=\"\"/>" << endl; - *out << " <b>" << endl; - *out << getApplicationDescriptor()->getClassName() - << getApplicationDescriptor()->getInstance() << endl; - *out << " " << fsm_->stateName_.toString() << endl; - *out << " </b>" << endl; - *out << " </td>" << endl; - *out << " <td width=\"32\">" << endl; - *out << " <a href=\"/urn:xdaq-application:lid=3\">" << endl; - *out << " <img" << endl; - *out << " align=\"middle\"" << endl; - *out << " src=\"/daq/xdaq/hyperdaq/images/HyperDAQ.jpg\"" << endl; - *out << " alt=\"HyperDAQ\"" << endl; - *out << " width=\"32\"" << endl; - *out << " height=\"32\"" << endl; - *out << " border=\"\"/>" << endl; - *out << " </a>" << endl; - *out << " </td>" << endl; - *out << " <td width=\"32\">" << endl; - *out << " </td>" << endl; - *out << " <td width=\"32\">" << endl; - *out << " <a href=\"/" << urn - << "/debug\">" << endl; - *out << " <img" << endl; - *out << " align=\"middle\"" << endl; - *out << " src=\"/daq/evb/bu/images/debug32x32.gif\"" << endl; - *out << " alt=\"debug\"" << endl; - *out << " width=\"32\"" << endl; - *out << " height=\"32\"" << endl; - *out << " border=\"\"/>" << endl; - *out << " </a>" << endl; - *out << " </td>" << endl; - *out << "</tr>" << endl; - *out << "</table>" << endl; - + *out << "<body onload=\"loadXMLDoc()\">" << endl; + *out << "<table border=\"0\" width=\"100%\">" << endl; + *out << "<tr>" << endl; + *out << " <td align=\"left\">" << endl; + *out << " <img" << endl; + *out << " align=\"middle\"" << endl; + *out << " src=\"/daq/evb/examples/fu/images/fu64x64.gif\"" << endl; + *out << " alt=\"main\"" << endl; + *out << " width=\"64\"" << endl; + *out << " height=\"64\"" << endl; + *out << " border=\"\"/>" << endl; + *out << " <b>" << endl; + *out << getApplicationDescriptor()->getClassName() + << getApplicationDescriptor()->getInstance() << endl; + *out << " " << fsm_->stateName_.toString() << endl; + *out << " </b>" << endl; + *out << " </td>" << endl; + *out << " <td width=\"32\">" << endl; + *out << " <a href=\"/urn:xdaq-application:lid=3\">" << endl; + *out << " <img" << endl; + *out << " align=\"middle\"" << endl; + *out << " src=\"/daq/xdaq/hyperdaq/images/HyperDAQ.jpg\"" << endl; + *out << " alt=\"HyperDAQ\"" << endl; + *out << " width=\"32\"" << endl; + *out << " height=\"32\"" << endl; + *out << " border=\"\"/>" << endl; + *out << " </a>" << endl; + *out << " </td>" << endl; + *out << " <td width=\"32\">" << endl; + *out << " </td>" << endl; + *out << " <td width=\"32\">" << endl; + *out << " <a href=\"/" << urn + << "/debug\">" << endl; + *out << " <img" << endl; + *out << " align=\"middle\"" << endl; + *out << " src=\"/daq/evb/bu/images/debug32x32.gif\"" << endl; + *out << " alt=\"debug\"" << endl; + *out << " width=\"32\"" << endl; + *out << " height=\"32\"" << endl; + *out << " border=\"\"/>" << endl; + *out << " </a>" << endl; + *out << " </td>" << endl; + *out << "</tr>" << endl; + *out << "</table>" << endl; + *out << "<hr/>" << endl; *out << "<table>" << endl; *out << "<tr valign=\"top\">" << endl; *out << " <td>" << endl; + *out << "<div id=\"T1\" style=\"border:2px solid blue;height:80;width:150\">microState</div><br /> " << endl; + *out << " </td>" << endl; - if(proc_) + *out << " <td>" << endl; + if(proc_) taskWebPage(in,out,urn); else *out << "Unconfigured" << endl; *out << " </td>" << endl; *out << "</table>" << endl; - + *out << "<textarea rows=" << 10 << " cols=80 scroll=yes>" << endl; *out << offConfig_.value_ << endl; *out << "</textarea><P>" << endl; @@ -591,6 +662,14 @@ void FUEventProcessor::taskWebPage(xgi::Input *in, xgi::Output *out, *out << "</tr>" << std::endl; *out << "<tr>" << std::endl; *out << "<td >" << std::endl; + *out << "EP state" << std::endl; + *out << "</td>" << std::endl; + *out << "<td>" << std::endl; + *out << proc_->getState() << std::endl; + *out << "</td>" << std::endl; + *out << " </tr>" << endl; + *out << "<tr>" << std::endl; + *out << "<td >" << std::endl; *out << "Processed Events/Accepted Events" << std::endl; *out << "</td>" << std::endl; *out << "<td>" << std::endl; @@ -725,5 +804,81 @@ void FUEventProcessor::moduleWeb(xgi::Input *in, xgi::Output *out) } } +void FUEventProcessor::jsGen(xgi::Input *in, xgi::Output *out, string url) + throw (xgi::exception::Exception) +{ + *out << "<script type=\"text/javascript\"> \n"; + *out << "var xmlhttp \n"; + *out << " \n"; + *out << "function loadXMLDoc() \n"; + *out << "{ \n"; + *out << "xmlhttp=null \n"; + *out << " \n"; + *out << "if (window.XMLHttpRequest) \n"; + *out << " { \n"; + *out << " xmlhttp=new XMLHttpRequest() \n"; + *out << " } \n"; + *out << " \n"; + *out << "else if (window.ActiveXObject) \n"; + *out << " { \n"; + *out << " xmlhttp=new ActiveXObject(\"Microsoft.XMLHTTP\") \n"; + *out << " } \n"; + *out << "if (xmlhttp!=null) \n"; + *out << " { \n"; + *out << " xmlhttp.onreadystatechange=state_Change \n"; + *out << " xmlhttp.open(\"GET\"," << url << ",true) \n"; + *out << " xmlhttp.send(null) \n"; + *out << " setTimeout('loadXMLDoc()',500) \n"; + *out << " } \n"; + *out << "else \n"; + *out << " { \n"; + *out << " alert(\"Your browser does not support XMLHTTP.\") \n"; + *out << " } \n"; + *out << "} \n"; + *out << " \n"; + *out << "function state_Change() \n"; + *out << "{ \n"; + // if xmlhttp shows "loaded" + *out << "if (xmlhttp.readyState==4) \n"; + *out << " { \n"; + // if "OK" + *out << " if (xmlhttp.status==200) \n"; + *out << " { \n"; + *out << " document.getElementById('T1').innerHTML=xmlhttp.responseText \n"; + *out << " } \n"; + *out << " else \n"; + *out << " { \n"; + *out << " document.getElementById('T1').innerHTML=xmlhttp.statusText \n"; + *out << " } \n"; + *out << " } \n"; + *out << "} \n"; + *out << " \n"; + *out << "</script> \n"; +} + + +void FUEventProcessor::microState(xgi::Input *in, xgi::Output *out) + throw (xgi::exception::Exception) +{ + edm::ServiceRegistry::Operate operate(serviceToken_); + MicroStateService *mss = 0; + string micro1 = "unavailable"; + string micro2 = "unavailable"; + try{ + mss = edm::Service<MicroStateService>().operator->(); + } + catch(...) + { + LOG4CPLUS_INFO(this->getApplicationLogger(),"exception when trying to get service MicroStateService"); + } + if(mss) + { + micro1 = mss->getMicroState1(); + micro2 = mss->getMicroState2(); + } + cout << "microstate page " << micro1 << " " << micro2 << endl; + *out << "<br> " << micro1 << endl; + *out << "<br> " << micro2 << endl; +} XDAQ_INSTANTIATOR_IMPL(evf::FUEventProcessor) diff --git a/EventFilter/RawDataCollector/doc/html/index.html b/EventFilter/RawDataCollector/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/RawDataCollector/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/RawDataCollector/doc/html/overview.html b/EventFilter/RawDataCollector/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/RawDataCollector/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/SMProxyServer/doc/html/index.html b/EventFilter/SMProxyServer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/SMProxyServer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/SMProxyServer/doc/html/overview.html b/EventFilter/SMProxyServer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/SMProxyServer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/ScalersRawToDigi/doc/html/index.html b/EventFilter/ScalersRawToDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/ScalersRawToDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/ScalersRawToDigi/doc/html/overview.html b/EventFilter/ScalersRawToDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/ScalersRawToDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/ShmBuffer/doc/html/index.html b/EventFilter/ShmBuffer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/EventFilter/ShmBuffer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/EventFilter/ShmBuffer/doc/html/overview.html b/EventFilter/ShmBuffer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/EventFilter/ShmBuffer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/EventFilter/StorageManager/interface/FragmentCollector.h b/EventFilter/StorageManager/interface/FragmentCollector.h index e14dd4d8659..e2a62eb17a1 100644 --- a/EventFilter/StorageManager/interface/FragmentCollector.h +++ b/EventFilter/StorageManager/interface/FragmentCollector.h @@ -16,10 +16,10 @@ #include "IOPool/Streamer/interface/EventBuffer.h" #include "IOPool/Streamer/interface/Utilities.h" #include "DataFormats/Common/interface/ProductRegistry.h" -// added for Event Server by HWKC + #include "EventFilter/StorageManager/interface/EvtMsgRingBuffer.h" #include "EventFilter/StorageManager/interface/EventServer.h" -// for hack + #include "IOPool/Streamer/interface/MsgTools.h" #include "IOPool/Streamer/interface/StreamerOutSrvcManager.h" @@ -48,8 +48,10 @@ namespace stor typedef std::vector<FragEntry> Fragments; typedef std::map<edm::EventNumber_t, Fragments> Collection; - FragmentCollector(const HLTInfo& h, Deleter d, - const edm::ProductRegistry& p, + //FragmentCollector(const HLTInfo& h, Deleter d, + FragmentCollector(HLTInfo& h, Deleter d, + const string& config_str=""); + FragmentCollector(std::auto_ptr<HLTInfo>, Deleter d, const string& config_str=""); ~FragmentCollector(); @@ -58,6 +60,7 @@ namespace stor void stop(); edm::EventBuffer& getFragmentQueue() { return *frag_q_; } + edm::EventBuffer& getCommandQueue() { return *cmd_q_; } void setEventServer(boost::shared_ptr<EventServer>& es) { eventServer_ = es; } @@ -77,13 +80,11 @@ namespace stor edm::EventInserter inserter_; boost::shared_ptr<boost::thread> me_; const edm::ProductRegistry* prods_; // change to shared_ptr ? - const stor::HLTInfo* info_; + //const stor::HLTInfo* info_; + stor::HLTInfo* info_; // cannot be const when using EP_Runner? - // hack here! HEREHEREHERE - // should not need to set the bit counts as the first INIT messages has them public: - void set_hlt_bit_count(uint32 count) { hlt_bit_cnt_ = count; } - void set_l1_bit_count(uint32 count) { l1_bit_cnt_ = count; } + void set_outoption(bool stream_only) { streamerOnly_ = stream_only; } void set_outfile(std::string outfilestart, uint32 runNum, unsigned long maxFileSize, double highWaterMark, std::string path, std::string mpath, @@ -97,8 +98,6 @@ namespace stor std::list<std::string>& get_filelist() { return writer_->get_filelist(); } std::list<std::string>& get_currfiles() { return writer_->get_currfiles(); } private: - uint32 hlt_bit_cnt_; - uint32 l1_bit_cnt_; bool streamerOnly_; std::string filen_; uint32 runNumber_; @@ -109,26 +108,18 @@ namespace stor std::string catalog_; uint32 disks_; - //ofstream ost_; std::auto_ptr<edm::StreamerOutSrvcManager> writer_; - // added for Event Server by HWKC so SM can get events from ring buffer public: bool esbuf_isEmpty() { return evtsrv_area_.isEmpty(); } bool esbuf_isFull() { return evtsrv_area_.isFull(); } -//HEREHERE EventMsgView esbuf_pop_front() {return evtsrv_area_.pop_front();} void esbuf_push_back(EventMsgView msg) { evtsrv_area_.push_back(msg); } -//HEREHERE void set_esbuf_oneinN(int N) { oneinN_ = N; } private: -//HEREHERE stor::EvtMsgRingBuffer evtsrv_area_; -// the writer here -// writer writer_; -//HEREHERE int oneinN_; // place one in every oneinN_ events into the buffer int count_4_oneinN_; boost::shared_ptr<EventServer> eventServer_; diff --git a/EventFilter/StorageManager/interface/JobController.h b/EventFilter/StorageManager/interface/JobController.h index c7c64b6bbe4..676483e72f6 100644 --- a/EventFilter/StorageManager/interface/JobController.h +++ b/EventFilter/StorageManager/interface/JobController.h @@ -2,13 +2,10 @@ #define HLT_JOB_CNTLER_HPP #include "IOPool/Streamer/interface/EventBuffer.h" -#include "FWCore/Framework/interface/EventProcessor.h" #include "EventFilter/StorageManager/interface/FragmentCollector.h" -#include "EventFilter/StorageManager/interface/EPRunner.h" #include "EventFilter/StorageManager/interface/EventServer.h" #include "IOPool/Streamer/interface/EventMessage.h" -// added by HWKC for Event Server #include "IOPool/Streamer/interface/Messages.h" #include "boost/shared_ptr.hpp" @@ -22,9 +19,12 @@ namespace stor class JobController { public: + // remove next ctor later JobController(const std::string& fu_config, const std::string& my_config, FragmentCollector::Deleter); + JobController(const std::string& my_config, + FragmentCollector::Deleter); JobController(const edm::ProductRegistry& reg, const std::string& my_config, FragmentCollector::Deleter); @@ -37,24 +37,16 @@ namespace stor void receiveMessage(FragEntry& entry); - const edm::ProductRegistry& products() const { return prods_; } - edm::ProductRegistry& products() { return prods_; } - - const edm::ProductRegistry& smproducts() const { return ep_runner_->getRegistry(); } - edm::EventBuffer& getFragmentQueue() { return collector_->getFragmentQueue(); } - // added for Event Server by HWKC so SM can get event from ring buffer bool isEmpty() { return collector_->esbuf_isEmpty(); } bool isFull() { return collector_->esbuf_isFull(); } -//HEREHERE EventMsgView pop_front() {return collector_->esbuf_pop_front();} void push_back(EventMsgView msg) { collector_->esbuf_push_back(msg); } -//HEREHERE + void set_oneinN(int N) { collector_->set_esbuf_oneinN(N); } - edm::ServiceToken getToken() { return ep_runner_->getToken();} void setEventServer(boost::shared_ptr<EventServer>& es) { if (collector_.get() != NULL) collector_->setEventServer(es); @@ -62,10 +54,6 @@ namespace stor } boost::shared_ptr<EventServer>& getEventServer() { return eventServer_; } -//HEREHEREHERE - // a hack to get hlt and l1 counts into fragColl - void set_hlt_bit_count(uint32 count) { collector_->set_hlt_bit_count(count);} - void set_l1_bit_count(uint32 count) { collector_->set_l1_bit_count(count);} void set_outoption(bool stream_only) { collector_->set_outoption(stream_only);} void set_outfile(std::string outfilestart, uint32 runNum, unsigned long maxFileSize, double highWaterMark, std::string path, std::string mpath, std::string catalog, int disks) @@ -75,13 +63,10 @@ namespace stor private: void init(const std::string& my_config,FragmentCollector::Deleter); - void setRegistry(const std::string& fu_config); void processCommands(); static void run(JobController*); - edm::ProductRegistry prods_; boost::shared_ptr<FragmentCollector> collector_; - boost::shared_ptr<EPRunner> ep_runner_; boost::shared_ptr<EventServer> eventServer_; boost::shared_ptr<boost::thread> me_; diff --git a/EventFilter/StorageManager/interface/SMPerformanceMeter.h b/EventFilter/StorageManager/interface/SMPerformanceMeter.h index a7b1a4a779c..14773006111 100644 --- a/EventFilter/StorageManager/interface/SMPerformanceMeter.h +++ b/EventFilter/StorageManager/interface/SMPerformanceMeter.h @@ -48,6 +48,7 @@ namespace stor { double meanrate(); double meanlatency(); unsigned long totalsamples(); + double totalvolumemb(); double duration(); protected: diff --git a/EventFilter/StorageManager/src/EventStreamHttpReader.cc b/EventFilter/StorageManager/src/EventStreamHttpReader.cc index df804f9d7e3..2e2a9d0a8ce 100644 --- a/EventFilter/StorageManager/src/EventStreamHttpReader.cc +++ b/EventFilter/StorageManager/src/EventStreamHttpReader.cc @@ -243,7 +243,7 @@ namespace edmtestp events_read_++; //edm::EventMsg msg(&buf_[0],len); //return decoder_.decodeEvent(msg,productRegistry()); - EventMsgView eventView(&buf_[0],hltBitCount,l1BitCount); + EventMsgView eventView(&buf_[0]); return StreamTranslator::deserializeEvent(eventView,productRegistry()); } } @@ -317,10 +317,8 @@ namespace edmtestp for (int i=0; i<len ; i++) regdata[i] = data.d_[i]; //edm::InitMsg msg(®data[0],len); InitMsgView initView(®data[0]); - //hltBitCount = initView.hltTriggerCount(); - //l1BitCount = initView.l1TriggerCount(); - hltBitCount = initView.get_hlt_bit_cnt(); - l1BitCount = initView.get_l1_bit_cnt(); + //hltBitCount = initView.get_hlt_bit_cnt(); + //l1BitCount = initView.get_l1_bit_cnt(); // 21-Jun-2006, KAB: catch (and re-throw) any exceptions decoding // the job header so that we can display the returned HTML and // (hopefully) give the user a hint as to the cause of the problem. diff --git a/EventFilter/StorageManager/src/EvtMsgRingBuffer.cc b/EventFilter/StorageManager/src/EvtMsgRingBuffer.cc index 6e7c79f7391..6042d5bf084 100644 --- a/EventFilter/StorageManager/src/EvtMsgRingBuffer.cc +++ b/EventFilter/StorageManager/src/EvtMsgRingBuffer.cc @@ -31,9 +31,9 @@ EventMsgView EvtMsgRingBuffer::pop_front() // check to see if empty - what to return? // calling code needs to check ifEmpty() and do appropriate thing // should really return a message an appropriate MsgCode - if(isEmpty()) return EventMsgView(&ring_buffer_[head_][0],0,0); + if(isEmpty()) return EventMsgView(&ring_buffer_[head_][0]); - EventMsgView popthis(&ring_buffer_[head_][0],0,0); + EventMsgView popthis(&ring_buffer_[head_][0]); if(head_ == (int)maxsize_-1) head_ = 0; else head_++; // see if now empty and need to move the tail diff --git a/EventFilter/StorageManager/src/FragmentCollector.cc b/EventFilter/StorageManager/src/FragmentCollector.cc index 91f322dd709..ec7b0ac0273 100644 --- a/EventFilter/StorageManager/src/FragmentCollector.cc +++ b/EventFilter/StorageManager/src/FragmentCollector.cc @@ -26,8 +26,8 @@ static const bool debugme = getenv("FRAG_DEBUG")!=0; namespace stor { - FragmentCollector::FragmentCollector(const HLTInfo& h,Deleter d, - const ProductRegistry& p, + //FragmentCollector::FragmentCollector(const HLTInfo& h,Deleter d, + FragmentCollector::FragmentCollector(HLTInfo& h,Deleter d, const string& config_str): cmd_q_(&(h.getCommandQueue())), evtbuf_q_(&(h.getEventQueue())), @@ -35,7 +35,7 @@ namespace stor buffer_deleter_(d), event_area_(1000*1000*7), inserter_(*evtbuf_q_), - prods_(&p), + prods_(0),//prods_(&p), info_(&h), runNumber_(0),maxFileSize_(1073741824), highWaterMark_(0.9), writer_(new edm::StreamerOutSrvcManager(config_str)), @@ -45,6 +45,24 @@ namespace stor // supposed to have given parameterSet smConfigString to writer_ // at ctor } + FragmentCollector::FragmentCollector(std::auto_ptr<HLTInfo> info,Deleter d, + const string& config_str): + cmd_q_(&(info.get()->getCommandQueue())), + evtbuf_q_(&(info.get()->getEventQueue())), + frag_q_(&(info.get()->getFragmentQueue())), + buffer_deleter_(d), + event_area_(1000*1000*7), + inserter_(*evtbuf_q_), + prods_(0), + info_(info.get()), + runNumber_(0),maxFileSize_(1073741824), highWaterMark_(0.9), + writer_(new edm::StreamerOutSrvcManager(config_str)), + evtsrv_area_(10), + oneinN_(10), count_4_oneinN_(0) // added for Event Server by HWKC + { + // supposed to have given parameterSet smConfigString to writer_ + // at ctor + } FragmentCollector::~FragmentCollector() { @@ -81,33 +99,22 @@ namespace stor FragEntry* entry = (FragEntry*)cb.buffer(); FR_DEBUG << "FragColl: " << (void*)this << " Got a buffer size=" << entry->buffer_size_ << endl; -//HEREHERE - //MsgCode mc(entry->buffer_address_,entry->buffer_size_); - // cannot use this as we don't have a header in each fragment - //HeaderView mc(entry->buffer_address_); - -//HEREHERE - //switch(mc.getCode()) - //switch(mc.code()) switch(entry->code_) { -//HEREHERE case Header::EVENT: { FR_DEBUG << "FragColl: Got an Event" << endl; processEvent(entry); break; } -//HEREHERE case Header::DONE: { // make sure that this is actually sent by the controller! (JBK) + // this does nothing currently FR_DEBUG << "FragColl: Got a Done" << endl; done=true; break; } -// HEREHERE put in test for INIT message and write out INIT message -// case Header::INIT: { FR_DEBUG << "FragColl: Got an Init" << endl; @@ -122,44 +129,14 @@ namespace stor } } - FR_DEBUG << "FragColl: DONE!" << endl; - edm::EventBuffer::ProducerBuffer cb(*evtbuf_q_); - long* vp = (long*)cb.buffer(); - *vp=0; -//HEREHERE - ending loop - cb.commit(sizeof(long)); -//HEREHEREHERE - // is this the right place to close the file?? - //FR_DEBUG << "FragColl: Received halt message. Closing file " << std::endl; - // need an EOF record? - /* - unsigned long dummyrun = 0; - unsigned long dummystored = 1000; - uint32 dummyStatusCode = 1234; - std::vector<uint32> hltStats; + FR_DEBUG << "FragColl: DONE!" << endl; + //edm::EventBuffer::ProducerBuffer cb(*evtbuf_q_); + //long* vp = (long*)cb.buffer(); + //*vp=0; + //cb.commit(sizeof(long)); - hltStats.push_back(32); - hltStats.push_back(33); - hltStats.push_back(34); - uint64 dummy_first_event_offset_ = 0; - uint64 dummy_last_event_offset_ = 10000; - //HEREHERE need to change this - EOFRecordBuilder eof(dummyrun, - dummystored, - dummyStatusCode, - hltStats, - dummy_first_event_offset_, - dummy_last_event_offset_); - ost_.write((const char*)eof.recAddress(), eof.size() ); - - ost_.close(); - */ - // note that file is not closed until the writers inside - // writer_ is destroyed + // file is not closed until the writers inside writer_ is destroyed if(streamerOnly_) writer_->stop(); - //if(streamerOnly_ && writer_->get_currfile()!="") writer_->stop(); - // This test is now not needed using StreamerOutSrvcManager - } void FragmentCollector::stop() @@ -169,56 +146,40 @@ namespace stor // event processor edm::EventBuffer::ProducerBuffer cb(*frag_q_); - // MsgCode mc(cb.buffer(),MsgCode::DONE); - // mc.setCode(MsgCode::DONE); - // cb.commit(mc.totalSize()); -//HEREHERE cb.commit(); } void FragmentCollector::processEvent(FragEntry* entry) { -//HEREHERE - //EventMsg msg(entry->buffer_address_,entry->buffer_size_); - -//HEREHERE - //if(msg.getTotalSegs()==1) if(entry->totalSegs_==1) { FR_DEBUG << "FragColl: Got an Event with one segment" << endl; FR_DEBUG << "FragColl: Event size " << entry->buffer_size_ << endl; -//HEREHERE - //FR_DEBUG << "FragColl: Event ID " << msg.getEventNumber() << endl; FR_DEBUG << "FragColl: Event ID " << entry->id_ << endl; -//HEREHERE from here // send immediately - EventMsgView emsg(entry->buffer_address_, hlt_bit_cnt_, l1_bit_cnt_ ); - // do the if here for streamer file writing - if(!streamerOnly_) - { - std::auto_ptr<edm::EventPrincipal> evtp; - { - boost::mutex::scoped_lock sl(info_->getExtraLock()); - //evtp = inserter_.decode(msg,*prods_); - evtp = StreamTranslator::deserializeEvent(emsg, *prods_); - //evtp = inserter_.decode(msg,*prods_); - } - inserter_.send(evtp); - } else { -// put code to write to streamer file here -// writer_.write(emsg); + EventMsgView emsg(entry->buffer_address_); + // See if writing Root or streamer files + if(!streamerOnly_) + { + // Not a valid choice anymore - maybe later we put this back in + /* + std::auto_ptr<edm::EventPrincipal> evtp; + { + boost::mutex::scoped_lock sl(info_->getExtraLock()); + evtp = StreamTranslator::deserializeEvent(emsg, *prods_); + } + inserter_.send(evtp); + */ + } else { FR_DEBUG << "FragColl: writing event size " << entry->buffer_size_ << endl; - //ost_.write((const char*)entry->buffer_address_, entry->buffer_size_); writer_->manageEventMsg(emsg); - } + } -//HEREHERE to here // added for Event Server by HWKC - copy event to Event Server buffer count_4_oneinN_++; if(count_4_oneinN_ == oneinN_) { -//HEREHERE evtsrv_area_.push_back(emsg); count_4_oneinN_ = 0; } @@ -227,40 +188,24 @@ namespace stor eventServer_->processEvent(emsg); } - // used to be like next line, but that does decode and send in - // one operation, which can cause deadlock with the global junky lock - // inserter_.insert(msg,*prods_); - // is the buffer properly released (deleted)? (JBK) (*buffer_deleter_)(entry); return; - } + } // end of single segment test -//HEREHERE - //pair<Collection::iterator,bool> rc = - // fragment_area_.insert(make_pair(msg.getEventNumber(),Fragments())); pair<Collection::iterator,bool> rc = fragment_area_.insert(make_pair(entry->id_,Fragments())); rc.first->second.push_back(*entry); FR_DEBUG << "FragColl: added fragment" << endl; -//HEREHERE - //if((int)rc.first->second.size()==msg.getTotalSegs()) if((int)rc.first->second.size()==entry->totalSegs_) { -//HEREHERE FR_DEBUG << "FragColl: completed an event with " << entry->totalSegs_ << " segments" << endl; // we are done with this event // assemble parts -//HEREHERE from here - //EventMsg em(&event_area_[0],event_area_.size(), -// msg.getEventNumber(),msg.getRunNumber(), -// 1,1); - //unsigned char* pos = (unsigned char*)em.data(); unsigned char* pos = (unsigned char*)&event_area_[0]; -//HEREHERE to here int sum=0; unsigned int lastpos=0; @@ -269,48 +214,31 @@ namespace stor for(;i!=e;++i) { -//HEREHERE from here - //EventMsg frag(i->buffer_address_,i->buffer_size_); - //int dsize = frag.getDataSize(); int dsize = i->buffer_size_; sum+=dsize; - //unsigned char* from=(unsigned char*)frag.data(); unsigned char* from=(unsigned char*)i->buffer_address_; - ////copy(from,from+dsize,pos); - //copy(i->buffer_address_,i->buffer_address_+i->buffer_size_,pos+lastpos); copy(from,from+dsize,pos+lastpos); - //copy(i->buffer_address_,i->buffer_address_+dsize ,pos+lastpos); - //copy(from,from+dsize,pos+lastpos); - //lastpos = lastpos + dsize; - //lastpos = lastpos + i->buffer_size_; lastpos = lastpos + dsize; -//HEREHERE to here // ask deleter to kill off the buffer - //(*buffer_deleter_)(i->buffer_object_); (*buffer_deleter_)(&(*i)); } -//HEREHERE from here - //em.setDataSize(sum); - EventMsgView emsg(&event_area_[0], hlt_bit_cnt_, l1_bit_cnt_); - if(!streamerOnly_) - { - std::auto_ptr<edm::EventPrincipal> evtp; - { - boost::mutex::scoped_lock sl(info_->getExtraLock()); - //evtp = inserter_.decode(em,*prods_); - evtp = StreamTranslator::deserializeEvent(emsg, *prods_); - } - inserter_.send(evtp); - } else { -// put code to write to streamer file here -// writer_.write(emsg); + EventMsgView emsg(&event_area_[0]); + if(!streamerOnly_) + { // if writing Root files - but not valid now + /* + std::auto_ptr<edm::EventPrincipal> evtp; + { + boost::mutex::scoped_lock sl(info_->getExtraLock()); + evtp = StreamTranslator::deserializeEvent(emsg, *prods_); + } + inserter_.send(evtp); + */ + } else { // writing streamer files FR_DEBUG << "FragColl: writing event size " << sum << endl; - //ost_.write((const char*)&event_area_[0], sum); writer_->manageEventMsg(emsg); - } + } -//HEREHERE to here // added for Event Server by HWKC - copy event to Event Server buffer // note that em does not have the correct totalsize in totalSize() // the ring buffer must use msgSize() or we send always 7MB events @@ -325,37 +253,22 @@ namespace stor eventServer_->processEvent(emsg); } - // see inserter use comment above - // inserter_.insert(em,*prods_); - // remove the entry from the map fragment_area_.erase(rc.first); } } void FragmentCollector::processHeader(FragEntry* entry) { -//HEREHERE InitMsgView msg(entry->buffer_address_); -//HEREHERE //if(entry->totalSegs_==1) // should test if these are fragments // currently these are taken from the already combined registry // fragments if any - need to change where the fragments are - // queued here and remade here + // queued here and remade here? // open file here as there is only one of these per run - //std::string outfilename = filename_ + ".dat"; FR_DEBUG << "FragmentCollector: streamer file starting with " << filen_ << endl; - //ost_.open(outfilename.c_str(),ios_base::binary | ios_base::out); - //if(!ost_) - //{ - //// throw exceptions in the online? - ////throw cms::Exception("Configuration","simpleI2OReceiver") - //// << "cannot open file " << filename_; - // std::cerr << "FragmentCollector: Cannot open file " << outfilename << std::endl; - //} FR_DEBUG << "FragColl: writing INIT size " << entry->buffer_size_ << endl; - //ost_.write((const char*)entry->buffer_address_, entry->buffer_size_); //dumpInitHeader(&msg); // should be passing smConfigSTring to writer_ at construction writer_->manageInitMsg(filen_, runNumber_, maxFileSize_, highWaterMark_, path_, mpath_, catalog_, disks_, msg); diff --git a/EventFilter/StorageManager/src/JobController.cc b/EventFilter/StorageManager/src/JobController.cc index e19eaae23f9..edb4b907a50 100644 --- a/EventFilter/StorageManager/src/JobController.cc +++ b/EventFilter/StorageManager/src/JobController.cc @@ -34,17 +34,16 @@ namespace stor { } - JobController::JobController(const std::string& fu_config, - const std::string& my_config, + JobController::JobController(const std::string& my_config, FragmentCollector::Deleter deleter) { - // read trigger config // change to phony input source - string new_config = changeToPhony(fu_config); - setRegistry(new_config); + //string new_config = changeToPhony(fu_config); + //setRegistry(new_config); init(my_config,deleter); } +/* obslete constructor? JobController::JobController(const edm::ProductRegistry& reg, const std::string& my_config, FragmentCollector::Deleter d): @@ -52,6 +51,7 @@ namespace stor { init(my_config,d); } +*/ void JobController::init(const std::string& my_config, @@ -61,19 +61,25 @@ namespace stor // so that the fragment collector gets the registry from the // EventProcessor instead of from the filter unit config - std::auto_ptr<HLTInfo> inf(new HLTInfo(prods_)); + // here prods_ is empty + //std::auto_ptr<HLTInfo> inf(new HLTInfo(prods_)); + std::auto_ptr<HLTInfo> inf(new HLTInfo()); // ep takes ownership of inf! - std::auto_ptr<EPRunner> ep(new EPRunner(my_config,inf)); + // what happens to ownership of inf with no EP_Runner?? + //std::auto_ptr<EPRunner> ep(new EPRunner(my_config,inf)); + //std::auto_ptr<FragmentCollector> + // coll(new FragmentCollector(*(ep->getInfo()),deleter, + // my_config)); std::auto_ptr<FragmentCollector> - coll(new FragmentCollector(*(ep->getInfo()),deleter, - ep->getRegistry(), + coll(new FragmentCollector(inf,deleter, my_config)); collector_.reset(coll.release()); - ep_runner_.reset(ep.release()); + //ep_runner_.reset(ep.release()); } +/* void JobController::setRegistry(const std::string& fu_config) { // generate a temporary event processor just to get out the @@ -82,6 +88,7 @@ namespace stor InputSource& is = tmp_ep.getInputSource(); prods_ = is.productRegistry(); } +*/ void JobController::run(JobController* t) { @@ -94,7 +101,7 @@ namespace stor me_.reset(new boost::thread(boost::bind(JobController::run,this))); collector_->start(); - ep_runner_->start(); + //ep_runner_->start(); } void JobController::stop() @@ -103,7 +110,8 @@ namespace stor // job controller, which will cause a completion of the // fragment collector and event processor - edm::EventBuffer::ProducerBuffer cb(ep_runner_->getInfo()->getCommandQueue()); + //edm::EventBuffer::ProducerBuffer cb(ep_runner_->getInfo()->getCommandQueue()); + edm::EventBuffer::ProducerBuffer cb(collector_->getCommandQueue()); MsgCode mc(cb.buffer(),MsgCode::DONE); mc.setCode(MsgCode::DONE); cb.commit(mc.codeSize()); @@ -124,7 +132,8 @@ namespace stor // just wait for command messages now while(1) { - edm::EventBuffer::ConsumerBuffer cb(ep_runner_->getInfo()->getCommandQueue()); + //edm::EventBuffer::ConsumerBuffer cb(ep_runner_->getInfo()->getCommandQueue()); + edm::EventBuffer::ConsumerBuffer cb(collector_->getCommandQueue()); MsgCode mc(cb.buffer(),cb.size()); if(mc.getCode()==MsgCode::DONE) break; @@ -141,6 +150,6 @@ namespace stor collector_->stop(); collector_->join(); - ep_runner_->join(); + //ep_runner_->join(); } } diff --git a/EventFilter/StorageManager/src/SMPerformanceMeter.cc b/EventFilter/StorageManager/src/SMPerformanceMeter.cc index ccaf89b18a1..7ed254d7624 100644 --- a/EventFilter/StorageManager/src/SMPerformanceMeter.cc +++ b/EventFilter/StorageManager/src/SMPerformanceMeter.cc @@ -113,6 +113,11 @@ unsigned long stor::SMPerformanceMeter::totalsamples() return sampleCounter_; } +double stor::SMPerformanceMeter::totalvolumemb() +{ + return totalMB4mean_; +} + double stor::SMPerformanceMeter::duration() { return allTime_; diff --git a/EventFilter/StorageManager/src/StreamerI2OWriter.cc b/EventFilter/StorageManager/src/StreamerI2OWriter.cc index 29c2681549e..85ab27e13a7 100644 --- a/EventFilter/StorageManager/src/StreamerI2OWriter.cc +++ b/EventFilter/StorageManager/src/StreamerI2OWriter.cc @@ -206,7 +206,7 @@ namespace edm void StreamerI2OWriter::stop() { - FDEBUG(10) << "StreamerI2OWriter: sending terminate run" << std::endl; + FDEBUG(9) << "StreamerI2OWriter: sending terminate run" << std::endl; // int sz = 0; // The special "other" message is hardwired to send a // terminate run message (close file) @@ -427,7 +427,8 @@ namespace edm char* buffer = (char*) eventMessage.startAddress(); unsigned int size = eventMessage.size(); // don't have hlt and l1 trigger bit counts - EventMsgView eventView(eventMessage.startAddress(), 0, 0); + //EventMsgView eventView(eventMessage.startAddress(), 0, 0); + EventMsgView eventView(eventMessage.startAddress()); edm::RunNumber_t runid = eventView.run(); edm::EventNumber_t eventid = eventView.event(); diff --git a/FWCore/Catalog/doc/html/index.html b/FWCore/Catalog/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/Catalog/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/Catalog/doc/html/overview.html b/FWCore/Catalog/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/Catalog/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/Common/doc/html/index.html b/FWCore/Common/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/Common/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/Common/doc/html/overview.html b/FWCore/Common/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/Common/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/FWLite/src/BareRootProductGetter.cc b/FWCore/FWLite/src/BareRootProductGetter.cc index 58dd03600f6..811823b5a96 100644 --- a/FWCore/FWLite/src/BareRootProductGetter.cc +++ b/FWCore/FWLite/src/BareRootProductGetter.cc @@ -8,7 +8,7 @@ // // Original Author: Chris Jones // Created: Tue May 23 11:03:31 EDT 2006 -// $Id: BareRootProductGetter.cc,v 1.6 2006/09/27 11:42:34 dmytro Exp $ +// $Id: BareRootProductGetter.cc,v 1.8 2006/12/01 21:54:44 chrjones Exp $ // // system include files @@ -16,6 +16,7 @@ #include "TFile.h" #include "TTree.h" #include "TBranch.h" +#include "TClass.h" #include "Reflex/Type.h" #include "Reflex/Object.h" @@ -205,19 +206,31 @@ BareRootProductGetter::createNewBuffer(const edm::ProductID& iID) const <<"\n Please make sure all the necessary libraries are available."; return 0; } - + + //We can't use reflex to create the instance since Reflex uses 'malloc' instead of new + /* //use reflex to create an instance of it ROOT::Reflex::Object wrapperObj = classType.Construct(); if( 0 == wrapperObj.Address() ) { cms::Exception("FailedToCreate") <<"could not create an instance of '"<<fullName<<"'"; return 0; } - void* address = wrapperObj.Address(); - branch->SetAddress( &address ); ROOT::Reflex::Object edProdObj = wrapperObj.CastObject( ROOT::Reflex::Type::ByName("edm::EDProduct") ); edm::EDProduct* prod = reinterpret_cast<edm::EDProduct*>(edProdObj.Address()); + */ + TClass* rootClassType=TClass::GetClass(classType.TypeInfo()); + if( 0 == rootClassType) { + throw cms::Exception("MissingRootDictionary") + <<"could not find a ROOT dictionary for type '"<<fullName<<"'" + <<"\n Please make sure all the necessary libraries are available."; + return 0; + } + void* address = rootClassType->New(); + + static TClass* edproductTClass = TClass::GetClass( typeid(edm::EDProduct)); + edm::EDProduct* prod = reinterpret_cast<edm::EDProduct*>( rootClassType->DynamicCast(edproductTClass,address,true)); if(0 == prod) { cms::Exception("FailedConversion") <<"failed to convert a '"<<fullName @@ -226,9 +239,15 @@ BareRootProductGetter::createNewBuffer(const edm::ProductID& iID) const } //connect the instance to the branch - Buffer b(prod, branch); + //void* address = wrapperObj.Address(); + Buffer b(prod, branch,address); idToBuffers_[iID]=b; + //As of 5.13 ROOT expects the memory address held by the pointer passed to + // SetAddress to be valid forever + address = &(idToBuffers_[iID].address_); + branch->SetAddress( address ); + return &(idToBuffers_[iID]); } diff --git a/FWCore/FWLite/src/BareRootProductGetter.h b/FWCore/FWLite/src/BareRootProductGetter.h index e89f4136a09..9e6feeef477 100644 --- a/FWCore/FWLite/src/BareRootProductGetter.h +++ b/FWCore/FWLite/src/BareRootProductGetter.h @@ -16,7 +16,7 @@ // // Original Author: Chris Jones // Created: Tue May 23 11:03:27 EDT 2006 -// $Id: BareRootProductGetter.h,v 1.2 2006/08/21 20:56:20 wmtan Exp $ +// $Id: BareRootProductGetter.h,v 1.3 2006/08/26 15:50:04 chrjones Exp $ // // system include files @@ -50,12 +50,13 @@ class BareRootProductGetter : public edm::EDProductGetter // ---------- member functions --------------------------- struct Buffer { - Buffer(edm::EDProduct* iProd, TBranch* iBranch) : - product_(iProd), branch_(iBranch) {} - Buffer() : product_(), branch_() {} + Buffer(edm::EDProduct* iProd, TBranch* iBranch, void* iAddress) : + product_(iProd), branch_(iBranch), address_(iAddress) {} + Buffer() : product_(), branch_(), address_() {} boost::shared_ptr<edm::EDProduct const> product_; TBranch* branch_; + void* address_; //the address to pass to Root since as of 5.13 they cache that info }; private: BareRootProductGetter(const BareRootProductGetter&); // stop default diff --git a/FWCore/FWLite/test/ref_t.cppunit.cpp b/FWCore/FWLite/test/ref_t.cppunit.cpp index 8d7d3c1b28c..18e5f60e6ed 100644 --- a/FWCore/FWLite/test/ref_t.cppunit.cpp +++ b/FWCore/FWLite/test/ref_t.cppunit.cpp @@ -2,7 +2,7 @@ Test program for edm::Ref use in ROOT. -$Id: ref_t.cppunit.cpp,v 1.3 2006/06/14 23:57:54 wmtan Exp $ +$Id: ref_t.cppunit.cpp,v 1.4 2006/09/27 11:42:35 dmytro Exp $ ----------------------------------------------------------------------*/ #include <iostream> @@ -35,9 +35,10 @@ class testRefInROOT: public CppUnit::TestFixture CPPUNIT_TEST_SUITE_END(); public: + testRefInROOT() : fWasRun_(false) { } void setUp() { - if(!sWasRun_) { + if(!fWasRun_) { gSystem->Load("libFWCoreFWLite.so"); AutoLibraryLoader::enable(); @@ -47,7 +48,7 @@ public: std::cerr <<"could not run script needed to make test files\n"; ::exit(-1); } - sWasRun_ = true; + fWasRun_ = true; } } void tearDown(){} @@ -59,10 +60,12 @@ public: // void failChainWithMissingFile(); void failDidNotCallGetEntryForEvents(); - static bool sWasRun_; + private: + //static bool sWasRun_; + bool fWasRun_; }; -bool testRefInROOT::sWasRun_=false; +//bool testRefInROOT::sWasRun_=false; ///registration of the test so that the runner can find it CPPUNIT_TEST_SUITE_REGISTRATION(testRefInROOT); diff --git a/FWCore/GuiBrowsers/doc/html/index.html b/FWCore/GuiBrowsers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/GuiBrowsers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/GuiBrowsers/doc/html/overview.html b/FWCore/GuiBrowsers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/GuiBrowsers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/PluginManager/doc/html/index.html b/FWCore/PluginManager/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/PluginManager/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/PluginManager/doc/html/overview.html b/FWCore/PluginManager/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/PluginManager/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/PrescaleService/doc/html/index.html b/FWCore/PrescaleService/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/PrescaleService/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/PrescaleService/doc/html/overview.html b/FWCore/PrescaleService/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/PrescaleService/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/Python/BuildFile b/FWCore/Python/BuildFile deleted file mode 100755 index 007c5a414ba..00000000000 --- a/FWCore/Python/BuildFile +++ /dev/null @@ -1,15 +0,0 @@ -<use name=boost> -<use name=boost_python> -<use name=root> -<use name=python> -<use name=FWCore/Framework> -<lib name=PyROOT> -<flags SEAL_PLUGIN_NAME="FWCorePython"> -<export> - <lib name=FWCorePython> - <use name=boost> - <use name=root> - <use name=python> - <use name=boost_python> -<lib name=PyROOT> -</export> diff --git a/FWCore/Python/doc/Python.doc b/FWCore/Python/doc/Python.doc deleted file mode 100644 index e9f73c3152f..00000000000 --- a/FWCore/Python/doc/Python.doc +++ /dev/null @@ -1,41 +0,0 @@ - -/*! - -\page FWCore_Python Package FWCore/Python - -<center> -<small> - -<!-- @CVS_TAG@ will be substituted at build time, no need to touch --> -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/FWCore/Python/?cvsroot=CMSSW&only_with_tag=@CVS_TAG@>Source code (CVS tag: @CVS_TAG@)</a> - -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/FWCore/Python/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a> -</small> -</center> - -\section desc Description -<!-- Short description of what this package is supposed to provide --> - -This package contains the utility to use python classes inside the framework - -\subsection interface Public interface - -None - -\subsection modules Modules - -- PythonFilter -- PythonService - -\subsection tests Unit tests and examples -<!-- Describe cppunit tests and example configuration files --> -Unknown - -\section status Status and planned development -<!-- e.g. completed, stable, missing features --> -Unknown - -<hr> -Last updated: -@DATE@ Author: B. Hegner -*/ - diff --git a/FWCore/Python/src/EventWrapper.cc b/FWCore/Python/src/EventWrapper.cc deleted file mode 100644 index 14a05c0708a..00000000000 --- a/FWCore/Python/src/EventWrapper.cc +++ /dev/null @@ -1,83 +0,0 @@ -// -*- C++ -*- -// -// Package: Python -// Class : EventWrapper -// -// Implementation: -// <Notes on implementation> -// -// Original Author: Chris Jones -// Created: Wed Jun 28 11:21:52 CDT 2006 -// $Id$ -// - -// system include files - -// user include files -#include "FWCore/Python/src/EventWrapper.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/GenericHandle.h" - -// -// constants, enums and typedefs -// -using namespace edm::python; -// -// static data member definitions -// - -// -// constructors and destructor -// -ConstEventWrapper::ConstEventWrapper(const edm::Event& iEvent): -event_(&iEvent) -{ -} - -// EventWrapper::EventWrapper(const EventWrapper& rhs) -// { -// // do actual copying here; -// } - -//EventWrapper::~EventWrapper() -//{ -//} - -// -// assignment operators -// -// const EventWrapper& EventWrapper::operator=(const EventWrapper& rhs) -// { -// //An exception safe implementation is -// EventWrapper temp(rhs); -// swap(rhs); -// -// return *this; -// } - -// -// member functions -// -void -ConstEventWrapper::getByLabel(std::string const& iLabel, edm::GenericHandle& oHandle) const -{ - if(event_) { - event_->getByLabel(iLabel,oHandle); - } -} - -void -ConstEventWrapper::getByLabel(std::string const& iLabel, std::string const& iInstance, edm::GenericHandle& oHandle) const -{ - if(event_) { - event_->getByLabel(iLabel,iInstance,oHandle); - } -} -// -// const member functions -// - -// -// static member functions -// diff --git a/FWCore/Python/src/EventWrapper.h b/FWCore/Python/src/EventWrapper.h deleted file mode 100644 index 6931f8aa3d6..00000000000 --- a/FWCore/Python/src/EventWrapper.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef Python_EventWrapper_h -#define Python_EventWrapper_h -// -*- C++ -*- -// -// Package: Python -// Class : EventWrapper -// -/**\class EventWrapper EventWrapper.h FWCore/Python/interface/EventWrapper.h - - Description: <one line class summary> - - Usage: - <usage> - -*/ -// -// Original Author: Chris Jones -// Created: Wed Jun 28 10:57:11 CDT 2006 -// $Id$ -// - -// system include files -#include <string> -// user include files -#include "FWCore/Framework/interface/GenericHandle.h" - -// forward declarations -namespace edm { - class Event; - - namespace python { - class ConstEventWrapper - { - - public: - ConstEventWrapper() : event_(0) {} - ConstEventWrapper(const edm::Event&); - //virtual ~ConstEventWrapper(); - - // ---------- const member functions --------------------- - void getByLabel(std::string const& , edm::GenericHandle& ) const; - void getByLabel(std::string const& , std::string const&, edm::GenericHandle& ) const; - - // ---------- static member functions -------------------- - - // ---------- member functions --------------------------- - - private: - //ConstEventWrapper(const ConstEventWrapper&); // stop default - - //const ConstEventWrapper& operator=(const ConstEventWrapper&); // stop default - - // ---------- member data -------------------------------- - edm::Event const* event_; -}; - } -} - -#endif diff --git a/FWCore/Python/src/PyModule.cc b/FWCore/Python/src/PyModule.cc deleted file mode 100755 index 037eefe4668..00000000000 --- a/FWCore/Python/src/PyModule.cc +++ /dev/null @@ -1,67 +0,0 @@ -/* - * PyModule.cc - * CMSSW - * - * Created by Chris Jones on 3/22/06. - * Copyright 2006 __MyCompanyName__. All rights reserved. - * - */ -#include <boost/python/module.hpp> -#include <boost/python/def.hpp> -#include <boost/python/args.hpp> -#include <boost/python/tuple.hpp> -#include <boost/python/class.hpp> -#include <boost/python/overloads.hpp> -#include <boost/python/raw_function.hpp> -#include <boost/python/return_internal_reference.hpp> -#include <boost/python/exception_translator.hpp> - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/GenericHandle.h" - -#include "FWCore/Python/src/EventWrapper.h" - -#include "FWCore/Utilities/interface/Exception.h" - -#include "Rtypes.h" -#include "TClass.h" - -class TClass; -namespace PyROOT { - PyObject* BindRootObject( void* object, TClass* klass, Bool_t isRef = kFALSE ); -} - -namespace { - void (edm::python::ConstEventWrapper::*getByLabel1)(std::string const& , edm::GenericHandle& ) const = &edm::python::ConstEventWrapper::getByLabel; - void (edm::python::ConstEventWrapper::*getByLabel2)(std::string const& , std::string const&, edm::GenericHandle& ) const = &edm::python::ConstEventWrapper::getByLabel; - - PyObject* getFromHandle(const edm::GenericHandle& iHandle) - { - if(0 == iHandle.product() ) { - boost::python::object null; - return null.ptr(); - } - return PyROOT::BindRootObject( iHandle.product()->Address(), TClass::GetClass(iHandle.type().TypeInfo())); - } -} - -//this function is used to translate C++ exceptions to python exceptions -static -void -exceptionTranslation(cms::Exception const& iException) { - PyErr_SetString(PyExc_RuntimeError, iException.what()); -} - - -using namespace boost::python; -BOOST_PYTHON_MODULE(libFWCorePython) -{ - register_exception_translator< cms::Exception >(exceptionTranslation); - - class_<edm::python::ConstEventWrapper>("ConstEvent",no_init) - .def("getByLabel",getByLabel1) - .def("getByLabel",getByLabel2); - - class_<edm::GenericHandle>("Handle",init<std::string>()) - .def("get",getFromHandle); -} diff --git a/FWCore/Python/src/PythonFilter.cc b/FWCore/Python/src/PythonFilter.cc deleted file mode 100755 index 248cc5fc6b2..00000000000 --- a/FWCore/Python/src/PythonFilter.cc +++ /dev/null @@ -1,126 +0,0 @@ -// -*- C++ -*- -// -// Package: PythonFilter -// Class: PythonFilter -// -/**\class PythonFilter PythonFilter.cc FWCore/PythonFilter/src/PythonFilter.cc - - Description: an EDFilter which uses python code to do the work - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Chris D Jones -// Created: Thu Mar 23 21:53:03 CEST 2006 -// $Id: PythonFilter.cc,v 1.4 2006/07/22 13:47:13 hegner Exp $ -// -// - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Utilities/interface/Exception.h" - -#include "boost/python.hpp" - -// subpackage specific includes -#include "FWCore/Python/src/EventWrapper.h" -#include "FWCore/Python/src/PythonManager.h" -#include "FWCore/Python/src/PythonFilter.h" - - -// -// constructors and destructor -// - -PythonFilter::PythonFilter(const edm::ParameterSet& iConfig) : - // command_("import sys\n" -// "sys.argv=['']\n" //ROOT module uses this so must be set -// "import ROOT\n" -// "ROOT.gSystem.Load(\"libFWCoreFWLite\")\n" -// "ROOT.AutoLibraryLoader.enable()\n" -// "import libFWCorePython as edm\n"), - handle_(PythonManager::handle()) -{ - const std::vector<std::string> commandLines = iConfig.getParameter<std::vector<std::string> >("command"); - - for( std::vector<std::string>::const_iterator itLine = commandLines.begin(); - itLine != commandLines.end(); - ++itLine) { - command_ += *itLine; - command_ += "\n"; - } - - using namespace boost::python; - //make sure our custom module gets loaded - //if(PyImport_AppendInittab("libFWCorePython",initlibFWCorePython)==-1) { - // throw cms::Exception("InitializationFailure" ) - //<<"failed to add libFWCorePython python module to python interpreter"; - //} - - object main_module(( - handle<>(borrowed(PyImport_AddModule("__main__"))))); - - object main_namespace = main_module.attr("__dict__"); - - try { - object result((handle<>(PyRun_String(command_.c_str(), - Py_file_input, - main_namespace.ptr(), - main_namespace.ptr())))); - try { - filter_ = main_namespace["filter"]; - } catch(...) { - throw cms::Exception("Configuration") <<"No 'filter' python variable defined in 'command' parameter.\n Please create an instance of the python class you want to use for filtering and pass that instance to the variable named 'filter'."; - } - - } catch( error_already_set ) { - pythonToCppException("Configuration"); - } -} - - -PythonFilter::~PythonFilter() -{ - - // do anything here that needs to be done at desctruction time - // (e.g. close files, deallocate resources etc.) - //filter_ = boost::python::object(); - //Py_Finalize(); -} - - -// -// member functions -// - -// ------------ method called to produce the data ------------ -bool -PythonFilter::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace boost::python; - object main_module(( - handle<>(borrowed(PyImport_AddModule("__main__"))))); - - object main_namespace = main_module.attr("__dict__"); - - main_namespace["event"] = object(edm::python::ConstEventWrapper(iEvent) ); - main_namespace["tempFilter"] = filter_; - - try { - object result((handle<>(PyRun_String("tempFilter.filter(event)", - Py_eval_input, - main_namespace.ptr(), - main_namespace.ptr())))); - return extract<bool>(result); - - }catch( error_already_set ) { - pythonToCppException("RuntimeError"); - } - return false; -} - diff --git a/FWCore/Python/src/PythonFilter.h b/FWCore/Python/src/PythonFilter.h deleted file mode 100644 index 2eac033fe87..00000000000 --- a/FWCore/Python/src/PythonFilter.h +++ /dev/null @@ -1,46 +0,0 @@ -// -*- C++ -*- -// -// Package: PythonFilter -// Class: PythonFilter -// -/**\class PythonFilter PythonFilter.cc FWCore/PythonFilter/src/PythonFilter.cc - - Description: an EDFilter which uses python code to do the work - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Chris D Jones & Benedikt Hegner -// Created: Sun Jul 22 10:50:17 EST 2006 -// $Id: PythonFilter.h,v 1.2 2006/07/22 13:47:13 hegner Exp $ -// -// -#ifndef PythonFilter_h -#define PythonFilter_h - -#include "boost/python.hpp" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Python/src/PythonManager.h" -#include "FWCore/Framework/interface/EDFilter.h" - - -class PythonFilter : public edm::EDFilter { - public: - explicit PythonFilter(const edm::ParameterSet&); - ~PythonFilter(); - - - virtual bool filter(edm::Event&, const edm::EventSetup&); - private: - // ----------member data --------------------------- - std::string command_; - //have this first to guarantee that Py_Finalize not called - // until the object's destructor is called - PythonManagerHandle handle_; - boost::python::object filter_; -}; - -#endif // PythonFilter_h diff --git a/FWCore/Python/src/PythonManager.h b/FWCore/Python/src/PythonManager.h deleted file mode 100644 index 4fc2c87f7a0..00000000000 --- a/FWCore/Python/src/PythonManager.h +++ /dev/null @@ -1,133 +0,0 @@ -// -// Smart reference + singleton to handle Python interpreter -// -// -// Original Author: Chris D Jones & Benedikt Hegner -// Created: Sun Jul 22 11:03:53 CEST 2006 -// -// $Id: PythonManager.h,v 1.3 2006/07/23 15:41:54 hegner Exp $ - -#ifndef Python_PythonManager_h -#define Python_PythonManager_h - -#include "FWCore/Utilities/interface/Exception.h" -#include "boost/python.hpp" - - -extern "C" { - //this is the entry point into the libFWCorePython python module - void initlibFWCorePython(); - //void initROOT(); -} - -static -void -pythonToCppException(const std::string& iType) -{ - using namespace boost::python; - PyObject *exc, *val, *trace; - PyErr_Fetch(&exc,&val,&trace); - handle<> hExc(allow_null(exc)); - if(hExc) { - object oExc(hExc); - } - handle<> hVal(allow_null(val)); - handle<> hTrace(allow_null(trace)); - if(hTrace) { - object oTrace(hTrace); - } - - if(hVal) { - object oVal(hVal); - handle<> hStringVal(PyObject_Str(oVal.ptr())); - object stringVal( hStringVal ); - - //PyErr_Print(); - throw cms::Exception(iType) <<"python encountered the error: "<< PyString_AsString(stringVal.ptr())<<"\n"; - } else { - throw cms::Exception(iType)<<" unknown python problem occurred.\n"; - } -} - - -namespace { - class PythonManagerHandle; - - class PythonManager { - public: - friend class PythonManagerHandle; - static PythonManagerHandle handle(); - - private: - PythonManager(); - ~PythonManager() { Py_Finalize(); } - void increment() { ++refCount_; } - void decrement() { --refCount_; if(0==refCount_) delete this; } - unsigned long refCount_; - std::string initCommand_; - }; - - - class PythonManagerHandle { - public: - ~PythonManagerHandle() { manager_.decrement(); } - - PythonManagerHandle(PythonManager& iM): - manager_(iM) { - manager_.increment(); - } - - PythonManagerHandle(const PythonManagerHandle& iRHS) : - manager_(iRHS.manager_) { - manager_.increment(); - } - - private: - const PythonManagerHandle& operator=(const PythonManagerHandle&); - PythonManager& manager_; - }; - - - - PythonManagerHandle PythonManager::handle() { - static PythonManager* s_manager( new PythonManager() ); - return PythonManagerHandle( *s_manager); - } - - - - - PythonManager::PythonManager() : - refCount_(0), - initCommand_( - "import sys\n" - "sys.path.append('./')\n" - "import ROOT\n" - "ROOT.gSystem.Load(\"libFWCoreFWLite\")\n" - "ROOT.AutoLibraryLoader.enable()\n" - "import libFWCorePython as edm\n") - { - Py_InitializeEx(0); - using namespace boost::python; - - if(PyImport_AppendInittab("libFWCorePython",initlibFWCorePython)==-1) { - throw cms::Exception("InitializationFailure" ) - <<"failed to add libFWCorePython python module to python interpreter"; - } - object main_module(( - boost::python::handle<PyObject>(borrowed(PyImport_AddModule("__main__"))))); - object main_namespace = main_module.attr("__dict__"); - try { - object result((boost::python::handle<>(PyRun_String(initCommand_.c_str(), - Py_file_input, - main_namespace.ptr(), - main_namespace.ptr())))); - - } catch(... ) { - throw cms::Exception("Configuration") << "test"; - } - - } -} - -#endif //Python_PythonManager_h diff --git a/FWCore/Python/src/PythonService.cc b/FWCore/Python/src/PythonService.cc deleted file mode 100644 index e2595ee536e..00000000000 --- a/FWCore/Python/src/PythonService.cc +++ /dev/null @@ -1,128 +0,0 @@ -// -*- C++ -*- -// -// Package: Python -// Class : PythonService -// -// Implementation: -// <Notes on implementation> -// -// Original Author: Benedikt Hegner -// Created: Sun Jul 23 11:31:33 CEST 2006 -// $Id: PythonService.cc,v 1.1 2006/07/23 15:41:54 hegner Exp $ -// - -// system include files - -// user include files -#include "FWCore/Python/src/PythonService.h" - -#include "boost/python.hpp" - -#include "DataFormats/Common/interface/ModuleDescription.h" -#include "DataFormats/Common/interface/EventID.h" -#include "DataFormats/Common/interface/Timestamp.h" - -// -// constructor -// -PythonService::PythonService(const edm::ParameterSet& iConfig, edm::ActivityRegistry& iRegistry): - handle_(PythonManager::handle()) -{ - - std::cout << "Start preparing PythonService" << std::endl; - const std::string fileName = iConfig.getParameter<std::string>("fileName"); - - using namespace boost::python; - - command_ = "from "+fileName + " import *\n"; - object main_module(( boost::python::handle<>(borrowed(PyImport_AddModule("__main__"))) )); - object main_namespace = main_module.attr("__dict__"); - try { - object result((boost::python::handle<>(PyRun_String(command_.c_str(), - Py_file_input, - main_namespace.ptr(), - main_namespace.ptr())))); - service_ = main_namespace["service"]; - } catch( ... ) { - throw cms::Exception("Configuration") <<"No 'service' python variable defined in given fileName parameter.\n Please create an instance of the python class you want to use and pass that instance to the variable named 'service'."; - } - - // connect methods and signals - // later on here will be a check what python methods are present - // for now we expect postBeginJob, postEndJob and postProcessEvent - - iRegistry.watchPostBeginJob(this,&PythonService::postBeginJob); - iRegistry.watchPostEndJob(this,&PythonService::postEndJob); - iRegistry.watchPostProcessEvent(this,&PythonService::postProcessEvent); -} - -// -// destructor -// -PythonService::~PythonService() -{ -} - - -// -// member functions -// -void PythonService::postBeginJob() -{ - using namespace boost::python; - object main_module((boost::python::handle<>(borrowed(PyImport_AddModule("__main__"))))); - object main_namespace = main_module.attr("__dict__"); - main_namespace["tempService"] = service_; - - try { - object result((boost::python::handle<>(PyRun_String("tempService.postBeginJob()", - Py_eval_input, - main_namespace.ptr(), - main_namespace.ptr())))); - }catch( error_already_set ) { - pythonToCppException("RuntimeError"); - } -} - - -void PythonService::postEndJob() -{ - using namespace boost::python; - object main_module((boost::python::handle<>(borrowed(PyImport_AddModule("__main__"))))); - object main_namespace = main_module.attr("__dict__"); - main_namespace["tempService"] = service_; - - try { - object result((boost::python::handle<>(PyRun_String("tempService.postEndJob()", - Py_eval_input, - main_namespace.ptr(), - main_namespace.ptr())))); - }catch( error_already_set ) { - pythonToCppException("RuntimeError"); - } -} - - -void PythonService::preProcessEvent(const edm::EventID& iID, const edm::Timestamp& iTime) -{ - -} - - -void PythonService::postProcessEvent(const edm::Event&, const edm::EventSetup&) -{ - using namespace boost::python; - object main_module((boost::python::handle<>(borrowed(PyImport_AddModule("__main__"))))); - object main_namespace = main_module.attr("__dict__"); - main_namespace["tempService"] = service_; - - try { - object result((boost::python::handle<>(PyRun_String("tempService.postProcessEvent()", - Py_eval_input, - main_namespace.ptr(), - main_namespace.ptr())))); - }catch( error_already_set ) { - pythonToCppException("RuntimeError"); - } - -} diff --git a/FWCore/Python/src/PythonService.h b/FWCore/Python/src/PythonService.h deleted file mode 100644 index ed32cdf0eaa..00000000000 --- a/FWCore/Python/src/PythonService.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef PythonService_h -#define PythonService_h -// -*- C++ -*- -// -// Package: Python -// Class : PythonService -// -/**\class PythonService PythonService.h FWCore/Python/src/PythonService.h - - Description: interface to write EDMService in Python - - Usage: - <usage> - -*/ -// -// Original Author: Benedikt Hegner -// Created: Sun Jul 23 11:31:33 CEST 2006 -// $Id: PythonService.h,v 1.1 2006/07/23 15:41:54 hegner Exp $ -// - -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" - -#include "boost/python.hpp" - -// subpackage specific includes -#include "FWCore/Python/src/EventWrapper.h" -#include "FWCore/Python/src/PythonManager.h" - - - - -class PythonService { - public: - PythonService(const edm::ParameterSet&,edm::ActivityRegistry&); - ~PythonService(); - void postBeginJob(); - void postEndJob(); - void preProcessEvent(const edm::EventID&, const edm::Timestamp&); - void postProcessEvent(const edm::Event&, const edm::EventSetup&); - - private: - PythonManagerHandle handle_; - boost::python::object service_; - std::string fileName_; - std::string command_; - - -}; - -#endif // PythonService_h diff --git a/FWCore/Python/src/SealModule.cc b/FWCore/Python/src/SealModule.cc deleted file mode 100644 index 0782e95e54b..00000000000 --- a/FWCore/Python/src/SealModule.cc +++ /dev/null @@ -1,10 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/Python/src/PythonFilter.h" - -#include "FWCore/ServiceRegistry/interface/ServiceMaker.h" -#include "FWCore/Python/src/PythonService.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_SERVICE(PythonService) -DEFINE_ANOTHER_FWK_MODULE(PythonFilter) diff --git a/FWCore/Python/test/loggingExample.cfg b/FWCore/Python/test/loggingExample.cfg deleted file mode 100644 index aa9373eb21c..00000000000 --- a/FWCore/Python/test/loggingExample.cfg +++ /dev/null @@ -1,14 +0,0 @@ -process TEST = { - source = EmptySource { untracked int32 maxEvents = 5 } - module int = IntProducer { int32 ivalue = 2 } - - module test = IntTestAnalyzer { - untracked int32 valueMustMatch = 2 - untracked string moduleLabel = "int" - } - service = PythonService { string fileName = "loggingExample"} - - untracked PSet options = { untracked bool allowUnscheduled = true } - path p = {int & test} -} - diff --git a/FWCore/Python/test/loggingExample.py b/FWCore/Python/test/loggingExample.py deleted file mode 100644 index d104acf7763..00000000000 --- a/FWCore/Python/test/loggingExample.py +++ /dev/null @@ -1,38 +0,0 @@ -# Service example file (called by serviceTest.cfg) -# has to be used together with loggingServer.py - -import libFWCorePython as edm -import xmlrpclib - - -class Service: - - def __init__(self): - print "PythonService: constructor called" - try: - self.server = xmlrpclib.Server('http://localhost:8000') - self.server.logme("Job started") - except: - print "Can't connect to RPC server" - - - def postBeginJob(self): - print "PythonService: postBeginJob" - - - def postEndJob(self): - print "PythonService: postEndJob" - - - def postProcessEvent(self, event): - print "PythonService: postProcessEvent" - handle = edm.Handle("edmtest::IntProduct") - event.getByLabel("int",handle) - print handle.get().value - try: - print self.server.logme("executing PostProcessEvent") - except: - pass - - -service = Service() diff --git a/FWCore/Python/test/loggingServer.py b/FWCore/Python/test/loggingServer.py deleted file mode 100644 index fe29eecc57d..00000000000 --- a/FWCore/Python/test/loggingServer.py +++ /dev/null @@ -1,11 +0,0 @@ -# very basic example for remote logging service - -import SimpleXMLRPCServer - -def logme(message): - print message - return "OK" - -server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8090)) -server.register_function(logme) -server.serve_forever() diff --git a/FWCore/Python/test/serviceExample.py b/FWCore/Python/test/serviceExample.py deleted file mode 100644 index 17803eeb998..00000000000 --- a/FWCore/Python/test/serviceExample.py +++ /dev/null @@ -1,26 +0,0 @@ -import libFWCorePython as edm - - -class Service: - - def __init__(self): - print "PythonService: constructor called" - - - def postBeginJob(self): - print "PythonService: postBeginJob" - - - def postEndJob(self): - print "PythonService: postEndJob" - - - def postProcessEvent(self, event): - print "PythonService: postProcessEvent" - handle = edm.Handle("edmtest::IntProduct") - event.getByLabel("int",handle) - print handle.get().value - - -################## -service = Service() diff --git a/FWCore/Python/test/serviceTest.cfg b/FWCore/Python/test/serviceTest.cfg deleted file mode 100644 index a1258933ebd..00000000000 --- a/FWCore/Python/test/serviceTest.cfg +++ /dev/null @@ -1,14 +0,0 @@ -process TEST = { - source = EmptySource { untracked int32 maxEvents = 5 } - module int = IntProducer { int32 ivalue = 2 } - - module test = IntTestAnalyzer { - untracked int32 valueMustMatch = 2 - untracked string moduleLabel = "int" - } - service = PythonService { string fileName = "serviceExample"} - - untracked PSet options = { untracked bool allowUnscheduled = true } - path p = {int & test} -} - diff --git a/FWCore/Python/test/simpleTest.cfg b/FWCore/Python/test/simpleTest.cfg deleted file mode 100644 index 9ec044430f4..00000000000 --- a/FWCore/Python/test/simpleTest.cfg +++ /dev/null @@ -1,30 +0,0 @@ -process TEST = { - source = EmptySource { untracked int32 maxEvents = 1 } - module int = IntProducer { int32 ivalue = 2 } - - module python = PythonFilter { - vstring command = { - 'class F1:', - ' def __init__(self,cut):', - ' self.cut = cut', - ' def filter(self,event):', - ' handle = edm.Handle("edmtest::IntProduct")', - ' event.getByLabel("int",handle)', - ' print handle.get().value', - ' if self.cut == handle.get().value:', - ' return False', - ' print "boo"', - ' return True', - 'filter = F1(1)' - } - } - - module test = IntTestAnalyzer { - untracked int32 valueMustMatch = 2 - untracked string moduleLabel = "int" - } - service = Tracer {} - - untracked PSet options = { untracked bool allowUnscheduled = true } - path p = {python & test} -} diff --git a/FWCore/PythonParameterSet/doc/html/index.html b/FWCore/PythonParameterSet/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/PythonParameterSet/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/PythonParameterSet/doc/html/overview.html b/FWCore/PythonParameterSet/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/PythonParameterSet/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/RootAutoLibraryLoader/doc/html/index.html b/FWCore/RootAutoLibraryLoader/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/RootAutoLibraryLoader/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/RootAutoLibraryLoader/doc/html/overview.html b/FWCore/RootAutoLibraryLoader/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/RootAutoLibraryLoader/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/Sources/doc/html/index.html b/FWCore/Sources/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/Sources/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/Sources/doc/html/overview.html b/FWCore/Sources/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/Sources/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc b/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc index 49820155581..339833b8df5 100644 --- a/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc +++ b/FWCore/TFWLiteSelector/src/TFWLiteSelectorBasic.cc @@ -8,7 +8,7 @@ // // Original Author: Chris Jones // Created: Tue Jun 27 17:58:10 EDT 2006 -// $Id: TFWLiteSelectorBasic.cc,v 1.4 2006/10/07 07:26:11 wmtan Exp $ +// $Id: TFWLiteSelectorBasic.cc,v 1.7 2006/12/07 04:41:56 chrjones Exp $ // // system include files @@ -16,6 +16,7 @@ #include "TTree.h" #include "TChain.h" #include "TBranch.h" +#include "TClass.h" #include "Reflex/Type.h" #include "Reflex/Object.h" #include "boost/shared_ptr.hpp" @@ -78,17 +79,32 @@ namespace edm { return std::auto_ptr<EDProduct>(); } + //We can't use reflex to create the instance since Reflex uses 'malloc' instead of new + /* //use reflex to create an instance of it ROOT::Reflex::Object wrapperObj = classType.Construct(); if( 0 == wrapperObj.Address() ) { throw cms::Exception("FailedToCreate") <<"could not create an instance of '"<<fullName<<"'"; } void* address = wrapperObj.Address(); + */ + TClass* rootClassType=TClass::GetClass(classType.TypeInfo()); + if( 0 == rootClassType) { + throw cms::Exception("MissingRootDictionary") + <<"could not find a ROOT dictionary for type '"<<fullName<<"'" + <<"\n Please make sure all the necessary libraries are available."; + return std::auto_ptr<EDProduct>(); + } + void* address = rootClassType->New(); branch->SetAddress( &address ); + /* ROOT::Reflex::Object edProdObj = wrapperObj.CastObject( ROOT::Reflex::Type::ByName("edm::EDProduct") ); edm::EDProduct* prod = reinterpret_cast<edm::EDProduct*>(edProdObj.Address()); + */ + static TClass* edproductTClass = TClass::GetClass( typeid(edm::EDProduct)); + edm::EDProduct* prod = reinterpret_cast<edm::EDProduct*>( rootClassType->DynamicCast(edproductTClass,address,true)); if(0 == prod) { throw cms::Exception("FailedConversion") <<"failed to convert a '"<<fullName @@ -107,7 +123,8 @@ namespace edm { processNames_(), reader_(new FWLiteDelayedReader), productMap_(), - prov_() + prov_(), + pointerToBranchBuffer_() { reader_->set(®_);} void setTree( TTree* iTree) { @@ -125,6 +142,7 @@ namespace edm { typedef std::map<ProductID, BranchDescription> ProductMap; ProductMap productMap_; edm::EventProvenance prov_; + std::vector<edm::BranchEntryDescription*> pointerToBranchBuffer_; }; } } @@ -192,7 +210,7 @@ TFWLiteSelectorBasic::Init(TTree *iTree) { Bool_t TFWLiteSelectorBasic::Notify() { - std::cout <<"Notify start"<<std::endl; + //std::cout <<"Notify start"<<std::endl; //we have switched to a new file //get new file from Tree if(0==m_->tree_) { @@ -219,7 +237,7 @@ TFWLiteSelectorBasic::Notify() { Bool_t TFWLiteSelectorBasic::Process(Long64_t iEntry) { - std::cout <<"Process start"<<std::endl; + //std::cout <<"Process start"<<std::endl; if(everythingOK_) { edm::EventAux aux; edm::EventAux* pAux= &aux; @@ -246,9 +264,8 @@ TFWLiteSelectorBasic::Process(Long64_t iEntry) { try { m_->reader_->setEntry(iEntry); - edm::EventPrincipal ep(aux.id(), aux.time(), m_->reg_, aux.luminosityBlockID(), aux.processHistoryID(), m_->reader_); + edm::EventPrincipal ep(aux.id(), aux.time(), m_->reg_, aux.processHistoryID(), m_->reader_); m_->processNames_ = ep.processHistory(); -//OLD edm::EventPrincipal ep(aux.id_, aux.time_,m_->reg_, m_->processNames_, m_->reader_); using namespace edm; std::vector<BranchEntryDescription>::iterator pit = m_->prov_.data_.begin(); @@ -258,6 +275,7 @@ TFWLiteSelectorBasic::Process(Long64_t iEntry) { std::auto_ptr<Provenance> prov(new Provenance); prov->event = *pit; prov->product = m_->productMap_[prov->event.productID_]; + //std::cout<< "adding group for ID "<<prov->event.productID_<<std::endl; std::auto_ptr<Group> g(new Group(prov, prov->event.isPresent())); ep.addGroup(g); } @@ -275,7 +293,7 @@ TFWLiteSelectorBasic::Process(Long64_t iEntry) { std::cout <<"While processing entry "<<iEntry<<" an unknown exception was caught" << std::endl; } } - std::cout <<"Process end"<<std::endl; + //std::cout <<"Process end"<<std::endl; return kFALSE; } @@ -337,19 +355,25 @@ TFWLiteSelectorBasic::setupNewFile(TFile& iFile) { } m_->productMap_.erase(m_->productMap_.begin(),m_->productMap_.end()); + m_->pointerToBranchBuffer_.erase(m_->pointerToBranchBuffer_.begin(), + m_->pointerToBranchBuffer_.end()); edm::ProductRegistry::ProductList const& prodList = pReg->productList(); std::vector<edm::BranchEntryDescription> temp( prodList.size(), edm::BranchEntryDescription() ); m_->prov_.data_.swap( temp); std::vector<edm::BranchEntryDescription>::iterator itB = m_->prov_.data_.begin(); + m_->pointerToBranchBuffer_.reserve(prodList.size()); for (edm::ProductRegistry::ProductList::const_iterator it = prodList.begin(); it != prodList.end(); ++it,++itB) { edm::BranchDescription const& prod = it->second; prod.init(); m_->productMap_.insert(std::make_pair(it->second.productID_, it->second)); - edm::BranchEntryDescription* tmp = & (*itB); - m_->metaTree_->SetBranchAddress( prod.branchName().c_str(), &tmp); + //std::cout <<"id "<<it->second.productID_<<" branch "<<it->second.branchName()<<std::endl; + m_->pointerToBranchBuffer_.push_back( & (*itB)); + void* tmp = &(m_->pointerToBranchBuffer_.back()); + //edm::BranchEntryDescription* tmp = & (*itB); + m_->metaTree_->SetBranchAddress( prod.branchName().c_str(), tmp); } - std::cout <<"Notify end"<<std::endl; + //std::cout <<"Notify end"<<std::endl; everythingOK_ = true; } diff --git a/FWCore/Version/doc/html/index.html b/FWCore/Version/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FWCore/Version/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FWCore/Version/doc/html/overview.html b/FWCore/Version/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FWCore/Version/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimDataFormats/External/doc/html/index.html b/FastSimDataFormats/External/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimDataFormats/External/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimDataFormats/External/doc/html/overview.html b/FastSimDataFormats/External/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimDataFormats/External/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/index.html b/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/overview.html b/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimDataFormats/L1GlobalMuonTrigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimDataFormats/NuclearInteractions/doc/html/index.html b/FastSimDataFormats/NuclearInteractions/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimDataFormats/NuclearInteractions/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimDataFormats/NuclearInteractions/doc/html/overview.html b/FastSimDataFormats/NuclearInteractions/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimDataFormats/NuclearInteractions/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimDataFormats/PileUpEvents/doc/html/index.html b/FastSimDataFormats/PileUpEvents/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimDataFormats/PileUpEvents/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimDataFormats/PileUpEvents/doc/html/overview.html b/FastSimDataFormats/PileUpEvents/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimDataFormats/PileUpEvents/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/Configuration/doc/html/index.html b/FastSimulation/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/Configuration/doc/html/overview.html b/FastSimulation/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/EgammaElectronAlgos/doc/html/index.html b/FastSimulation/EgammaElectronAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/EgammaElectronAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/EgammaElectronAlgos/doc/html/overview.html b/FastSimulation/EgammaElectronAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/EgammaElectronAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/ForwardDetectors/doc/html/index.html b/FastSimulation/ForwardDetectors/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/ForwardDetectors/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/ForwardDetectors/doc/html/overview.html b/FastSimulation/ForwardDetectors/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/ForwardDetectors/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/HighLevelTrigger/doc/html/index.html b/FastSimulation/HighLevelTrigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/HighLevelTrigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/HighLevelTrigger/doc/html/overview.html b/FastSimulation/HighLevelTrigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/HighLevelTrigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/L1CaloTriggerProducer/doc/html/index.html b/FastSimulation/L1CaloTriggerProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/L1CaloTriggerProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/L1CaloTriggerProducer/doc/html/overview.html b/FastSimulation/L1CaloTriggerProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/L1CaloTriggerProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/MuonSimHitProducer/doc/html/index.html b/FastSimulation/MuonSimHitProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/MuonSimHitProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/MuonSimHitProducer/doc/html/overview.html b/FastSimulation/MuonSimHitProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/MuonSimHitProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/TrackerSetup/src/TrackerInteractionGeometry.cc b/FastSimulation/TrackerSetup/src/TrackerInteractionGeometry.cc index 799afad313c..072938cdcad 100755 --- a/FastSimulation/TrackerSetup/src/TrackerInteractionGeometry.cc +++ b/FastSimulation/TrackerSetup/src/TrackerInteractionGeometry.cc @@ -161,19 +161,20 @@ TrackerInteractionGeometry::TrackerInteractionGeometry(const GeometricSearchTrac -(**bl).specificSurface().bounds().length()/2., +(**bl).specificSurface().bounds().length()/2.); // Third TIB layer: r=41.9599, l=131.628 !!!! Needs to be larger than TIB2 + // This is so because TIB2 (and TIB1) have tilted modules. ++bl; const SimpleCylinderBounds TIB3( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2.-0.3, - +(**bl).specificSurface().bounds().length()/2.+0.3); + -(**bl).specificSurface().bounds().length()/2.-0.6, + +(**bl).specificSurface().bounds().length()/2.+0.6); // Fourth TIB layer: r=49.8924, l=132.78 ++bl; const SimpleCylinderBounds TIB4( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2., - +(**bl).specificSurface().bounds().length()/2.); + -(**bl).specificSurface().bounds().length()/2.-0.1, + +(**bl).specificSurface().bounds().length()/2.+0.1); // Inner Barrel Cylinder & Ends : Cables and walls const SimpleDiskBounds TIBEOut(22.5,50.4,-0.5,0.5); @@ -199,34 +200,35 @@ TrackerInteractionGeometry::TrackerInteractionGeometry(const GeometricSearchTrac (**bl).specificSurface().radius()+0.0150, -(**bl).specificSurface().bounds().length()/2., +(**bl).specificSurface().bounds().length()/2.); - // Third TOB layer: r=78.0686, l=216.576 + // Third TOB layer: r=78.0686, l=216.576 !!! Needs to be larger than TOB2 + // This is so because TOB2 (and TOB1) have tilted modules. ++bl; const SimpleCylinderBounds TOB3( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2., - +(**bl).specificSurface().bounds().length()/2.); + -(**bl).specificSurface().bounds().length()/2.-0.5, + +(**bl).specificSurface().bounds().length()/2.+0.5); // Fourth TOB layer: r=86.8618, l=216.576 ++bl; const SimpleCylinderBounds TOB4( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2., - +(**bl).specificSurface().bounds().length()/2.); + -(**bl).specificSurface().bounds().length()/2.-0.5, + +(**bl).specificSurface().bounds().length()/2.+0.5); // Fifth TOB layer: r=96.5557, l=216.576 ++bl; const SimpleCylinderBounds TOB5( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2., - +(**bl).specificSurface().bounds().length()/2.); + -(**bl).specificSurface().bounds().length()/2.-0.5, + +(**bl).specificSurface().bounds().length()/2.+0.5); // Sixth TOB layer: r=108.05, l=216.576 ++bl; const SimpleCylinderBounds TOB6( (**bl).specificSurface().radius()-0.0150, (**bl).specificSurface().radius()+0.0150, - -(**bl).specificSurface().bounds().length()/2., - +(**bl).specificSurface().bounds().length()/2.); + -(**bl).specificSurface().bounds().length()/2.-0.5, + +(**bl).specificSurface().bounds().length()/2.+0.5); const SimpleDiskBounds TOBEOut(55.0,109.5,-0.5,0.5); const Surface::PositionType PTOBEOut(0.0,0.0,110.0); diff --git a/FastSimulation/Tracking/doc/html/index.html b/FastSimulation/Tracking/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/Tracking/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/Tracking/doc/html/overview.html b/FastSimulation/Tracking/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/Tracking/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/FastSimulation/Validation/doc/html/index.html b/FastSimulation/Validation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/FastSimulation/Validation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/FastSimulation/Validation/doc/html/overview.html b/FastSimulation/Validation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/FastSimulation/Validation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/AMPTInterface/doc/html/index.html b/GeneratorInterface/AMPTInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/AMPTInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/AMPTInterface/doc/html/overview.html b/GeneratorInterface/AMPTInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/AMPTInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/AlpgenInterface/BuildFile b/GeneratorInterface/AlpgenInterface/BuildFile new file mode 100644 index 00000000000..7c00be534d1 --- /dev/null +++ b/GeneratorInterface/AlpgenInterface/BuildFile @@ -0,0 +1,27 @@ +<use name=boost> +<use name=FWCore/Framework> +<use name=SimDataFormats/HepMCProduct> +<use name=clhep> +<use name=pythia6_227> +#<use name=photos215> + +<flags SEAL_PLUGIN_NAME="GeneratorInterfaceAlpgenInterface"> +<export> + <lib name=GeneratorInterfaceAlpgenInterface> + <use name=boost> + <use name=FWCore/Framework> + <use name=SimDataFormats/HepMCProduct> + <use name=clhep> + <use name=pythia6_227> +# <use name=tauola27.121_aux1> +# <use name=tauola27.121> +# <use name=photos215> + +</export> + + <lib name=g2c></lib> + <lib name=m></lib> +# <lib name=tauola27.121_aux1> +# <lib name=tauola27.121> +# + diff --git a/Alignment/CommonAlignmentMonitor/doc/html/index.html b/GeneratorInterface/AlpgenInterface/doc/html/index.html similarity index 100% rename from Alignment/CommonAlignmentMonitor/doc/html/index.html rename to GeneratorInterface/AlpgenInterface/doc/html/index.html diff --git a/Alignment/CommonAlignmentMonitor/doc/html/overview.html b/GeneratorInterface/AlpgenInterface/doc/html/overview.html similarity index 100% rename from Alignment/CommonAlignmentMonitor/doc/html/overview.html rename to GeneratorInterface/AlpgenInterface/doc/html/overview.html diff --git a/GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h b/GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h new file mode 100644 index 00000000000..384db82ca5c --- /dev/null +++ b/GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h @@ -0,0 +1,86 @@ +#ifndef Alpgen_Source_h +#define Alpgen_Source_h + +/** \class AlpgenSource + * + * Generates Pythia HepMC events + * + * Hector Naves + * for the Generator Interface. 26/10/05 + * Patrick Janot + * read all possible cards for Pythia Setup. 26/02/06 + * ( port from FAMOS ) + ***************************************/ + +#define PYCOMP pycomp_ + +#include "FWCore/Framework/interface/GeneratedInputSource.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include <map> +#include <string> +#include "CLHEP/HepMC/GenEvent.h" + + +namespace CLHEP +{ + class RandFlat ; + class HepRandomEngine; +} + +namespace edm +{ + class AlpgenSource : public GeneratedInputSource { + public: + + /// Constructor + AlpgenSource(const ParameterSet &, const InputSourceDescription &); + /// Destructor + virtual ~AlpgenSource(); + + + private: + + /// Interface to the PYGIVE/TXGIVE pythia routine, with add'l protections + bool call_pygive(const std::string& iParm ); + bool call_txgive(const std::string& iParm ); + + private: + + virtual bool produce(Event & e); + void clear(); + + HepMC::GenEvent *evt; + + /// Pythia PYLIST Verbosity flag + unsigned int pythiaPylistVerbosity_; + /// HepMC verbosity flag + bool pythiaHepMCVerbosity_; + /// Events to print if verbosity + unsigned int maxEventsToPrint_; + + + // for single particle generation in pythia + int particleID; + bool doubleParticle; + double ptmin, ptmax; + double etamin, etamax; + double phimin, phimax; + + HepRandomEngine* fRandomEngine; + RandFlat* fRandomGenerator; + + }; +} + +// +#define alpgen_end alpgen_end_ + extern "C" { + void alpgen_end(); + } + + + + + + +#endif diff --git a/GeneratorInterface/AlpgenInterface/src/AlpgenSource.cc b/GeneratorInterface/AlpgenInterface/src/AlpgenSource.cc new file mode 100644 index 00000000000..cc7f894f803 --- /dev/null +++ b/GeneratorInterface/AlpgenInterface/src/AlpgenSource.cc @@ -0,0 +1,204 @@ +/* + * $Date: 2006/07/07 07:19:42 $ + * $Revision: 1.20 $ + * + * Filip Moorgat & Hector Naves + * 26/10/05 + * + * Patrick Janot : added the PYTHIA card reading + * + * Serge SLabospitsky : added Alpgen reading tools + */ + + +#include "GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h" +#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/Utilities/interface/RandomNumberGenerator.h" +#include "CLHEP/Random/JamesRandom.h" +#include "CLHEP/Random/RandFlat.h" + +#include <iostream> +#include "time.h" + +using namespace edm; +using namespace std; + +// Generator modifications +// *********************** +#include "CLHEP/HepMC/include/PythiaWrapper6_2.h" +//#include "GeneratorInterface/CommonInterface/interface/PretauolaWrapper.h" +#include "CLHEP/HepMC/ConvertHEPEVT.h" +#include "CLHEP/HepMC/CBhepevt.h" + +#include "GeneratorInterface/CommonInterface/interface/PythiaCMS.h" +#include "GeneratorInterface/CommonInterface/interface/Txgive.h" + +HepMC::ConvertHEPEVT conv; +// *********************** + + +//used for defaults + static const unsigned long kNanoSecPerSec = 1000000000; + static const unsigned long kAveEventPerSec = 200; + +AlpgenSource::AlpgenSource( const ParameterSet & pset, + InputSourceDescription const& desc ) : + GeneratedInputSource(pset, desc), evt(0), + pythiaPylistVerbosity_ (pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0)), + pythiaHepMCVerbosity_ (pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false)), + maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",1)) + +{ + + cout << "AlpgenSource: initializing Pythia. " << endl; + + // PYLIST Verbosity Level + // Valid PYLIST arguments are: 1, 2, 3, 5, 7, 11, 12, 13 + pythiaPylistVerbosity_ = pset.getUntrackedParameter<int>("pythiaPylistVerbosity",0); + cout << "Pythia PYLIST verbosity level = " << pythiaPylistVerbosity_ << endl; + + // HepMC event verbosity Level + pythiaHepMCVerbosity_ = pset.getUntrackedParameter<bool>("pythiaHepMCVerbosity",false); + cout << "Pythia HepMC verbosity = " << pythiaHepMCVerbosity_ << endl; + + //Max number of events printed on verbosity level + maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0); + cout << "Number of events to be printed = " << maxEventsToPrint_ << endl; + + + // Set PYTHIA parameters in a single ParameterSet + { + ParameterSet pythia_params = + pset.getParameter<ParameterSet>("PythiaParameters") ; + + // Read the PYTHIA parameters for each set of parameters + vector<string> pars = + pythia_params.getParameter<vector<string> >("pythia"); + + cout << "----------------------------------------------" << endl; + cout << "Read PYTHIA parameter set " << endl; + cout << "----------------------------------------------" << endl; + + // Loop over all parameters and stop in case of mistake + for( vector<string>::const_iterator + itPar = pars.begin(); itPar != pars.end(); ++itPar ) { + static string sRandomValueSetting("MRPY(1)"); + if( 0 == itPar->compare(0,sRandomValueSetting.size(),sRandomValueSetting) ) { + throw edm::Exception(edm::errors::Configuration,"PythiaError") + <<" attempted to set random number seed."; + } + if( ! call_pygive(*itPar) ) { + throw edm::Exception(edm::errors::Configuration,"PythiaError") + <<" pythia did not accept the following \""<<*itPar<<"\""; + } + } +} + + +// Read the Alpgen parameters +#include "GeneratorInterface/CommonInterface/interface/ExternalGenRead.inc" + + //In the future, we will get the random number seed on each event and tell + // pythia to use that new seed + cout << "----------------------------------------------" << endl; + cout << "Setting Pythia random number seed " << endl; + cout << "----------------------------------------------" << endl; + edm::Service<RandomNumberGenerator> rng; + uint32_t seed = rng->mySeed(); + ostringstream sRandomSet; + sRandomSet <<"MRPY(1)="<<seed; + call_pygive(sRandomSet.str()); + + // call_pretauola(-1); // TAUOLA initialization + call_pyinit( "USER", "p", "p", 14000. ); + + cout << endl; // Stetically add for the output + //******** + + produces<HepMCProduct>(); + cout << "AlpgenSource: starting event generation ... " << endl; +} + + +AlpgenSource::~AlpgenSource(){ + cout << "AlpgenSource: event generation done. " << endl; + call_pystat(1); + // call_pretauola(1); // output from TAUOLA + alpgen_end(); + clear(); +} + +void AlpgenSource::clear() { + +} + + +bool AlpgenSource::produce(Event & e) { + + auto_ptr<HepMCProduct> bare_product(new HepMCProduct()); + //cout << "AlpgenSource: Generating event ... " << endl; + + //******** + // + + call_pyevnt(); // generate one event with Pythia + // call_pretauola(0); // tau-lepton decays with TAUOLA + + call_pyhepc( 1 ); + + HepMC::GenEvent* evt = conv.getGenEventfromHEPEVT(); + evt->set_signal_process_id(pypars.msti[0]); + evt->set_event_number(numberEventsInRun() - remainingEvents() - 1); + + + //******** Verbosity ******** + + if(event() <= maxEventsToPrint_ && + (pythiaPylistVerbosity_ || pythiaHepMCVerbosity_)) { + + // Prints PYLIST info + if(pythiaPylistVerbosity_) { + call_pylist(pythiaPylistVerbosity_); + } + + // Prints HepMC event + if(pythiaHepMCVerbosity_) { + cout << "Event process = " << pypars.msti[0] << endl + << "----------------------" << endl; + evt->print(); + } + } + + + //evt = reader_->fillCurrentEventData(); + //******** + + if(evt) bare_product->addHepMCData(evt ); + + e.put(bare_product); + + return true; +} + +bool +AlpgenSource::call_pygive(const std::string& iParm ) { + + int numWarn = pydat1.mstu[26]; //# warnings + int numErr = pydat1.mstu[22];// # errors + +//call the fortran routine pygive with a fortran string + PYGIVE( iParm.c_str(), iParm.length() ); + // PYGIVE( iParm ); +//if an error or warning happens it is problem + return pydat1.mstu[26] == numWarn && pydat1.mstu[22] == numErr; +} +//------------ +bool +AlpgenSource::call_txgive(const std::string& iParm ) + { + //call the fortran routine txgive with a fortran string + TXGIVE( iParm.c_str(), iParm.length() ); + return 1; + } diff --git a/GeneratorInterface/MCatNLOInterface/src/HepEvt.F b/GeneratorInterface/AlpgenInterface/src/FortranTools.F similarity index 51% rename from GeneratorInterface/MCatNLOInterface/src/HepEvt.F rename to GeneratorInterface/AlpgenInterface/src/FortranTools.F index c23d20cfb6a..811846459f5 100644 --- a/GeneratorInterface/MCatNLOInterface/src/HepEvt.F +++ b/GeneratorInterface/AlpgenInterface/src/FortranTools.F @@ -1,4 +1,4 @@ - + subroutine ihepevt @@ -8,3 +8,7 @@ return end + +#include "GeneratorInterface/CommonInterface/interface/txgive.F" + +#include "GeneratorInterface/CommonInterface/interface/pydata.f" diff --git a/GeneratorInterface/MCatNLOInterface/src/SealModule.cc b/GeneratorInterface/AlpgenInterface/src/SealModule.cc similarity index 53% rename from GeneratorInterface/MCatNLOInterface/src/SealModule.cc rename to GeneratorInterface/AlpgenInterface/src/SealModule.cc index 54197ecc766..7f18cd1970f 100644 --- a/GeneratorInterface/MCatNLOInterface/src/SealModule.cc +++ b/GeneratorInterface/AlpgenInterface/src/SealModule.cc @@ -1,9 +1,10 @@ #include "PluginManager/ModuleDef.h" #include "FWCore/Framework/interface/InputSourceMacros.h" #include "FWCore/Framework/interface/MakerMacros.h" -#include "GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h" +#include "GeneratorInterface/AlpgenInterface/interface/AlpgenSource.h" - using edm::MCatNLOSource; + using edm::AlpgenSource; DEFINE_SEAL_MODULE(); - DEFINE_ANOTHER_FWK_INPUT_SOURCE(MCatNLOSource) + DEFINE_ANOTHER_FWK_INPUT_SOURCE(AlpgenSource); + diff --git a/GeneratorInterface/AlpgenInterface/src/alpg_match.F b/GeneratorInterface/AlpgenInterface/src/alpg_match.F new file mode 100644 index 00000000000..ad8d0bd3d0f --- /dev/null +++ b/GeneratorInterface/AlpgenInterface/src/alpg_match.F @@ -0,0 +1,1848 @@ + +*-- Author : Michelangelo Mangano +C---------------------------------------------------------------------- + SUBROUTINE UPVETO(IPVETO) +C---------------------------------------------------------------------- +C subroutine to implement the MLM jet matching criterion +C---------------------------------------------------------------------- + IMPLICIT NONE +c process code + integer ihrd + integer itopprc +c--event file data + integer Nunit,NunitOut,NunitIni +* character*100 filename,tmpstr,tmpstr1 + character*100 filename +c total number of input events + common/AHio/Nunit,NunitOut,NunitIni,filename +c inputs for the matching algorithm + integer iexc,npfst,nplst,nljets,njstart,njlast + $ ,ickkw + double precision etclus,rclus,etaclmax + common/AHopts/etclus,rclus,etaclmax,iexc,npfst + $ ,nplst,nljets,njstart,njlast,ickkw +c process and particles parameters + double precision mc,mb,mt,mw,mz,mh + double precision ebeam + integer ndns,ih1,ih2 + integer nw,nz,nh,nph + integer ihvy,ihvy2 +c pdf set type + character pdftyp*25 +c total number of partons + integer npart + common/AHppara/mc,mb,mt,mw,mz,mh, + & ebeam,ih1,ih2, + & ihrd,itopprc, + & nw,nz,nh,nph, + & ihvy,ihvy2, + & npart,ndns,pdftyp +c weight information + real *8 maxwgt,avgwgt,errwgt,totlum + integer unwev + common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev +c general parameters + integer nparam + parameter (nparam=200) + integer parlen,partyp + character chpar*8,chpdes*70 + double precision parval + common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) + $ ,parlen(nparam),partyp(nparam) +c global event cuts + double precision ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + + +C...GUP Event common block + INTEGER MAXNUP + PARAMETER (MAXNUP=500) + INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP + DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP + COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, + & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), + & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), + & SPINUP(MAXNUP) +C...HEPEVT commonblock. + INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP + PARAMETER (NMXHEP=4000) + COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), + &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) + DOUBLE PRECISION PHEP,VHEP + SAVE /HEPEVT/ + INTEGER IPVETO +C CALSIM AND JET VARIABLES + INTEGER NCY,NCPHI,NJMAX,JETNO,NCJET + DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,CPHCAL,SPHCAL,DELY, + & CTHCAL,STHCAL,PCJET,ETJET + PARAMETER (NCY=100) + PARAMETER (NCPHI=60,PI=3.141593D0) + COMMON/CALOR/DELY,DELPHI,ET(NCY,NCPHI), + $ CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN + $ ,YCMAX + PARAMETER (NJMAX=500) + COMMON/GETCOM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET +C + DOUBLE PRECISION PSERAP + INTEGER K(NJMAX),KP(NJMAX),kpj(njmax) +c local variables + integer i,j,ihep,nmatch,jrmin + double precision etajet,phijet,delr,dphi,delrmin + double precision p(4,10),pt(10),eta(10),phi(10) + integer idbg + parameter (idbg=0) +c + double precision tiny + parameter (tiny=1d-3) +* + IPVETO=0 + IF(ICKKW.EQ.0) RETURN +C CHECK FOR EVENT ERROR OR ZERO WGT + I=0 +C HERWIG/PYTHIA SPECIFIC + CALL ALSHER(I) + IF(I.EQ.1) RETURN +C + IF(IHRD.EQ.7.OR.IHRD.EQ.8.OR.IHRD.EQ.13) THEN + WRITE(*,*) 'JET MATCHING FOR HARD PROCESS ',IHRD + $ ,' NOT IMPLEMENTED, STOP' + STOP + ENDIF +C +c reconstruct parton-level event + if(idbg.eq.1) then + write(1,*) ' ' + write(1,*) 'new event ' + write(1,*) 'PARTONS' + endif + do i=1,nljets + ihep=i+njstart + do j=1,4 + p(j,i)=pup(j,ihep) + enddo + pt(i)=sqrt(p(1,i)**2+p(2,i)**2) + eta(i)=-log(tan(0.5d0*atan2(pt(i)+tiny,p(3,i)))) + phi(i)=atan2(p(2,i),p(1,i)) + if(idbg.eq.1) then + write(1,*) pt(i),eta(i),phi(i) + endif + enddo +c Start from the partonic system + CALL ALPSOR(pt,nljets,KP,2) +c reconstruct showered jets +c + if(idbg.eq.1) then + do i=1,nhep + write(1,111) i,isthep(i),idhep(i),jmohep(1,i),jmohep(2,i) + $ ,phep(1,i),phep(2,i),phep(3,i) + enddo + 111 format(5(i4,1x),3(f12.5,1x)) + endif +c CALL PYLIST(7) +c CALL PYLIST(2) +c CALL PYLIST(5) + CALL CALINI +c CALL CALDEL(2,2,NJLAST) + CALL CALDEL(NPFST,NPLST,NJLAST) + CALL GETJET(RCLUS,ETCLUS,ETACLMAX) +c IF(NCJET.LT.NLJETS) GOTO 999 +c analyse only events with at least nljets-reconstrcuted jets + CALL ALPSOR(ETJET,NCJET,K,2) + if(idbg.eq.1) then + write(1,*) 'JETS' + do i=1,ncjet + j=k(ncjet+1-i) + ETAJET=PSERAP(PCJET(1,j)) + PHIJET=ATAN2(PCJET(2,j),PCJET(1,j)) + write(1,*) etjet(j),etajet,phijet + enddo + endif +c associate partons and jets, using min(delr) as criterion + NMATCH=0 + DO I=1,NCJET + KPJ(I)=0 + ENDDO + DO I=1,NLJETS + DELRMIN=1D5 + DO 110 J=1,NCJET + IF(KPJ(J).NE.0) GO TO 110 + ETAJET=PSERAP(PCJET(1,J)) + PHIJET=ATAN2(PCJET(2,J),PCJET(1,J)) + DPHI=ABS(PHI(KP(NLJETS-I+1))-PHIJET) + IF(DPHI.GT.PI) DPHI=2.*PI-DPHI + DELR=SQRT((ETA(KP(NLJETS-I+1))-ETAJET)**2+(DPHI)**2) + IF(DELR.LT.DELRMIN) THEN + DELRMIN=DELR + JRMIN=J + ENDIF + 110 CONTINUE + IF(DELRMIN.LT.1.5*RCLUS) THEN + NMATCH=NMATCH+1 + KPJ(JRMIN)=I + ENDIF +C WRITE(*,*) 'PARTON-JET',I,' best match:',k(ncjet+1-jrmin) +c $ ,delrmin + ENDDO + NHEP=0 + IF(NMATCH.LT.NLJETS) GOTO 999 +C REJECT EVENTS WITH LARGER JET MULTIPLICITY FROM EXCLUSIVE SAMPLE + IF(NCJET.GT.NLJETS.AND.IEXC.EQ.1) GOTO 999 + RETURN +c HERWIG/PYTHIA TERMINATION: + 999 CALL ALSHEN + IPVETO=1 + END + + +C---------------------------------------------------------------------- + SUBROUTINE UPINIT +C---------------------------------------------------------------------- +C HERWIG/PYTHIA UNIVERSAL EVENT INITIALITION ROUTINE +C---------------------------------------------------------------------- + implicit none +C CMSIM version: Strong typing, no HEPEVT, otherwise same as in Pythia 6.2 +C As from cms130 +C +C...This file contains an almost complete listing of all PYTHIA +C...commonblocks, and additionally some recommended other +C...declarations. You may copy this to the top of your +C...mina program and then eliminate unnecessary parts. + +C----------------------------------------------------------------- + +C...All real arithmetic in double precision. +CCCC IMPLICIT DOUBLE PRECISION(A-H, O-Z) +C...Three Pythia functions return integers, so need declaring. + INTEGER KSUSY1,KSUSY2,KTECHN,KEXCIT,KDIMEN + &, N,NPAD,K, MSTU,MSTJ, KCHG, MDCY,MDME,KFDP + &, MRPY, MSEL,MSELPD,MSUB,KFIN, MSTP,MSTI, MINT + &, ISET,KFPR,ICOL, ISIG, MWID, NGENPD,NGEN + &, IMSS, IDR,IDR2,KFR, IHIST,INDX,ITCM + DOUBLE PRECISION P,V, PARU,PARJ, PMAS,PARF,VCKM, BRAT + &, RRPY, CKIN, PARP,PARI, VINT, COEF + &, XSFX,SIGH, WIDS, XSEC, SIGT + &, XPVMD,XPANL,XPANH,XPBEH,XPDIR + &, VXPVMD,VXPANL,VXPANH,VXPDGM, RMSS + &, ZMIX,UMIX,VMIX,SMZ,SMW,SFMIX,ZMIXI,UMIXI,VMIXI + &, RVLAM,RVLAMP,RVLAMB, AB,RMS,RES,DCMASS + &, RM,A,B,RESM,RESW, XXM, X1, BIN, RTCM + +C...Parameter statement to help give large particle numbers +C...(left- and righthanded SUSY, technicolor, excited fermions, +C...extra dimensions) + PARAMETER (KSUSY1=1000000,KSUSY2=2000000,KTECHN=3000000, + &KEXCIT=4000000,KDIMEN=5000000) + +C...EXTERNAL statement links PYDATA on most machines. + EXTERNAL PYDATA + +C...Commonblocks. +C...The event record. + COMMON/PYJETS/N,NPAD,K(4000,5),P(4000,5),V(4000,5) +C...Parameters. + COMMON/PYDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) +C...Particle properties + some flavour parameters. + COMMON/PYDAT2/KCHG(500,4),PMAS(500,4),PARF(2000),VCKM(4,4) +C...Decay information. + COMMON/PYDAT3/MDCY(500,3),MDME(8000,2),BRAT(8000),KFDP(8000,5) +C...Particle names + COMMON/PYDAT4/CHAF(500,2) + CHARACTER CHAF*16 +C...Random number generator information. + COMMON/PYDATR/MRPY(6),RRPY(100) +C...Selection of hard scattering subprocesses. + COMMON/PYSUBS/MSEL,MSELPD,MSUB(500),KFIN(2,-40:40),CKIN(200) +C...Parameters. + COMMON/PYPARS/MSTP(200),PARP(200),MSTI(200),PARI(200) +C...Internal variables. + COMMON/PYINT1/MINT(400),VINT(400) +C...Process information. + COMMON/PYINT2/ISET(500),KFPR(500,2),COEF(500,20),ICOL(40,4,2) +C...Parton distributions and cross sections. + COMMON/PYINT3/XSFX(2,-40:40),ISIG(1000,3),SIGH(1000) +C...Resonance width and secondary decay treatment. + COMMON/PYINT4/MWID(500),WIDS(500,5) +C...Generation and cross section statistics. + COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) +C...Process names. + COMMON/PYINT6/PROC(0:500) + CHARACTER PROC*28 +C...Total cross sections. + COMMON/PYINT7/SIGT(0:6,0:6,0:5) +C...Photon parton distributions: total and valence only. + COMMON/PYINT8/XPVMD(-6:6),XPANL(-6:6),XPANH(-6:6),XPBEH(-6:6), + &XPDIR(-6:6) + COMMON/PYINT9/VXPVMD(-6:6),VXPANL(-6:6),VXPANH(-6:6),VXPDGM(-6:6) +C...Supersymmetry parameters. + COMMON/PYMSSM/IMSS(0:99),RMSS(0:99) +C...Supersymmetry mixing matrices. + COMMON/PYSSMT/ZMIX(4,4),UMIX(2,2),VMIX(2,2),SMZ(4),SMW(2), + &SFMIX(16,4),ZMIXI(4,4),UMIXI(2,2),VMIXI(2,2) +C...R-parity-violating couplings in supersymmetry. + COMMON/PYMSRV/RVLAM(3,3,3), RVLAMP(3,3,3), RVLAMB(3,3,3) +C...Internal parameters for R-parity-violating processes. + COMMON/PYRVNV/AB(2,16,2),RMS(0:3),RES(6,5),IDR,IDR2,DCMASS,KFR(3) + COMMON/PYRVPM/RM(0:3),A(2),B(2),RESM(2),RESW(2),MFLAG + LOGICAL MFLAG +C...Parameters for Gauss integration of supersymmetric widths. + COMMON/PYINTS/XXM(20) + COMMON/PYG2DX/X1 + COMMON/PYTCSM/ITCM(0:99),RTCM(0:99) +C...Histogram information. + COMMON/PYBINS/IHIST(4),INDX(1000),BIN(20000) + SAVE /PYDAT1/,/PYDAT2/,/PYDAT3/,/PYDAT4/,/PYDATR/,/PYSUBS/, + &/PYPARS/,/PYINT1/,/PYINT2/,/PYINT3/,/PYINT4/,/PYINT5/, + &/PYINT6/,/PYINT7/,/PYMSSM/,/PYSSMT/,/PYMSRV/,/PYTCSM/,/PYBINS/, + &/PYRVNV/,/PYRVPM/ +C...HEPEVT commonblock. +CC PARAMETER (NMXHEP=4000) +CC COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), +CC &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) +CC DOUBLE PRECISION PHEP,VHEP +C...User process initialization commonblock. + INTEGER MAXPUP + PARAMETER (MAXPUP=100) + INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP + DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP + COMMON/HEPRUP/IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), + &IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP),XMAXUP(MAXPUP), + &LPRUP(MAXPUP) +C...User process event common block. + INTEGER MAXNUP + PARAMETER (MAXNUP=500) + INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP + DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP + COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP,IDUP(MAXNUP), + &ISTUP(MAXNUP),MOTHUP(2,MAXNUP),ICOLUP(2,MAXNUP),PUP(5,MAXNUP), + &VTIMUP(MAXNUP),SPINUP(MAXNUP) + + +c process code + integer ihrd + integer itopprc +c--event file data + integer Nunit,NunitOut,NunitIni + character*100 filename,tmpstr,tmpstr1 +c total number of input events + common/AHio/Nunit,NunitOut,NunitIni,filename +c inputs for the matching algorithm + integer iexc,npfst,nplst,nljets,njstart,njlast + $ ,ickkw + double precision etclus,rclus,etaclmax + common/AHopts/etclus,rclus,etaclmax,iexc,npfst + $ ,nplst,nljets,njstart,njlast,ickkw +c process and particles parameters + double precision mc,mb,mt,mw,mz,mh + double precision ebeam + integer ndns,ih1,ih2 + integer nw,nz,nh,nph + integer ihvy,ihvy2 +c pdf set type + character pdftyp*25 +c total number of partons + integer npart + common/AHppara/mc,mb,mt,mw,mz,mh, + & ebeam,ih1,ih2, + & ihrd,itopprc, + & nw,nz,nh,nph, + & ihvy,ihvy2, + & npart,ndns,pdftyp +c weight information + real *8 maxwgt,avgwgt,errwgt,totlum + integer unwev + common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev +c general parameters + integer nparam + parameter (nparam=200) + integer parlen,partyp + character chpar*8,chpdes*70 + double precision parval + common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) + $ ,parlen(nparam),partyp(nparam) +c global event cuts + double precision ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + + CHARACTER *3 CSHO +C--GUP common block +C INTEGER MAXPUP +C PARAMETER(MAXPUP=100) +C INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP +C DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP +C COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), +C & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), +C & XMAXUP(MAXPUP),LPRUP(MAXPUP) +C CALSIM AND JET VARIABLES +* INTEGER NCY,NCPHI,NJMAX,JETNO,NCJET + INTEGER NCY,NCPHI + DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,CPHCAL,SPHCAL,DELY, + & CTHCAL,STHCAL +* & CTHCAL,STHCAL,PCJET,ETJET + PARAMETER (NCY=100) + PARAMETER (NCPHI=60,PI=3.141593D0) + COMMON/CALOR/DELY,DELPHI,ET(NCY,NCPHI), + $ CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN + $ ,YCMAX +C +C LOCAL VARIABLES + CHARACTER*70 STDUMMY + INTEGER I,NTMP + DOUBLE PRECISION TMP + DOUBLE PRECISION PBEAM1,PBEAM2 +C USER ACCESS TO MATCHING PARAMETERS + INTEGER IUSRMAT + PARAMETER (IUSRMAT=1) + character*132 CXpar + integer Ixpar + double precision RXpar + common /EXGPAR/ IXpar(100), RXpar(100), CXpar(100) +C +C USER ACCESS TO INPUT POARAMETERS +c CHARACTER XXX*500, PROCESS*500 + CHARACTER PROCESS*500 + INTEGER FIREVT + WRITE(*,*) 'INPUT NAME OF FILE CONTAINING EVENTS' + WRITE(*,*) '(FOR "file.unw" ENTER "file")' + +* OPEN(22,FILE='INPARM.DAT',STATUS='UNKNOWN') + +* READ(22,FMT='(A500)') XXX +* READ(22,*) FILENAME + FILENAME = CXpar(1) ! 'alpgen' +* READ(22,FMT='(A500)') XXX +* READ(22,FMT='(A500)') PROCESS + PROCESS = CXpar(2) + WRITE(*,*) PROCESS +* READ(22,FMT='(A500)') XXX +* READ(22,FMT='(i10)') FIREVT + FIREVT = IXpar(1) + WRITE(*,*) ' FIRST EVENT TO READ ', FIREVT + IF (FIREVT.LT.1) THEN + WRITE(*,*)'Warning: First event parameter in MY-INPARM.DAT file' + WRITE(*,*)' does not have to less than 1. So it set to 1.' + FIREVT=1 + ENDIF + CALL STRCATH(FILENAME,'-pyt.dat',TMPSTR1) + CALL STRCATH('./',TMPSTR1,TMPSTR) + WRITE(*,*) 'NAME OF TXT FILE CONTAINING GENERATION PARAMETERS', + + TMPSTR + WRITE(*,*) '!!WARNING!!If the file already exists the program' + WRITE(*,*) ' will crash, please rename the file and run again' + OPEN(33,FILE=TMPSTR,STATUS='unknown') ! NEW') + CALL STRCATH(FILENAME,'.unw',TMPSTR) + call GETUNIT(NUNIT) + OPEN(UNIT=NUNIT,NAME=TMPSTR,STATUS='OLD') + CALL STRCATH(FILENAME,'_unw.par',TMPSTR) + CALL GETUNIT(NUNITINI) + OPEN(UNIT=NUNITINI,NAME=TMPSTR,STATUS='OLD') +C OPEN A LOG FILE + CALL ALSHCD(CSHO) +C IF(CSHO.EQ.'HER') THEN +C CALL STRCATH(FILENAME,'.her-log',TMPSTR) +C ELSE +C CALL STRCATH(FILENAME,'.pyt-log',TMPSTR) +C ENDIF +C CALL GETUNIT(NUNITOUT) +C OPEN(UNIT=NUNITOUT,NAME=TMPSTR,STATUS='UNKNOWN') +C START READING FILE + DO I=1,10000 + READ(NUNITINI,'(A)') STDUMMY + IF(STDUMMY(1:4).EQ.'****') GOTO 10 + WRITE(*,*) STDUMMY + WRITE(33,*) STDUMMY + ENDDO +C +C READ IN INPUT PARAMETERS + 10 READ(NUNITINI,*) IHRD + READ(NUNITINI,*) MC,MB,MT,MW,MZ,MH + DO I=1,1000 + READ(NUNITINI,*,ERR=20) NTMP,TMP + PARVAL(NTMP)=TMP + ENDDO + 20 CONTINUE + READ(NUNITINI,*) AVGWGT,ERRWGT + READ(NUNITINI,*) UNWEV,TOTLUM + WRITE(33,*) " " + WRITE(33,*) "INPUT CROSS SECTION (PB):",AVGWGT," +/-",ERRWGT + WRITE(33,*) "NUMBER OF INPUT EVENTS:",UNWEV + WRITE(33,*) "INTEGRATED LUMINOSITY:",TOTLUM +C WRITE PARAMETER VALUES + CALL AHSPAR + PBEAM1=DBLE(EBEAM) + PBEAM2=DBLE(EBEAM) + IH1=1 +C CONVERT PDF TYPES + CALL PDFCONVH(NDNS,NTMP,PDFTYP) +C INPUT JET MATCHING CRITERIA + YCMAX=ETAJMAX+2*DRJMIN + YCMIN=-YCMAX + IF(ICKKW.EQ.1) THEN + ETACLMAX=ETAJMAX+DRJMIN/2D0 + IF(IUSRMAT.EQ.1) THEN + WRITE(*,*) ' ' + WRITE(*,*) 'INPUT ET(CLUS), R(CLUS)' + WRITE(*,*) '(OPTIMAL VALUES:',PTJMIN,DRJMIN,')' +* READ(22,FMT='(A500)') XXX +* READ(22,*) ETCLUS,RCLUS + ETCLUS = RXpar(1) + RCLUS = RXpar(2) + WRITE(*,*) ETCLUS,RCLUS + WRITE(33,*) 'INPUT PARAMETERS FOR MATCHING: ETCLUS',ETCLUS, + + ' RCLUS',RCLUS + ELSEIF(IUSRMAT.EQ.0) THEN + ETCLUS=PTJMIN + RCLUS=DRJMIN + ELSE + WRITE(*,*) 'IUSRMAT=0 OR 1 ONLY VALID PARAMETERS' + WRITE(*,*) 'FOR SETTING OF MATCHING PARAMETERS' + STOP + ENDIF + WRITE(*,*) ' ' + WRITE(*,*) 'JET PARAMETERS FOR MATCHING:' + WRITE(*,*) 'ET>',ETCLUS,' R=',RCLUS + WRITE(*,*) 'DR(PARTON-JET)<',1.5*RCLUS + WRITE(*,*) ' ' + WRITE(*,*) 'INPUT 0 FOR INCLUSIVE JET SAMPLE, 1 FOR EXCLUSIVE' + WRITE(*,*) '(SELECT 0 FOR HIGHEST PARTON MULTIPLICITY SAMPLE)' + WRITE(*,*) '(SELECT 1 OTHERWISE)' +* READ(22,FMT='(A500)') XXX +* READ(22,*) IEXC + IEXC = IXpar(2) + WRITE(*,*) ' IEXC',IEXC + ENDIF +C +C FROM NOW ON, PROCESS THE INFORMATION READ IN, TO COMPLETE SETTING +C UP THE GUP COMMON +C +C--SET UP THE BEAMS +C--ID'S OF BEAM PARTICLES + IF(IH1.EQ.1) THEN + IDBMUP(1) = 2212 + ELSEIF(IH1.EQ.-1) THEN + IDBMUP(1) =-2212 + ELSE + WRITE(*,*) 'BEAM 1 NOT PROPERLY INITIALISED, STOP' + STOP + ENDIF + IF(IH2.EQ.1) THEN + IDBMUP(2) = 2212 + ELSEIF(IH2.EQ.-1) THEN + IDBMUP(2) =-2212 + ELSE + WRITE(*,*) 'BEAM 2 NOT PROPERLY INITIALISED, STOP' + STOP + ENDIF + EBMUP(1) = ABS(PBEAM1) + EBMUP(2) = ABS(PBEAM2) +C-- PDF'S FOR THE BEAMS; WILL BE EVALUATED USING THE NDNS VARIABLE +C READ IN EARLIER + PDFGUP(1) = -1 + PDFGUP(2) = -1 + PDFSUP(1) = -1 + PDFSUP(2) = -1 +C--WHAT DO DO WITH THE WEIGHTS(WE ARE GENERATING UNWEIGHTED EVENTS) + IDWTUP = 3 +C--ONLY ONE PROCESS + NPRUP = 1 +C--CROSS SECTION + XSECUP(1) = avgwgt +C--ERROR ON THE CROSS SECTION + XERRUP(1) = errwgt +C--MAXIMUM WEIGHT + XMAXUP(1) = avgwgt +C--HERWIG/PYTHIA SPECIFIC PART + CALL ALSHIN(I) + LPRUP(1) = I + END + +C----------------------------------------------------------------------- + subroutine getunit(n) + implicit none + integer n,i + logical yes + do i=10,100 + inquire(unit=i,opened=yes) + if(.not.yes) goto 10 + enddo + write(*,*) 'no free units to write to available, stop' + stop + 10 n=i + end + +c------------------------------------------------------------------- + subroutine AHspar +c set list of parameters types and assign default values +c------------------------------------------------------------------- + implicit none +c process code + integer ihrd + integer itopprc +c--event file data + integer Nunit,NunitOut,NunitIni + character*100 filename +* character*100 filename,tmpstr,tmpstr1 +c total number of input events + common/AHio/Nunit,NunitOut,NunitIni,filename +c inputs for the matching algorithm + integer iexc,npfst,nplst,nljets,njstart,njlast + $ ,ickkw + double precision etclus,rclus,etaclmax + common/AHopts/etclus,rclus,etaclmax,iexc,npfst + $ ,nplst,nljets,njstart,njlast,ickkw +c process and particles parameters + double precision mc,mb,mt,mw,mz,mh + double precision ebeam + integer ndns,ih1,ih2 + integer nw,nz,nh,nph + integer ihvy,ihvy2 +c pdf set type + character pdftyp*25 +c total number of partons + integer npart + common/AHppara/mc,mb,mt,mw,mz,mh, + & ebeam,ih1,ih2, + & ihrd,itopprc, + & nw,nz,nh,nph, + & ihvy,ihvy2, + & npart,ndns,pdftyp +c weight information + real *8 maxwgt,avgwgt,errwgt,totlum + integer unwev + common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev +c general parameters + integer nparam + parameter (nparam=200) + integer parlen,partyp + character chpar*8,chpdes*70 + double precision parval + common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) + $ ,parlen(nparam),partyp(nparam) +c global event cuts + double precision ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + +*** +c + ih2=parval(2) + ebeam=parval(3) + ndns=parval(4) + ickkw=parval(7) + ihvy=parval(11) + ihvy2=parval(12) + nw=parval(13) + nz=parval(14) + nh=parval(15) + nph=parval(16) + ptjmin=parval(30) + ptbmin=parval(31) + ptcmin=parval(32) + ptlmin=parval(33) + metmin=parval(34) + ptphmin=parval(35) + etajmax=parval(40) + etabmax=parval(41) + etacmax=parval(42) + etalmax=parval(43) + etaphmax=parval(44) + drjmin=parval(50) + drbmin=parval(51) + drcmin=parval(52) + drlmin=parval(55) + drphjmin=parval(56) + drphlmin=parval(57) + mllmin=parval(61) + mllmax=parval(62) + itopprc=parval(102) +c + end +*-- Author : Michelangelo Mangano +C---------------------------------------------------------------------- + SUBROUTINE UPEVNT +C---------------------------------------------------------------------- +c Puts Alpgen event into GUPI common block HEPEU +c---------------------------------------------------------------------- + implicit none +c process code + integer ihrd + integer itopprc +c--event file data + integer Nunit,NunitOut,NunitIni + character*100 filename +c character*100 filename,tmpstr,tmpstr1 +c total number of input events + common/AHio/Nunit,NunitOut,NunitIni,filename +c inputs for the matching algorithm + integer iexc,npfst,nplst,nljets,njstart,njlast + $ ,ickkw + double precision etclus,rclus,etaclmax + common/AHopts/etclus,rclus,etaclmax,iexc,npfst + $ ,nplst,nljets,njstart,njlast,ickkw +c process and particles parameters + double precision mc,mb,mt,mw,mz,mh + double precision ebeam + integer ndns,ih1,ih2 + integer nw,nz,nh,nph + integer ihvy,ihvy2 +c pdf set type + character pdftyp*25 +c total number of partons + integer npart + common/AHppara/mc,mb,mt,mw,mz,mh, + & ebeam,ih1,ih2, + & ihrd,itopprc, + & nw,nz,nh,nph, + & ihvy,ihvy2, + & npart,ndns,pdftyp +c weight information + real *8 maxwgt,avgwgt,errwgt,totlum + integer unwev + common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev +c general parameters + integer nparam + parameter (nparam=200) + integer parlen,partyp + character chpar*8,chpdes*70 + double precision parval + common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) + $ ,parlen(nparam),partyp(nparam) +c global event cuts + double precision ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + + +C-- GUP Event common block + INTEGER MAXNUP + PARAMETER (MAXNUP=500) + INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP + DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP + COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, + & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), + & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), + & SPINUP(MAXNUP) +C-- GUP Run common block + INTEGER MAXPUP + PARAMETER(MAXPUP=100) + INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP + DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP + COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), + & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), + & XMAXUP(MAXPUP),LPRUP(MAXPUP) +c + INTEGER IEND,INORAD + COMMON/SHVETO/IEND,INORAD(MAXNUP) +c +c local variables + INTEGER INIT + DATA INIT/0/ + CHARACTER *3 CSHO + INTEGER MAXPAR + PARAMETER (MAXPAR=100) + INTEGER NEV,IPROC,IFL(MAXPAR) + REAL SQ,SP(3,MAXPAR),SM(MAXPAR),SWGTRES + INTEGER I,IUP,IWCH,IST,IHEPMIN + REAL *8 TMP ! ,WGTRES +C LOCAL VARIABLES FOR TOP DECAYS + INTEGER IT,ITB,IW,IWDEC,IBUP,IWUP +C LOCAL VARIABLES TOP HIGGS DECAYS +C INTEGER IH +C LOCAL VARIABLES FOR GAUGE BOSON DECAYS + INTEGER IVSTART,IVEND,NVB +C +C UPDATE MAXIMUM NMBER OF ALLOWED ERRORS + CALL ALSHER(I) +C + IST=0 +C INPUT EVENT NUMBER, PROCESS TYPE, N PARTONS, SAMPLE'S AVERAGE +C WEIGHT AND QSCALE + READ(NUNIT,2,END=500,ERR=501) NEV,IPROC,NPART,SWGTRES,SQ + 2 FORMAT(I8,1X,I4,1X,I2,2(1X,E12.6)) +C FLAVOUR, COLOUR AND Z-MOMENTUM OF INCOMING PARTONS + READ(NUNIT,8) IFL(1),ICOLUP(1,1),ICOLUP(2,1),SP(3,1) + READ(NUNIT,8) IFL(2),ICOLUP(1,2),ICOLUP(2,2),SP(3,2) +C FLAVOUR, COLOUR, 3-MOMENTUM AND MASS OF OUTGOING PARTONS + DO I=3,NPART + READ(NUNIT,9) IFL(I),ICOLUP(1,I),ICOLUP(2,I),SP(1,I),SP(2,I) + $ ,SP(3,I),SM(I) + ENDDO + 8 FORMAT(I8,1X,2(I4,1X),F10.3) + 9 FORMAT(I8,1X,2(I4,1X),4(1X,F10.3)) +C +C START PROCESSING INPUT DATA +C +C SCALES AND WEIGHTS + SCALUP=DBLE(SQ) + IF(IDWTUP.EQ.3) THEN + XWGTUP=DBLE(SWGTRES) !AVGWGT + ELSE + WRITE(*,*) 'ONLY UNWEIGHTED EVENTS ACCEPTED AS INPUT, STOP' + STOP + ENDIF +C DEFINE RANGE FOR PARTONS TO BE USED IN MATCHING + IF(INIT.EQ.0) THEN + INIT=1 + DO I=1,MAXNUP + INORAD(I)=0 + ENDDO + CALL ALSHCD(CSHO) + IF(CSHO.EQ.'HER') THEN + NPFST=149 + NPLST=149 +C HERWIG: ALL SHOWERS ORIGINATE FROM IHEP=6 + IEND=6 +C HERWIG: HEPEVT EVENT RECORD FOR FINAL STATE STARTS AT 7=6+1 + IHEPMIN=6 + ELSE + NPFST=1 + NPLST=1 +C PYTHIA: ALL SHOWERS ORIGINATE FROM IHEP=O + IEND=0 +C PYTHIA: HEPEVT EVENT RECORD FOR FINAL STATE STARTS AT 1=0+1 + IHEPMIN=0 + IDPRUP=661 + ENDIF + IF(IHRD.LE.2) THEN + NLJETS=NPART-6 + NJSTART=4 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W + INORAD(IHEPMIN+2+NLJETS+1)=1 +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK PAIR + INORAD(IHEPMIN+1)=1 + INORAD(IHEPMIN+2)=1 + ELSEIF(IHRD.LE.4) THEN + NLJETS=NPART-4 + NJSTART=2 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W + INORAD(IHEPMIN+NLJETS+1)=1 + ELSEIF(IHRD.EQ.5) THEN + NLJETS=NPART-3*(NW+NZ)-NH-2 + NJSTART=2 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE GAUGE BOSONS + DO I=1,NW+NZ+NH + INORAD(IHEPMIN+NLJETS+I)=1 + ENDDO + ELSEIF(IHRD.EQ.6) THEN +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM HEAVY QUARK PAIR + INORAD(IHEPMIN+1)=1 + INORAD(IHEPMIN+2)=1 + if(ihvy.eq.6) then + NLJETS=NPART-8 + NJSTART=4 + elseif(ihvy.eq.5) then + NLJETS=NPART-4 + NJSTART=4 + endif + NJLAST=155 + ELSEIF(IHRD.EQ.9) THEN + NLJETS=NPART-2 + NJSTART=2 + NJLAST=155 + ELSEIF(IHRD.EQ.10) THEN + NLJETS=NPART-4 + NJSTART=2 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING RADIATION ORIGINATING FROM THE W + INORAD(IHEPMIN+NLJETS+1)=1 + ELSEIF(IHRD.EQ.11) THEN + NLJETS=NPART-2-NPH + NJSTART=2 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING THE HARD PHOTONS + DO I=1,NPH + INORAD(IHEPMIN+NLJETS+I)=1 + ENDDO + ELSEIF(IHRD.EQ.12) THEN + NLJETS=NPART-2-NH + NJSTART=2 + NJLAST=155 +C DO NOT INCLUDE IN MATCHING THE HIGGS DECAY PRODUCTS + DO I=1,NH + INORAD(IHEPMIN+NLJETS+I)=1 + ENDDO + ENDIF + ENDIF +c +c--- incoming lines + do 100 i=1,2 + iup=i + idup(iup)=ifl(i) + istup(iup)=-1 + mothup(1,iup)=0 + mothup(2,iup)=0 + pup(1,iup)=0. + pup(2,iup)=0. + pup(3,iup)=dble(Sp(3,iup)) + pup(4,iup)=abs(pup(3,iup)) + pup(5,iup)=0d0 + 100 continue +c--- outgoing lines + do 110 i=3,npart + iup=i + idup(iup)=ifl(i) + istup(iup)=1 + mothup(1,iup)=1 + mothup(2,iup)=2 + pup(1,iup)=dble(Sp(1,i)) + pup(2,iup)=dble(Sp(2,i)) + pup(3,iup)=dble(Sp(3,i)) + pup(5,iup)=dble(Sm(i)) + tmp=(pup(5,iup)**2+pup(1,iup)**2+pup(2,iup)**2+pup(3,iup)**2) + pup(4,iup)=sqrt(tmp) + 110 continue +c + nup=npart +c--- set up colour structure labels + Do iup=1,nup + if(icolup(1,iup).ne.0) icolup(1,iup)=icolup(1,iup)+500 + if(icolup(2,iup).ne.0) icolup(2,iup)=icolup(2,iup)+500 + Enddo +c +c +c and now consider assignements specific to individual hard +C processes +c +c--- W/Z/gamma b bbar + jets, or W/Z + jets + if (ihrd.le.4.or.ihrd.eq.10) then + iwch=0 + do iup=nup-1,nup + mothup(1,iup)=nup+1 + mothup(2,iup)=0 + if(ihrd.ne.2) iwch=iwch+idup(iup) +c electron+nubar -> 11 + (-12) = -1 => W- +c positron+nu -> -11+ 12 = 1 => W+ + enddo + iup=nup+1 + If (iwch.gt.0) then + idup(iup)=24 + Elseif (iwch.lt.0) then + idup(iup)=-24 + Else + idup(iup)=23 + Endif + istup(iup)=2 + mothup(1,iup)=1 + mothup(2,iup)=2 + tmp=pup(4,iup-2)+pup(4,iup-1) + pup(4,iup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,iup)=pup(i,iup-2)+pup(i,iup-1) + tmp=tmp-pup(i,iup)**2 + enddo + pup(5,iup)=sqrt(tmp) + nup=nup+1 + icolup(1,nup)=0 + icolup(2,nup)=0 +c--- nW + mZ + kH + jets + elseif (ihrd.eq.5) then +c find first gauge bosons + ivstart=0 + ivend=0 + do i=1,npart + if(abs(idup(i)).eq.24.or.idup(i).eq.23) then + istup(i)=2 + if(ivstart.eq.0) ivstart=i + ivend=i+1 + endif + enddo + nvb=ivend-ivstart +c decay products pointers, starting from the end + do i=1,nvb + mothup(1,npart-2*i+2)=ivend-i + mothup(1,npart-2*i+1)=ivend-i + mothup(2,npart-2*i+2)=0 + mothup(2,npart-2*i+1)=0 + enddo +c--- t tbar + jets +c t tb jets f fbar f fbar W+ b W- bbar + elseif (ihrd.eq.6.and.abs(ifl(3)).eq.6) then +c reset top status codes + istup(3)=2 + istup(4)=2 + if(ifl(3).eq.6) then + it=3 + itb=4 + else + it=4 + itb=3 + endif +c reconstruct W's from decay products + do iw=1,2 + iwdec=nup-5+2*iw + iwup=nup+iw + ibup=iwup+2 + iwch=0 + do iup=iwdec,iwdec+1 + mothup(1,iup)=iwup + mothup(2,iup)=0 + iwch=iwch-mod(idup(iup),2) +c electron+nubar -> 11 + (-12) = -1 => W- +c d + ubar -> 1 + (-2) = -1 => W- +c positron+nu -> -11+ 12 = 1 => W+ +c u + dbar -> 2 + (-1) = 1 => W+ + enddo + If (iwch.gt.0) then + idup(iwup)=24 + idup(ibup)=5 + mothup(1,iwup)=it + mothup(2,iwup)=0 + mothup(1,ibup)=it + mothup(2,ibup)=0 + Elseif (iwch.lt.0) then + idup(iwup)=-24 + idup(ibup)=-5 + mothup(1,iwup)=itb + mothup(2,iwup)=0 + mothup(1,ibup)=itb + mothup(2,ibup)=0 + Endif + istup(iwup)=2 + istup(ibup)=1 +c reconstruct W momentum + tmp=pup(4,iwdec)+pup(4,iwdec+1) + pup(4,iwup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) + tmp=tmp-pup(i,iwup)**2 + enddo + pup(5,iwup)=sqrt(tmp) +c reconstruct b momentum + tmp=pup(4,mothup(1,iwup))-pup(4,iwup) + pup(4,ibup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) + tmp=tmp-pup(i,ibup)**2 + enddo + pup(5,ibup)=sqrt(tmp) + icolup(1,iwup)=0 + icolup(2,iwup)=0 + icolup(1,ibup)=icolup(1,mothup(1,iwup)) + icolup(2,ibup)=icolup(2,mothup(1,iwup)) + enddo +c stop + nup=nup+4 +c--- H t tbar + jets +c H t tb jets f fbar f fbar W+ b W- bbar + elseif (ihrd.eq.8.and.abs(ifl(4)).eq.6) then +c reset top status codes + istup(4)=2 + istup(5)=2 + if(ifl(4).eq.6) then + it=4 + itb=5 + else + it=5 + itb=4 + endif +c reconstruct W's from decay products + do iw=1,2 + iwdec=nup-5+2*iw + iwup=nup+iw + ibup=iwup+2 + iwch=0 + do iup=iwdec,iwdec+1 + mothup(1,iup)=iwup + mothup(2,iup)=0 + iwch=iwch-mod(idup(iup),2) +c electron+nubar -> 11 + (-12) = -1 => W- +c d + ubar -> 1 + (-2) = -1 => W- +c positron+nu -> -11+ 12 = 1 => W+ +c u + dbar -> 2 + (-1) = 1 => W+ + enddo + If (iwch.gt.0) then + idup(iwup)=24 + idup(ibup)=5 + mothup(1,iwup)=it + mothup(2,iwup)=0 + mothup(1,ibup)=it + mothup(2,ibup)=0 + elseif (iwch.lt.0) then + idup(iwup)=-24 + idup(ibup)=-5 + mothup(1,iwup)=itb + mothup(2,iwup)=0 + mothup(1,ibup)=itb + mothup(2,ibup)=0 + endif + istup(iwup)=2 + istup(ibup)=1 +c reconstruct W momentum + tmp=pup(4,iwdec)+pup(4,iwdec+1) + pup(4,iwup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) + tmp=tmp-pup(i,iwup)**2 + enddo + pup(5,iwup)=sqrt(tmp) +c reconstruct b momentum + tmp=pup(4,mothup(1,iwup))-pup(4,iwup) + pup(4,ibup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) + tmp=tmp-pup(i,ibup)**2 + enddo + pup(5,ibup)=sqrt(tmp) + icolup(1,iwup)=0 + icolup(2,iwup)=0 + icolup(1,ibup)=icolup(1,mothup(1,iwup)) + icolup(2,ibup)=icolup(2,mothup(1,iwup)) + enddo +c stop + nup=nup+4 +c--- SINGLE TOP +c Input: T +c output: jets t b w f fbar t b w f fbar + elseif (ihrd.eq.13) then + nw=1 + if(itopprc.ge.3) nw=2 +c assign mass to the incoming bottom quark, if required + DO I=1,2 + IF(ABS(IFL(I)).EQ.5) THEN + IUP=I + PUP(5,IUP)=mb + PUP(4,IUP)=SQRT(PUP(3,IUP)**2+PUP(5,IUP)**2) + ENDIF + ENDDO + istup(3)=2 + it=0 + itb=0 + if(ifl(3).eq.6) then + it=3 + elseif(ifl(3).eq.-6) then + itb=3 + else + write(*,*) 'wrong assumption about top position, stop' + stop + endif +c +c TOP DECAY +c reconstruct W's from decay products +c +c iwdec: 1st W decay product. + if(nw.eq.1) then + iwdec=nup-1 + elseif(nw.eq.2) then + iwdec=nup-3 + endif +c put W and b at the end + iwup=nup+1 + ibup=iwup+1 +c + iwch=0 + do iup=iwdec,iwdec+1 + mothup(1,iup)=iwup + mothup(2,iup)=0 + iwch=iwch-mod(idup(iup),2) +c electron+nubar -> 11 + (-12) = -1 => W- +c d + ubar -> 1 + (-2) = -1 => W- +c positron+nu -> -11+ 12 = 1 => W+ +c u + dbar -> 2 + (-1) = 1 => W+ + enddo + If (iwch.gt.0) then + idup(iwup)=24 + idup(ibup)=5 + mothup(1,iwup)=it + mothup(2,iwup)=0 + mothup(1,ibup)=it + mothup(2,ibup)=0 + Elseif (iwch.lt.0) then + idup(iwup)=-24 + idup(ibup)=-5 + mothup(1,iwup)=itb + mothup(2,iwup)=0 + mothup(1,ibup)=itb + mothup(2,ibup)=0 + Endif + istup(iwup)=2 + istup(ibup)=1 +c reconstruct W momentum + tmp=pup(4,iwdec)+pup(4,iwdec+1) + pup(4,iwup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,iwup)=pup(i,iwdec)+pup(i,iwdec+1) + tmp=tmp-pup(i,iwup)**2 + enddo + pup(5,iwup)=sqrt(tmp) +c reconstruct b momentum + tmp=pup(4,mothup(1,iwup))-pup(4,iwup) + pup(4,ibup)=tmp + tmp=tmp**2 + do i=1,3 + pup(i,ibup)=pup(i,mothup(1,iwup))-pup(i,iwup) + tmp=tmp-pup(i,ibup)**2 + enddo +c write(*,*) (pup(i,ibup),i=1,4),sqrt((tmp)) + pup(5,ibup)=sqrt(tmp) + icolup(1,iwup)=0 + icolup(2,iwup)=0 + icolup(1,ibup)=icolup(1,mothup(1,iwup)) + icolup(2,ibup)=icolup(2,mothup(1,iwup)) +c + nup=nup+2 + if(nw.eq.2) then +c +c W DECAY +c +c iwdec: 1st W decay product. + iwdec=nup-3 +c iwup: location of the W in the event record + iwup=nup-6 + iwch=0 + do iup=iwdec,iwdec+1 + mothup(1,iup)=iwup + mothup(2,iup)=0 + iwch=iwch-mod(idup(iup),2) +c electron+nubar -> 11 + (-12) = -1 => W- +c d + ubar -> 1 + (-2) = -1 => W- +c positron+nu -> -11+ 12 = 1 => W+ +c u + dbar -> 2 + (-1) = 1 => W+ + enddo + istup(iwup)=2 + icolup(1,iwup)=0 + icolup(2,iwup)=0 + endif + endif +c herwig debugging: +c call HWUPUP + return +c +c +c end of file + 500 ist=1 +c error reading file + 501 if(ist.eq.0) ist=2 +C RESET CROSS-SECTION INFORMATION FOR END OF RUN AND FINALIZE + IF(IST.GT.0) THEN + CALL ALSFIN + ENDIF + close(Nunit) + close(NunitOut) + END +*-- Author : Michelangelo Mangano +C---------------------------------------------------------------------- + subroutine strnumH(string,num) +C---------------------------------------------------------------------- +c- writes the number num on the string string starting at the blank +c- following the last non-blank character +C---------------------------------------------------------------------- + character * (*) string + character * 20 tmp + l = len(string) + write(tmp,'(i15)')num + j=1 + dowhile(tmp(j:j).eq.' ') + j=j+1 + enddo + ipos = istrlH(string) + ito = ipos+1+(15-j) + if(ito.gt.l) then + write(*,*)'error, string too short' + write(*,*) string + stop + endif + string(ipos+1:ito)=tmp(j:) + end + + function istrlH(string) +c returns the position of the last non-blank character in string + character * (*) string + i = len(string) + dowhile(i.gt.0.and.string(i:i).eq.' ') + i=i-1 + enddo + istrlH= i + end +*-- Author : Michelangelo Mangano +C---------------------------------------------------------------------- + subroutine strcatH(str1,str2,str) +C---------------------------------------------------------------------- +c concatenates str1 and str2 into str. Ignores trailing blanks of str1,str2 +C---------------------------------------------------------------------- + character *(*) str1,str2,str + l1=istrlH(str1) + l2=istrlH(str2) + l =len(str) + if(l.lt.l1+l2) then + write(*,*) str1,str2 + write(*,*) 'error: l1+l2>l in strcatH' + write(*,*) 'l1=',l1,' str1=',str1 + write(*,*) 'l2=',l2,' str2=',str2 + write(*,*) 'l=',l + stop + endif + if(l1.ne.0) str(1:l1)=str1(1:l1) + if(l2.ne.0) str(l1+1:l1+l2)=str2(1:l2) + if(l1+l2+1.le.l) str(l1+l2+1:l)= ' ' + end +c------------------------------------------------------------------- + subroutine pdfconvH(nin,nout,type) +c------------------------------------------------------------------- +c converts ALPHA convention for PDF namings to hvqpdf conventions + implicit none + integer nin,nout + character*25 type + character*25 pdftyp(20,2) + data pdftyp/ +c cteq sets + $ 'CTEQ4M ','CTEQ4L ','CTEQ4HJ', + $ 'CTEQ5M ','CTEQ5L ','CTEQ5HJ', + $ 'CTEQ6M ','CTEQ6L ',12*' ', +C MRST SETS + $ 'MRST99 ', + $ 'MRST01; as=0.119','MRST01; as=0.117','MRST01; as=0.121' + $ ,'MRST01J; as=0.121','MRST02LO',14*' '/ + integer pdfmap(20,2) + data pdfmap/ + $ 81,83,88, 101,103, 104, 131,133, 12*0, + $ 111, 185,186,187,188,189, 14*0/ +c + nout=pdfmap(mod(nin ,100),1+nin /100) + type=pdftyp(mod(nin ,100),1+nin /100) + + end +C----------------------------------------------------------------------- +C----Calorimeter simulation obtained from Frank Paige 23 March 1988----- +C +C USE +C +C CALL CALINI +C CALL CALSIM +C +C THEN TO FIND JETS WITH A SIMPLIFIED VERSION OF THE UA1 JET +C ALGORITHM WITH JET RADIUS RJET AND MINIMUM SCALAR TRANSVERSE +C ENERGY EJCUT +C (RJET=1., EJCUT=5. FOR UA1) +C USE +C +C CALL GETJET(RJET,EJCUT) +C +C +C----------------------------------------------------------------------- +C +C ADDED BY MIKE SEYMOUR: PARTON-LEVEL CALORIMETER. ALL PARTONS +C ARE CONSIDERED TO BE HADRONS, SO IN FACT RESEM IS IGNORED +C +C CALL CALPAR +C +C HARD PARTICLE CALORIMETER. ONLY USES THOSE PARTICLES WHICH +C CAME FROM THE HARD PROCESS, AND NOT THE UNDERLYING EVENT +C +C CALL CALHAR +C +C----------------------------------------------------------------------- + SUBROUTINE CALINI +C +C INITIALIZE CALORIMETER FOR CALSIM AND GETJET. NOTE THAT +C BECAUSE THE INITIALIZATION IS SEPARATE, CALSIM CAN BE +C CALLED MORE THAN ONCE TO SIMULATE PILEUP OF SEVERAL EVENTS. +C + IMPLICIT NONE + INTEGER NCY,NCPHI,NJMAX,IPHI,IY,JETNO,NCJET + DOUBLE PRECISION YCMIN,YCMAX,PI,ET,DELPHI,PHIX,CPHCAL,SPHCAL,DELY, + & YX,THX,CTHCAL,STHCAL,PCJET,ETJET + PARAMETER (NCY=100) + PARAMETER (NCPHI=60,PI=3.141593D0) + COMMON/CALOR/DELY,DELPHI,ET(NCY,NCPHI), + $CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX + PARAMETER (NJMAX=500) + COMMON/GETCOM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET + LOGICAL FSTCAL + DATA FSTCAL/.TRUE./ +C +C INITIALIZE ET ARRAY. + DO 100 IPHI=1,NCPHI + DO 100 IY=1,NCY +100 ET(IY,IPHI)=0. +C + IF (FSTCAL) THEN +C CALCULATE TRIG. FUNCTIONS. + DELPHI=2.*PI/FLOAT(NCPHI) + DO 200 IPHI=1,NCPHI + PHIX=DELPHI*(IPHI-.5) + CPHCAL(IPHI)=COS(PHIX) + SPHCAL(IPHI)=SIN(PHIX) +200 CONTINUE + DELY=(YCMAX-YCMIN)/FLOAT(NCY) + DO 300 IY=1,NCY + YX=DELY*(IY-.5)+YCMIN + THX=2.*ATAN(EXP(-YX)) + CTHCAL(IY)=COS(THX) + STHCAL(IY)=SIN(THX) +300 CONTINUE + FSTCAL=.FALSE. + ENDIF + END +C + SUBROUTINE CALSIM +C +C SIMPLE CALORIMETER SIMULATION. ASSUME UNIFORM Y AND PHI +C BINS +C...HEPEVT commonblock. + INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP + PARAMETER (NMXHEP=4000) + COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), + &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) + DOUBLE PRECISION PHEP,VHEP + SAVE /HEPEVT/ + INTEGER NCY,NCPHI,NJMAX,IHEP,ID,IY,IPHI,JETNO,NCJET + DOUBLE PRECISION YCMIN,YCMAX,PI,YIP,PSERAP, + & PHIIP,DELY,DELPHI,EIP,ET,STHCAL,CTHCAL,CPHCAL,SPHCAL, + & PCJET,ETJET + PARAMETER (NCY=100) + PARAMETER (NCPHI=60,PI=3.141593D0) + COMMON/CALOR/DELY,DELPHI,ET(NCY,NCPHI), + $CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX + PARAMETER (NJMAX=500) + COMMON/GETCOM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET +C +C FILL CALORIMETER +C + DO 200 IHEP=1,NHEP + IF (ISTHEP(IHEP).EQ.1) THEN + YIP=PSERAP(PHEP(1,IHEP)) + IF(YIP.LT.YCMIN.OR.YIP.GT.YCMAX) GOTO 200 + ID=ABS(IDHEP(IHEP)) +C---EXCLUDE TOP QUARK, LEPTONS, PROMPT PHOTONS + IF ((ID.GE.11.AND.ID.LE.16).OR.ID.EQ.6.OR.ID.EQ.22) GOTO 200 +C + PHIIP=ATAN2(PHEP(2,IHEP),PHEP(1,IHEP)) + IF(PHIIP.LT.0.) PHIIP=PHIIP+2.*PI + IY=INT((YIP-YCMIN)/DELY)+1 + IPHI=INT(PHIIP/DELPHI)+1 + EIP=PHEP(4,IHEP) +C WEIGHT BY SIN(THETA) + ET(IY,IPHI)=ET(IY,IPHI)+EIP*STHCAL(IY) + ENDIF + 200 CONTINUE + 999 END + SUBROUTINE GETJET(RJET,EJCUT,ETAJCUT) +C +C SIMPLE JET-FINDING ALGORITHM (SIMILAR TO UA1). +C +C FIND HIGHEST REMAINING CELL > ETSTOP AND SUM SURROUNDING +C CELLS WITH-- +C DELTA(Y)**2+DELTA(PHI)**2<RJET**2 +C ET>ECCUT. +C KEEP JETS WITH ET>EJCUT AND ABS(ETA)<ETAJCUT +C THE UA1 PARAMETERS ARE RJET=1.0 AND EJCUT=5.0 +C + IMPLICIT NONE + INTEGER NCY,NCPHI,NJMAX,IPHI,IY,JETNO,J,K,NCJET,NPHI1,NPHI2,NY1, + & NY2,IPASS,IYMX,IPHIMX,ITLIS,IPHI1,IPHIX,IY1,IYX + DOUBLE PRECISION YCMIN,YCMAX,PI,ETJET,PCJET,RJET,DELPHI,DELY, + & ETMAX,ET,ETSTOP,RR,ECCUT,PX,STHCAL,CPHCAL,SPHCAL,CTHCAL,EJCUT + PARAMETER (NCY=100) + PARAMETER (NCPHI=60,PI=3.141593D0) + COMMON/CALOR/DELY,DELPHI,ET(NCY,NCPHI), + &CTHCAL(NCY),STHCAL(NCY),CPHCAL(NCPHI),SPHCAL(NCPHI),YCMIN,YCMAX + PARAMETER (NJMAX=500) + COMMON/GETCOM/PCJET(4,NJMAX),ETJET(NJMAX),JETNO(NCY,NCPHI),NCJET + DOUBLE PRECISION ETAJCUT,PSERAP +C +C PARAMETERS + DATA ECCUT/0.1D0/ + DATA ETSTOP/1.5D0/ + DATA ITLIS/6/ +C +C INITIALIZE +C + DO 100 IPHI=1,NCPHI + DO 100 IY=1,NCY +100 JETNO(IY,IPHI)=0 + DO 110 J=1,NJMAX + ETJET(J)=0. + DO 110 K=1,4 +110 PCJET(K,J)=0. + NCJET=0 + NPHI1=RJET/DELPHI + NPHI2=2*NPHI1+1 + NY1=RJET/DELY + NY2=2*NY1+1 + IPASS=0 +C +C FIND HIGHEST CELL REMAINING +C +1 ETMAX=0. + DO 200 IPHI=1,NCPHI + DO 210 IY=1,NCY + IF(ET(IY,IPHI).LT.ETMAX) GOTO 210 + IF(JETNO(IY,IPHI).NE.0) GOTO 210 + ETMAX=ET(IY,IPHI) + IYMX=IY + IPHIMX=IPHI +210 CONTINUE +200 CONTINUE + IF(ETMAX.LT.ETSTOP) RETURN +C +C SUM CELLS +C + IPASS=IPASS+1 + IF(IPASS.GT.NCY*NCPHI) THEN + WRITE(ITLIS,8888) IPASS +8888 FORMAT(//' ERROR IN GETJET...IPASS > ',I6) + RETURN + ENDIF + NCJET=NCJET+1 + IF(NCJET.GT.NJMAX) THEN + WRITE(ITLIS,9999) NCJET +9999 FORMAT(//' ERROR IN GETJET...NCJET > ',I5) + RETURN + ENDIF + DO 300 IPHI1=1,NPHI2 + IPHIX=IPHIMX-NPHI1-1+IPHI1 + IF(IPHIX.LE.0) IPHIX=IPHIX+NCPHI + IF(IPHIX.GT.NCPHI) IPHIX=IPHIX-NCPHI + DO 310 IY1=1,NY2 + IYX=IYMX-NY1-1+IY1 + IF(IYX.LE.0) GOTO 310 + IF(IYX.GT.NCY) GOTO 310 + IF(JETNO(IYX,IPHIX).NE.0) GOTO 310 + RR=(DELY*(IY1-NY1-1))**2+(DELPHI*(IPHI1-NPHI1-1))**2 + IF(RR.GT.RJET**2) GOTO 310 + IF(ET(IYX,IPHIX).LT.ECCUT) GOTO 310 + PX=ET(IYX,IPHIX)/STHCAL(IYX) +C ADD CELL TO JET + PCJET(1,NCJET)=PCJET(1,NCJET)+PX*STHCAL(IYX)*CPHCAL(IPHIX) + PCJET(2,NCJET)=PCJET(2,NCJET)+PX*STHCAL(IYX)*SPHCAL(IPHIX) + PCJET(3,NCJET)=PCJET(3,NCJET)+PX*CTHCAL(IYX) + PCJET(4,NCJET)=PCJET(4,NCJET)+PX + ETJET(NCJET)=ETJET(NCJET)+ET(IYX,IPHIX) + JETNO(IYX,IPHIX)=NCJET +310 CONTINUE +300 CONTINUE +C +C DISCARD JET IF ET < EJCUT. +C + IF(ETJET(NCJET).GT.EJCUT.AND.ABS(PSERAP(PCJET(1,NCJET))).LT + $ .ETAJCUT) GOTO 1 + ETJET(NCJET)=0. + DO 400 K=1,4 +400 PCJET(K,NCJET)=0. + NCJET=NCJET-1 + GOTO 1 + END + +C----------------------------------------------------------------------- + SUBROUTINE CALDEL(ISTLO,ISTHI,ISTOP) +C LABEL ALL PARTICLES WITH STATUS BETWEEN ISTLO AND ISTHI (UNTIL A +C PARTICLE WITH STATUS ISTOP IS FOUND) AS FINAL-STATE, CALL CALSIM +C AND THEN PUT LABELS BACK TO NORMAL +C----------------------------------------------------------------------- + IMPLICIT NONE + INTEGER MAXNUP + PARAMETER(MAXNUP=500) + INTEGER IEND,INORAD + COMMON/SHVETO/IEND,INORAD(MAXNUP) +C...HEPEVT commonblock. + INTEGER NMXHEP,NEVHEP,NHEP,ISTHEP,IDHEP,JMOHEP,JDAHEP + PARAMETER (NMXHEP=4000) + COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), + &JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) + DOUBLE PRECISION PHEP,VHEP + SAVE /HEPEVT/ + INTEGER ISTOLD(NMXHEP),IHEP,IST,ISTLO,ISTHI,ISTOP,IMO + LOGICAL FOUND + FOUND=.FALSE. + DO 10 IHEP=1,NHEP + IST=ISTHEP(IHEP) + ISTOLD(IHEP)=IST + IF (IST.EQ.ISTOP) FOUND=.TRUE. + IF (IST.GE.ISTLO.AND.IST.LE.ISTHI.AND..NOT.FOUND) THEN +C FOUND A RADIATED PARTON, CHECK MOTHER + IMO=IHEP + 1 IMO=JMOHEP(1,IMO) + IF(IMO.EQ.IEND) THEN +C PARENTHOOD OK + IST=1 +c write(2,*) ihep,ist + GOTO 9 + ENDIF + IF(INORAD(IMO).EQ.1) THEN +C PARTON COMES FROM A VETOED MOTHER + IST=0 + GOTO 9 + ELSE +C CHECK GRANDMOTHER + GOTO 1 + ENDIF + ELSE + IST=0 + ENDIF + 9 ISTHEP(IHEP)=IST + 10 CONTINUE + CALL CALSIM + DO 20 IHEP=1,NHEP + ISTHEP(IHEP)=ISTOLD(IHEP) + 20 CONTINUE + END + +C----------------------------------------------------------------------- + FUNCTION PSERAP(P) +C PSEUDO-RAPIDITY (-LOG TAN THETA/2) +C----------------------------------------------------------------------- + DOUBLE PRECISION PSERAP,P(3),PT,PL,TINY,THETA + PARAMETER (TINY=1D-3) + PT=SQRT(P(1)**2+P(2)**2)+TINY + PL=P(3) + THETA=ATAN2(PT,PL) + PSERAP=-LOG(TAN(0.5*THETA)) + END +C----------------------------------------------------------------------- +C----------------------------------------------------------------------- + SUBROUTINE ALPSOR(A,N,K,IOPT) +C----------------------------------------------------------------------- +C Sort A(N) into ascending order +C IOPT = 1 : return sorted A and index array K +C IOPT = 2 : return index array K only +C----------------------------------------------------------------------- + DOUBLE PRECISION A(N),B(5000) + INTEGER N,I,J,IOPT,K(N),IL(5000),IR(5000) + IF (N.GT.5000) then + write(*,*) 'Too many entries to sort in alpsrt, stop' + stop + endif + IL(1)=0 + IR(1)=0 + DO 10 I=2,N + IL(I)=0 + IR(I)=0 + J=1 + 2 IF(A(I).GT.A(J)) GOTO 5 + 3 IF(IL(J).EQ.0) GOTO 4 + J=IL(J) + GOTO 2 + 4 IR(I)=-J + IL(J)=I + GOTO 10 + 5 IF(IR(J).LE.0) GOTO 6 + J=IR(J) + GOTO 2 + 6 IR(I)=IR(J) + IR(J)=I + 10 CONTINUE + I=1 + J=1 + GOTO 8 + 20 J=IL(J) + 8 IF(IL(J).GT.0) GOTO 20 + 9 K(I)=J + B(I)=A(J) + I=I+1 + IF(IR(J)) 12,30,13 + 13 J=IR(J) + GOTO 8 + 12 J=-IR(J) + GOTO 9 + 30 IF(IOPT.EQ.2) RETURN + DO 31 I=1,N + 31 A(I)=B(I) + 999 END +C---------------------------------------------------------------------- + SUBROUTINE ALSHCD(CSHO) + CHARACTER*3 CSHO + CSHO='PYT' + END + + SUBROUTINE ALSHEN + END + + SUBROUTINE ALSHER(I) + INTEGER I + I=0 + RETURN + END +C---------------------------------------------------------------------- + SUBROUTINE ALSHIN(I) +C---------------------------------------------------------------------- +C subroutine to initialise the events +C---------------------------------------------------------------------- + IMPLICIT NONE +c process code + integer ihrd + integer itopprc +c--event file data + integer Nunit,NunitOut,NunitIni + character*100 filename +c character*100 filename,tmpstr,tmpstr1 +c total number of input events + common/AHio/Nunit,NunitOut,NunitIni,filename +c inputs for the matching algorithm + integer iexc,npfst,nplst,nljets,njstart,njlast + $ ,ickkw + double precision etclus,rclus,etaclmax + common/AHopts/etclus,rclus,etaclmax,iexc,npfst + $ ,nplst,nljets,njstart,njlast,ickkw +c process and particles parameters + double precision mc,mb,mt,mw,mz,mh + double precision ebeam + integer ndns,ih1,ih2 + integer nw,nz,nh,nph + integer ihvy,ihvy2 +c pdf set type + character pdftyp*25 +c total number of partons + integer npart + common/AHppara/mc,mb,mt,mw,mz,mh, + & ebeam,ih1,ih2, + & ihrd,itopprc, + & nw,nz,nh,nph, + & ihvy,ihvy2, + & npart,ndns,pdftyp +c weight information + real *8 maxwgt,avgwgt,errwgt,totlum + integer unwev + common/AHwgts/maxwgt,avgwgt,errwgt,totlum,unwev +c general parameters + integer nparam + parameter (nparam=200) + integer parlen,partyp + character chpar*8,chpdes*70 + double precision parval + common/AHpars/parval(nparam),chpar(nparam),chpdes(nparam) + $ ,parlen(nparam),partyp(nparam) +c global event cuts + double precision ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + common/AHcuts/ptjmin,ptjmax,etajmax,drjmin, + + ptbmin,ptbmax,etabmax,drbmin, + + ptcmin,ptcmax,etacmax,drcmin, + + ptphmin,etaphmax,drphjmin,drphlmin, + + ptlmin,etalmax,drlmin,metmin,mllmin,mllmax + + INTEGER I +C--LOCAL VARIABLES +C EASY-TEXT + CHARACTER*10 CGIVE + CHARACTER*12 CGIV2 + CHARACTER*32 CPASS +C LOCAL VARIABLES + DOUBLE PRECISION MQ + INTEGER IQ +C COMMUNICATION CODE + I=661 +C FILL IN PYTHIA SPECIFIC INPUTS + IF(MC.NE.0) THEN + IQ=4 + MQ=MC + WRITE(CGIVE,'(I5)') IQ + WRITE(CGIV2,'(D12.5)') MQ + CPASS='PMAS('//CGIVE//',1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(IQ,1)=MQ + ENDIF + IF(MB.NE.0) THEN + IQ=5 + MQ=MB + WRITE(CGIVE,'(I5)') IQ + WRITE(CGIV2,'(D12.5)') MQ + CPASS='PMAS('//CGIVE//',1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(IQ,1)=MQ + ENDIF + IF(MT.NE.0) THEN + IQ=6 + MQ=MT + WRITE(CGIVE,'(I5)') IQ + WRITE(CGIV2,'(D12.5)') MQ + CPASS='PMAS('//CGIVE//',1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(IQ,1)=MQ + ENDIF + IF(MW.NE.0) THEN + WRITE(CGIV2,'(D12.5)') MW + CPASS='PMAS(24,1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(24,1)=MW + ENDIF + IF(MZ.NE.0) THEN + WRITE(CGIV2,'(D12.5)') MZ + CPASS='PMAS(23,1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(23,1)=MZ + ENDIF + IF(MH.NE.0) THEN + WRITE(CGIV2,'(D12.5)') MH + CPASS='PMAS(25,1)='//CGIV2 + CALL PYGIVE(CPASS) +C PMAS(25,1)=MH + ENDIF + END + +C----------------------------------------------------------------------- + SUBROUTINE ALSFIN +C----------------------------------------------------------------------- +C PYTHIA END OF FILE TREATMENT +C----------------------------------------------------------------------- +C-- GUP Event common block + INTEGER MAXNUP + PARAMETER (MAXNUP=500) + INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP + DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP + COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, + & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), + & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), + & SPINUP(MAXNUP) + NUP=0 + END + +*--------------------------- + SUBROUTINE ALPGEN_END + implicit none +C...Generation and cross section statistics. + integer NGENPD,NGEN + double precision XSEC + COMMON/PYINT5/NGENPD,NGEN(0:500,3),XSEC(0:500,3) +* + write(33,*)' ' + write(33,*)'FRACTION OF EVENTS THAT PASS FRAGMENTATION CUTS', + + DBLE(NGEN(0,3))/MAX(1D0,DBLE(NGEN(0,2))) + write(33,*)' ' + write(33,*)'CROSS SECTION ', XSEC(0,3),' mb' + write(33,*)' ' + write(33,*)'WEIGHT EVENTS ', XSEC(0,3)/MAX(1D0,DBLE(NGEN(0,2))) + close(33) + return + end + END diff --git a/GeneratorInterface/Configuration/doc/html/index.html b/GeneratorInterface/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/Configuration/doc/html/overview.html b/GeneratorInterface/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/Core/doc/html/index.html b/GeneratorInterface/Core/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/Core/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/Core/doc/html/overview.html b/GeneratorInterface/Core/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/Core/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/ExhumeInterface/doc/html/index.html b/GeneratorInterface/ExhumeInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/ExhumeInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/ExhumeInterface/doc/html/overview.html b/GeneratorInterface/ExhumeInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/ExhumeInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/ExternalDecays/doc/html/index.html b/GeneratorInterface/ExternalDecays/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/ExternalDecays/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/ExternalDecays/doc/html/overview.html b/GeneratorInterface/ExternalDecays/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/ExternalDecays/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/GenExtensions/doc/html/index.html b/GeneratorInterface/GenExtensions/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/GenExtensions/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/GenExtensions/doc/html/overview.html b/GeneratorInterface/GenExtensions/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/GenExtensions/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/GenFilters/doc/html/index.html b/GeneratorInterface/GenFilters/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/GenFilters/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/GenFilters/doc/html/overview.html b/GeneratorInterface/GenFilters/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/GenFilters/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/Herwig6Interface/BuildFile b/GeneratorInterface/Herwig6Interface/BuildFile deleted file mode 100644 index 6113023dfc7..00000000000 --- a/GeneratorInterface/Herwig6Interface/BuildFile +++ /dev/null @@ -1,20 +0,0 @@ -<use name=boost> -<use name=FWCore/Framework> -<use name=SimDataFormats/HepMCProduct> -<use name=clhep> -<use name=herwig6_510> - -<flags SEAL_PLUGIN_NAME="GeneratorInterfaceHerwig6Interface"> -<export> - <lib name=GeneratorInterfaceHerwig6Interface> - <use name=boost> - <use name=FWCore/Framework> - <use name=SimDataFormats/HepMCProduct> - <use name=clhep> - <use name=herwig6_510> -</export> - - <lib name=g2c></lib> - <lib name=m></lib> - - diff --git a/GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h b/GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h deleted file mode 100644 index f5166741518..00000000000 --- a/GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef Herwig6Source_h -#define Herwig6Source_h - -/** \class Herwig6Source - * - * Generates Herwig HepMC events - * - ***************************************/ - - -#include "FWCore/Framework/interface/GeneratedInputSource.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include <map> -#include <string> -#include "CLHEP/HepMC/GenEvent.h" - -namespace edm -{ - class Herwig6Source : public GeneratedInputSource { - public: - - /// Constructor - Herwig6Source(const ParameterSet &, const InputSourceDescription &); - /// Destructor - virtual ~Herwig6Source(); - - - private: - - /// Pass parameters to HERWIG - bool hwgive(const std::string& iParm ); - - private: - - virtual bool produce(Event & e); - void clear(); - - HepMC::GenEvent *evt; - - /// Verbosity flag - int herwigVerbosity_; - bool herwigHepMCVerbosity_; - int maxEventsToPrint_; - double comenergy; - - }; -} - -#endif diff --git a/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.cc b/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.cc deleted file mode 100644 index 6514f5192e2..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.cc +++ /dev/null @@ -1,228 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH June 30, 2000 -// Generic Wrapper for the fortran HEPEVT common block -// -// The static data member's initializations must be separate from .h file. -// -////////////////////////////////////////////////////////////////////////// - -#include "HEPEVT_Wrapper.h" - -namespace HepMC { - - //////////////////////////////////////// - // static data member initializations // - //////////////////////////////////////// - - unsigned int HEPEVT_Wrapper::s_sizeof_int = 4; - - unsigned int HEPEVT_Wrapper::s_sizeof_real = sizeof(double); - - unsigned int HEPEVT_Wrapper::s_max_number_entries = 4000; - - /////////////////// - // Print Methods // - /////////////////// - - void HEPEVT_Wrapper::print_hepevt( std::ostream& ostr ) - { - // dumps the content of this HEPEVT event to ostr (Width is 80) - ostr << "________________________________________" - << "________________________________________" << std::endl; - ostr << "***** HEPEVT Common Event#: " - << event_number() - << ", " << number_entries() << " particles (max " - << max_number_entries() << ") *****"; - if ( is_double_precision() ) { - ostr << " Double Precision" << std::endl; - } else { - ostr << " Single Precision" << std::endl; - } - ostr << sizeof_int() << "-byte integers, " - << sizeof_real() << "-byte floating point numbers, " - << max_number_entries() << "-allocated entries." - << std::endl; - print_legend(ostr); - ostr << "________________________________________" - << "________________________________________" << std::endl; - for ( int i=1; i <= number_entries(); ++i ) { - print_hepevt_particle( i, ostr ); - } - ostr << "________________________________________" - << "________________________________________" << std::endl; - } - - void HEPEVT_Wrapper::print_legend( std::ostream& ostr ) - { - char outline[81]; - sprintf( outline,"%4s %4s %4s %5s %10s, %9s, %9s, %9s, %10s", - "Indx","Stat","Par-","chil-", - "( P_x","P_y","P_z","Energy","M ) "); - ostr << outline << std::endl; - sprintf( outline,"%9s %4s %4s %10s, %9s, %9s, %9s) %9s", - "ID ","ents","dren", - "Prod ( X","Y","Z","cT", "[mm]"); - ostr << outline << std::endl; - } - - void HEPEVT_Wrapper::print_hepevt_particle( int i, std::ostream& ostr ) - { - // dumps the content HEPEVT particle entry i (Width is 120) - // here i is the C array index (i.e. it starts at 0 ... whereas the - // fortran array index starts at 1) So if there's 100 particles, the - // last valid index is 100-1=99 - char outline[81]; - sprintf( outline, - "%4d %+4d %4d %4d (%9.3g, %9.3g, %9.3g, %9.3g, %9.3g)" - ,i, status(i), first_parent(i), first_child(i), - px(i), py(i), pz(i), e(i), m(i) ); - ostr << outline << "\n"; - sprintf( outline,"%+9d %4d %4d (%9.3g, %9.3g, %9.3g, %9.3g)", - // old version was:" (%+9.2e, %+9.2e, %+9.2e, %+9.2e)" - id(i), last_parent(i), last_child(i), - x(i), y(i), z(i), t(i) ); - ostr << outline << std::endl; - } - - - bool HEPEVT_Wrapper::check_hepevt_consistency( std::ostream& os ) - { - // This method inspects the HEPEVT common block and looks for - // inconsistencies in the mother/daughter pointers - bool isConsistent=true; - char header[81]; - sprintf( header, - "\n\n\t**** WARNINGInconsistent HEPEVT input, Event %10d ****" - , HEPEVT_Wrapper::event_number() ); - - for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) { - // 1. check its mothers - int moth1 = HEPEVT_Wrapper::first_parent( i ); - int moth2 = HEPEVT_Wrapper::last_parent( i ); - if ( moth2<moth1 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " first parent > last parent " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - for ( int m = moth1; m<=moth2 && m!=0; ++m ) { - if ( m>HEPEVT_Wrapper::number_entries() || m < 0 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " mother points out of range " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - int mChild1 = HEPEVT_Wrapper::first_child(m); - int mChild2 = HEPEVT_Wrapper::last_child(m); - // we don't consider null pointers as inconsistent - if ( mChild1==0 && mChild2==0 ) continue; - if ( i<mChild1 || i>mChild2 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent mother-daughter relationship between " - << i << " & " << m - << " (try !trust_mother)" << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - HEPEVT_Wrapper::print_hepevt_particle( m, os ); - } - } - // 2. check its daughters - int dau1 = HEPEVT_Wrapper::first_child( i ); - int dau2 = HEPEVT_Wrapper::last_child( i ); - if ( dau2<dau1 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " first child > last child " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - for ( int d = dau1; d<=dau2 && d!=0; ++d ) { - if ( d>HEPEVT_Wrapper::number_entries() || d < 0 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " child points out of range " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - int d_moth1 = HEPEVT_Wrapper::first_parent(d); - int d_moth2 = HEPEVT_Wrapper::last_parent(d); - // we don't consider null pointers as inconsistent - if ( d_moth1==0 && d_moth2==0 ) continue; - if ( i<d_moth1 || i>d_moth2 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent mother-daughter relationship between " - << i << " & " << d - << " (try trust_mothers)"<< std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - HEPEVT_Wrapper::print_hepevt_particle( d, os ); - } - } - } - if (!isConsistent) { - os << "Above lists all the inconsistencies in the HEPEVT common " - << "\n block which has been provided as input to HepMC. " - << "\n HepMC WILL have trouble interpreting the mother-daughter" - << "\n relationships ... but all other information " - << "\n (4-vectors etc) will be correctly transferred." - << "\n In order for HepMC to be able to interpret the mother/" - << "\n daughter hierachy, it MUST be given consistent input." - << "\n This is one of the design criteria of HepMC: " - << "\n consistency is enforced by the code."; - os << "\nThere is a switch in IO_HEPEVT, set-able using " - << "\n IO_HEPEVT::set_trust_mothers_before_daughters( bool )" - << "\n which you may want to try."; - os << "\nNote: if HEPEVT common block has been filled by pythia" - << "\n pyhepc, then the switch MSTP(128)=2 should be used in" - << "\n pythia, which instructs pythia not to put multiple " - << "\n copies of resonances in the event record.\n"; - os << "To obtain a file summarizing the inconsistency, you should:" - << "\n\t ofstream myFile(\"myInconsistentEvent.txt\"); " - << "\n\t HEPEVT_Wrapper::check_hepevt_consistency(myFile); " - << "\n\t HEPEVT_Wrapper::print_hepevt(myFile); " - << "\n[now write the event to HepMC using something like" - << "\n\t\t myIO_HEPEVT->write_event(myEvent); ]" - << "\n\t myEvent->print( myFile ); " - << " // print event as HepMC sees it" - << "\n ------------------------- Thank-you. \n\n" << std::endl; - } - return isConsistent; - } - - void HEPEVT_Wrapper::zero_everything() - { - set_event_number( 0 ); - set_number_entries( 0 ); - for ( int i = 1; i<=max_number_entries(); ++i ) { - set_status( i, 0 ); - set_id( i, 0 ); - set_parents( i, 0, 0 ); - set_children( i, 0, 0 ); - set_momentum( i, 0, 0, 0, 0 ); - set_mass( i, 0 ); - set_position( i, 0, 0, 0, 0 ); - } - } - -} // HepMC - diff --git a/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.h b/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.h deleted file mode 100644 index ac34a91f4c1..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/HEPEVT_Wrapper.h +++ /dev/null @@ -1,542 +0,0 @@ -//-------------------------------------------------------------------------- - -#ifndef HEPEVT_EntriesAllocation -#define HEPEVT_EntriesAllocation 10000 -#endif // HEPEVT_EntriesAllocation - -//-------------------------------------------------------------------------- -#ifndef HEPMC_HEPEVT_COMMON_H -#define HEPMC_HEPEVT_COMMON_H -////////////////////////////////////////////////////////////////////////// -// -// PARAMETER (NMXHEP=2000) -// COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), -// & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -/**********************************************************/ -/* D E S C R I P T I O N : */ -/*--------------------------------------------------------*/ -/* NEVHEP - event number (or some special meaning*/ -/* (see documentation for details) */ -/* NHEP - actual number of entries in current */ -/* event. */ -/* ISTHEP[IHEP] - status code for IHEP'th entry - see */ -/* documentation for details */ -/* IDHEP [IHEP] - IHEP'th particle identifier according*/ -/* to PDG. */ -/* JMOHEP[IHEP][0] - pointer to position of 1st mother */ -/* JMOHEP[IHEP][1] - pointer to position of 2nd mother */ -/* JDAHEP[IHEP][0] - pointer to position of 1st daughter */ -/* JDAHEP[IHEP][1] - pointer to position of 2nd daughter */ -/* PHEP [IHEP][0] - X momentum */ -/* PHEP [IHEP][1] - Y momentum */ -/* PHEP [IHEP][2] - Z momentum */ -/* PHEP [IHEP][3] - Energy */ -/* PHEP [IHEP][4] - Mass */ -/* VHEP [IHEP][0] - X vertex */ -/* VHEP [IHEP][1] - Y vertex */ -/* VHEP [IHEP][2] - Z vertex */ -/* VHEP [IHEP][3] - production time */ -/*========================================================*/ -// Remember, array(1) is the first entry in a fortran array, array[0] is the -// first entry in a C array. -// -// This interface to HEPEVT common block treats the block as -// an array of bytes --- the precision and number of entries -// is determined "on the fly" by the wrapper and used to decode -// each entry. -// -// HEPEVT_EntriesAllocation is the maximum size of the HEPEVT common block -// that can be interfaced. -// It is NOT the actual size of the HEPEVT common used in each -// individual application. The actual size can be changed on -// the fly using HEPEVT_Wrapper::set_max_number_entries(). -// Thus HEPEVT_EntriesAllocation should typically be set -// to the maximum possible number of entries --- 10000 is a good choice -// (and is the number used by ATLAS versions of Pythia). -// -// Note: a statement like *( (int*)&hepevt.data[0] ) -// takes the memory address of the first byte in HEPEVT, -// interprets it as an integer pointer, -// and dereferences the pointer. -// i.e. it returns an integer corresponding to nevhep -// - -#include <ctype.h> - - const unsigned int hepevt_bytes_allocation = - sizeof(long int) * ( 2 + 4 * HEPEVT_EntriesAllocation ) - + sizeof(double) * ( 9 * HEPEVT_EntriesAllocation ); - - -#ifdef _WIN32 // Platform: Windows MS Visual C++ -struct HEPEVT_DEF{ - char data[hepevt_bytes_allocation]; - }; -extern "C" HEPEVT_DEF HEPEVT; -#define hepevt HEPEVT - -#else -extern "C" { - extern struct { - char data[hepevt_bytes_allocation]; - } hepevt_; -} -#define hepevt hepevt_ - -#endif // Platform - -#endif // HEPMC_HEPEVT_COMMON_H - -//-------------------------------------------------------------------------- -#ifndef HEPMC_HEPEVT_WRAPPER_H -#define HEPMC_HEPEVT_WRAPPER_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, April 24, 2000, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// Generic Wrapper for the fortran HEPEVT common block -// This class is intended for static use only - it makes no sense to -// instantiate it. -// Updated: June 30, 2000 (static initialization moved to separate .cxx file) -////////////////////////////////////////////////////////////////////////// -// -// The index refers to the fortran style index: -// i.e. index=1 refers to the first entry in the HEPEVT common block. -// all indices must be >0 -// number_entries --> integer between 0 and max_number_entries() giving total -// number of sequential particle indices -// first_parent/child --> index of first mother/child if there is one, -// zero otherwise -// last_parent/child --> if number children is >1, address of last parent/child -// if number of children is 1, same as first_parent/child -// if there are no children, returns zero. -// is_double_precision --> T or F depending if floating point variables -// are 8 or 4 bytes -// - -#include <iostream> -#include <cstdio> // needed for formatted output using sprintf - -namespace HepMC { - - class HEPEVT_Wrapper { - public: - - static void print_hepevt( std::ostream& ostr = std::cout ); - static void print_hepevt_particle( int index, - std::ostream& ostr = std::cout ); - static bool is_double_precision(); // True if common block uses double - - static bool check_hepevt_consistency( std::ostream& ostr = std::cout ); - - static void zero_everything(); - - //////////////////// - // Access Methods // - //////////////////// - static int event_number(); // event number - static int number_entries(); // num entries in current evt - static int status( int index ); // status code - static int id( int index ); // PDG particle id - static int first_parent( int index ); // index of 1st mother - static int last_parent( int index ); // index of last mother - static int number_parents( int index ); - static int first_child( int index ); // index of 1st daughter - static int last_child( int index ); // index of last daughter - static int number_children( int index ); - static double px( int index ); // X momentum - static double py( int index ); - static double pz( int index ); - static double e( int index ); // Energy - static double m( int index ); // generated mass - static double x( int index ); // X Production vertex - static double y( int index ); - static double z( int index ); - static double t( int index ); // production time - - //////////////////// - // Set Methods // - //////////////////// - static void set_event_number( int evtno ); - static void set_number_entries( int noentries ); - static void set_status( int index, int status ); - static void set_id( int index, int id ); - static void set_parents( int index, int firstparent, int lastparent ); - static void set_children( int index, int firstchild, int lastchild ); - static void set_momentum( int index, double px, double py, - double pz, double e ); - static void set_mass( int index, double mass ); - static void set_position( int index, double x, double y, double z, - double t ); - ////////////////////// - // HEPEVT Floorplan // - ////////////////////// - static unsigned int sizeof_int(); - static unsigned int sizeof_real(); - static int max_number_entries(); - static void set_sizeof_int(unsigned int); - static void set_sizeof_real(unsigned int); - static void set_max_number_entries(unsigned int); - - protected: - static double byte_num_to_double( unsigned int ); - static int byte_num_to_int( unsigned int ); - static void write_byte_num( double, unsigned int ); - static void write_byte_num( int, unsigned int ); - static void print_legend( std::ostream& ostr = std::cout ); - - private: - static unsigned int s_sizeof_int; - static unsigned int s_sizeof_real; - static unsigned int s_max_number_entries; - - }; - - ////////////////////////////// - // HEPEVT Floorplan Inlines // - ////////////////////////////// - inline unsigned int HEPEVT_Wrapper::sizeof_int(){ return s_sizeof_int; } - - inline unsigned int HEPEVT_Wrapper::sizeof_real(){ return s_sizeof_real; } - - inline int HEPEVT_Wrapper::max_number_entries() - { return (int)s_max_number_entries; } - - inline void HEPEVT_Wrapper::set_sizeof_int( unsigned int size ) - { - if ( size != sizeof(short int) && size != sizeof(long int) && size != sizeof(int) ) { - std::cerr << "HepMC is not able to handle integers " - << " of size other than 2 or 4." - << " You requested: " << size << std::endl; - } - s_sizeof_int = size; - } - - inline void HEPEVT_Wrapper::set_sizeof_real( unsigned int size ) { - if ( size != sizeof(float) && size != sizeof(double) ) { - std::cerr << "HepMC is not able to handle floating point numbers" - << " of size other than 4 or 8." - << " You requested: " << size << std::endl; - } - s_sizeof_real = size; - } - - inline void HEPEVT_Wrapper::set_max_number_entries( unsigned int size ) { - s_max_number_entries = size; - } - - inline double HEPEVT_Wrapper::byte_num_to_double( unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_real == sizeof(float) ) { - float* myfloat = (float*)&hepevt.data[b]; - return (double)(*myfloat); - } else if ( s_sizeof_real == sizeof(double) ) { - double* mydouble = (double*)&hepevt.data[b]; - return (*mydouble); - } else { - std::cerr - << "HEPEVT_Wrapper: illegal floating point number length." - << s_sizeof_real << std::endl; - } - return 0; - } - - inline int HEPEVT_Wrapper::byte_num_to_int( unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_int == sizeof(short int) ) { - short int* myshortint = (short int*)&hepevt.data[b]; - return (int)(*myshortint); - } else if ( s_sizeof_int == sizeof(long int) ) { - long int* mylongint = (long int*)&hepevt.data[b]; - return (*mylongint); - // on some 64 bit machines, int, short, and long are all different - } else if ( s_sizeof_int == sizeof(int) ) { - int* myint = (int*)&hepevt.data[b]; - return (*myint); - } else { - std::cerr - << "HEPEVT_Wrapper: illegal integer number length." - << s_sizeof_int << std::endl; - } - return 0; - } - - inline void HEPEVT_Wrapper::write_byte_num( double in, unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_real == sizeof(float) ) { - float* myfloat = (float*)&hepevt.data[b]; - (*myfloat) = (float)in; - } else if ( s_sizeof_real == sizeof(double) ) { - double* mydouble = (double*)&hepevt.data[b]; - (*mydouble) = (double)in; - } else { - std::cerr - << "HEPEVT_Wrapper: illegal floating point number length." - << s_sizeof_real << std::endl; - } - } - - inline void HEPEVT_Wrapper::write_byte_num( int in, unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_int == sizeof(short int) ) { - short int* myshortint = (short int*)&hepevt.data[b]; - (*myshortint) = (short int)in; - } else if ( s_sizeof_int == sizeof(long int) ) { - long int* mylongint = (long int*)&hepevt.data[b]; - (*mylongint) = (int)in; - // on some 64 bit machines, int, short, and long are all different - } else if ( s_sizeof_int == sizeof(int) ) { - int* myint = (int*)&hepevt.data[b]; - (*myint) = (int)in; - } else { - std::cerr - << "HEPEVT_Wrapper: illegal integer number length." - << s_sizeof_int << std::endl; - } - } - - ////////////// - // INLINES // - ////////////// - - inline bool HEPEVT_Wrapper::is_double_precision() - { - // true if 8byte floating point numbers are used in the HepEVT common. - return ( sizeof(double) == sizeof_real() ); - } - - inline int HEPEVT_Wrapper::event_number() - { return byte_num_to_int(0); } - - inline int HEPEVT_Wrapper::number_entries() - { - int nhep = byte_num_to_int( 1*sizeof_int() ); - return ( nhep <= max_number_entries() ? - nhep : max_number_entries() ); - } - - inline int HEPEVT_Wrapper::status( int index ) - { return byte_num_to_int( (2+index-1) * sizeof_int() ); } - - inline int HEPEVT_Wrapper::id( int index ) - { - return byte_num_to_int( (2+max_number_entries()+index-1) - * sizeof_int() ); - } - - inline int HEPEVT_Wrapper::first_parent( int index ) - { - int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)) - * sizeof_int() ); - return ( parent > 0 && parent <= number_entries() ) ? - parent : 0; - } - - inline int HEPEVT_Wrapper::last_parent( int index ) - { - // Returns the Index of the LAST parent in the HEPEVT record - // for particle with Index index. - // If there is only one parent, the last parent is forced to - // be the same as the first parent. - // If there are no parents for this particle, both the first_parent - // and the last_parent with return 0. - // Error checking is done to ensure the parent is always - // within range ( 0 <= parent <= nhep ) - // - int firstparent = first_parent(index); - int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - return ( parent > firstparent && parent <= number_entries() ) - ? parent : firstparent; - } - - inline int HEPEVT_Wrapper::number_parents( int index ) { - int firstparent = first_parent(index); - return ( firstparent>0 ) ? - ( 1+last_parent(index)-firstparent ) : 0; - } - - inline int HEPEVT_Wrapper::first_child( int index ) - { - int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)) - * sizeof_int() ); - return ( child > 0 && child <= number_entries() ) ? - child : 0; - } - - inline int HEPEVT_Wrapper::last_child( int index ) - { - // Returns the Index of the LAST child in the HEPEVT record - // for particle with Index index. - // If there is only one child, the last child is forced to - // be the same as the first child. - // If there are no children for this particle, both the first_child - // and the last_child with return 0. - // Error checking is done to ensure the child is always - // within range ( 0 <= parent <= nhep ) - // - int firstchild = first_child(index); - int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - return ( child > firstchild && child <= number_entries() ) - ? child : firstchild; - } - - inline int HEPEVT_Wrapper::number_children( int index ) - { - int firstchild = first_child(index); - return ( firstchild>0 ) ? - ( 1+last_child(index)-firstchild ) : 0; - } - - inline double HEPEVT_Wrapper::px( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+0) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::py( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+1) *sizeof_real() ); - } - - - inline double HEPEVT_Wrapper::pz( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+2) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::e( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+3) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::m( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+4) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::x( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+0) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::y( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+1) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::z( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+2) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::t( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+3) ) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_event_number( int evtno ) - { write_byte_num( evtno, 0 ); } - - inline void HEPEVT_Wrapper::set_number_entries( int noentries ) - { write_byte_num( noentries, 1*sizeof_int() ); } - - inline void HEPEVT_Wrapper::set_status( int index, int status ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( status, (2+index-1) * sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_id( int index, int id ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( id, (2+max_number_entries()+index-1) *sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_parents( int index, int firstparent, - int lastparent ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( firstparent, (2+2*max_number_entries()+2*(index-1)) - *sizeof_int() ); - write_byte_num( lastparent, (2+2*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_children( int index, int firstchild, - int lastchild ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( firstchild, (2+4*max_number_entries()+2*(index-1)) - *sizeof_int() ); - write_byte_num( lastchild, (2+4*max_number_entries()+2*(index-1)+1) - *sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_momentum( int index, double px, - double py, double pz, double e ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( px, (2+6*max_number_entries()) *sizeof_int() - + (5*(index-1)+0) *sizeof_real() ); - write_byte_num( py, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+1) *sizeof_real() ); - write_byte_num( pz, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+2) *sizeof_real() ); - write_byte_num( e, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+3) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_mass( int index, double mass ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( mass, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+4) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_position( int index, double x, double y, - double z, double t ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( x, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+0) ) *sizeof_real() ); - write_byte_num( y, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+1) ) *sizeof_real() ); - write_byte_num( z, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+2) ) *sizeof_real() ); - write_byte_num( t, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+3) ) *sizeof_real() ); - } - -} // HepMC - -#endif // HEPMC_HEPEVT_WRAPPER_H -//-------------------------------------------------------------------------- - diff --git a/GeneratorInterface/Herwig6Interface/src/HepEvt.F b/GeneratorInterface/Herwig6Interface/src/HepEvt.F deleted file mode 100644 index c23d20cfb6a..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/HepEvt.F +++ /dev/null @@ -1,10 +0,0 @@ - - - subroutine ihepevt - - -#include "CLHEP/HepMC/include/stdhep.inc" -#include "CLHEP/HepMC/include/hepev4.inc" - - return - end diff --git a/GeneratorInterface/Herwig6Interface/src/Herwig6Source.cc b/GeneratorInterface/Herwig6Interface/src/Herwig6Source.cc deleted file mode 100644 index dbeb2dbe002..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/Herwig6Source.cc +++ /dev/null @@ -1,1172 +0,0 @@ -/* - * Original Author: Fabian Stoeckli - * 26/09/06 - * - */ - - -#include "GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h" -#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "FWCore/Utilities/interface/RandomNumberGenerator.h" -#include "CLHEP/Random/JamesRandom.h" -#include "CLHEP/Random/RandFlat.h" - -#include <iostream> -#include "time.h" -#include <ctype.h> - -using namespace edm; -using namespace std; - -// Generator modifications -// *********************** -#include "HerwigWrapper6_4.h" -#include "IO_HERWIG.h" -#include "HEPEVT_Wrapper.h" - -//------------------------------------------------------------------------------- -// COMMON block stuff, that doesn't come with the HerwigWrapper6_4.h .... - -/*C Arrays for particle properties (NMXRES = max no of particles defined) - PARAMETER(NMXRES=500) - COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES), - & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES, - & VTOCDK(0:NMXRES),VTORDK(0:NMXRES), - & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) */ -const int nmxres = 500+1; // we need NMXRES+1 entries ... -extern struct { - double RLTIM[nmxres], RMASS[nmxres], RSPIN[nmxres]; - int ICHRG[nmxres], IDPDG[nmxres],IFLAV[nmxres], NRES; - int VTOCDK[nmxres], VTORDK[nmxres], QORQQB[nmxres], QBORQQ[nmxres]; -} hwprop_; -#define hwprop hwprop_ - -/*C Parameters for Sudakov form factors -C (NMXSUD= max no of entries in lookup table) - PARAMETER (NMXSUD=1024) - COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD, - & SUDORD*/ -const int nmxsud = 1024; -extern struct { - double ACCUR, QEV[nmxsud][6],SUD[nmxsud][6]; - int INTER, NQEV, NSUD, SUDORD; -} hwusud_; -#define hwusud hwusud_ - -/*C New parameters for version 6.203 - DOUBLE PRECISION ABWGT,ABWSUM,AVABW - INTEGER NNEGWT,NNEGEV - LOGICAL NEGWTS - COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS */ -extern struct { - double ABWGT, ABWSUM, AVABW; - int NNEGWT,NNEGEV,NEGWTS; -} hw6203_; -#define hw6203 hw6203_ - - -/*CHARACTER*20 - & AUTPDF - COMMON/HWPRCH/AUTPDF(2),BDECAY */ -extern struct { - char AUTPDF[20],BDECAY; -} hwprch_; -#define hwprch hwprch_ - -/*C Parameters for minimum bias/soft underlying event - COMMON/HWMINB/ - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 */ -extern struct { - double PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3; -} hwminb_; -#define hwminb hwminb_ - -/*C Variables controling mixing and vertex information -C--VTXPIP should have been a 5-vector, problems with NAG compiler - COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(5),XMIX(2), - & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR */ -extern struct { - double EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP[5],XMIX[2],XMRCT[2],YMIX[2],YMRCT[2]; - int IOPDKL,MAXDKL,MIXING,PIPSMR; -} hwdist_; -#define hwdist hwdist_ - -/* PARAMETER(NMXCDK=4000) - COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12), - & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO */ - -const int nmxcdk=4000; -extern struct { - double CLDKWT[nmxcdk],CTHRPW[12][12],PRECO,RESN[12][12], RMIN[12][12]; - int LOCN[12][12],NCLDK[nmxcdk], NRECO,CLRECO; -} hwuclu_; -#define hwuclu hwuclu_ - -/*C Weights used in cluster decays - COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12), - & SWTEF(NMXRES) */ -extern struct { - double REPWT[4][5][5],SNGWT,DECWT,QWT[3],PWT[12],SWTEF[nmxres-1]; -} hwuwts_; -#define hwuwts hwuwts_ - -/*C Other new parameters for version 6.2 - DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH - LOGICAL WZRFR,FIX4JT - INTEGER IMSSM,IHIGGS,PARITY,LRSUSY - COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT, - & IMSSM,IHIGGS,PARITY,LRSUSY */ -extern struct { - double VIPWID[3], DXRCYL,DXZMAX,DXRSPH; - int WZRFR,FIX4JT,IMSSM,IHIGGS,PARITY,LRSUSY; -} hw6202_; -#define hw6202 hw6202_ - -/* PARAMETER (MODMAX=50) - COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP), - & IOPHIG,MODBOS(MODMAX) */ -const int hepevt_size = 4000; // check in HerwigWrapper -const int modmax = 50; -extern struct { - double ALPFAC, BRHIG[12], ENHANC[12], GAMMAX, RHOHEP[3][hepevt_size]; - int IOPHIG, MODBOS[modmax]; -} hwbosc_; -#define hwbosc hwbosc_ - -/* COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST, - & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS, - & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, - & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX, - & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH, - & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL, - & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM */ -extern struct { - double ASFIXD,CLQ[6][7],COSS,COSTH,CTMAX,DISF[2][13],EMLST, EMMAX,EMMIN,EMPOW,EMSCA,EPOLN[3],GCOEF[7],GPOLN,OMEGA0,PHOMAS, PPOLN[3],PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, SINS,THMAX,Y4JT,TMNISR,TQWT,XX[2],XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR; - int IAPHIG,IBRN[2],IBSH, ICO[10],IDCMF,IDN[10],IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ[6],MAXFL,BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM; -} hwhard_; -#define hwhard hwhard_ - -/*C other HERWIG branching, event and hard subprocess common blocks - COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD, - & NSPAC(7),ISLENT,BREIT,FROST,USECMF */ -extern struct { - double ANOMSC[2][2],HARDST,PTINT[2][3],XFACT; - int INHAD,JNHAD,NSPAC[7],ISLENT,BREIT,FROST,USECMF; -} hwbrch_; -#define hwbrch hwbrch_ - -/* LOGICAL PRESPL - COMMON /HW6500/ PRESPL */ -extern struct { - int PRESPL; -} hw6500_; -#define hw6500 hw6500_ - -/*C R-Parity violating parameters and colours - COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3), - & LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD */ -extern struct { - double LAMDA1[3][3][3],LAMDA2[3][3][3],LAMDA3[3][3][3]; - int HRDCOL[5][2],RPARTY,COLUPD; -} hwrpar_; -#define hwrpar hwrpar_ - -/*C SUSY parameters - COMMON/HWSUSY/ - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16), - & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2), - & QMIXSS(6,2,2),LMIXSS(6,2,2), - & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3), - & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN */ -extern struct { - double TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB,ZMIXSS[4][4],ZMXNSS[4][4],ZSGNSS[4], LFCH[16],RFCH[16],SLFCH[4][16],SRFCH[4][16], WMXUSS[2][2],WMXVSS[2][2], WSGNSS[2],QMIXSS[2][2][6],LMIXSS[2][2][6],THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS,GHWWSS[3],GHZZSS[3],GHDDSS[4],GHUUSS[4],GHWHSS[3],GHSQSS[2][2][6][4],XLMNSS,RMMNSS,DMSSM,SENHNC[24],SSPARITY; - int SUSYIN; -} hwsusy_; -#define hwsusy hwsusy_ - -/*INTEGER NDECSY,NSEARCH,LRDEC,LWDEC - LOGICAL SYSPIN,THREEB,FOURB - CHARACTER *6 TAUDEC - COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB, - & FOURB,TAUDEC */ -extern struct { - int NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB,FOURB; - char TAUDEC[6]; -} hwdspn_; -#define hwdspn hwdspn_ - -/*C--common block for Les Houches interface to store information we need -C - INTEGER MAXHRP - PARAMETER (MAXHRP=100) - DOUBLE PRECISION LHWGT(MAXHRP),LHWGTS(MAXHRP),LHMXSM, - & LHXSCT(MAXHRP),LHXERR(MAXHRP),LHXMAX(MAXHRP) - INTEGER LHIWGT(MAXHRP),ITYPLH,LHNEVT(MAXHRP) - LOGICAL LHSOFT,LHGLSF - COMMON /HWGUPR/LHWGT,LHWGTS,LHXSCT,LHXERR,LHXMAX,LHMXSM,LHIWGT, - & LHNEVT,ITYPLH,LHSOFT,LHGLSF */ -const int maxhrp = 100; -extern struct { - double LHWGT[maxhrp],LHWGTS[maxhrp],LHMXSM,LHXSCT[maxhrp],LHXERR[maxhrp],LHXMAX[maxhrp]; - int LHIWGT,LHNEVT,ITYPLH,LHSOFT,LHGLSF; -} hwgupr_; -#define hwgupr hwgupr_ - -/*C New parameters for version 6.3 - INTEGER IMAXCH,IMAXOP - PARAMETER (IMAXCH=20,IMAXOP=40) - DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH) - INTEGER IOPSTP,IOPSH - LOGICAL OPTM,CHON(IMAXCH) - COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON */ -const int imaxch = 20; -extern struct { - double MJJMIN,CHNPRB[imaxch]; - int IOPSTP,IOPSH,OPTM,CHON[imaxch]; -} hw6300_; -#define hw6300 hw6300_ -//------------------------------------------------------------------------------- - -HepMC::IO_HERWIG conv; -// *********************** - - -//used for defaults - static const unsigned long kNanoSecPerSec = 1000000000; - static const unsigned long kAveEventPerSec = 200; - -Herwig6Source::Herwig6Source( const ParameterSet & pset, - InputSourceDescription const& desc ) : - GeneratedInputSource(pset, desc), evt(0), - herwigVerbosity_ (pset.getUntrackedParameter<int>("herwigVerbosity",0)), - herwigHepMCVerbosity_ (pset.getUntrackedParameter<bool>("herwigHepMCVerbosity",false)), - maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",0)), - comenergy(pset.getUntrackedParameter<double>("comEnergy",14000.)) -{ - - cout << "Herwig6Source: initializing Herwig. " << endl; - - // Call hwudat to set up HERWIG block data - hwudat(); - - // herwigVerbosity Level IPRINT - /* valid argumets are: 0: print title only - 1: + print selected input parameters - 2: + print table of particle codes and properties - 3: + tables of Sudakov form factors */ - - cout << "Herwig verbosity level = " << herwigVerbosity_ << endl; - - //Max number of events printed on verbosity level - //maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0); - cout << "Number of events to be printed = " << maxEventsToPrint_ << endl; - - // setting basic parameters ... - hwproc.PBEAM1 = comenergy/2.; - hwproc.PBEAM2 = comenergy/2.; - hwbmch.PART1[0] = 'P'; - hwbmch.PART2[0] = 'P'; - for(int i=1;i<8;++i){ - hwbmch.PART1[i] = ' '; - hwbmch.PART2[i] = ' ';} - - // process number (should be changed ... ) - // hwproc.IPROC = 1500; - // this is not used anymore .. - hwproc.MAXEV = 10; - - // initialize other common block ... - hwigin(); - - // set some 'non-herwig' defaults - hwevnt.MAXPR = maxEventsToPrint_; // no printing out of events - hwpram.IPRINT = herwigVerbosity_; // HERWIG print out mode - hwprop.RMASS[6] = 175.0; - - // Set HERWIG parameters in a single ParameterSet - ParameterSet herwig_params = - pset.getParameter<ParameterSet>("HerwigParameters") ; - - // The parameter sets to be read (default, min bias, user ...) in the - // proper order. - vector<string> setNames = - herwig_params.getParameter<vector<string> >("parameterSets"); - - // Loop over the sets - for ( unsigned i=0; i<setNames.size(); ++i ) { - - string mySet = setNames[i]; - - // Read the HERWIG parameters for each set of parameters - vector<string> pars = - herwig_params.getParameter<vector<string> >(mySet); - - cout << "----------------------------------------------" << endl; - cout << "Read HERWIG parameter set " << mySet << endl; - cout << "----------------------------------------------" << endl; - - // Loop over all parameters and stop in case of mistake - for( vector<string>::const_iterator - itPar = pars.begin(); itPar != pars.end(); ++itPar ) { - static string sRandomValueSetting1("NRN(1)"); - static string sRandomValueSetting2("NRN(2)"); - if( (0 == itPar->compare(0,sRandomValueSetting1.size(),sRandomValueSetting1) )||(0 == itPar->compare(0,sRandomValueSetting2.size(),sRandomValueSetting2) )) { - throw edm::Exception(edm::errors::Configuration,"HerwigError") - <<" attempted to set random number using pythia command 'NRN(.)'. This is not allowed.\n Please use the RandomNumberGeneratorService to set the random number seed."; - } - - if( ! hwgive(*itPar) ) { - throw edm::Exception(edm::errors::Configuration,"HerwigError") - <<" herwig did not accept the following \""<<*itPar<<"\""; - } - } - } - - - //In the future, we will get the random number seed on each event and tell - // HERWIG to use that new seed - cout << "----------------------------------------------" << endl; - cout << "Setting Herwig random number seeds *blank*" << endl; - cout << "----------------------------------------------" << endl; - /*edm::Service<RandomNumberGenerator> rng; - uint32_t seed1 = rng->mySeed(); - uint32_t seed2 = rng->mySeed(); - hwevnt.NRN[0] = seed1; - hwevnt.NRN[1] = seed2;*/ - - - hwuinc(); - - // callung HWUSTA to make any particle stable (PI0 by default) - hwusta("PI0 ",1); - - // initialize elemetary process ... - hweini(); - - cout << endl; // Stetically add for the output - //******** - - produces<HepMCProduct>(); - cout << "Herwig6Source: starting event generation ... " << endl<<endl; -} - - -Herwig6Source::~Herwig6Source(){ - cout << "Herwig6Source: event generation done. " << endl; - clear(); -} - -void Herwig6Source::clear() { - // teminate elementary process - hwefin(); -} - - -bool Herwig6Source::produce(Event & e) { - - auto_ptr<HepMCProduct> bare_product(new HepMCProduct()); - - //******** - // - - // initialize event - hwuine(); - - // generate hard subprocess - hwepro(); - - // generate parton cascades - hwbgen(); - - // do heavy object decays - hwdhob(); - - // do cluster formation - hwcfor(); - - // do cluster decays - hwcdec(); - - // do unstable particle decays - hwdhad(); - - // do heavy flavour hadron decays - hwdhvy(); - - // add soft underlying event if needed - hwmevt(); - - // finish event - hwufne(); - - HepMC::GenEvent* evt = new HepMC::GenEvent(); - bool ok = conv.fill_next_event( evt ); - if(!ok) throw cms::Exception("HerwigError") - <<" Conversion problems in event nr."<<numberEventsInRun() - remainingEvents() - 1<<"."; - evt->set_signal_process_id(hwproc.IPROC); - evt->set_event_number(numberEventsInRun() - remainingEvents() - 1); - - if (herwigHepMCVerbosity_) { - cout << "Event process = " << evt->signal_process_id() <<endl - << "----------------------" << endl; - evt->print(); - } - - //evt = reader_->fillCurrentEventData(); - //******** - - if(evt) bare_product->addHepMCData(evt ); - - e.put(bare_product); - - return true; -} - - -bool -Herwig6Source::hwgive(const std::string& ParameterString) { - - bool accepted = 1; - - if(!strncmp(ParameterString.c_str(),"IPROC",5)) { - hwproc.IPROC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - if(hwproc.IPROC<0) { - throw cms::Exception("HerwigError") - <<" Attempted to set IPROC to a negative value. This is not allowed.\n Please use the McatnloInterface to cope with negative valued IPROCs."; - } - } - else if(!strncmp(ParameterString.c_str(),"AUTPDF(",7)){ - cout<<" WARNING: AUTPDF parameter *not* suported. HERWIG will use default PDF's."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"TAUDEC",6)){ - int tostart=0; - while(ParameterString.c_str()[tostart]!='=') tostart++; - tostart++; - while(ParameterString.c_str()[tostart]==' ') tostart++; - int todo = 0; - while(ParameterString.c_str()[todo+tostart]!='\0') { - hwdspn.TAUDEC[todo]=ParameterString.c_str()[todo+tostart]; - todo++; - } - if(todo != 6) { - throw cms::Exception("HerwigError") - <<" Attempted to set TAUDEC to "<<hwdspn.TAUDEC<<". This is not allowed.\n Options for TAUDEC are HERWIG and TAUOLA."; - } - } - else if(!strncmp(ParameterString.c_str(),"BDECAY",6)){ - cout<<" WARNING: BDECAY parameter *not* suported. HERWIG will use default b decay."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"QCDLAM",6)) - hwpram.QCDLAM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VQCUT",5)) - hwpram.VQCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VGCUT",5)) - hwpram.VGCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VPCUT",5)) - hwpram.VPCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLMAX",5)) - hwpram.CLMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLPOW",5)) - hwpram.CLPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PSPLT(1)",8)) - hwpram.PSPLT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PSPLT(2)",8)) - hwpram.PSPLT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QDIQK",5)) - hwpram.QDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PDIQK",5)) - hwpram.PDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QSPAC",5)) - hwpram.QSPAC = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTRMS",5)) - hwpram.PTRMS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IPRINT",6)) - hwpram.IPRINT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRVTX",5)) - hwpram.PRVTX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NPRFMT",6)) - hwpram.NPRFMT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNDEC",6)) - hwpram.PRNDEC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNDEF",6)) - hwpram.PRNDEF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNTEX",6)) - hwpram.PRNTEX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNWEB",6)) - hwpram.PRNWEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXPR",5)) - hwevnt.MAXPR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXER",5)) - hwevnt.MAXER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LWEVT",5)) - hwevnt.LWEVT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LRSUD",5)) - hwpram.LRSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LWSUD",5)) - hwpram.LWSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NRN(1)",6)) - hwevnt.NRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NRN(2)",6)) - hwevnt.NRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WGTMAX",6)) - hwevnt.WGTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NOWGT",5)) - hwevnt.NOWGT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AVWGT",5)) - hwevnt.AVWGT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AZSOFT",6)) - hwpram.AZSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AZSPIN",6)) - hwpram.AZSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"HARDME",6)) - hwpram.HARDME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SOFTME",6)) - hwpram.SOFTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GCUTME",6)) - hwpram.GCUTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NCOLO",5)) - hwpram.NCOLO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NFLAV",5)) - hwpram.NFLAV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODPDF(1)",9)) - hwpram.MODPDF[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODPDF(2)",9)) - hwpram.MODPDF[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NSTRU",5)) - hwpram.NSTRU = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRSOF",5)) - hwpram.PRSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ENSOF",5)) - hwpram.ENSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPREM",6)) - hwpram.IOPREM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BTCLM",5)) - hwpram.BTCLM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ETAMIX",6)) - hwpram.ETAMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PHIMIX",6)) - hwpram.PHIMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"H1MIX",5)) - hwpram.H1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F0MIX",5)) - hwpram.F0MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F1MIX",5)) - hwpram.F1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F2MIX",5)) - hwpram.F2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ET2MIX",6)) - hwpram.ET2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OMHMIX",6)) - hwpram.OMHMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PH3MIX",6)) - hwpram.PH3MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"B1LIM",5)) - hwpram.B1LIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLDIR(1)",8)) - hwpram.CLDIR[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLDIR(2)",8)) - hwpram.CLDIR[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLSMR(1)",8)) - hwpram.CLSMR[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLSMR(2)",8)) - hwpram.CLSMR[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(1)",8)) - hwprop.RMASS[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(2)",8)) - hwprop.RMASS[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(3)",8)) - hwprop.RMASS[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(4)",8)) - hwprop.RMASS[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(5)",8)) - hwprop.RMASS[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(6)",8)) - hwprop.RMASS[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(13)",9)) - hwprop.RMASS[13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SUDORD",6)) - hwusud.SUDORD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"INTER",5)) - hwusud.INTER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NEGWTS",6)) - hw6203.NEGWTS = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN1",5)) - hwminb.PMBN1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN2",5)) - hwminb.PMBN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN3",5)) - hwminb.PMBN3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBK1",5)) - hwminb.PMBK1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBK2",5)) - hwminb.PMBK2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBM1",5)) - hwminb.PMBM1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBM2",5)) - hwminb.PMBM2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP1",5)) - hwminb.PMBP1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP2",5)) - hwminb.PMBP2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP3",5)) - hwminb.PMBP3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VMIN2",5)) - hwdist.VMIN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EXAG",4)) - hwdist.EXAG = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRECO",5)) - hwuclu.PRECO = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLRECO",6)) - hwuclu.CLRECO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(1)",6)) - hwuwts.PWT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(2)",6)) - hwuwts.PWT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(3)",6)) - hwuwts.PWT[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(4)",6)) - hwuwts.PWT[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(5)",6)) - hwuwts.PWT[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(6)",6)) - hwuwts.PWT[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(7)",6)) - hwuwts.PWT[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,0)",12)) - hwuwts.REPWT[0][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,1)",12)) - hwuwts.REPWT[0][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,2)",12)) - hwuwts.REPWT[0][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,3)",12)) - hwuwts.REPWT[0][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,4)",12)) - hwuwts.REPWT[0][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,0)",12)) - hwuwts.REPWT[0][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,1)",12)) - hwuwts.REPWT[0][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,2)",12)) - hwuwts.REPWT[0][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,3)",12)) - hwuwts.REPWT[0][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,4)",12)) - hwuwts.REPWT[0][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,0)",12)) - hwuwts.REPWT[0][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,1)",12)) - hwuwts.REPWT[0][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,2)",12)) - hwuwts.REPWT[0][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,3)",12)) - hwuwts.REPWT[0][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,4)",12)) - hwuwts.REPWT[0][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,0)",12)) - hwuwts.REPWT[0][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,1)",12)) - hwuwts.REPWT[0][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,2)",12)) - hwuwts.REPWT[0][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,3)",12)) - hwuwts.REPWT[0][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,4)",12)) - hwuwts.REPWT[0][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,0)",12)) - hwuwts.REPWT[0][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,1)",12)) - hwuwts.REPWT[0][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,2)",12)) - hwuwts.REPWT[0][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,3)",12)) - hwuwts.REPWT[0][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,4)",12)) - hwuwts.REPWT[0][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,0)",12)) - hwuwts.REPWT[1][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,1)",12)) - hwuwts.REPWT[1][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,2)",12)) - hwuwts.REPWT[1][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,3)",12)) - hwuwts.REPWT[1][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,4)",12)) - hwuwts.REPWT[1][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,0)",12)) - hwuwts.REPWT[1][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,1)",12)) - hwuwts.REPWT[1][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,2)",12)) - hwuwts.REPWT[1][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,3)",12)) - hwuwts.REPWT[1][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,4)",12)) - hwuwts.REPWT[1][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,0)",12)) - hwuwts.REPWT[1][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,1)",12)) - hwuwts.REPWT[1][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,2)",12)) - hwuwts.REPWT[1][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,3)",12)) - hwuwts.REPWT[1][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,4)",12)) - hwuwts.REPWT[1][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,0)",12)) - hwuwts.REPWT[1][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,1)",12)) - hwuwts.REPWT[1][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,2)",12)) - hwuwts.REPWT[1][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,3)",12)) - hwuwts.REPWT[1][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,4)",12)) - hwuwts.REPWT[1][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,0)",12)) - hwuwts.REPWT[1][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,1)",12)) - hwuwts.REPWT[1][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,2)",12)) - hwuwts.REPWT[1][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,3)",12)) - hwuwts.REPWT[1][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,4)",12)) - hwuwts.REPWT[1][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,0)",12)) - hwuwts.REPWT[2][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,1)",12)) - hwuwts.REPWT[2][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,2)",12)) - hwuwts.REPWT[2][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,3)",12)) - hwuwts.REPWT[2][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,4)",12)) - hwuwts.REPWT[2][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,0)",12)) - hwuwts.REPWT[2][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,1)",12)) - hwuwts.REPWT[2][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,2)",12)) - hwuwts.REPWT[2][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,3)",12)) - hwuwts.REPWT[2][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,4)",12)) - hwuwts.REPWT[2][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,0)",12)) - hwuwts.REPWT[2][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,1)",12)) - hwuwts.REPWT[2][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,2)",12)) - hwuwts.REPWT[2][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,3)",12)) - hwuwts.REPWT[2][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,4)",12)) - hwuwts.REPWT[2][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,0)",12)) - hwuwts.REPWT[2][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,1)",12)) - hwuwts.REPWT[2][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,2)",12)) - hwuwts.REPWT[2][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,3)",12)) - hwuwts.REPWT[2][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,4)",12)) - hwuwts.REPWT[2][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,0)",12)) - hwuwts.REPWT[2][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,1)",12)) - hwuwts.REPWT[2][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,2)",12)) - hwuwts.REPWT[2][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,3)",12)) - hwuwts.REPWT[2][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,4)",12)) - hwuwts.REPWT[2][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,0)",12)) - hwuwts.REPWT[3][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,1)",12)) - hwuwts.REPWT[3][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,2)",12)) - hwuwts.REPWT[3][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,3)",12)) - hwuwts.REPWT[3][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,4)",12)) - hwuwts.REPWT[3][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,0)",12)) - hwuwts.REPWT[3][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,1)",12)) - hwuwts.REPWT[3][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,2)",12)) - hwuwts.REPWT[3][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,3)",12)) - hwuwts.REPWT[3][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,4)",12)) - hwuwts.REPWT[3][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,0)",12)) - hwuwts.REPWT[3][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,1)",12)) - hwuwts.REPWT[3][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,2)",12)) - hwuwts.REPWT[3][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,3)",12)) - hwuwts.REPWT[3][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,4)",12)) - hwuwts.REPWT[3][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,0)",12)) - hwuwts.REPWT[3][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,1)",12)) - hwuwts.REPWT[3][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,2)",12)) - hwuwts.REPWT[3][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,3)",12)) - hwuwts.REPWT[3][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,4)",12)) - hwuwts.REPWT[3][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,0)",12)) - hwuwts.REPWT[3][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,1)",12)) - hwuwts.REPWT[3][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,2)",12)) - hwuwts.REPWT[3][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,3)",12)) - hwuwts.REPWT[3][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,4)",12)) - hwuwts.REPWT[3][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SNGWT",5)) - hwuwts.SNGWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DECWT",5)) - hwuwts.DECWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PLTCUT",6)) - hwdist.PLTCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VTOCDK(",7)){ - // we find the index ... - int ind = atoi(&ParameterString[7]); - hwprop.VTOCDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);} - else if(!strncmp(ParameterString.c_str(),"VTORDK(",7)){ - // we find the index ... - int ind = atoi(&ParameterString[7]); - hwprop.VTORDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);} - else if(!strncmp(ParameterString.c_str(),"PIPSMR",6)) - hwdist.PIPSMR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(1)",9)) - hw6202.VIPWID[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(2)",9)) - hw6202.VIPWID[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(3)",9)) - hw6202.VIPWID[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXDKL",6)) - hwdist.MAXDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPDKL",6)) - hwdist.IOPDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXRCYL",6)) - hw6202.DXRCYL = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXZMAX",6)) - hw6202.DXZMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXRSPH",6)) - hw6202.DXRSPH = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - // else if(!strncmp(ParameterString.c_str(),"BDECAY",6)) - // hwprch.BDECAY = ParameterString[strcspn(ParameterString.c_str(),"=")+1]; - else if(!strncmp(ParameterString.c_str(),"MIXING",6)) - hwdist.MIXING = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"XMIX(1)",7)) - hwdist.XMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"XMIX(2)",7)) - hwdist.XMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YMIX(1)",7)) - hwdist.YMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YMIX(2)",7)) - hwdist.YMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(198)",10)) - hwprop.RMASS[198] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(199)",10)) - hwprop.RMASS[199] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMW",4)) - hwpram.GAMW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMZ",4)) - hwpram.GAMZ = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(200)",10)) - hwprop.RMASS[200] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WZRFR",5)) - hw6202.WZRFR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODBOS(",7)) { - int ind = atoi(&ParameterString[7]); - hwbosc.MODBOS[ind-1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"RMASS(201)",10)) - hwprop.RMASS[201] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPHIG",6)) - hwbosc.IOPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMMAX",6)) - hwbosc.GAMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ENHANC(",7)) { - int ind = atoi(&ParameterString[7]); - hwbosc.ENHANC[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"RMASS(209)",10)) - hwprop.RMASS[209] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(215)",10)) - hwprop.RMASS[215] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ALPHEM",6)) - hwpram.ALPHEM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SWEIN",5)) - hwpram.SWEIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QFCH(",5)){ - int ind = atoi(&ParameterString[5]); - hwpram.QFCH[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(1,",7)){ - int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(2,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(3,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(4,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(5,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(6,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(7,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(8,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(9,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(10,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(11,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(12,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(13,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(14,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(15,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(16,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(1,",7)){ - int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(2,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(3,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(4,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(5,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(6,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(7,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(8,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(9,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(10,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(11,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(12,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(13,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(14,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(15,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(16,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"ZPRIME",6)) - hwpram.ZPRIME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(202)",10)) - hwprop.RMASS[202] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMZP",5)) - hwpram.GAMZP = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VCKM(",5)) { - int ind1 = atoi(&ParameterString[5]); - if(ind1<1||ind1>3) return 0; - int ind2 = atoi(&ParameterString[7]); - if(ind2<1||ind2>3) return 0; - hwpram.VCKM[ind2][ind1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"SCABI",5)) - hwpram.SCABI = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EPOLN(",6)) { - int ind = atoi(&ParameterString[6]); - if(ind<1||ind>3) return 0; - hwhard.EPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"PPOLN(",6)) { - int ind = atoi(&ParameterString[6]); - if(ind<1||ind>3) return 0; - hwhard.PPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"QLIM",4)) - hwhard.QLIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"THMAX",5)) - hwhard.THMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Y4JT",4)) - hwhard.Y4JT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DURHAM",6)) - hwhard.DURHAM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOP4JT(1)",9)) - hwpram.IOP4JT[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOP4JT(2)",9)) - hwpram.IOP4JT[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BGSHAT",6)) - hwhard.BGSHAT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BREIT",5)) - hwbrch.BREIT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"USECMF",6)) - hwbrch.USECMF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NOSPAC",6)) - hwpram.NOSPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ISPAC",5)) - hwpram.ISPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"TMNISR",6)) - hwhard.TMNISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZMXISR",6)) - hwhard.ZMXISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ASFIXD",6)) - hwhard.ASFIXD = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OMEGA0",6)) - hwhard.OMEGA0 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IAPHIG",6)) - hwhard.IAPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PHOMAS",6)) - hwhard.PHOMAS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRESPL",6)) - hw6500.PRESPL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTMIN",5)) - hwhard.PTMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTMAX",5)) - hwhard.PTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTPOW",5)) - hwhard.PTPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YJMIN",5)) - hwhard.YJMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YJMAX",5)) - hwhard.YJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMMIN",5)) - hwhard.EMMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMMAX",5)) - hwhard.EMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMPOW",5)) - hwhard.EMPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2MIN",5)) - hwhard.Q2MIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2MAX",5)) - hwhard.Q2MAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2POW",5)) - hwhard.Q2POW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YBMIN",5)) - hwhard.YBMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YBMAX",5)) - hwhard.YBMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WHMIN",5)) - hwhard.WHMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZJMAX",5)) - hwhard.ZJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2WWMN",6)) - hwhard.Q2WWMN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2WWMX",6)) - hwhard.Q2WWMX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YWWMIN",6)) - hwhard.YWWMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YWWMAX",6)) - hwhard.YWWMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CSPEED",6)) - hwpram.CSPEED = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GEV2NB",6)) - hwpram.GEV2NB = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBSH",4)) - hwhard.IBSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBRN(1)",7)) - hwhard.IBRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBRN(2)",7)) - hwhard.IBRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NQEV",4)) - hwusud.NQEV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZBINM",5)) - hwpram.ZBINM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NZBIN",5)) - hwpram.NZBIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NBTRY",5)) - hwpram.NBTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NCTRY",5)) - hwpram.NCTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NETRY",5)) - hwpram.NETRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NSTRY",5)) - hwpram.NSTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ACCUR",5)) - hwusud.ACCUR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RPARTY",6)) - hwrpar.RPARTY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SUSYIN",6)) - hwsusy.SUSYIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LRSUSY",6)) - hw6202.LRSUSY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SYSPIN",6)) - hwdspn.SYSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"THREEB",6)) - hwdspn.THREEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"FOURB",5)) - hwdspn.FOURB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LHSOFT",6)) - hwgupr.LHSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LHGLSF",6)) - hwgupr.LHGLSF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OPTM",4)) - hw6300.OPTM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPSTP",6)) - hw6300.IOPSTP = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPSH",5)) - hw6300.IOPSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - - else accepted = 0; - - return accepted; -} - - -//------------------------------------------------------------------------------- -// dummy hwaend (to be REMOVED from herwig) -#define hwaend hwaend_ - -extern "C" { - void hwaend(){/*dummy*/}; -} -//------------------------------------------------------------------------------- diff --git a/GeneratorInterface/Herwig6Interface/src/HerwigWrapper6_4.h b/GeneratorInterface/Herwig6Interface/src/HerwigWrapper6_4.h deleted file mode 100644 index c6e0e5ee956..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/HerwigWrapper6_4.h +++ /dev/null @@ -1,136 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HERWIG_WRAPPER_H -#define HERWIG_WRAPPER_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, April 2002 -// Wrapper for FORTRAN version of Herwig -////////////////////////////////////////////////////////////////////////// -// - -#include <ctype.h> - -//-------------------------------------------------------------------------- -// HERWIG Common Block Declarations - -// COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV -extern "C" { - extern struct { - double EBEAM1,EBEAM2,PBEAM1,PBEAM2; - int IPROC,MAXEV; - } hwproc_; -} -#define hwproc hwproc_ - -// CHARACTER*8 PART1,PART2 -// COMMON/HWBMCH/PART1,PART2 -extern "C" { - extern struct { - char PART1[8],PART2[8]; - } hwbmch_; -} -#define hwbmch hwbmch_ - -// COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, -// & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, -// & NUMERU,NWGTS,GENSOF -const int herwig_hepevt_size = 4000; -extern "C" { - extern struct { - double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM; - int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR; - int NOWGT,NRN[2],NUMER,NUMERU,NWGTS; - int GENSOF; //Beware! in F77 this is logical - } hwevnt_; -} -#define hwevnt hwevnt_ - -// C Basic parameters (and quantities derived from them) -// COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, -// & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, -// & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, -// & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, -// & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, -// & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, -// & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, -// & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, -// & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, -// & PRNDEF,PRNTEX,PRNWEB - -extern "C" { - extern struct { - double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, - CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, - GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC, - PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG, - QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT, - VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME; - int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY, - NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT; - int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME, - ZPRIME,PRNDEF,PRNTEX,PRNWEB; //Beware! in F77 these are logical - } hwpram_; -} -#define hwpram hwpram_ - -//-------------------------------------------------------------------------- -// HERWIG routines declaration - -#define hwigin hwigin_ // initialise other common blocks -#define hwigup hwigup_ // initialise HepUP run common block -#define hwuinc hwuinc_ // compute parameter-dependent constants -#define hwusta hwusta_ // call hwusta to make any particle stable -#define hweini hweini_ // initialise elementary process -#define hwuine hwuine_ // initialise event -#define hwepro hwepro_ // generate HERWIG hard subprocess -#define hwupro hwupro_ // read USER hard subprocess from HepUP event common -#define hwbgen hwbgen_ // generate parton cascades -#define hwdhob hwdhob_ // do heavy object decays -#define hwcfor hwcfor_ // do cluster hadronization -#define hwcdec hwcdec_ // do cluster decay -#define hwdhad hwdhad_ // do unstable particle decays -#define hwdhvy hwdhvy_ // do heavy flavour decays -#define hwmevt hwmevt_ // add soft underlying event if needed -#define hwufne hwufne_ // event generation completed, wrap up event .... -#define hwefin hwefin_ // terminate elementary process - -#define hwudpr hwudpr_ // prints out particle/decay properties -#define hwuepr hwuepr_ // prints out event data -#define hwupup hwupup_ // prints out HepEUP user common block event data -#define hwegup hwegup_ // terminal calculations to replace HWEFIN for HepUP - extern "C" { - void hwigin(void); - void hwigup(void); - void hwuinc(void); - void hwusta(const char*,int); - void hweini(void); - void hwuine(void); - void hwepro(void); - void hwupro(void); - void hwbgen(void); - void hwdhob(void); - void hwcfor(void); - void hwcdec(void); - void hwdhad(void); - void hwdhvy(void); - void hwmevt(void); - void hwufne(void); - void hwefin(void); - void hwudpr(void); - void hwuepr(void); - void hwupup(void); - void hwegup(void); - } - -//-------------------------------------------------------------------------- -// HERWIG block data -// ( with gcc it works to initialize the block data by calling -// "hwudat();" at beginning. ) - -#define hwudat hwudat_ -extern "C" { - void hwudat(void); -} - -#endif // HERWIG_WRAPPER_H -//-------------------------------------------------------------------------- diff --git a/GeneratorInterface/Herwig6Interface/src/IO_BaseClass.h b/GeneratorInterface/Herwig6Interface/src/IO_BaseClass.h deleted file mode 100644 index 95b2523b156..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/IO_BaseClass.h +++ /dev/null @@ -1,142 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_IO_BASECLASS_H -#define HEPMC_IO_BASECLASS_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, November 1999, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// event input/output base class -////////////////////////////////////////////////////////////////////////// -// -// class from which all input/output classes shall inherit from. -// i.e.: if you want to write events to hbook ntuples, -// then inherit from this class and re-define read_event() -// and write_event() -// -// (Possible extension: Could make this an input iterator) -// - -#include <iostream> -#include "ParticleDataTable.h" -#include "CLHEP/HepMC/GenEvent.h" - -namespace HepMC { - - class IO_BaseClass { - public: - virtual ~IO_BaseClass() {} - - virtual void write_event( const GenEvent* ) =0; - virtual bool fill_next_event( GenEvent* ) =0; - virtual void write_particle_data_table( const ParticleDataTable* ) =0; - virtual bool fill_particle_data_table( ParticleDataTable* ) =0; - virtual void print( std::ostream& ostr = std::cout ) const; - // - // the read_next_event() and read_particle_data_table() differ from - // the fill_***() methods in that they create a new event or pdt - // before calling the correspondingfill_*** method - // (they are not intended to be over-ridden) - GenEvent* read_next_event(); - ParticleDataTable* read_particle_data_table(); - // - // The overloaded stream operators >>,<< are identical to - // read_next_event and write_event methods respectively. - // (or read_particle_data_table and write_particle_data_table) - // the event argument for the overloaded stream operators is a pointer, - // which is passed by reference. - // i.e. GenEvent* evt; - // io >> evt; - // will give the expected result. - // (note: I don't see any reason to have separate const and non-const - // versions of operator<<, but the pedantic ansi standard insists - // on it) - virtual GenEvent*& operator>>( GenEvent*& ); - virtual const GenEvent*& operator<<( const GenEvent*& ); - virtual GenEvent*& operator<<( GenEvent*& ); - virtual ParticleDataTable*& operator>>( ParticleDataTable*& ); - virtual const ParticleDataTable*& operator<<( const - ParticleDataTable*& ); - virtual ParticleDataTable*& operator<<( ParticleDataTable*& ); - }; - - ////////////// - // Inlines // - ////////////// - - inline GenEvent* IO_BaseClass::read_next_event() { - // creates a new event and fills it by calling - // the sister method read_next_event( GenEvent* ) - // - // 1. create an empty event container - GenEvent* evt = new GenEvent(); - // 2. fill the evt container - if the read is successful, return the - // pointer, otherwise return null and delete the evt - if ( fill_next_event( evt ) ) return evt; - // note: the below delete is only reached if read fails - // ... thus there is not much overhead in new then delete - // since this statement is rarely reached - delete evt; - return 0; - } - - inline ParticleDataTable* IO_BaseClass::read_particle_data_table() { - // creates a new particle data table and fills it by calling - // the sister method read_particle_data_table( ParticleDataTable* ) - // - // 1. create an empty pdt - ParticleDataTable* pdt = new ParticleDataTable(); - // 2. fill the pdt container - if the read is successful, return the - // pointer, otherwise return null and delete the evt - if ( fill_particle_data_table( pdt ) ) return pdt; - // next statement is only reached if read fails - delete pdt; - return 0; - } - - inline void IO_BaseClass::print( std::ostream& ostr ) const { - ostr << "IO_BaseClass: abstract parent I/O class. " << std::endl; - } - - inline GenEvent*& IO_BaseClass::operator>>( GenEvent*& evt ){ - evt = read_next_event(); - return evt; - } - - inline const GenEvent*& IO_BaseClass::operator<<( - const GenEvent*& evt ) { - write_event( evt ); - return evt; - } - - inline GenEvent*& IO_BaseClass::operator<<( GenEvent*& evt ) { - write_event( evt ); - return evt; - } - - inline ParticleDataTable*& IO_BaseClass::operator>>( - ParticleDataTable*& pdt ){ - pdt = read_particle_data_table(); - return pdt; - } - - inline const ParticleDataTable*& IO_BaseClass::operator<<( - const ParticleDataTable*& pdt ) { - write_particle_data_table( pdt ); - return pdt; - } - - inline ParticleDataTable*& IO_BaseClass::operator<<( - ParticleDataTable*& pdt ) { - write_particle_data_table( pdt ); - return pdt; - } - -} // HepMC - -#endif // HEPMC_IO_BASECLASS_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.cc b/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.cc deleted file mode 100644 index a896c990f43..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.cc +++ /dev/null @@ -1,778 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, October 2002 -// Herwig 6.400 IO class -////////////////////////////////////////////////////////////////////////// - -#include "IO_HERWIG.h" -#include "CLHEP/HepMC/GenEvent.h" -#include "CLHEP/Vector/LorentzVector.h" -#include <cstdio> // needed for formatted output using sprintf - - -#define FourVector HepLorentzVector - -namespace HepMC { - - IO_HERWIG::IO_HERWIG() : m_trust_mothers_before_daughters(false), - m_trust_both_mothers_and_daughters(true), - m_print_inconsistency_errors(true), - m_no_gaps_in_barcodes(true), - m_herwig_to_pdg_id(100,0) - { - // These arrays are copied from Lynn Garren's stdhep 5.01. - // see http://www-pat.fnal.gov/stdhep.html - // Translation from HERWIG particle ID's to PDG particle ID's. - m_herwig_to_pdg_id[1] =1; - m_herwig_to_pdg_id[2] =2; - m_herwig_to_pdg_id[3] =3; - m_herwig_to_pdg_id[4] =4; - m_herwig_to_pdg_id[5] =5; - m_herwig_to_pdg_id[6] =6; - m_herwig_to_pdg_id[7] =7; - m_herwig_to_pdg_id[8] =8; - - m_herwig_to_pdg_id[11] =11; - m_herwig_to_pdg_id[12] =12; - m_herwig_to_pdg_id[13] =13; - m_herwig_to_pdg_id[14] =14; - m_herwig_to_pdg_id[15] =15; - m_herwig_to_pdg_id[16] =16; - - m_herwig_to_pdg_id[21] =21; - m_herwig_to_pdg_id[22] =22; - m_herwig_to_pdg_id[23] =23; - m_herwig_to_pdg_id[24] =24; - m_herwig_to_pdg_id[25] =25; - m_herwig_to_pdg_id[26] =51; // <-- - - m_herwig_to_pdg_id[32] =32; - m_herwig_to_pdg_id[35] =35; - m_herwig_to_pdg_id[36] =36; - m_herwig_to_pdg_id[37] =37; - m_herwig_to_pdg_id[39] =39; - - m_herwig_to_pdg_id[81] =81; - m_herwig_to_pdg_id[82] =82; - m_herwig_to_pdg_id[83] =83; - m_herwig_to_pdg_id[84] =84; - m_herwig_to_pdg_id[85] =85; - m_herwig_to_pdg_id[86] =86; - m_herwig_to_pdg_id[87] =87; - m_herwig_to_pdg_id[88] =88; - m_herwig_to_pdg_id[89] =89; - m_herwig_to_pdg_id[90] =90; - - m_herwig_to_pdg_id[91] =91; - m_herwig_to_pdg_id[92] =92; - m_herwig_to_pdg_id[93] =93; - m_herwig_to_pdg_id[94] =94; - m_herwig_to_pdg_id[95] =95; - m_herwig_to_pdg_id[96] =96; - m_herwig_to_pdg_id[97] =97; - m_herwig_to_pdg_id[98] =9920022; // <-- - m_herwig_to_pdg_id[99] =9922212; // <-- - - // These particle ID's have no antiparticle, so aren't allowed. - m_no_antiparticles.insert(-21); - m_no_antiparticles.insert(-22); - m_no_antiparticles.insert(-23); - m_no_antiparticles.insert(-25); - m_no_antiparticles.insert(-51); - m_no_antiparticles.insert(-35); - m_no_antiparticles.insert(-36); - } - - IO_HERWIG::~IO_HERWIG(){} - - void IO_HERWIG::print( std::ostream& ostr ) const { - ostr << "IO_HERWIG: reads an event from the FORTRAN Herwig HEPEVT " - << "common block. \n" - << " trust_mothers_before_daughters = " - << m_trust_mothers_before_daughters - << " trust_both_mothers_and_daughters = " - << m_trust_both_mothers_and_daughters - << " print_inconsistency_errors = " - << m_print_inconsistency_errors << std::endl; - } - - bool IO_HERWIG::fill_next_event( GenEvent* evt ) { - // read one event from the Herwig HEPEVT common block and fill GenEvent - // return T/F =success/failure - // - // 0. Test that evt pointer is not null and set event number - if ( !evt ) { - std::cerr - << "IO_HERWIG::fill_next_event error - passed null event." - << std::endl; - return 0; - } - - // 1. First we have to fix the HEPEVT input, which is all mucked up for - // herwig. - repair_hepevt(); - - evt->set_event_number( HEPEVT_Wrapper::event_number() ); - // - // 2. create a particle instance for each HEPEVT entry and fill a map - // create a vector which maps from the HEPEVT particle index to the - // GenParticle address - // (+1 in size accounts for hepevt_particle[0] which is unfilled) - std::vector<GenParticle*> hepevt_particle( - HEPEVT_Wrapper::number_entries()+1 ); - hepevt_particle[0] = 0; - for ( int i1 = 1; i1 <= HEPEVT_Wrapper::number_entries(); ++i1 ) { - hepevt_particle[i1] = build_particle(i1); - } - std::set<GenVertex*> new_vertices; - // - // 3. We need to take special care with the hard process - // vertex. The problem we are trying to avoid is when the - // partons entering the hard process also have daughters from - // the parton shower. When this happens, each one can get its - // own decay vertex, making it difficult to join them - // later. We handle it by joining them together first, then - // the other daughters get added on later. - // Find the partons entering the hard vertex (status codes 121, 122). - int index_121 = 0; - int index_122 = 0; - for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i; - if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i; - if ( index_121!=0 && index_122!=0 ) break; - } - if ( index_121 && index_122 ) { - GenVertex* hard_vtx = new GenVertex(); - hard_vtx->add_particle_in( hepevt_particle[index_121] ); - hard_vtx->add_particle_in( hepevt_particle[index_122] ); - // evt->add_vertex( hard_vtx ); // not necessary, its done in - // set_signal_process_vertex - evt->set_signal_process_vertex( hard_vtx ); - } - // - // 4. loop over HEPEVT particles AGAIN, this time creating vertices - for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) { - // We go through and build EITHER the production or decay - // vertex for each entry in hepevt, depending on the switch - // m_trust_mothers_before_daughters (new 2001-02-28) - // Note: since the HEPEVT pointers are bi-directional, it is - /// sufficient to do one or the other. - // - // 3. Build the production_vertex (if necessary) - if ( m_trust_mothers_before_daughters || - m_trust_both_mothers_and_daughters ) { - build_production_vertex( i, hepevt_particle, evt ); - } - // - // 4. Build the end_vertex (if necessary) - // Identical steps as for production vertex - if ( !m_trust_mothers_before_daughters || - m_trust_both_mothers_and_daughters ) { - build_end_vertex( i, hepevt_particle, evt ); - } - } - // 5. 01.02.2000 - // handle the case of particles in HEPEVT which come from nowhere - - // i.e. particles without mothers or daughters. - // These particles need to be attached to a vertex, or else they - // will never become part of the event. check for this situation. - for ( int i3 = 1; i3 <= HEPEVT_Wrapper::number_entries(); ++i3 ) { - // Herwig also has some non-physical entries in HEPEVT - // like CMS, HARD, and CONE. These are flagged by - // repair_hepevt by making their status and id zero. We - // delete those particles here. - if ( hepevt_particle[i3] && !hepevt_particle[i3]->parent_event() - && !hepevt_particle[i3]->pdg_id() - && !hepevt_particle[i3]->status() ) { - //std::cout << "IO_HERWIG::fill_next_event is deleting null " - // << "particle" << std::endl; - //hepevt_particle[i3]->print(); - delete hepevt_particle[i3]; - } else if ( hepevt_particle[i3] && - !hepevt_particle[i3]->end_vertex() && - !hepevt_particle[i3]->production_vertex() ) { - GenVertex* prod_vtx = new GenVertex(); - prod_vtx->add_particle_out( hepevt_particle[i3] ); - evt->add_vertex( prod_vtx ); - } - } - return true; - } - - void IO_HERWIG::build_production_vertex(int i, - std::vector<GenParticle*>& - hepevt_particle, - GenEvent* evt ) { - // - // for particle in HEPEVT with index i, build a production vertex - // if appropriate, and add that vertex to the event - GenParticle* p = hepevt_particle[i]; - // a. search to see if a production vertex already exists - int mother = HEPEVT_Wrapper::first_parent(i); - GenVertex* prod_vtx = p->production_vertex(); - while ( !prod_vtx && mother > 0 ) { - prod_vtx = hepevt_particle[mother]->end_vertex(); - if ( prod_vtx ) prod_vtx->add_particle_out( p ); - // increment mother for next iteration - if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0; - } - // b. if no suitable production vertex exists - and the particle - // has atleast one mother or position information to store - - // make one - FourVector prod_pos( HEPEVT_Wrapper::x(i), HEPEVT_Wrapper::y(i), - HEPEVT_Wrapper::z(i), HEPEVT_Wrapper::t(i) - ); - if ( !prod_vtx && (HEPEVT_Wrapper::number_parents(i)>0 - || prod_pos!=FourVector(0,0,0,0)) ) - { - prod_vtx = new GenVertex(); - prod_vtx->add_particle_out( p ); - evt->add_vertex( prod_vtx ); - } - // c. if prod_vtx doesn't already have position specified, fill it - if ( prod_vtx && prod_vtx->position()==FourVector(0,0,0,0) ) { - prod_vtx->set_position( prod_pos ); - } - // d. loop over mothers to make sure their end_vertices are - // consistent - mother = HEPEVT_Wrapper::first_parent(i); - while ( prod_vtx && mother > 0 ) { - if ( !hepevt_particle[mother]->end_vertex() ) { - // if end vertex of the mother isn't specified, do it now - prod_vtx->add_particle_in( hepevt_particle[mother] ); - } else if (hepevt_particle[mother]->end_vertex() != prod_vtx ) { - // problem scenario --- the mother already has a decay - // vertex which differs from the daughter's produciton - // vertex. This means there is internal - // inconsistency in the HEPEVT event record. Print an - // error - // Note: we could provide a fix by joining the two - // vertices with a dummy particle if the problem - // arrises often with any particular generator. - if ( m_print_inconsistency_errors ) { - std::cerr - << "HepMC::IO_HERWIG: inconsistent mother/daugher " - << "information in HEPEVT event " - << HEPEVT_Wrapper::event_number() - << ". \n I recommend you try " - << "inspecting the event first with " - << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()" - << "\n This warning can be turned off with the " - << "IO_HERWIG::print_inconsistency_errors switch." - << std::endl; - hepevt_particle[mother]->print(std::cerr); - std::cerr - << "problem vertices are: (prod_vtx, mother)" << std::endl; - if ( prod_vtx ) prod_vtx->print(std::cerr); - hepevt_particle[mother]->end_vertex()->print(std::cerr); - } - } - if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0; - } - } - - void IO_HERWIG::build_end_vertex - ( int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ) - { - // - // for particle in HEPEVT with index i, build an end vertex - // if appropriate, and add that vertex to the event - // Identical steps as for build_production_vertex - GenParticle* p = hepevt_particle[i]; - // a. - int daughter = HEPEVT_Wrapper::first_child(i); - GenVertex* end_vtx = p->end_vertex(); - while ( !end_vtx && daughter > 0 ) { - end_vtx = hepevt_particle[daughter]->production_vertex(); - if ( end_vtx ) end_vtx->add_particle_in( p ); - if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0; - } - // b. (different from 3c. because HEPEVT particle can not know its - // decay position ) - if ( !end_vtx && HEPEVT_Wrapper::number_children(i)>0 ) { - end_vtx = new GenVertex(); - end_vtx->add_particle_in( p ); - evt->add_vertex( end_vtx ); - } - // c+d. loop over daughters to make sure their production vertices - // point back to the current vertex. - // We get the vertex position from the daughter as well. - daughter = HEPEVT_Wrapper::first_child(i); - while ( end_vtx && daughter > 0 ) { - if ( !hepevt_particle[daughter]->production_vertex() ) { - // if end vertex of the mother isn't specified, do it now - end_vtx->add_particle_out( hepevt_particle[daughter] ); - // - // 2001-03-29 M.Dobbs, fill vertex the position. - if ( end_vtx->position()==FourVector(0,0,0,0) ) { - FourVector prod_pos( HEPEVT_Wrapper::x(daughter), - HEPEVT_Wrapper::y(daughter), - HEPEVT_Wrapper::z(daughter), - HEPEVT_Wrapper::t(daughter) - ); - if ( prod_pos != FourVector(0,0,0,0) ) { - end_vtx->set_position( prod_pos ); - } - } - } else if (hepevt_particle[daughter]->production_vertex() - != end_vtx){ - // problem scenario --- the daughter already has a prod - // vertex which differs from the mother's end - // vertex. This means there is internal - // inconsistency in the HEPEVT event record. Print an - // error - if ( m_print_inconsistency_errors ) std::cerr - << "HepMC::IO_HERWIG: inconsistent mother/daugher " - << "information in HEPEVT event " - << HEPEVT_Wrapper::event_number() - << ". \n I recommend you try " - << "inspecting the event first with " - << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()" - << "\n This warning can be turned off with the " - << "IO_HERWIG::print_inconsistency_errors switch." - << std::endl; - } - if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0; - } - if ( !p->end_vertex() && !p->production_vertex() ) { - // Added 2001-11-04, to try and handle Isajet problems. - build_production_vertex( i, hepevt_particle, evt ); - } - } - - GenParticle* IO_HERWIG::build_particle( int index ) { - // Builds a particle object corresponding to index in HEPEVT - // - GenParticle* p - = new GenParticle( FourVector( HEPEVT_Wrapper::px(index), - HEPEVT_Wrapper::py(index), - HEPEVT_Wrapper::pz(index), - HEPEVT_Wrapper::e(index) ), - HEPEVT_Wrapper::id(index), - HEPEVT_Wrapper::status(index) ); - p->setGeneratedMass( HEPEVT_Wrapper::m(index) ); - p->suggest_barcode( index ); - return p; - } - - int IO_HERWIG::find_in_map( const std::map<GenParticle*,int>& m, - GenParticle* p) const { - std::map<GenParticle*,int>::const_iterator iter = m.find(p); - if ( iter == m.end() ) return 0; - return iter->second; - } - - void IO_HERWIG::repair_hepevt() const { - // This routine takes the HEPEVT common block as used in HERWIG, - // and converts it into the HEPEVT common block in the standard format - // - // This means it: - // - removes the color structure, which herwig overloads - // into the mother/daughter fields - // - zeros extra entries for hard subprocess, etc. - // - // - // Special HERWIG status codes - // 101,102 colliding beam particles - // 103 beam-beam collision CMS vector - // 120 hard subprocess CMS vector - // 121,122 hard subprocess colliding partons - // 123-129 hard subprocess outgoing particles - // 141-149 (ID=94) mirror image of hard subrpocess particles - // 100 (ID=0 cone) - // - // Special HERWIG particle id's - // 91 clusters - // 94 jets - // 0 others with no pdg code - - // Make sure hepvt isn't empty. - if ( HEPEVT_Wrapper::number_entries() <= 0 ) return; - - // Find the index of the beam-beam collision and of the hard subprocess - // Later we will assume that - // 101 ---> 121 \. - // X Hard subprocess - // 102 ---> 122 / - // - int index_collision = 0; - int index_hard = 0; - int index_101 = 0; - int index_102 = 0; - int index_121 = 0; - int index_122 = 0; - - for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if ( HEPEVT_Wrapper::status(i)==101 ) index_101=i; - if ( HEPEVT_Wrapper::status(i)==102 ) index_102=i; - if ( HEPEVT_Wrapper::status(i)==103 ) index_collision=i; - if ( HEPEVT_Wrapper::status(i)==120 ) index_hard=i; - if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i; - if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i; - if ( index_collision!=0 && index_hard!=0 && index_101!=0 && - index_102!=0 && index_121!=0 && index_122!=0 ) break; - } - - // The mother daughter information for the hard subprocess entry (120) - // IS correct, whereas the information for the particles participating - // in the hard subprocess contains instead the color flow relationships - // Transfer the hard subprocess info onto the other particles - // in the hard subprocess. - // - // We cannot specify daughters of the incoming hard process particles - // because they have some daughters (their showered versions) which - // are not adjacent in the particle record, so we cannot properly - // set the daughter indices in hepevt. - // - if (index_121) HEPEVT_Wrapper::set_parents(index_121, index_101, 0 ); - if (index_121) HEPEVT_Wrapper::set_children( index_121, 0, 0 ); - if (index_122) HEPEVT_Wrapper::set_parents(index_122, index_102, 0 ); - if (index_122) HEPEVT_Wrapper::set_children( index_122, 0, 0 ); - - for ( int i = HEPEVT_Wrapper::first_child(index_hard); - i <= HEPEVT_Wrapper::last_child(index_hard); i++ ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(index_hard), - HEPEVT_Wrapper::last_parent(index_hard) ); - - // When the direct descendants of the hard process are hadrons, - // then the 2nd child contains color flow information, and so - // we zero it. - // However, if the direct descendant is status=195, then it is - // a non-hadron, and so the 2nd child does contain real mother - // daughter relationships. ( particularly relevant for H->WW, - // April 18, 2003 ) - if ( HEPEVT_Wrapper::status(i) != 195 ) { - HEPEVT_Wrapper::set_children(i,HEPEVT_Wrapper::first_child(i),0); - } - } - - // now zero the collision and hard entries. - if (index_hard) zero_hepevt_entry(index_hard); - if (index_hard) zero_hepevt_entry(index_collision); - - // Loop over the particles individually and handle oddities - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - - // ----------- Fix ID codes ---------- - // particles with ID=94 are mirror images of their mothers: - if ( HEPEVT_Wrapper::id(i)==94 ) { - HEPEVT_Wrapper::set_id( - i, HEPEVT_Wrapper::id( HEPEVT_Wrapper::first_parent(i) ) ); - } - - // ----------- fix STATUS codes ------ - // status=100 particles are "cones" which carry only color info - // throw them away - if ( HEPEVT_Wrapper::status(i)==100 ) zero_hepevt_entry(i); - - - // NOTE: status 101,102 particles are the beam particles. - // status 121,129 particles are the hard subprocess particles - // we choose to allow the herwig particles to have herwig - // specific codes, and so we don't bother to change these - // to status =3. - - - - - // ----------- fix some MOTHER/DAUGHTER relationships - // Whenever the mother points to the hard process, it is referring - // to a color flow, so we zero it. - if ( HEPEVT_Wrapper::last_parent(i)==index_hard ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - // It makes no sense to have a mother that is younger than you are! - - if ( HEPEVT_Wrapper::first_parent(i) >= i ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } - if ( HEPEVT_Wrapper::last_parent(i) >= i ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - // Whenever the second mother/daughter has a lower index than the - // first, it means the second mother/daughter contains color - // info. Purge it. - if ( HEPEVT_Wrapper::last_parent(i) <= - HEPEVT_Wrapper::first_parent(i) ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - if ( HEPEVT_Wrapper::last_child(i) <= - HEPEVT_Wrapper::first_child(i) ) { - HEPEVT_Wrapper::set_children( - i, HEPEVT_Wrapper::first_child(i), 0 ); - } - - // The mothers & daughters of a soft centre of mass (stat=170) seem - // to be correct, but they are out of sequence. The information is - // elsewhere in the event record, so zero it. - // - if ( HEPEVT_Wrapper::status(i) == 170 ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - HEPEVT_Wrapper::set_children( i, 0, 0 ); - } - - // Recognise clusters. - // Case 1: cluster has particle parents. - // Clusters normally DO point to its two - // correct mothers, but those 2 mothers are rarely adjacent in the - // event record ... so the mother information might say something - // like 123,48 where index123 and index48 really are the correct - // mothers... however the hepevt standard states that the mother - // pointers should give the index range. So we would have to - // reorder the event record and add entries if we wanted to use - // it. Instead we just zero the mothers, since all of that - // information is contained in the daughter information of the - // mothers. - // Case 2: cluster has a soft process centre of mass (stat=170) - // as parent. This is ok, keep it. - // - // Note if we were going directly to HepMC, then we could - // use this information properly! - - if ( HEPEVT_Wrapper::id(i)==91 ) { - // if the cluster comes from a SOFT (id=0,stat=170) - if ( HEPEVT_Wrapper::status(HEPEVT_Wrapper::first_parent(i)) - == 170 ) { - ; // In this case the mothers are ok - } else { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } - } - } - - // ---------- Loop over the particles individually and look - // for mother/daughter inconsistencies. - // We consider a mother daughter relationship to be valid - // ONLy when the mother points to the daughter AND the - // daughter points back (true valid bidirectional - // pointers) OR when a one thing points to the other, but - // the other points to zero. If this isn't true, we zero - // the offending relationship. - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - // loop over parents - int ifirst = HEPEVT_Wrapper::first_parent(i); - int ilast = HEPEVT_Wrapper::last_parent(i); - if ( ilast == 0 ) ilast = HEPEVT_Wrapper::first_parent(i); - bool first_is_acceptable = true; - bool last_is_acceptable = true; - // check for out of range. - if ( ifirst>=i || ifirst<0 ) first_is_acceptable = false; - if ( ilast>=i || ilast<ifirst || ilast<0 )last_is_acceptable=false; - if ( first_is_acceptable ) { - for ( int j = ifirst; j<=ilast; j++ ) { - // these are the acceptable outcomes - if ( HEPEVT_Wrapper::first_child(j)==i ) {;} - // watch out - else if ( HEPEVT_Wrapper::first_child(j) <=i && - HEPEVT_Wrapper::last_child(j) >=i ) {;} - else if ( HEPEVT_Wrapper::first_child(j) ==0 && - HEPEVT_Wrapper::last_child(j) ==0 ) {;} - - // Error Condition: - // modified by MADobbs@lbl.gov April 21, 2003 - // we distinguish between the first parent and all parents - // being incorrect - else if (j==ifirst) { first_is_acceptable = false; break; } - else { last_is_acceptable = false; break; } - } - } - // if any one of the mothers gave a bad outcome, zero all mothers - if ( !first_is_acceptable ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } else if ( !last_is_acceptable ) { - HEPEVT_Wrapper::set_parents(i,HEPEVT_Wrapper::first_parent(i),0); - } - } - // Note: it's important to finish the mother loop, before - // starting the daughter loop ... since many mother relations - // will be zero'd which will validate the daughters.... i.e., - // we want relationships like: - // IHEP ID IDPDG IST MO1 MO2 DA1 DA2 - // 27 TQRK 6 3 26 26 30 30 - // 30 TQRK 6 155 26 11 31 32 - // to come out right. - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - // loop over daughters - int ifirst = HEPEVT_Wrapper::first_child(i); - int ilast = HEPEVT_Wrapper::last_child(i); - if ( ilast==0 ) ilast = HEPEVT_Wrapper::first_child(i); - bool is_acceptable = true; - // check for out of range. - if ( ifirst<=i || ifirst<0 ) is_acceptable = false; - if ( ilast<=i || ilast<ifirst || ilast<0 ) is_acceptable = false; - if ( is_acceptable ) { - for ( int j = ifirst; j<=ilast; j++ ) { - // these are the acceptable outcomes - if ( HEPEVT_Wrapper::first_parent(j)==i ) {;} - else if ( HEPEVT_Wrapper::first_parent(j) <=i && - HEPEVT_Wrapper::last_parent(j) >=i ) {;} - else if ( HEPEVT_Wrapper::first_parent(j) ==0 && - HEPEVT_Wrapper::last_parent(j) ==0 ) {;} - else { is_acceptable = false; } // error condition - } - } - // if any one of the children gave a bad outcome, zero all children - if ( !is_acceptable ) HEPEVT_Wrapper::set_children( i, 0, 0 ); - } - - // fixme - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - HEPEVT_Wrapper::set_id( - i, translate_herwig_to_pdg_id(HEPEVT_Wrapper::id(i)) ); - } - - - if ( m_no_gaps_in_barcodes ) remove_gaps_in_hepevt(); - } - - void IO_HERWIG::remove_gaps_in_hepevt() const { - // in this scenario, we do not allow there to be zero-ed - // entries in the HEPEVT common block, and so be reshuffle - // the common block, removing the zeero-ed entries as we - // go and making sure we keep the mother/daughter - // relationships appropriate - std::vector<int> mymap(HEPEVT_Wrapper::number_entries()+1,0); - int ilast = 0; - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if (HEPEVT_Wrapper::status(i)==0 && HEPEVT_Wrapper::id(i)==0) { - // we remove all entries for which stat=0, id=0 - mymap[i]=0; - } else { - ilast += 1; - if ( ilast != i ) { - HEPEVT_Wrapper::set_status(ilast, - HEPEVT_Wrapper::status(i) ); - HEPEVT_Wrapper::set_id(ilast, HEPEVT_Wrapper::id(i) ); - HEPEVT_Wrapper::set_parents( - ilast, - HEPEVT_Wrapper::first_parent(i), - HEPEVT_Wrapper::last_parent(i) ); - HEPEVT_Wrapper::set_children( - ilast, - HEPEVT_Wrapper::first_child(i), - HEPEVT_Wrapper::last_child(i) ); - HEPEVT_Wrapper::set_momentum( - ilast, - HEPEVT_Wrapper::px(i), HEPEVT_Wrapper::py(i), - HEPEVT_Wrapper::pz(i), HEPEVT_Wrapper::e(i) ); - HEPEVT_Wrapper::set_mass(ilast, HEPEVT_Wrapper::m(i) ); - HEPEVT_Wrapper::set_position( - ilast, HEPEVT_Wrapper::x(i),HEPEVT_Wrapper::y(i), - HEPEVT_Wrapper::z(i),HEPEVT_Wrapper::t(i) ); - } - mymap[i]=ilast; - } - } - - // M. Dobbs (from Borut) - April 26, to fix tauolo/herwig past - // the end problem with daughter pointers: - // HEPEVT_Wrapper::set_number_entries( ilast ); - - // Finally we need to re-map the mother/daughter pointers. - for ( int i=1; i <=ilast; i++ ) { - - HEPEVT_Wrapper::set_parents( - i, - mymap[HEPEVT_Wrapper::first_parent(i)], - mymap[HEPEVT_Wrapper::last_parent(i)] ); - HEPEVT_Wrapper::set_children( - i, - mymap[HEPEVT_Wrapper::first_child(i)], - mymap[HEPEVT_Wrapper::last_child(i)] ); - } - // M. Dobbs (from Borut, part B) - April 26, to fix tauolo/herwig past - // the end problem with daughter pointers: - HEPEVT_Wrapper::set_number_entries( ilast ); - } - - void IO_HERWIG::zero_hepevt_entry( int i ) const { - if ( i <=0 || i > HepMC::HEPEVT_Wrapper::max_number_entries() ) return; - HEPEVT_Wrapper::set_status( i, 0 ); - HEPEVT_Wrapper::set_id( i, 0 ); - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - HEPEVT_Wrapper::set_children( i, 0, 0 ); - HEPEVT_Wrapper::set_momentum( i, 0, 0, 0, 0 ); - HEPEVT_Wrapper::set_mass( i, 0 ); - HEPEVT_Wrapper::set_position( i, 0, 0, 0, 0 ); - } - - int IO_HERWIG::translate_herwig_to_pdg_id( int id ) const { - // This routine is copied from Lynn Garren's stdhep 5.01. - // see http://www-pat.fnal.gov/stdhep.html - - // example -9922212 - int hwtran = id; // -9922212 - int ida = abs(id); // 9922212 - int j1 = ida%10; // 2 - int i1 = (ida/10)%10; // 1 - int i2 = (ida/100)%10; // 2 - int i3 = (ida/1000)%10; // 2 - //int i4 =(ida/10000)%10; // 2 - //int i5 =(ida/100000)%10; // 9 - //int k99 = (ida/100000)%100; // 9 - int ksusy = (ida/1000000)%10; // 0 - //int ku = (ida/10000000)%10; // 0 - int kqn = (ida/1000000000)%10; // 0 - - if ( kqn==1 ) { - // ions not recognized - hwtran=0; - if ( m_print_inconsistency_errors ) { - std::cerr << "IO_HERWIG::translate_herwig_to_pdg_id " << id - << "nonallowed ion" << std::endl; - } - } - else if (ida < 100) { - // Higgs, etc. - hwtran = m_herwig_to_pdg_id[ida]; - if ( id < 0 ) hwtran *= -1; - // check for illegal antiparticles - if ( id < 0 ) { - if ( hwtran>=-99 && hwtran<=-81) hwtran=0; - if ( m_no_antiparticles.count(hwtran) ) hwtran=0; - } - } - else if ( ksusy==1 || ksusy==2 ) { ; } - // SUSY - else if ( i1!=0 && i3!=0 && j1==2 ) {;} - // spin 1/2 baryons - else if ( i1!=0 && i3!=0 && j1==4 ) {;} - // spin 3/2 baryons - else if ( i1!=0 && i2!=0 && i3==0 ) { - // mesons - // check for illegal antiparticles - if ( i1==i2 && id<0) hwtran=0; - } - else if ( i2!=0 && i3!=0 && i1==0 ) {;} - // diquarks - else { - // undefined - hwtran=0; - } - - // check for illegal anti KS, KL - if ( id==-130 || id==-310 ) hwtran=0; - - if ( hwtran==0 && ida!=0 && m_print_inconsistency_errors ) { - std::cerr - << "IO_HERWIG::translate_herwig_to_pdg_id HERWIG particle " - << id << " translates to zero." << std::endl; - } - - return hwtran; - } - -} // HepMC - - - - diff --git a/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.h b/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.h deleted file mode 100644 index 61667cf5adc..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/IO_HERWIG.h +++ /dev/null @@ -1,128 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_IO_HERWIG_H -#define HEPMC_IO_HERWIG_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, October 2002, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// IO class for reading the (non-standard) HEPEVT common block from -// the Herwig monte carlo program. -// Notes: -// - The HERWIG HEPEVT common block is non-standard, primarily because it -// contains some color flow information. When you call IO_HERWIG, the -// HEPEVT common block is transformed to the standard. THIS CHANGES THE -// CONTENT of HEPEVT!. -// - The HERWIG HEPEVT common block has some EXTRA non-physical ENTRIES -// (such as CMS frame, HARD subprocess, and CONE). -// These are removed by IO_HERWIG. Thus the HepMC event will APPEAR -// to have fewer particles in it that herwig did. -// There is a switch m_no_gaps_in_barcodes. For -// true - then the extra particles are removed from HEPEVT, with -// the result that the HepMC barcodes will be sequential, with -// no gaps. -// false - the barcodes will correspond directly to the HEPEVT index, but -// there will be gaps ... ie some barcodes will be unassigned. -// this switch requested by I Hinchliffe, October 31, 2002 -// - some of the Herwig GLUON SPLITTING products are not properly documented -// in hepevt. I was unable to repair this in a simple and robust way. -// Therefore some of the gluon splitting products will be orphans -// in the HepMC output. -// - Herwig uses HEPEVT_Wrapper::set_max_number_entries(4000); -// HEPEVT_Wrapper::set_sizeof_real(8); -// which are the defaults for HEPEVT_Wrapper. -////////////////////////////////////////////////////////////////////////// -// - -#include <set> -#include <vector> -#include "IO_BaseClass.h" -#include "HEPEVT_Wrapper.h" - -namespace HepMC { - - class GenEvent; - class GenVertex; - class GenParticle; - class ParticleDataTable; - - class IO_HERWIG : public IO_BaseClass { - public: - IO_HERWIG(); - virtual ~IO_HERWIG(); - bool fill_next_event( GenEvent* ); - void print( std::ostream& ostr = std::cout ) const; - double interfaces_to_version_number() const {return 6.400;} - - // see comments below for these switches. - bool print_inconsistency_errors() const; - void set_print_inconsistency_errors( bool b = 1 ); - - bool no_gaps_in_barcodes() const - { return m_no_gaps_in_barcodes; } - void set_no_gaps_in_barcodes( bool a ) - { m_no_gaps_in_barcodes=a; } - - protected: // for internal use only - bool trust_both_mothers_and_daughters() const; - bool trust_mothers_before_daughters() const; - void set_trust_mothers_before_daughters( bool b = 1 ); - void set_trust_both_mothers_and_daughters( bool b = 0 ); - - GenParticle* build_particle( int index ); - void build_production_vertex( - int i,std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ); - void build_end_vertex( - int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ); - int find_in_map( - const std::map<GenParticle*,int>& m, GenParticle* p) const; - - void repair_hepevt() const; - void remove_gaps_in_hepevt() const; - void zero_hepevt_entry( int i ) const; - int translate_herwig_to_pdg_id( int i ) const; - - private: // following are not implemented for Herwig - virtual void write_event( const GenEvent* ){} - virtual void write_particle_data_table( const ParticleDataTable* ){} - virtual bool fill_particle_data_table( ParticleDataTable* ) - { return 0; } - - private: // use of copy constructor is not allowed - IO_HERWIG( const IO_HERWIG& ) : IO_BaseClass() {} - - private: // data members - bool m_trust_mothers_before_daughters; - bool m_trust_both_mothers_and_daughters; - bool m_print_inconsistency_errors; - bool m_no_gaps_in_barcodes; - std::vector<int> m_herwig_to_pdg_id; - std::set<int> m_no_antiparticles; - }; - - //////////////////////////// - // INLINES access methods // - //////////////////////////// - inline bool IO_HERWIG::trust_both_mothers_and_daughters() const - { return m_trust_both_mothers_and_daughters; } - - inline bool IO_HERWIG::trust_mothers_before_daughters() const - { return m_trust_mothers_before_daughters; } - - inline bool IO_HERWIG::print_inconsistency_errors() const - { return m_print_inconsistency_errors; } - - inline void IO_HERWIG::set_trust_both_mothers_and_daughters( bool b ) - { m_trust_both_mothers_and_daughters = b; } - - inline void IO_HERWIG::set_trust_mothers_before_daughters( bool b ) - { m_trust_mothers_before_daughters = b; } - - inline void IO_HERWIG::set_print_inconsistency_errors( bool b ) - { m_print_inconsistency_errors = b; } - -} // HepMC - -#endif // HEPMC_IO_HERWIG_H -//-------------------------------------------------------------------------- diff --git a/GeneratorInterface/Herwig6Interface/src/ParticleData.h b/GeneratorInterface/Herwig6Interface/src/ParticleData.h deleted file mode 100644 index cb01c46b2ed..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/ParticleData.h +++ /dev/null @@ -1,216 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_PARTICLE_DATA_H -#define HEPMC_PARTICLE_DATA_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, September 1999, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// GenParticle Data common to all particles of a given PDG id -////////////////////////////////////////////////////////////////////////// -// -// Units ID: defined by PDG group (particles are +ve, antiparticles are -ve) -// also consistent with the Pythia definitions -// See: http://d0lblt.lbl.gov/wwwpdg/mc_numbers.htm -// charge: fraction of proton charge -// mass in user defined energy units -// width: ( stored as cLifetime = hbar / Width ) -// cLifetime: c*time -// spin: fraction of photon spin (always a positive number) -// -// Default mass is 0. -// Default cLifetime is -1 which means stable (setting width = 0 gives this) -// (we define cLifetime = -1 --> width = 0 (i.e stable), -// width = -1 --> cLifetime = 0 (i.e. prompt) ) -// These defaults exist because many very basic MC generators -// may produce only massless stable particles in the event record. -// -// It is intended that a different ParticleData object is created for each -// particle and its anti-particle - useful for CP violation studies. -// -// There are few set methods for this class, there should be no reason -// to change anything after instantiating. If you need to, then -// create a new object and kill the old one. -// -// Example: -// HepMC::ParticleData* pd_electron = -// new HepMC::ParticleData("electron",11,-1,0.000511,-1,.5); -// A method is provided to allow you to set the lifetime from the -// width in the constructor -// Example: new HepMC::ParticleData("W+",24,+1,80.396, -// HepMC::clifetime_from_width(2.06),1); -// Example of finding a ParticleData object from its PDG ID -// in ParticleDataTable pdt: -// HepMC::ParticleData* electron = pdt.find(11); -// or if you just wanted two know the electron mass, you could do: -// pdt.find(11)->mass(); - -#include <iostream> -#include <string> -#include <cmath> - -namespace HepMC { - - // hbar * c --> calculated with units of [mm*GeV] - static const double HepMC_hbarc = (6.6260755e-34 * (1.e-6/1.60217733e-19) / (2*3.14159265358979323846)) - * (2.99792458e+8 * 1000.) * 1.e+3; - - // if you want to instantiate the particle lifetime from its width, - // use this static method inside the constructor: - double clifetime_from_width( double width ); - - class ParticleData { - - friend std::ostream& operator<<( std::ostream&, const ParticleData& ); - - public: - ParticleData( std::string name, int id, double charge, double mass = 0, - double cLifetime = -1, double spin = 0 ); - ParticleData( const char* name, int id, double charge, double mass = 0, - double cLifetime = -1, double spin = 0 ); - virtual ~ParticleData(); - - bool operator==( const ParticleData& ) const; - bool operator!=( const ParticleData& ) const; - - void print( std::ostream& ostr = std::cout ) const; - - bool is_lepton() const; // true if charged lepton /neutrino - bool is_charged_lepton() const;// true if a charged lepton - bool is_em() const; // true if an electron or photon - bool is_neutrino() const; // true if a neutrino - bool is_hadron() const; // true if a hadron - bool is_boson() const; // true if a gauge or higgs boson - - //////////////////// - // access methods // - //////////////////// - std::string name() const; - int pdg_id() const; - double charge() const; - double mass() const; - double width() const; // width as calculated from clifetime - double clifetime() const; - double spin() const; - - void set_charge( double ); - void set_mass( double ); - void set_width( double ); - void set_clifetime( double ); - void set_spin( double ); - - protected: - static unsigned int counter(); // num ParticleData objects in memory - - // omits susy/excited/technicolor digit from returned ID - int model_independent_pdg_id_() const; - - private: - std::string m_name; // description of the particle according to PDG - // i.e. "Delta(1900) S_31" - int m_pdg_id; // PDG ID number (note we allow -ve) - int m_3charge;// 3*electric charge in units of proton charge - double m_mass; // nominal mass in user defined energy units - double m_clifetime; // [mm] - unsigned char m_2spin; // 2*spin (J) of particle - - static unsigned int s_counter; - }; - - /////////////////////////// - // INLINES // - /////////////////////////// - - inline bool ParticleData::is_lepton() const { - // true if a charged lepton or neutrino --> | 11,13,15,12,14,16,17,18 | - return ( abs(pdg_id()) >=11 && abs(pdg_id()) <= 18 ); - } - inline bool ParticleData::is_charged_lepton() const { - // true if a charged lepton --> | 11,13,15 | - return ( is_lepton() && abs(pdg_id())%2==1 ); - } - inline bool ParticleData::is_neutrino() const { - // true if a neutrino --> | 12,14,16 | - return ( is_lepton() && abs(pdg_id())%2==0 ); - } - inline bool ParticleData::is_em() const { - // true if an electron or photon --> | 11, 22 | - return ( abs(pdg_id()) == 11 || abs(pdg_id()) == 22 ); - } - inline bool ParticleData::is_hadron() const { - // true if a hadron --> q,g,meson,baryon - return ( abs(pdg_id()) <= 9 || abs(pdg_id()) == 21 - || abs(pdg_id()) >100 ); - } - inline bool ParticleData::is_boson() const { - // true if a gauge or higgs boson --> | 9, 21-39 | - return ( ( abs(pdg_id()) >20 && abs(pdg_id()) <=40 ) - || abs(pdg_id()) == 9 ); - } - - /////////////////////////// - // INLINE Access Methods // - /////////////////////////// - - inline std::string ParticleData::name() const { return m_name; } - inline int ParticleData::pdg_id() const { return m_pdg_id; } - inline double ParticleData::charge() const { - return ( (double)m_3charge )/3.; - } - inline double ParticleData::mass() const { return m_mass; } - inline double ParticleData::clifetime() const { return m_clifetime; } - inline double ParticleData::spin() const { return m_2spin/2.; } - inline void ParticleData::set_charge( double charge ) { - if ( charge > 0 ) { - m_3charge = (int)(3.*charge+.1); - } else if ( charge < 0. ) { - m_3charge = (int)(3.*charge-.1); - } else { - m_3charge = 0; - } - } - inline void ParticleData::set_mass( double its_mass ) { - m_mass = its_mass; - } - inline void ParticleData::set_width( double width ) { - if ( width > 0 ) { - m_clifetime = HepMC_hbarc/width; - } else if ( width == 0. ) { - m_clifetime = -1.; - } else { - m_clifetime = 0.; - } - } - inline void ParticleData::set_clifetime( double its_clifetime ) { - m_clifetime = its_clifetime; - } - inline void ParticleData::set_spin( double spin ) { - m_2spin = (unsigned char)(2.*spin+.1); - } - - /////////////////////////// - // INLINE Operators // - /////////////////////////// - - inline bool ParticleData::operator==( const ParticleData& a ) const { - // compares everything except the particle's name - return ( a.m_pdg_id != m_pdg_id || - a.m_mass != m_mass || - a.m_clifetime != m_clifetime || - a.m_3charge != m_3charge || - a.m_2spin != m_2spin ) ? 0 : 1; - } - - inline bool ParticleData::operator!=( const ParticleData& a ) const { - // compares everything except the particle's name - return ( a.pdg_id() != this->pdg_id() ); - } - -} // HepMC - -#endif // HEPMC_PARTICLE_DATA_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/Herwig6Interface/src/ParticleDataTable.h b/GeneratorInterface/Herwig6Interface/src/ParticleDataTable.h deleted file mode 100644 index f97e3d4991c..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/ParticleDataTable.h +++ /dev/null @@ -1,233 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_PARTICLE_DATA_TABLE_H -#define HEPMC_PARTICLE_DATA_TABLE_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, Jan 2000, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// Container for GenParticle Data Instances --- basically just an interface -// to STL map -- the same naming conventions are used -// A GenParticle may belong to any number of ParticleDataTables. -// The ParticleDataTable does not own the ParticleData objects and will NOT -// delete them unless explicity told to do so with the delete_all method. -// Each ParticleData entry in the table MUST have a unique pdg_id (otherwise -// an attempt to insert it as a new entry will fail). -// Updated 2000.02.08 M.Dobbs added merge_table and -// make_antiparticles_from_particles -////////////////////////////////////////////////////////////////////////// - -#include <iostream> -#include <map> -#include <cstdio> // needed for formatted output using sprintf -#include "ParticleData.h" - -namespace HepMC { - - class ParticleDataTable { - - public: - ParticleDataTable( std::string description = std::string() ); - ParticleDataTable( const char description ); - ParticleDataTable( const ParticleDataTable& ); - virtual ~ParticleDataTable(); // Shallow: does not delete - // ParticleData entries - // shallow: does not copy the entries, only makes new pointers - ParticleDataTable& operator=( const ParticleDataTable& ); - - void make_antiparticles_from_particles(); - int merge_table( const ParticleDataTable& ); - - void print( std::ostream& ostr = std::cout ) const; - - void delete_all(); //delete all ParticleData instances in this table - void clear(); //clears table without deleting - - ParticleData* operator[]( int id ) const; - ParticleData* find( int id ) const; - int size() const; - bool empty() const; - bool insert( ParticleData* ); // true if successful - bool erase( ParticleData* ); // removes from table - // does not delete - bool erase( int id ); // removes from table - // does not delete - typedef std::map<int,ParticleData*>::iterator iterator; - typedef std::map<int,ParticleData*>::const_iterator const_iterator; - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - //////////////////// - // access methods // - //////////////////// - std::string description() const; - void set_description( std::string ); - void set_description( const char ); - - private: - std::string m_description; - std::map<int,ParticleData*> m_data_table; - }; - - /////////////////////////// - // INLINES // - /////////////////////////// - - inline ParticleDataTable::ParticleDataTable( std::string description ) - : m_description(description) {} - - inline ParticleDataTable::ParticleDataTable( const char description ) { - m_description = description; - } - - inline ParticleDataTable::ParticleDataTable( const ParticleDataTable& pdt){ - *this = pdt; - } - - inline ParticleDataTable::~ParticleDataTable(){} - - inline ParticleDataTable& ParticleDataTable::operator=( const - ParticleDataTable& - pdt) { - m_description = pdt.m_description; - m_data_table = pdt.m_data_table; - return *this; - } - - inline void ParticleDataTable::make_antiparticles_from_particles() { - ParticleDataTable new_data; - for ( ParticleDataTable::iterator p = begin(); p != end(); ++p ) { - ParticleData* pdata = p->second; - if ( pdata->charge() ) { - new_data.insert( new ParticleData( pdata->name()+"~", - -1*pdata->pdg_id(), - -1.*pdata->charge(), - pdata->mass(), - pdata->clifetime(), - pdata->spin() )); - } - } - merge_table( new_data ); - } - - inline void ParticleDataTable::print( std::ostream& ostr ) const { - // prints a summary of all particle Data currently in memory - // - ostr << "________________________________________" - << "________________________________________\n"; - ostr << "ParticleData: ***** ParticleDataTable" - << " ***** ( " << size() - << " entries )\n"; - ostr << " Description: " << m_description << "\n"; - ostr << " PDG ID " << " PARTICLE NAME " - << "CHARGE" << " MASS " - << " C*LIFETIME (CM) " << " SPIN\n"; - for ( std::map< int,ParticleData* >::const_iterator pd - = m_data_table.begin(); pd != m_data_table.end(); pd++ ) { - ostr << *(pd->second) << "\n"; - } - ostr << "________________________________________" - << "________________________________________" << std::endl; - } - - inline ParticleData* ParticleDataTable::find( int id ) const { - // finds a ParticleData pointer corresponding to id IF it exists in - // the table. If not returns NULL - std::map<int,ParticleData*>::const_iterator iter - = m_data_table.find(id); - return ( iter == m_data_table.end() ) ? 0 : iter->second; - } - - inline ParticleData* ParticleDataTable::operator[]( int id ) const { - return find(id); - } - - inline int ParticleDataTable::size() const { - return (int)m_data_table.size(); - } - - inline bool ParticleDataTable::empty() const { - return (bool)m_data_table.empty(); - } - - inline bool ParticleDataTable::insert( ParticleData* pdata ) { - // inserts pdata in the table IFF pdata's id has not already been used. - // It does NOT replace entries with the same id. True if successful. - // If you wish to overwrite another entry, first use erase() - if ( m_data_table.count(pdata->pdg_id()) ) return 0; - return ( m_data_table[pdata->pdg_id()] = pdata ); // true is success - } - - inline bool ParticleDataTable::erase( ParticleData* pdata ) { - // removes from table does not delete - // returns True is an entry pdata existed in the table and was erased - return (bool)m_data_table.erase( pdata->pdg_id() ); - } - - - inline bool ParticleDataTable::erase( int id ) { - // removes from table does not delete - // returns True is an entry pdata existed in the table and was erased - return (bool)m_data_table.erase( id ); - } - - inline ParticleDataTable::iterator ParticleDataTable::begin() { - return m_data_table.begin(); - } - - inline ParticleDataTable::iterator ParticleDataTable::end() { - return m_data_table.end(); - } - - inline ParticleDataTable::const_iterator ParticleDataTable::begin() const { - return m_data_table.begin(); - } - - inline ParticleDataTable::const_iterator ParticleDataTable::end() const { - return m_data_table.end(); - } - - inline std::string ParticleDataTable::description() const { - return m_description; - } - - inline void ParticleDataTable::set_description( std::string description ) { - m_description = description; - } - - inline void ParticleDataTable::set_description( const char description ) { - m_description = description; - } - - inline void ParticleDataTable::delete_all() { - // deletes all ParticleData instances in this table - for ( std::map<int,ParticleData*>::iterator pd = m_data_table.begin(); - pd != m_data_table.end(); pd++) delete pd->second; - clear(); - } - - inline void ParticleDataTable::clear() { m_data_table.clear(); } - - inline int ParticleDataTable::merge_table( const ParticleDataTable& pdt ) { - // merges pdt into this table - // each entry from pdt is inserted only if this table does not - // already have an entry matching the ParticleData's id - // returns the number of new entries inserted into this table. - int count_number_insertions =0; - for ( ParticleDataTable::const_iterator p = pdt.begin(); - p != pdt.end(); ++p ) { - if ( insert(p->second) ) ++count_number_insertions; - } - return count_number_insertions; - } - -} // HepMC - -#endif // HEPMC_PARTICLE_DATA_TABLE_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/Herwig6Interface/src/SealModule.cc b/GeneratorInterface/Herwig6Interface/src/SealModule.cc deleted file mode 100644 index 77fc7aaa7da..00000000000 --- a/GeneratorInterface/Herwig6Interface/src/SealModule.cc +++ /dev/null @@ -1,9 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/InputSourceMacros.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "GeneratorInterface/Herwig6Interface/interface/Herwig6Source.h" - - using edm::Herwig6Source; - - DEFINE_SEAL_MODULE(); - DEFINE_ANOTHER_FWK_INPUT_SOURCE(Herwig6Source) diff --git a/GeneratorInterface/Herwig6Interface/test/H4muAnalyzer.cc b/GeneratorInterface/Herwig6Interface/test/H4muAnalyzer.cc deleted file mode 100644 index 816b37f97f1..00000000000 --- a/GeneratorInterface/Herwig6Interface/test/H4muAnalyzer.cc +++ /dev/null @@ -1,105 +0,0 @@ -/* This is en example for an Analyzer of a Herwig HeoMCProduct - and looks for muons pairs and fills a histogram - with the invaraint mass of the four. -*/ - -// -// Original Author: Fabian Stoeckli -// Created: Tue Nov 14 13:43:02 CET 2006 -// $Id: H4muAnalyzer.cc,v 1.1 2006/11/14 15:15:14 fabstoec Exp $ -// -// - - -// system include files -#include <memory> -#include <iostream> - -// user include files -#include "H4muAnalyzer.h" - - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "CLHEP/HepMC/GenEvent.h" -#include "CLHEP/HepMC/GenParticle.h" - -#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" - -#include "TH1D.h" -#include "TFile.h" - -H4muAnalyzer::H4muAnalyzer(const edm::ParameterSet& iConfig) -{ - outputFilename=iConfig.getUntrackedParameter<std::string>("OutputFilename","dummy.root"); - invmass_histo = new TH1D("invmass_histo","invmass_histo",20,180,200); -} - - -H4muAnalyzer::~H4muAnalyzer() -{ - -} - -// ------------ method called to for each event ------------ -void -H4muAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - - // get HepMC::GenEvent ... - Handle<HepMCProduct> evt_h; - iEvent.getByType(evt_h); - HepMC::GenEvent * evt = new HepMC::GenEvent(*(evt_h->GetEvent())); - - - // look for stable muons - std::vector<HepMC::GenParticle*> muons; - for(HepMC::GenEvent::particle_iterator it = evt->particles_begin(); it != evt->particles_end(); ++it) { - if(abs((*it)->pdg_id())==13 && (*it)->status()==1) - muons.push_back(*it); - } - - // if there are at least four muons - // calculate invarant mass of first two and fill it into histogram - HepLorentzVector tot_momentum; - double inv_mass = 0.0; - std::cout<<muons.size()<<std::endl; - if(muons.size()>3) { - tot_momentum = muons[0]->momentum(); - tot_momentum += muons[1]->momentum(); - tot_momentum += muons[2]->momentum(); - tot_momentum += muons[3]->momentum(); - inv_mass = sqrt(tot_momentum.m2()); - } - - invmass_histo->Fill(inv_mass); - std::cout<<inv_mass<<std::endl; - -} - - -// ------------ method called once each job just before starting event loop ------------ -void -H4muAnalyzer::beginJob(const edm::EventSetup&) -{ -} - -// ------------ method called once each job just after ending the event loop ------------ -void -H4muAnalyzer::endJob() { - // save histograms into file - TFile file(outputFilename.c_str(),"RECREATE"); - invmass_histo->Write(); - file.Close(); - -} - -//define this as a plug-in -DEFINE_FWK_MODULE(H4muAnalyzer) diff --git a/GeneratorInterface/HiGenCommon/doc/html/index.html b/GeneratorInterface/HiGenCommon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/HiGenCommon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/HiGenCommon/doc/html/overview.html b/GeneratorInterface/HiGenCommon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/HiGenCommon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/HijingInterface/doc/html/index.html b/GeneratorInterface/HijingInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/HijingInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/HijingInterface/doc/html/overview.html b/GeneratorInterface/HijingInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/HijingInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/LHEInterface/doc/html/index.html b/GeneratorInterface/LHEInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/LHEInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/LHEInterface/doc/html/overview.html b/GeneratorInterface/LHEInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/LHEInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/MCatNLOInterface/BuildFile b/GeneratorInterface/MCatNLOInterface/BuildFile deleted file mode 100644 index 4ee504d8265..00000000000 --- a/GeneratorInterface/MCatNLOInterface/BuildFile +++ /dev/null @@ -1,20 +0,0 @@ -<use name=boost> -<use name=FWCore/Framework> -<use name=SimDataFormats/HepMCProduct> -<use name=clhep> -<use name=herwig6_510> - -<flags SEAL_PLUGIN_NAME="GeneratorInterfaceMCatNLOInterface"> -<export> - <lib name=GeneratorInterfaceMCatNLOInterface> - <use name=boost> - <use name=FWCore/Framework> - <use name=SimDataFormats/HepMCProduct> - <use name=clhep> - <use name=herwig6_510> -</export> - - <lib name=g2c></lib> - <lib name=m></lib> - - diff --git a/GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h b/GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h deleted file mode 100644 index 01df6c18148..00000000000 --- a/GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef MCatNLOSource_h -#define MCatNLOSource_h - -/** \class MCatNLOSource - * - * Generates MCatNLO HepMC events - * - ***************************************/ - - -#include "FWCore/Framework/interface/GeneratedInputSource.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include <map> -#include <string> -#include "CLHEP/HepMC/GenEvent.h" - -namespace edm -{ - class MCatNLOSource : public GeneratedInputSource { - public: - - /// Constructor - MCatNLOSource(const ParameterSet &, const InputSourceDescription &); - /// Destructor - virtual ~MCatNLOSource(); - - - private: - - /// Pass parameters to HERWIG - bool hwgive(const std::string& iParm ); - - private: - - virtual bool produce(Event & e); - void clear(); - - HepMC::GenEvent *evt; - - /// Verbosity flag - int herwigVerbosity_; - bool herwigHepMCVerbosity_; - int maxEventsToPrint_; - double comenergy; - int processNumber_; - }; -} - -#endif diff --git a/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.cc b/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.cc deleted file mode 100644 index 6514f5192e2..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.cc +++ /dev/null @@ -1,228 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH June 30, 2000 -// Generic Wrapper for the fortran HEPEVT common block -// -// The static data member's initializations must be separate from .h file. -// -////////////////////////////////////////////////////////////////////////// - -#include "HEPEVT_Wrapper.h" - -namespace HepMC { - - //////////////////////////////////////// - // static data member initializations // - //////////////////////////////////////// - - unsigned int HEPEVT_Wrapper::s_sizeof_int = 4; - - unsigned int HEPEVT_Wrapper::s_sizeof_real = sizeof(double); - - unsigned int HEPEVT_Wrapper::s_max_number_entries = 4000; - - /////////////////// - // Print Methods // - /////////////////// - - void HEPEVT_Wrapper::print_hepevt( std::ostream& ostr ) - { - // dumps the content of this HEPEVT event to ostr (Width is 80) - ostr << "________________________________________" - << "________________________________________" << std::endl; - ostr << "***** HEPEVT Common Event#: " - << event_number() - << ", " << number_entries() << " particles (max " - << max_number_entries() << ") *****"; - if ( is_double_precision() ) { - ostr << " Double Precision" << std::endl; - } else { - ostr << " Single Precision" << std::endl; - } - ostr << sizeof_int() << "-byte integers, " - << sizeof_real() << "-byte floating point numbers, " - << max_number_entries() << "-allocated entries." - << std::endl; - print_legend(ostr); - ostr << "________________________________________" - << "________________________________________" << std::endl; - for ( int i=1; i <= number_entries(); ++i ) { - print_hepevt_particle( i, ostr ); - } - ostr << "________________________________________" - << "________________________________________" << std::endl; - } - - void HEPEVT_Wrapper::print_legend( std::ostream& ostr ) - { - char outline[81]; - sprintf( outline,"%4s %4s %4s %5s %10s, %9s, %9s, %9s, %10s", - "Indx","Stat","Par-","chil-", - "( P_x","P_y","P_z","Energy","M ) "); - ostr << outline << std::endl; - sprintf( outline,"%9s %4s %4s %10s, %9s, %9s, %9s) %9s", - "ID ","ents","dren", - "Prod ( X","Y","Z","cT", "[mm]"); - ostr << outline << std::endl; - } - - void HEPEVT_Wrapper::print_hepevt_particle( int i, std::ostream& ostr ) - { - // dumps the content HEPEVT particle entry i (Width is 120) - // here i is the C array index (i.e. it starts at 0 ... whereas the - // fortran array index starts at 1) So if there's 100 particles, the - // last valid index is 100-1=99 - char outline[81]; - sprintf( outline, - "%4d %+4d %4d %4d (%9.3g, %9.3g, %9.3g, %9.3g, %9.3g)" - ,i, status(i), first_parent(i), first_child(i), - px(i), py(i), pz(i), e(i), m(i) ); - ostr << outline << "\n"; - sprintf( outline,"%+9d %4d %4d (%9.3g, %9.3g, %9.3g, %9.3g)", - // old version was:" (%+9.2e, %+9.2e, %+9.2e, %+9.2e)" - id(i), last_parent(i), last_child(i), - x(i), y(i), z(i), t(i) ); - ostr << outline << std::endl; - } - - - bool HEPEVT_Wrapper::check_hepevt_consistency( std::ostream& os ) - { - // This method inspects the HEPEVT common block and looks for - // inconsistencies in the mother/daughter pointers - bool isConsistent=true; - char header[81]; - sprintf( header, - "\n\n\t**** WARNINGInconsistent HEPEVT input, Event %10d ****" - , HEPEVT_Wrapper::event_number() ); - - for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) { - // 1. check its mothers - int moth1 = HEPEVT_Wrapper::first_parent( i ); - int moth2 = HEPEVT_Wrapper::last_parent( i ); - if ( moth2<moth1 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " first parent > last parent " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - for ( int m = moth1; m<=moth2 && m!=0; ++m ) { - if ( m>HEPEVT_Wrapper::number_entries() || m < 0 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " mother points out of range " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - int mChild1 = HEPEVT_Wrapper::first_child(m); - int mChild2 = HEPEVT_Wrapper::last_child(m); - // we don't consider null pointers as inconsistent - if ( mChild1==0 && mChild2==0 ) continue; - if ( i<mChild1 || i>mChild2 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent mother-daughter relationship between " - << i << " & " << m - << " (try !trust_mother)" << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - HEPEVT_Wrapper::print_hepevt_particle( m, os ); - } - } - // 2. check its daughters - int dau1 = HEPEVT_Wrapper::first_child( i ); - int dau2 = HEPEVT_Wrapper::last_child( i ); - if ( dau2<dau1 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " first child > last child " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - for ( int d = dau1; d<=dau2 && d!=0; ++d ) { - if ( d>HEPEVT_Wrapper::number_entries() || d < 0 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent entry " << i - << " child points out of range " << std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - } - int d_moth1 = HEPEVT_Wrapper::first_parent(d); - int d_moth2 = HEPEVT_Wrapper::last_parent(d); - // we don't consider null pointers as inconsistent - if ( d_moth1==0 && d_moth2==0 ) continue; - if ( i<d_moth1 || i>d_moth2 ) { - if ( isConsistent ) { - os << header << std::endl; - isConsistent = false; - print_legend(os); - } - os << "Inconsistent mother-daughter relationship between " - << i << " & " << d - << " (try trust_mothers)"<< std::endl; - HEPEVT_Wrapper::print_hepevt_particle( i, os ); - HEPEVT_Wrapper::print_hepevt_particle( d, os ); - } - } - } - if (!isConsistent) { - os << "Above lists all the inconsistencies in the HEPEVT common " - << "\n block which has been provided as input to HepMC. " - << "\n HepMC WILL have trouble interpreting the mother-daughter" - << "\n relationships ... but all other information " - << "\n (4-vectors etc) will be correctly transferred." - << "\n In order for HepMC to be able to interpret the mother/" - << "\n daughter hierachy, it MUST be given consistent input." - << "\n This is one of the design criteria of HepMC: " - << "\n consistency is enforced by the code."; - os << "\nThere is a switch in IO_HEPEVT, set-able using " - << "\n IO_HEPEVT::set_trust_mothers_before_daughters( bool )" - << "\n which you may want to try."; - os << "\nNote: if HEPEVT common block has been filled by pythia" - << "\n pyhepc, then the switch MSTP(128)=2 should be used in" - << "\n pythia, which instructs pythia not to put multiple " - << "\n copies of resonances in the event record.\n"; - os << "To obtain a file summarizing the inconsistency, you should:" - << "\n\t ofstream myFile(\"myInconsistentEvent.txt\"); " - << "\n\t HEPEVT_Wrapper::check_hepevt_consistency(myFile); " - << "\n\t HEPEVT_Wrapper::print_hepevt(myFile); " - << "\n[now write the event to HepMC using something like" - << "\n\t\t myIO_HEPEVT->write_event(myEvent); ]" - << "\n\t myEvent->print( myFile ); " - << " // print event as HepMC sees it" - << "\n ------------------------- Thank-you. \n\n" << std::endl; - } - return isConsistent; - } - - void HEPEVT_Wrapper::zero_everything() - { - set_event_number( 0 ); - set_number_entries( 0 ); - for ( int i = 1; i<=max_number_entries(); ++i ) { - set_status( i, 0 ); - set_id( i, 0 ); - set_parents( i, 0, 0 ); - set_children( i, 0, 0 ); - set_momentum( i, 0, 0, 0, 0 ); - set_mass( i, 0 ); - set_position( i, 0, 0, 0, 0 ); - } - } - -} // HepMC - diff --git a/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.h b/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.h deleted file mode 100644 index ac34a91f4c1..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/HEPEVT_Wrapper.h +++ /dev/null @@ -1,542 +0,0 @@ -//-------------------------------------------------------------------------- - -#ifndef HEPEVT_EntriesAllocation -#define HEPEVT_EntriesAllocation 10000 -#endif // HEPEVT_EntriesAllocation - -//-------------------------------------------------------------------------- -#ifndef HEPMC_HEPEVT_COMMON_H -#define HEPMC_HEPEVT_COMMON_H -////////////////////////////////////////////////////////////////////////// -// -// PARAMETER (NMXHEP=2000) -// COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), -// & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -/**********************************************************/ -/* D E S C R I P T I O N : */ -/*--------------------------------------------------------*/ -/* NEVHEP - event number (or some special meaning*/ -/* (see documentation for details) */ -/* NHEP - actual number of entries in current */ -/* event. */ -/* ISTHEP[IHEP] - status code for IHEP'th entry - see */ -/* documentation for details */ -/* IDHEP [IHEP] - IHEP'th particle identifier according*/ -/* to PDG. */ -/* JMOHEP[IHEP][0] - pointer to position of 1st mother */ -/* JMOHEP[IHEP][1] - pointer to position of 2nd mother */ -/* JDAHEP[IHEP][0] - pointer to position of 1st daughter */ -/* JDAHEP[IHEP][1] - pointer to position of 2nd daughter */ -/* PHEP [IHEP][0] - X momentum */ -/* PHEP [IHEP][1] - Y momentum */ -/* PHEP [IHEP][2] - Z momentum */ -/* PHEP [IHEP][3] - Energy */ -/* PHEP [IHEP][4] - Mass */ -/* VHEP [IHEP][0] - X vertex */ -/* VHEP [IHEP][1] - Y vertex */ -/* VHEP [IHEP][2] - Z vertex */ -/* VHEP [IHEP][3] - production time */ -/*========================================================*/ -// Remember, array(1) is the first entry in a fortran array, array[0] is the -// first entry in a C array. -// -// This interface to HEPEVT common block treats the block as -// an array of bytes --- the precision and number of entries -// is determined "on the fly" by the wrapper and used to decode -// each entry. -// -// HEPEVT_EntriesAllocation is the maximum size of the HEPEVT common block -// that can be interfaced. -// It is NOT the actual size of the HEPEVT common used in each -// individual application. The actual size can be changed on -// the fly using HEPEVT_Wrapper::set_max_number_entries(). -// Thus HEPEVT_EntriesAllocation should typically be set -// to the maximum possible number of entries --- 10000 is a good choice -// (and is the number used by ATLAS versions of Pythia). -// -// Note: a statement like *( (int*)&hepevt.data[0] ) -// takes the memory address of the first byte in HEPEVT, -// interprets it as an integer pointer, -// and dereferences the pointer. -// i.e. it returns an integer corresponding to nevhep -// - -#include <ctype.h> - - const unsigned int hepevt_bytes_allocation = - sizeof(long int) * ( 2 + 4 * HEPEVT_EntriesAllocation ) - + sizeof(double) * ( 9 * HEPEVT_EntriesAllocation ); - - -#ifdef _WIN32 // Platform: Windows MS Visual C++ -struct HEPEVT_DEF{ - char data[hepevt_bytes_allocation]; - }; -extern "C" HEPEVT_DEF HEPEVT; -#define hepevt HEPEVT - -#else -extern "C" { - extern struct { - char data[hepevt_bytes_allocation]; - } hepevt_; -} -#define hepevt hepevt_ - -#endif // Platform - -#endif // HEPMC_HEPEVT_COMMON_H - -//-------------------------------------------------------------------------- -#ifndef HEPMC_HEPEVT_WRAPPER_H -#define HEPMC_HEPEVT_WRAPPER_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, April 24, 2000, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// Generic Wrapper for the fortran HEPEVT common block -// This class is intended for static use only - it makes no sense to -// instantiate it. -// Updated: June 30, 2000 (static initialization moved to separate .cxx file) -////////////////////////////////////////////////////////////////////////// -// -// The index refers to the fortran style index: -// i.e. index=1 refers to the first entry in the HEPEVT common block. -// all indices must be >0 -// number_entries --> integer between 0 and max_number_entries() giving total -// number of sequential particle indices -// first_parent/child --> index of first mother/child if there is one, -// zero otherwise -// last_parent/child --> if number children is >1, address of last parent/child -// if number of children is 1, same as first_parent/child -// if there are no children, returns zero. -// is_double_precision --> T or F depending if floating point variables -// are 8 or 4 bytes -// - -#include <iostream> -#include <cstdio> // needed for formatted output using sprintf - -namespace HepMC { - - class HEPEVT_Wrapper { - public: - - static void print_hepevt( std::ostream& ostr = std::cout ); - static void print_hepevt_particle( int index, - std::ostream& ostr = std::cout ); - static bool is_double_precision(); // True if common block uses double - - static bool check_hepevt_consistency( std::ostream& ostr = std::cout ); - - static void zero_everything(); - - //////////////////// - // Access Methods // - //////////////////// - static int event_number(); // event number - static int number_entries(); // num entries in current evt - static int status( int index ); // status code - static int id( int index ); // PDG particle id - static int first_parent( int index ); // index of 1st mother - static int last_parent( int index ); // index of last mother - static int number_parents( int index ); - static int first_child( int index ); // index of 1st daughter - static int last_child( int index ); // index of last daughter - static int number_children( int index ); - static double px( int index ); // X momentum - static double py( int index ); - static double pz( int index ); - static double e( int index ); // Energy - static double m( int index ); // generated mass - static double x( int index ); // X Production vertex - static double y( int index ); - static double z( int index ); - static double t( int index ); // production time - - //////////////////// - // Set Methods // - //////////////////// - static void set_event_number( int evtno ); - static void set_number_entries( int noentries ); - static void set_status( int index, int status ); - static void set_id( int index, int id ); - static void set_parents( int index, int firstparent, int lastparent ); - static void set_children( int index, int firstchild, int lastchild ); - static void set_momentum( int index, double px, double py, - double pz, double e ); - static void set_mass( int index, double mass ); - static void set_position( int index, double x, double y, double z, - double t ); - ////////////////////// - // HEPEVT Floorplan // - ////////////////////// - static unsigned int sizeof_int(); - static unsigned int sizeof_real(); - static int max_number_entries(); - static void set_sizeof_int(unsigned int); - static void set_sizeof_real(unsigned int); - static void set_max_number_entries(unsigned int); - - protected: - static double byte_num_to_double( unsigned int ); - static int byte_num_to_int( unsigned int ); - static void write_byte_num( double, unsigned int ); - static void write_byte_num( int, unsigned int ); - static void print_legend( std::ostream& ostr = std::cout ); - - private: - static unsigned int s_sizeof_int; - static unsigned int s_sizeof_real; - static unsigned int s_max_number_entries; - - }; - - ////////////////////////////// - // HEPEVT Floorplan Inlines // - ////////////////////////////// - inline unsigned int HEPEVT_Wrapper::sizeof_int(){ return s_sizeof_int; } - - inline unsigned int HEPEVT_Wrapper::sizeof_real(){ return s_sizeof_real; } - - inline int HEPEVT_Wrapper::max_number_entries() - { return (int)s_max_number_entries; } - - inline void HEPEVT_Wrapper::set_sizeof_int( unsigned int size ) - { - if ( size != sizeof(short int) && size != sizeof(long int) && size != sizeof(int) ) { - std::cerr << "HepMC is not able to handle integers " - << " of size other than 2 or 4." - << " You requested: " << size << std::endl; - } - s_sizeof_int = size; - } - - inline void HEPEVT_Wrapper::set_sizeof_real( unsigned int size ) { - if ( size != sizeof(float) && size != sizeof(double) ) { - std::cerr << "HepMC is not able to handle floating point numbers" - << " of size other than 4 or 8." - << " You requested: " << size << std::endl; - } - s_sizeof_real = size; - } - - inline void HEPEVT_Wrapper::set_max_number_entries( unsigned int size ) { - s_max_number_entries = size; - } - - inline double HEPEVT_Wrapper::byte_num_to_double( unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_real == sizeof(float) ) { - float* myfloat = (float*)&hepevt.data[b]; - return (double)(*myfloat); - } else if ( s_sizeof_real == sizeof(double) ) { - double* mydouble = (double*)&hepevt.data[b]; - return (*mydouble); - } else { - std::cerr - << "HEPEVT_Wrapper: illegal floating point number length." - << s_sizeof_real << std::endl; - } - return 0; - } - - inline int HEPEVT_Wrapper::byte_num_to_int( unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_int == sizeof(short int) ) { - short int* myshortint = (short int*)&hepevt.data[b]; - return (int)(*myshortint); - } else if ( s_sizeof_int == sizeof(long int) ) { - long int* mylongint = (long int*)&hepevt.data[b]; - return (*mylongint); - // on some 64 bit machines, int, short, and long are all different - } else if ( s_sizeof_int == sizeof(int) ) { - int* myint = (int*)&hepevt.data[b]; - return (*myint); - } else { - std::cerr - << "HEPEVT_Wrapper: illegal integer number length." - << s_sizeof_int << std::endl; - } - return 0; - } - - inline void HEPEVT_Wrapper::write_byte_num( double in, unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_real == sizeof(float) ) { - float* myfloat = (float*)&hepevt.data[b]; - (*myfloat) = (float)in; - } else if ( s_sizeof_real == sizeof(double) ) { - double* mydouble = (double*)&hepevt.data[b]; - (*mydouble) = (double)in; - } else { - std::cerr - << "HEPEVT_Wrapper: illegal floating point number length." - << s_sizeof_real << std::endl; - } - } - - inline void HEPEVT_Wrapper::write_byte_num( int in, unsigned int b ) { - if ( b >= hepevt_bytes_allocation ) std::cerr - << "HEPEVT_Wrapper: requested hepevt data exceeds allocation" - << std::endl; - if ( s_sizeof_int == sizeof(short int) ) { - short int* myshortint = (short int*)&hepevt.data[b]; - (*myshortint) = (short int)in; - } else if ( s_sizeof_int == sizeof(long int) ) { - long int* mylongint = (long int*)&hepevt.data[b]; - (*mylongint) = (int)in; - // on some 64 bit machines, int, short, and long are all different - } else if ( s_sizeof_int == sizeof(int) ) { - int* myint = (int*)&hepevt.data[b]; - (*myint) = (int)in; - } else { - std::cerr - << "HEPEVT_Wrapper: illegal integer number length." - << s_sizeof_int << std::endl; - } - } - - ////////////// - // INLINES // - ////////////// - - inline bool HEPEVT_Wrapper::is_double_precision() - { - // true if 8byte floating point numbers are used in the HepEVT common. - return ( sizeof(double) == sizeof_real() ); - } - - inline int HEPEVT_Wrapper::event_number() - { return byte_num_to_int(0); } - - inline int HEPEVT_Wrapper::number_entries() - { - int nhep = byte_num_to_int( 1*sizeof_int() ); - return ( nhep <= max_number_entries() ? - nhep : max_number_entries() ); - } - - inline int HEPEVT_Wrapper::status( int index ) - { return byte_num_to_int( (2+index-1) * sizeof_int() ); } - - inline int HEPEVT_Wrapper::id( int index ) - { - return byte_num_to_int( (2+max_number_entries()+index-1) - * sizeof_int() ); - } - - inline int HEPEVT_Wrapper::first_parent( int index ) - { - int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)) - * sizeof_int() ); - return ( parent > 0 && parent <= number_entries() ) ? - parent : 0; - } - - inline int HEPEVT_Wrapper::last_parent( int index ) - { - // Returns the Index of the LAST parent in the HEPEVT record - // for particle with Index index. - // If there is only one parent, the last parent is forced to - // be the same as the first parent. - // If there are no parents for this particle, both the first_parent - // and the last_parent with return 0. - // Error checking is done to ensure the parent is always - // within range ( 0 <= parent <= nhep ) - // - int firstparent = first_parent(index); - int parent = byte_num_to_int( (2+2*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - return ( parent > firstparent && parent <= number_entries() ) - ? parent : firstparent; - } - - inline int HEPEVT_Wrapper::number_parents( int index ) { - int firstparent = first_parent(index); - return ( firstparent>0 ) ? - ( 1+last_parent(index)-firstparent ) : 0; - } - - inline int HEPEVT_Wrapper::first_child( int index ) - { - int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)) - * sizeof_int() ); - return ( child > 0 && child <= number_entries() ) ? - child : 0; - } - - inline int HEPEVT_Wrapper::last_child( int index ) - { - // Returns the Index of the LAST child in the HEPEVT record - // for particle with Index index. - // If there is only one child, the last child is forced to - // be the same as the first child. - // If there are no children for this particle, both the first_child - // and the last_child with return 0. - // Error checking is done to ensure the child is always - // within range ( 0 <= parent <= nhep ) - // - int firstchild = first_child(index); - int child = byte_num_to_int( (2+4*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - return ( child > firstchild && child <= number_entries() ) - ? child : firstchild; - } - - inline int HEPEVT_Wrapper::number_children( int index ) - { - int firstchild = first_child(index); - return ( firstchild>0 ) ? - ( 1+last_child(index)-firstchild ) : 0; - } - - inline double HEPEVT_Wrapper::px( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+0) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::py( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+1) *sizeof_real() ); - } - - - inline double HEPEVT_Wrapper::pz( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+2) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::e( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+3) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::m( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+4) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::x( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+0) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::y( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+1) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::z( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+2) ) *sizeof_real() ); - } - - inline double HEPEVT_Wrapper::t( int index ) - { - return byte_num_to_double( (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+3) ) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_event_number( int evtno ) - { write_byte_num( evtno, 0 ); } - - inline void HEPEVT_Wrapper::set_number_entries( int noentries ) - { write_byte_num( noentries, 1*sizeof_int() ); } - - inline void HEPEVT_Wrapper::set_status( int index, int status ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( status, (2+index-1) * sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_id( int index, int id ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( id, (2+max_number_entries()+index-1) *sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_parents( int index, int firstparent, - int lastparent ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( firstparent, (2+2*max_number_entries()+2*(index-1)) - *sizeof_int() ); - write_byte_num( lastparent, (2+2*max_number_entries()+2*(index-1)+1) - * sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_children( int index, int firstchild, - int lastchild ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( firstchild, (2+4*max_number_entries()+2*(index-1)) - *sizeof_int() ); - write_byte_num( lastchild, (2+4*max_number_entries()+2*(index-1)+1) - *sizeof_int() ); - } - - inline void HEPEVT_Wrapper::set_momentum( int index, double px, - double py, double pz, double e ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( px, (2+6*max_number_entries()) *sizeof_int() - + (5*(index-1)+0) *sizeof_real() ); - write_byte_num( py, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+1) *sizeof_real() ); - write_byte_num( pz, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+2) *sizeof_real() ); - write_byte_num( e, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+3) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_mass( int index, double mass ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( mass, (2+6*max_number_entries())*sizeof_int() - + (5*(index-1)+4) *sizeof_real() ); - } - - inline void HEPEVT_Wrapper::set_position( int index, double x, double y, - double z, double t ) - { - if ( index <= 0 || index > max_number_entries() ) return; - write_byte_num( x, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+0) ) *sizeof_real() ); - write_byte_num( y, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+1) ) *sizeof_real() ); - write_byte_num( z, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+2) ) *sizeof_real() ); - write_byte_num( t, (2+6*max_number_entries())*sizeof_int() - + ( 5*max_number_entries() - + (4*(index-1)+3) ) *sizeof_real() ); - } - -} // HepMC - -#endif // HEPMC_HEPEVT_WRAPPER_H -//-------------------------------------------------------------------------- - diff --git a/GeneratorInterface/MCatNLOInterface/src/HerwigWrapper6_4.h b/GeneratorInterface/MCatNLOInterface/src/HerwigWrapper6_4.h deleted file mode 100644 index c6e0e5ee956..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/HerwigWrapper6_4.h +++ /dev/null @@ -1,136 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HERWIG_WRAPPER_H -#define HERWIG_WRAPPER_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, April 2002 -// Wrapper for FORTRAN version of Herwig -////////////////////////////////////////////////////////////////////////// -// - -#include <ctype.h> - -//-------------------------------------------------------------------------- -// HERWIG Common Block Declarations - -// COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV -extern "C" { - extern struct { - double EBEAM1,EBEAM2,PBEAM1,PBEAM2; - int IPROC,MAXEV; - } hwproc_; -} -#define hwproc hwproc_ - -// CHARACTER*8 PART1,PART2 -// COMMON/HWBMCH/PART1,PART2 -extern "C" { - extern struct { - char PART1[8],PART2[8]; - } hwbmch_; -} -#define hwbmch hwbmch_ - -// COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, -// & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, -// & NUMERU,NWGTS,GENSOF -const int herwig_hepevt_size = 4000; -extern "C" { - extern struct { - double AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM; - int IDHW[herwig_hepevt_size],IERROR,ISTAT,LWEVT,MAXER,MAXPR; - int NOWGT,NRN[2],NUMER,NUMERU,NWGTS; - int GENSOF; //Beware! in F77 this is logical - } hwevnt_; -} -#define hwevnt hwevnt_ - -// C Basic parameters (and quantities derived from them) -// COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, -// & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, -// & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, -// & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, -// & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, -// & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, -// & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, -// & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, -// & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, -// & PRNDEF,PRNTEX,PRNWEB - -extern "C" { - extern struct { - double AFCH[2][16],ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, - CLMAX,CLPOW,CLSMR[2],CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, - GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL[4],PHIMIX,PIFAC, - PRSOF,PSPLT[2],PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH[16],QG, - QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH[2][16],VCKM[3][3],VGCUT,VQCUT, - VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME; - int IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF[2],NBTRY,NCOLO,NCTRY, - NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT[2],NPRFMT; - int AZSOFT,AZSPIN,CLDIR[2],HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME, - ZPRIME,PRNDEF,PRNTEX,PRNWEB; //Beware! in F77 these are logical - } hwpram_; -} -#define hwpram hwpram_ - -//-------------------------------------------------------------------------- -// HERWIG routines declaration - -#define hwigin hwigin_ // initialise other common blocks -#define hwigup hwigup_ // initialise HepUP run common block -#define hwuinc hwuinc_ // compute parameter-dependent constants -#define hwusta hwusta_ // call hwusta to make any particle stable -#define hweini hweini_ // initialise elementary process -#define hwuine hwuine_ // initialise event -#define hwepro hwepro_ // generate HERWIG hard subprocess -#define hwupro hwupro_ // read USER hard subprocess from HepUP event common -#define hwbgen hwbgen_ // generate parton cascades -#define hwdhob hwdhob_ // do heavy object decays -#define hwcfor hwcfor_ // do cluster hadronization -#define hwcdec hwcdec_ // do cluster decay -#define hwdhad hwdhad_ // do unstable particle decays -#define hwdhvy hwdhvy_ // do heavy flavour decays -#define hwmevt hwmevt_ // add soft underlying event if needed -#define hwufne hwufne_ // event generation completed, wrap up event .... -#define hwefin hwefin_ // terminate elementary process - -#define hwudpr hwudpr_ // prints out particle/decay properties -#define hwuepr hwuepr_ // prints out event data -#define hwupup hwupup_ // prints out HepEUP user common block event data -#define hwegup hwegup_ // terminal calculations to replace HWEFIN for HepUP - extern "C" { - void hwigin(void); - void hwigup(void); - void hwuinc(void); - void hwusta(const char*,int); - void hweini(void); - void hwuine(void); - void hwepro(void); - void hwupro(void); - void hwbgen(void); - void hwdhob(void); - void hwcfor(void); - void hwcdec(void); - void hwdhad(void); - void hwdhvy(void); - void hwmevt(void); - void hwufne(void); - void hwefin(void); - void hwudpr(void); - void hwuepr(void); - void hwupup(void); - void hwegup(void); - } - -//-------------------------------------------------------------------------- -// HERWIG block data -// ( with gcc it works to initialize the block data by calling -// "hwudat();" at beginning. ) - -#define hwudat hwudat_ -extern "C" { - void hwudat(void); -} - -#endif // HERWIG_WRAPPER_H -//-------------------------------------------------------------------------- diff --git a/GeneratorInterface/MCatNLOInterface/src/IO_BaseClass.h b/GeneratorInterface/MCatNLOInterface/src/IO_BaseClass.h deleted file mode 100644 index 95b2523b156..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/IO_BaseClass.h +++ /dev/null @@ -1,142 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_IO_BASECLASS_H -#define HEPMC_IO_BASECLASS_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, November 1999, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// event input/output base class -////////////////////////////////////////////////////////////////////////// -// -// class from which all input/output classes shall inherit from. -// i.e.: if you want to write events to hbook ntuples, -// then inherit from this class and re-define read_event() -// and write_event() -// -// (Possible extension: Could make this an input iterator) -// - -#include <iostream> -#include "ParticleDataTable.h" -#include "CLHEP/HepMC/GenEvent.h" - -namespace HepMC { - - class IO_BaseClass { - public: - virtual ~IO_BaseClass() {} - - virtual void write_event( const GenEvent* ) =0; - virtual bool fill_next_event( GenEvent* ) =0; - virtual void write_particle_data_table( const ParticleDataTable* ) =0; - virtual bool fill_particle_data_table( ParticleDataTable* ) =0; - virtual void print( std::ostream& ostr = std::cout ) const; - // - // the read_next_event() and read_particle_data_table() differ from - // the fill_***() methods in that they create a new event or pdt - // before calling the correspondingfill_*** method - // (they are not intended to be over-ridden) - GenEvent* read_next_event(); - ParticleDataTable* read_particle_data_table(); - // - // The overloaded stream operators >>,<< are identical to - // read_next_event and write_event methods respectively. - // (or read_particle_data_table and write_particle_data_table) - // the event argument for the overloaded stream operators is a pointer, - // which is passed by reference. - // i.e. GenEvent* evt; - // io >> evt; - // will give the expected result. - // (note: I don't see any reason to have separate const and non-const - // versions of operator<<, but the pedantic ansi standard insists - // on it) - virtual GenEvent*& operator>>( GenEvent*& ); - virtual const GenEvent*& operator<<( const GenEvent*& ); - virtual GenEvent*& operator<<( GenEvent*& ); - virtual ParticleDataTable*& operator>>( ParticleDataTable*& ); - virtual const ParticleDataTable*& operator<<( const - ParticleDataTable*& ); - virtual ParticleDataTable*& operator<<( ParticleDataTable*& ); - }; - - ////////////// - // Inlines // - ////////////// - - inline GenEvent* IO_BaseClass::read_next_event() { - // creates a new event and fills it by calling - // the sister method read_next_event( GenEvent* ) - // - // 1. create an empty event container - GenEvent* evt = new GenEvent(); - // 2. fill the evt container - if the read is successful, return the - // pointer, otherwise return null and delete the evt - if ( fill_next_event( evt ) ) return evt; - // note: the below delete is only reached if read fails - // ... thus there is not much overhead in new then delete - // since this statement is rarely reached - delete evt; - return 0; - } - - inline ParticleDataTable* IO_BaseClass::read_particle_data_table() { - // creates a new particle data table and fills it by calling - // the sister method read_particle_data_table( ParticleDataTable* ) - // - // 1. create an empty pdt - ParticleDataTable* pdt = new ParticleDataTable(); - // 2. fill the pdt container - if the read is successful, return the - // pointer, otherwise return null and delete the evt - if ( fill_particle_data_table( pdt ) ) return pdt; - // next statement is only reached if read fails - delete pdt; - return 0; - } - - inline void IO_BaseClass::print( std::ostream& ostr ) const { - ostr << "IO_BaseClass: abstract parent I/O class. " << std::endl; - } - - inline GenEvent*& IO_BaseClass::operator>>( GenEvent*& evt ){ - evt = read_next_event(); - return evt; - } - - inline const GenEvent*& IO_BaseClass::operator<<( - const GenEvent*& evt ) { - write_event( evt ); - return evt; - } - - inline GenEvent*& IO_BaseClass::operator<<( GenEvent*& evt ) { - write_event( evt ); - return evt; - } - - inline ParticleDataTable*& IO_BaseClass::operator>>( - ParticleDataTable*& pdt ){ - pdt = read_particle_data_table(); - return pdt; - } - - inline const ParticleDataTable*& IO_BaseClass::operator<<( - const ParticleDataTable*& pdt ) { - write_particle_data_table( pdt ); - return pdt; - } - - inline ParticleDataTable*& IO_BaseClass::operator<<( - ParticleDataTable*& pdt ) { - write_particle_data_table( pdt ); - return pdt; - } - -} // HepMC - -#endif // HEPMC_IO_BASECLASS_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.cc b/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.cc deleted file mode 100644 index a896c990f43..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.cc +++ /dev/null @@ -1,778 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, October 2002 -// Herwig 6.400 IO class -////////////////////////////////////////////////////////////////////////// - -#include "IO_HERWIG.h" -#include "CLHEP/HepMC/GenEvent.h" -#include "CLHEP/Vector/LorentzVector.h" -#include <cstdio> // needed for formatted output using sprintf - - -#define FourVector HepLorentzVector - -namespace HepMC { - - IO_HERWIG::IO_HERWIG() : m_trust_mothers_before_daughters(false), - m_trust_both_mothers_and_daughters(true), - m_print_inconsistency_errors(true), - m_no_gaps_in_barcodes(true), - m_herwig_to_pdg_id(100,0) - { - // These arrays are copied from Lynn Garren's stdhep 5.01. - // see http://www-pat.fnal.gov/stdhep.html - // Translation from HERWIG particle ID's to PDG particle ID's. - m_herwig_to_pdg_id[1] =1; - m_herwig_to_pdg_id[2] =2; - m_herwig_to_pdg_id[3] =3; - m_herwig_to_pdg_id[4] =4; - m_herwig_to_pdg_id[5] =5; - m_herwig_to_pdg_id[6] =6; - m_herwig_to_pdg_id[7] =7; - m_herwig_to_pdg_id[8] =8; - - m_herwig_to_pdg_id[11] =11; - m_herwig_to_pdg_id[12] =12; - m_herwig_to_pdg_id[13] =13; - m_herwig_to_pdg_id[14] =14; - m_herwig_to_pdg_id[15] =15; - m_herwig_to_pdg_id[16] =16; - - m_herwig_to_pdg_id[21] =21; - m_herwig_to_pdg_id[22] =22; - m_herwig_to_pdg_id[23] =23; - m_herwig_to_pdg_id[24] =24; - m_herwig_to_pdg_id[25] =25; - m_herwig_to_pdg_id[26] =51; // <-- - - m_herwig_to_pdg_id[32] =32; - m_herwig_to_pdg_id[35] =35; - m_herwig_to_pdg_id[36] =36; - m_herwig_to_pdg_id[37] =37; - m_herwig_to_pdg_id[39] =39; - - m_herwig_to_pdg_id[81] =81; - m_herwig_to_pdg_id[82] =82; - m_herwig_to_pdg_id[83] =83; - m_herwig_to_pdg_id[84] =84; - m_herwig_to_pdg_id[85] =85; - m_herwig_to_pdg_id[86] =86; - m_herwig_to_pdg_id[87] =87; - m_herwig_to_pdg_id[88] =88; - m_herwig_to_pdg_id[89] =89; - m_herwig_to_pdg_id[90] =90; - - m_herwig_to_pdg_id[91] =91; - m_herwig_to_pdg_id[92] =92; - m_herwig_to_pdg_id[93] =93; - m_herwig_to_pdg_id[94] =94; - m_herwig_to_pdg_id[95] =95; - m_herwig_to_pdg_id[96] =96; - m_herwig_to_pdg_id[97] =97; - m_herwig_to_pdg_id[98] =9920022; // <-- - m_herwig_to_pdg_id[99] =9922212; // <-- - - // These particle ID's have no antiparticle, so aren't allowed. - m_no_antiparticles.insert(-21); - m_no_antiparticles.insert(-22); - m_no_antiparticles.insert(-23); - m_no_antiparticles.insert(-25); - m_no_antiparticles.insert(-51); - m_no_antiparticles.insert(-35); - m_no_antiparticles.insert(-36); - } - - IO_HERWIG::~IO_HERWIG(){} - - void IO_HERWIG::print( std::ostream& ostr ) const { - ostr << "IO_HERWIG: reads an event from the FORTRAN Herwig HEPEVT " - << "common block. \n" - << " trust_mothers_before_daughters = " - << m_trust_mothers_before_daughters - << " trust_both_mothers_and_daughters = " - << m_trust_both_mothers_and_daughters - << " print_inconsistency_errors = " - << m_print_inconsistency_errors << std::endl; - } - - bool IO_HERWIG::fill_next_event( GenEvent* evt ) { - // read one event from the Herwig HEPEVT common block and fill GenEvent - // return T/F =success/failure - // - // 0. Test that evt pointer is not null and set event number - if ( !evt ) { - std::cerr - << "IO_HERWIG::fill_next_event error - passed null event." - << std::endl; - return 0; - } - - // 1. First we have to fix the HEPEVT input, which is all mucked up for - // herwig. - repair_hepevt(); - - evt->set_event_number( HEPEVT_Wrapper::event_number() ); - // - // 2. create a particle instance for each HEPEVT entry and fill a map - // create a vector which maps from the HEPEVT particle index to the - // GenParticle address - // (+1 in size accounts for hepevt_particle[0] which is unfilled) - std::vector<GenParticle*> hepevt_particle( - HEPEVT_Wrapper::number_entries()+1 ); - hepevt_particle[0] = 0; - for ( int i1 = 1; i1 <= HEPEVT_Wrapper::number_entries(); ++i1 ) { - hepevt_particle[i1] = build_particle(i1); - } - std::set<GenVertex*> new_vertices; - // - // 3. We need to take special care with the hard process - // vertex. The problem we are trying to avoid is when the - // partons entering the hard process also have daughters from - // the parton shower. When this happens, each one can get its - // own decay vertex, making it difficult to join them - // later. We handle it by joining them together first, then - // the other daughters get added on later. - // Find the partons entering the hard vertex (status codes 121, 122). - int index_121 = 0; - int index_122 = 0; - for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i; - if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i; - if ( index_121!=0 && index_122!=0 ) break; - } - if ( index_121 && index_122 ) { - GenVertex* hard_vtx = new GenVertex(); - hard_vtx->add_particle_in( hepevt_particle[index_121] ); - hard_vtx->add_particle_in( hepevt_particle[index_122] ); - // evt->add_vertex( hard_vtx ); // not necessary, its done in - // set_signal_process_vertex - evt->set_signal_process_vertex( hard_vtx ); - } - // - // 4. loop over HEPEVT particles AGAIN, this time creating vertices - for ( int i = 1; i <= HEPEVT_Wrapper::number_entries(); ++i ) { - // We go through and build EITHER the production or decay - // vertex for each entry in hepevt, depending on the switch - // m_trust_mothers_before_daughters (new 2001-02-28) - // Note: since the HEPEVT pointers are bi-directional, it is - /// sufficient to do one or the other. - // - // 3. Build the production_vertex (if necessary) - if ( m_trust_mothers_before_daughters || - m_trust_both_mothers_and_daughters ) { - build_production_vertex( i, hepevt_particle, evt ); - } - // - // 4. Build the end_vertex (if necessary) - // Identical steps as for production vertex - if ( !m_trust_mothers_before_daughters || - m_trust_both_mothers_and_daughters ) { - build_end_vertex( i, hepevt_particle, evt ); - } - } - // 5. 01.02.2000 - // handle the case of particles in HEPEVT which come from nowhere - - // i.e. particles without mothers or daughters. - // These particles need to be attached to a vertex, or else they - // will never become part of the event. check for this situation. - for ( int i3 = 1; i3 <= HEPEVT_Wrapper::number_entries(); ++i3 ) { - // Herwig also has some non-physical entries in HEPEVT - // like CMS, HARD, and CONE. These are flagged by - // repair_hepevt by making their status and id zero. We - // delete those particles here. - if ( hepevt_particle[i3] && !hepevt_particle[i3]->parent_event() - && !hepevt_particle[i3]->pdg_id() - && !hepevt_particle[i3]->status() ) { - //std::cout << "IO_HERWIG::fill_next_event is deleting null " - // << "particle" << std::endl; - //hepevt_particle[i3]->print(); - delete hepevt_particle[i3]; - } else if ( hepevt_particle[i3] && - !hepevt_particle[i3]->end_vertex() && - !hepevt_particle[i3]->production_vertex() ) { - GenVertex* prod_vtx = new GenVertex(); - prod_vtx->add_particle_out( hepevt_particle[i3] ); - evt->add_vertex( prod_vtx ); - } - } - return true; - } - - void IO_HERWIG::build_production_vertex(int i, - std::vector<GenParticle*>& - hepevt_particle, - GenEvent* evt ) { - // - // for particle in HEPEVT with index i, build a production vertex - // if appropriate, and add that vertex to the event - GenParticle* p = hepevt_particle[i]; - // a. search to see if a production vertex already exists - int mother = HEPEVT_Wrapper::first_parent(i); - GenVertex* prod_vtx = p->production_vertex(); - while ( !prod_vtx && mother > 0 ) { - prod_vtx = hepevt_particle[mother]->end_vertex(); - if ( prod_vtx ) prod_vtx->add_particle_out( p ); - // increment mother for next iteration - if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0; - } - // b. if no suitable production vertex exists - and the particle - // has atleast one mother or position information to store - - // make one - FourVector prod_pos( HEPEVT_Wrapper::x(i), HEPEVT_Wrapper::y(i), - HEPEVT_Wrapper::z(i), HEPEVT_Wrapper::t(i) - ); - if ( !prod_vtx && (HEPEVT_Wrapper::number_parents(i)>0 - || prod_pos!=FourVector(0,0,0,0)) ) - { - prod_vtx = new GenVertex(); - prod_vtx->add_particle_out( p ); - evt->add_vertex( prod_vtx ); - } - // c. if prod_vtx doesn't already have position specified, fill it - if ( prod_vtx && prod_vtx->position()==FourVector(0,0,0,0) ) { - prod_vtx->set_position( prod_pos ); - } - // d. loop over mothers to make sure their end_vertices are - // consistent - mother = HEPEVT_Wrapper::first_parent(i); - while ( prod_vtx && mother > 0 ) { - if ( !hepevt_particle[mother]->end_vertex() ) { - // if end vertex of the mother isn't specified, do it now - prod_vtx->add_particle_in( hepevt_particle[mother] ); - } else if (hepevt_particle[mother]->end_vertex() != prod_vtx ) { - // problem scenario --- the mother already has a decay - // vertex which differs from the daughter's produciton - // vertex. This means there is internal - // inconsistency in the HEPEVT event record. Print an - // error - // Note: we could provide a fix by joining the two - // vertices with a dummy particle if the problem - // arrises often with any particular generator. - if ( m_print_inconsistency_errors ) { - std::cerr - << "HepMC::IO_HERWIG: inconsistent mother/daugher " - << "information in HEPEVT event " - << HEPEVT_Wrapper::event_number() - << ". \n I recommend you try " - << "inspecting the event first with " - << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()" - << "\n This warning can be turned off with the " - << "IO_HERWIG::print_inconsistency_errors switch." - << std::endl; - hepevt_particle[mother]->print(std::cerr); - std::cerr - << "problem vertices are: (prod_vtx, mother)" << std::endl; - if ( prod_vtx ) prod_vtx->print(std::cerr); - hepevt_particle[mother]->end_vertex()->print(std::cerr); - } - } - if ( ++mother > HEPEVT_Wrapper::last_parent(i) ) mother = 0; - } - } - - void IO_HERWIG::build_end_vertex - ( int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ) - { - // - // for particle in HEPEVT with index i, build an end vertex - // if appropriate, and add that vertex to the event - // Identical steps as for build_production_vertex - GenParticle* p = hepevt_particle[i]; - // a. - int daughter = HEPEVT_Wrapper::first_child(i); - GenVertex* end_vtx = p->end_vertex(); - while ( !end_vtx && daughter > 0 ) { - end_vtx = hepevt_particle[daughter]->production_vertex(); - if ( end_vtx ) end_vtx->add_particle_in( p ); - if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0; - } - // b. (different from 3c. because HEPEVT particle can not know its - // decay position ) - if ( !end_vtx && HEPEVT_Wrapper::number_children(i)>0 ) { - end_vtx = new GenVertex(); - end_vtx->add_particle_in( p ); - evt->add_vertex( end_vtx ); - } - // c+d. loop over daughters to make sure their production vertices - // point back to the current vertex. - // We get the vertex position from the daughter as well. - daughter = HEPEVT_Wrapper::first_child(i); - while ( end_vtx && daughter > 0 ) { - if ( !hepevt_particle[daughter]->production_vertex() ) { - // if end vertex of the mother isn't specified, do it now - end_vtx->add_particle_out( hepevt_particle[daughter] ); - // - // 2001-03-29 M.Dobbs, fill vertex the position. - if ( end_vtx->position()==FourVector(0,0,0,0) ) { - FourVector prod_pos( HEPEVT_Wrapper::x(daughter), - HEPEVT_Wrapper::y(daughter), - HEPEVT_Wrapper::z(daughter), - HEPEVT_Wrapper::t(daughter) - ); - if ( prod_pos != FourVector(0,0,0,0) ) { - end_vtx->set_position( prod_pos ); - } - } - } else if (hepevt_particle[daughter]->production_vertex() - != end_vtx){ - // problem scenario --- the daughter already has a prod - // vertex which differs from the mother's end - // vertex. This means there is internal - // inconsistency in the HEPEVT event record. Print an - // error - if ( m_print_inconsistency_errors ) std::cerr - << "HepMC::IO_HERWIG: inconsistent mother/daugher " - << "information in HEPEVT event " - << HEPEVT_Wrapper::event_number() - << ". \n I recommend you try " - << "inspecting the event first with " - << "\n\tHEPEVT_Wrapper::check_hepevt_consistency()" - << "\n This warning can be turned off with the " - << "IO_HERWIG::print_inconsistency_errors switch." - << std::endl; - } - if ( ++daughter > HEPEVT_Wrapper::last_child(i) ) daughter = 0; - } - if ( !p->end_vertex() && !p->production_vertex() ) { - // Added 2001-11-04, to try and handle Isajet problems. - build_production_vertex( i, hepevt_particle, evt ); - } - } - - GenParticle* IO_HERWIG::build_particle( int index ) { - // Builds a particle object corresponding to index in HEPEVT - // - GenParticle* p - = new GenParticle( FourVector( HEPEVT_Wrapper::px(index), - HEPEVT_Wrapper::py(index), - HEPEVT_Wrapper::pz(index), - HEPEVT_Wrapper::e(index) ), - HEPEVT_Wrapper::id(index), - HEPEVT_Wrapper::status(index) ); - p->setGeneratedMass( HEPEVT_Wrapper::m(index) ); - p->suggest_barcode( index ); - return p; - } - - int IO_HERWIG::find_in_map( const std::map<GenParticle*,int>& m, - GenParticle* p) const { - std::map<GenParticle*,int>::const_iterator iter = m.find(p); - if ( iter == m.end() ) return 0; - return iter->second; - } - - void IO_HERWIG::repair_hepevt() const { - // This routine takes the HEPEVT common block as used in HERWIG, - // and converts it into the HEPEVT common block in the standard format - // - // This means it: - // - removes the color structure, which herwig overloads - // into the mother/daughter fields - // - zeros extra entries for hard subprocess, etc. - // - // - // Special HERWIG status codes - // 101,102 colliding beam particles - // 103 beam-beam collision CMS vector - // 120 hard subprocess CMS vector - // 121,122 hard subprocess colliding partons - // 123-129 hard subprocess outgoing particles - // 141-149 (ID=94) mirror image of hard subrpocess particles - // 100 (ID=0 cone) - // - // Special HERWIG particle id's - // 91 clusters - // 94 jets - // 0 others with no pdg code - - // Make sure hepvt isn't empty. - if ( HEPEVT_Wrapper::number_entries() <= 0 ) return; - - // Find the index of the beam-beam collision and of the hard subprocess - // Later we will assume that - // 101 ---> 121 \. - // X Hard subprocess - // 102 ---> 122 / - // - int index_collision = 0; - int index_hard = 0; - int index_101 = 0; - int index_102 = 0; - int index_121 = 0; - int index_122 = 0; - - for ( int i = 1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if ( HEPEVT_Wrapper::status(i)==101 ) index_101=i; - if ( HEPEVT_Wrapper::status(i)==102 ) index_102=i; - if ( HEPEVT_Wrapper::status(i)==103 ) index_collision=i; - if ( HEPEVT_Wrapper::status(i)==120 ) index_hard=i; - if ( HEPEVT_Wrapper::status(i)==121 ) index_121=i; - if ( HEPEVT_Wrapper::status(i)==122 ) index_122=i; - if ( index_collision!=0 && index_hard!=0 && index_101!=0 && - index_102!=0 && index_121!=0 && index_122!=0 ) break; - } - - // The mother daughter information for the hard subprocess entry (120) - // IS correct, whereas the information for the particles participating - // in the hard subprocess contains instead the color flow relationships - // Transfer the hard subprocess info onto the other particles - // in the hard subprocess. - // - // We cannot specify daughters of the incoming hard process particles - // because they have some daughters (their showered versions) which - // are not adjacent in the particle record, so we cannot properly - // set the daughter indices in hepevt. - // - if (index_121) HEPEVT_Wrapper::set_parents(index_121, index_101, 0 ); - if (index_121) HEPEVT_Wrapper::set_children( index_121, 0, 0 ); - if (index_122) HEPEVT_Wrapper::set_parents(index_122, index_102, 0 ); - if (index_122) HEPEVT_Wrapper::set_children( index_122, 0, 0 ); - - for ( int i = HEPEVT_Wrapper::first_child(index_hard); - i <= HEPEVT_Wrapper::last_child(index_hard); i++ ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(index_hard), - HEPEVT_Wrapper::last_parent(index_hard) ); - - // When the direct descendants of the hard process are hadrons, - // then the 2nd child contains color flow information, and so - // we zero it. - // However, if the direct descendant is status=195, then it is - // a non-hadron, and so the 2nd child does contain real mother - // daughter relationships. ( particularly relevant for H->WW, - // April 18, 2003 ) - if ( HEPEVT_Wrapper::status(i) != 195 ) { - HEPEVT_Wrapper::set_children(i,HEPEVT_Wrapper::first_child(i),0); - } - } - - // now zero the collision and hard entries. - if (index_hard) zero_hepevt_entry(index_hard); - if (index_hard) zero_hepevt_entry(index_collision); - - // Loop over the particles individually and handle oddities - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - - // ----------- Fix ID codes ---------- - // particles with ID=94 are mirror images of their mothers: - if ( HEPEVT_Wrapper::id(i)==94 ) { - HEPEVT_Wrapper::set_id( - i, HEPEVT_Wrapper::id( HEPEVT_Wrapper::first_parent(i) ) ); - } - - // ----------- fix STATUS codes ------ - // status=100 particles are "cones" which carry only color info - // throw them away - if ( HEPEVT_Wrapper::status(i)==100 ) zero_hepevt_entry(i); - - - // NOTE: status 101,102 particles are the beam particles. - // status 121,129 particles are the hard subprocess particles - // we choose to allow the herwig particles to have herwig - // specific codes, and so we don't bother to change these - // to status =3. - - - - - // ----------- fix some MOTHER/DAUGHTER relationships - // Whenever the mother points to the hard process, it is referring - // to a color flow, so we zero it. - if ( HEPEVT_Wrapper::last_parent(i)==index_hard ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - // It makes no sense to have a mother that is younger than you are! - - if ( HEPEVT_Wrapper::first_parent(i) >= i ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } - if ( HEPEVT_Wrapper::last_parent(i) >= i ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - // Whenever the second mother/daughter has a lower index than the - // first, it means the second mother/daughter contains color - // info. Purge it. - if ( HEPEVT_Wrapper::last_parent(i) <= - HEPEVT_Wrapper::first_parent(i) ) { - HEPEVT_Wrapper::set_parents( - i, HEPEVT_Wrapper::first_parent(i), 0 ); - } - - if ( HEPEVT_Wrapper::last_child(i) <= - HEPEVT_Wrapper::first_child(i) ) { - HEPEVT_Wrapper::set_children( - i, HEPEVT_Wrapper::first_child(i), 0 ); - } - - // The mothers & daughters of a soft centre of mass (stat=170) seem - // to be correct, but they are out of sequence. The information is - // elsewhere in the event record, so zero it. - // - if ( HEPEVT_Wrapper::status(i) == 170 ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - HEPEVT_Wrapper::set_children( i, 0, 0 ); - } - - // Recognise clusters. - // Case 1: cluster has particle parents. - // Clusters normally DO point to its two - // correct mothers, but those 2 mothers are rarely adjacent in the - // event record ... so the mother information might say something - // like 123,48 where index123 and index48 really are the correct - // mothers... however the hepevt standard states that the mother - // pointers should give the index range. So we would have to - // reorder the event record and add entries if we wanted to use - // it. Instead we just zero the mothers, since all of that - // information is contained in the daughter information of the - // mothers. - // Case 2: cluster has a soft process centre of mass (stat=170) - // as parent. This is ok, keep it. - // - // Note if we were going directly to HepMC, then we could - // use this information properly! - - if ( HEPEVT_Wrapper::id(i)==91 ) { - // if the cluster comes from a SOFT (id=0,stat=170) - if ( HEPEVT_Wrapper::status(HEPEVT_Wrapper::first_parent(i)) - == 170 ) { - ; // In this case the mothers are ok - } else { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } - } - } - - // ---------- Loop over the particles individually and look - // for mother/daughter inconsistencies. - // We consider a mother daughter relationship to be valid - // ONLy when the mother points to the daughter AND the - // daughter points back (true valid bidirectional - // pointers) OR when a one thing points to the other, but - // the other points to zero. If this isn't true, we zero - // the offending relationship. - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - // loop over parents - int ifirst = HEPEVT_Wrapper::first_parent(i); - int ilast = HEPEVT_Wrapper::last_parent(i); - if ( ilast == 0 ) ilast = HEPEVT_Wrapper::first_parent(i); - bool first_is_acceptable = true; - bool last_is_acceptable = true; - // check for out of range. - if ( ifirst>=i || ifirst<0 ) first_is_acceptable = false; - if ( ilast>=i || ilast<ifirst || ilast<0 )last_is_acceptable=false; - if ( first_is_acceptable ) { - for ( int j = ifirst; j<=ilast; j++ ) { - // these are the acceptable outcomes - if ( HEPEVT_Wrapper::first_child(j)==i ) {;} - // watch out - else if ( HEPEVT_Wrapper::first_child(j) <=i && - HEPEVT_Wrapper::last_child(j) >=i ) {;} - else if ( HEPEVT_Wrapper::first_child(j) ==0 && - HEPEVT_Wrapper::last_child(j) ==0 ) {;} - - // Error Condition: - // modified by MADobbs@lbl.gov April 21, 2003 - // we distinguish between the first parent and all parents - // being incorrect - else if (j==ifirst) { first_is_acceptable = false; break; } - else { last_is_acceptable = false; break; } - } - } - // if any one of the mothers gave a bad outcome, zero all mothers - if ( !first_is_acceptable ) { - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - } else if ( !last_is_acceptable ) { - HEPEVT_Wrapper::set_parents(i,HEPEVT_Wrapper::first_parent(i),0); - } - } - // Note: it's important to finish the mother loop, before - // starting the daughter loop ... since many mother relations - // will be zero'd which will validate the daughters.... i.e., - // we want relationships like: - // IHEP ID IDPDG IST MO1 MO2 DA1 DA2 - // 27 TQRK 6 3 26 26 30 30 - // 30 TQRK 6 155 26 11 31 32 - // to come out right. - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - // loop over daughters - int ifirst = HEPEVT_Wrapper::first_child(i); - int ilast = HEPEVT_Wrapper::last_child(i); - if ( ilast==0 ) ilast = HEPEVT_Wrapper::first_child(i); - bool is_acceptable = true; - // check for out of range. - if ( ifirst<=i || ifirst<0 ) is_acceptable = false; - if ( ilast<=i || ilast<ifirst || ilast<0 ) is_acceptable = false; - if ( is_acceptable ) { - for ( int j = ifirst; j<=ilast; j++ ) { - // these are the acceptable outcomes - if ( HEPEVT_Wrapper::first_parent(j)==i ) {;} - else if ( HEPEVT_Wrapper::first_parent(j) <=i && - HEPEVT_Wrapper::last_parent(j) >=i ) {;} - else if ( HEPEVT_Wrapper::first_parent(j) ==0 && - HEPEVT_Wrapper::last_parent(j) ==0 ) {;} - else { is_acceptable = false; } // error condition - } - } - // if any one of the children gave a bad outcome, zero all children - if ( !is_acceptable ) HEPEVT_Wrapper::set_children( i, 0, 0 ); - } - - // fixme - - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - HEPEVT_Wrapper::set_id( - i, translate_herwig_to_pdg_id(HEPEVT_Wrapper::id(i)) ); - } - - - if ( m_no_gaps_in_barcodes ) remove_gaps_in_hepevt(); - } - - void IO_HERWIG::remove_gaps_in_hepevt() const { - // in this scenario, we do not allow there to be zero-ed - // entries in the HEPEVT common block, and so be reshuffle - // the common block, removing the zeero-ed entries as we - // go and making sure we keep the mother/daughter - // relationships appropriate - std::vector<int> mymap(HEPEVT_Wrapper::number_entries()+1,0); - int ilast = 0; - for ( int i=1; i <=HEPEVT_Wrapper::number_entries(); i++ ) { - if (HEPEVT_Wrapper::status(i)==0 && HEPEVT_Wrapper::id(i)==0) { - // we remove all entries for which stat=0, id=0 - mymap[i]=0; - } else { - ilast += 1; - if ( ilast != i ) { - HEPEVT_Wrapper::set_status(ilast, - HEPEVT_Wrapper::status(i) ); - HEPEVT_Wrapper::set_id(ilast, HEPEVT_Wrapper::id(i) ); - HEPEVT_Wrapper::set_parents( - ilast, - HEPEVT_Wrapper::first_parent(i), - HEPEVT_Wrapper::last_parent(i) ); - HEPEVT_Wrapper::set_children( - ilast, - HEPEVT_Wrapper::first_child(i), - HEPEVT_Wrapper::last_child(i) ); - HEPEVT_Wrapper::set_momentum( - ilast, - HEPEVT_Wrapper::px(i), HEPEVT_Wrapper::py(i), - HEPEVT_Wrapper::pz(i), HEPEVT_Wrapper::e(i) ); - HEPEVT_Wrapper::set_mass(ilast, HEPEVT_Wrapper::m(i) ); - HEPEVT_Wrapper::set_position( - ilast, HEPEVT_Wrapper::x(i),HEPEVT_Wrapper::y(i), - HEPEVT_Wrapper::z(i),HEPEVT_Wrapper::t(i) ); - } - mymap[i]=ilast; - } - } - - // M. Dobbs (from Borut) - April 26, to fix tauolo/herwig past - // the end problem with daughter pointers: - // HEPEVT_Wrapper::set_number_entries( ilast ); - - // Finally we need to re-map the mother/daughter pointers. - for ( int i=1; i <=ilast; i++ ) { - - HEPEVT_Wrapper::set_parents( - i, - mymap[HEPEVT_Wrapper::first_parent(i)], - mymap[HEPEVT_Wrapper::last_parent(i)] ); - HEPEVT_Wrapper::set_children( - i, - mymap[HEPEVT_Wrapper::first_child(i)], - mymap[HEPEVT_Wrapper::last_child(i)] ); - } - // M. Dobbs (from Borut, part B) - April 26, to fix tauolo/herwig past - // the end problem with daughter pointers: - HEPEVT_Wrapper::set_number_entries( ilast ); - } - - void IO_HERWIG::zero_hepevt_entry( int i ) const { - if ( i <=0 || i > HepMC::HEPEVT_Wrapper::max_number_entries() ) return; - HEPEVT_Wrapper::set_status( i, 0 ); - HEPEVT_Wrapper::set_id( i, 0 ); - HEPEVT_Wrapper::set_parents( i, 0, 0 ); - HEPEVT_Wrapper::set_children( i, 0, 0 ); - HEPEVT_Wrapper::set_momentum( i, 0, 0, 0, 0 ); - HEPEVT_Wrapper::set_mass( i, 0 ); - HEPEVT_Wrapper::set_position( i, 0, 0, 0, 0 ); - } - - int IO_HERWIG::translate_herwig_to_pdg_id( int id ) const { - // This routine is copied from Lynn Garren's stdhep 5.01. - // see http://www-pat.fnal.gov/stdhep.html - - // example -9922212 - int hwtran = id; // -9922212 - int ida = abs(id); // 9922212 - int j1 = ida%10; // 2 - int i1 = (ida/10)%10; // 1 - int i2 = (ida/100)%10; // 2 - int i3 = (ida/1000)%10; // 2 - //int i4 =(ida/10000)%10; // 2 - //int i5 =(ida/100000)%10; // 9 - //int k99 = (ida/100000)%100; // 9 - int ksusy = (ida/1000000)%10; // 0 - //int ku = (ida/10000000)%10; // 0 - int kqn = (ida/1000000000)%10; // 0 - - if ( kqn==1 ) { - // ions not recognized - hwtran=0; - if ( m_print_inconsistency_errors ) { - std::cerr << "IO_HERWIG::translate_herwig_to_pdg_id " << id - << "nonallowed ion" << std::endl; - } - } - else if (ida < 100) { - // Higgs, etc. - hwtran = m_herwig_to_pdg_id[ida]; - if ( id < 0 ) hwtran *= -1; - // check for illegal antiparticles - if ( id < 0 ) { - if ( hwtran>=-99 && hwtran<=-81) hwtran=0; - if ( m_no_antiparticles.count(hwtran) ) hwtran=0; - } - } - else if ( ksusy==1 || ksusy==2 ) { ; } - // SUSY - else if ( i1!=0 && i3!=0 && j1==2 ) {;} - // spin 1/2 baryons - else if ( i1!=0 && i3!=0 && j1==4 ) {;} - // spin 3/2 baryons - else if ( i1!=0 && i2!=0 && i3==0 ) { - // mesons - // check for illegal antiparticles - if ( i1==i2 && id<0) hwtran=0; - } - else if ( i2!=0 && i3!=0 && i1==0 ) {;} - // diquarks - else { - // undefined - hwtran=0; - } - - // check for illegal anti KS, KL - if ( id==-130 || id==-310 ) hwtran=0; - - if ( hwtran==0 && ida!=0 && m_print_inconsistency_errors ) { - std::cerr - << "IO_HERWIG::translate_herwig_to_pdg_id HERWIG particle " - << id << " translates to zero." << std::endl; - } - - return hwtran; - } - -} // HepMC - - - - diff --git a/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.h b/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.h deleted file mode 100644 index 61667cf5adc..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/IO_HERWIG.h +++ /dev/null @@ -1,128 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_IO_HERWIG_H -#define HEPMC_IO_HERWIG_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, October 2002, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// IO class for reading the (non-standard) HEPEVT common block from -// the Herwig monte carlo program. -// Notes: -// - The HERWIG HEPEVT common block is non-standard, primarily because it -// contains some color flow information. When you call IO_HERWIG, the -// HEPEVT common block is transformed to the standard. THIS CHANGES THE -// CONTENT of HEPEVT!. -// - The HERWIG HEPEVT common block has some EXTRA non-physical ENTRIES -// (such as CMS frame, HARD subprocess, and CONE). -// These are removed by IO_HERWIG. Thus the HepMC event will APPEAR -// to have fewer particles in it that herwig did. -// There is a switch m_no_gaps_in_barcodes. For -// true - then the extra particles are removed from HEPEVT, with -// the result that the HepMC barcodes will be sequential, with -// no gaps. -// false - the barcodes will correspond directly to the HEPEVT index, but -// there will be gaps ... ie some barcodes will be unassigned. -// this switch requested by I Hinchliffe, October 31, 2002 -// - some of the Herwig GLUON SPLITTING products are not properly documented -// in hepevt. I was unable to repair this in a simple and robust way. -// Therefore some of the gluon splitting products will be orphans -// in the HepMC output. -// - Herwig uses HEPEVT_Wrapper::set_max_number_entries(4000); -// HEPEVT_Wrapper::set_sizeof_real(8); -// which are the defaults for HEPEVT_Wrapper. -////////////////////////////////////////////////////////////////////////// -// - -#include <set> -#include <vector> -#include "IO_BaseClass.h" -#include "HEPEVT_Wrapper.h" - -namespace HepMC { - - class GenEvent; - class GenVertex; - class GenParticle; - class ParticleDataTable; - - class IO_HERWIG : public IO_BaseClass { - public: - IO_HERWIG(); - virtual ~IO_HERWIG(); - bool fill_next_event( GenEvent* ); - void print( std::ostream& ostr = std::cout ) const; - double interfaces_to_version_number() const {return 6.400;} - - // see comments below for these switches. - bool print_inconsistency_errors() const; - void set_print_inconsistency_errors( bool b = 1 ); - - bool no_gaps_in_barcodes() const - { return m_no_gaps_in_barcodes; } - void set_no_gaps_in_barcodes( bool a ) - { m_no_gaps_in_barcodes=a; } - - protected: // for internal use only - bool trust_both_mothers_and_daughters() const; - bool trust_mothers_before_daughters() const; - void set_trust_mothers_before_daughters( bool b = 1 ); - void set_trust_both_mothers_and_daughters( bool b = 0 ); - - GenParticle* build_particle( int index ); - void build_production_vertex( - int i,std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ); - void build_end_vertex( - int i, std::vector<GenParticle*>& hepevt_particle, GenEvent* evt ); - int find_in_map( - const std::map<GenParticle*,int>& m, GenParticle* p) const; - - void repair_hepevt() const; - void remove_gaps_in_hepevt() const; - void zero_hepevt_entry( int i ) const; - int translate_herwig_to_pdg_id( int i ) const; - - private: // following are not implemented for Herwig - virtual void write_event( const GenEvent* ){} - virtual void write_particle_data_table( const ParticleDataTable* ){} - virtual bool fill_particle_data_table( ParticleDataTable* ) - { return 0; } - - private: // use of copy constructor is not allowed - IO_HERWIG( const IO_HERWIG& ) : IO_BaseClass() {} - - private: // data members - bool m_trust_mothers_before_daughters; - bool m_trust_both_mothers_and_daughters; - bool m_print_inconsistency_errors; - bool m_no_gaps_in_barcodes; - std::vector<int> m_herwig_to_pdg_id; - std::set<int> m_no_antiparticles; - }; - - //////////////////////////// - // INLINES access methods // - //////////////////////////// - inline bool IO_HERWIG::trust_both_mothers_and_daughters() const - { return m_trust_both_mothers_and_daughters; } - - inline bool IO_HERWIG::trust_mothers_before_daughters() const - { return m_trust_mothers_before_daughters; } - - inline bool IO_HERWIG::print_inconsistency_errors() const - { return m_print_inconsistency_errors; } - - inline void IO_HERWIG::set_trust_both_mothers_and_daughters( bool b ) - { m_trust_both_mothers_and_daughters = b; } - - inline void IO_HERWIG::set_trust_mothers_before_daughters( bool b ) - { m_trust_mothers_before_daughters = b; } - - inline void IO_HERWIG::set_print_inconsistency_errors( bool b ) - { m_print_inconsistency_errors = b; } - -} // HepMC - -#endif // HEPMC_IO_HERWIG_H -//-------------------------------------------------------------------------- diff --git a/GeneratorInterface/MCatNLOInterface/src/MCatNLOSource.cc b/GeneratorInterface/MCatNLOInterface/src/MCatNLOSource.cc deleted file mode 100644 index b21b710f868..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/MCatNLOSource.cc +++ /dev/null @@ -1,1456 +0,0 @@ -/* - * Fabian Stoeckli - * 26/09/06 - * - */ - - -#include "GeneratorInterface/MCatNLOInterface/interface/MCatNLOSource.h" -#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "FWCore/Utilities/interface/RandomNumberGenerator.h" -#include "CLHEP/Random/JamesRandom.h" -#include "CLHEP/Random/RandFlat.h" - -#include <iostream> -#include "time.h" -#include <ctype.h> - -using namespace edm; -using namespace std; - -// Generator modifications -// *********************** - -#include "HEPEVT_Wrapper.h" -#include "HerwigWrapper6_4.h" -#include "IO_HERWIG.h" - -//------------------------------------------------------------------------------- -// COMMON block stuff, that doesn't come with the HerwigWrapper6_4.h .... - -/*C Arrays for particle properties (NMXRES = max no of particles defined) - PARAMETER(NMXRES=500) - COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES), - & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES, - & VTOCDK(0:NMXRES),VTORDK(0:NMXRES), - & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) */ -const int nmxres = 500+1; // we need NMXRES+1 entries ... -extern struct { - double RLTIM[nmxres], RMASS[nmxres], RSPIN[nmxres]; - int ICHRG[nmxres], IDPDG[nmxres],IFLAV[nmxres], NRES; - int VTOCDK[nmxres], VTORDK[nmxres], QORQQB[nmxres], QBORQQ[nmxres]; -} hwprop_; -#define hwprop hwprop_ - -/*C Parameters for Sudakov form factors -C (NMXSUD= max no of entries in lookup table) - PARAMETER (NMXSUD=1024) - COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD, - & SUDORD*/ -const int nmxsud = 1024; -extern struct { - double ACCUR, QEV[nmxsud][6],SUD[nmxsud][6]; - int INTER, NQEV, NSUD, SUDORD; -} hwusud_; -#define hwusud hwusud_ - -/*C New parameters for version 6.203 - DOUBLE PRECISION ABWGT,ABWSUM,AVABW - INTEGER NNEGWT,NNEGEV - LOGICAL NEGWTS - COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS */ -extern struct { - double ABWGT, ABWSUM, AVABW; - int NNEGWT,NNEGEV,NEGWTS; -} hw6203_; -#define hw6203 hw6203_ - - -/*CHARACTER*20 - & AUTPDF - COMMON/HWPRCH/AUTPDF(2),BDECAY */ -extern struct { - char AUTPDF[20],BDECAY; -} hwprch_; -#define hwprch hwprch_ - -/*C Parameters for minimum bias/soft underlying event - COMMON/HWMINB/ - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 */ -extern struct { - double PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3; -} hwminb_; -#define hwminb hwminb_ - -/*C Variables controling mixing and vertex information -C--VTXPIP should have been a 5-vector, problems with NAG compiler - COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(5),XMIX(2), - & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR */ -extern struct { - double EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP[5],XMIX[2],XMRCT[2],YMIX[2],YMRCT[2]; - int IOPDKL,MAXDKL,MIXING,PIPSMR; -} hwdist_; -#define hwdist hwdist_ - -/* PARAMETER(NMXCDK=4000) - COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12), - & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO */ - -const int nmxcdk=4000; -extern struct { - double CLDKWT[nmxcdk],CTHRPW[12][12],PRECO,RESN[12][12], RMIN[12][12]; - int LOCN[12][12],NCLDK[nmxcdk], NRECO,CLRECO; -} hwuclu_; -#define hwuclu hwuclu_ - -/*C Weights used in cluster decays - COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12), - & SWTEF(NMXRES) */ -extern struct { - double REPWT[4][5][5],SNGWT,DECWT,QWT[3],PWT[12],SWTEF[nmxres-1]; -} hwuwts_; -#define hwuwts hwuwts_ - -/*C Other new parameters for version 6.2 - DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH - LOGICAL WZRFR,FIX4JT - INTEGER IMSSM,IHIGGS,PARITY,LRSUSY - COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT, - & IMSSM,IHIGGS,PARITY,LRSUSY */ -extern struct { - double VIPWID[3], DXRCYL,DXZMAX,DXRSPH; - int WZRFR,FIX4JT,IMSSM,IHIGGS,PARITY,LRSUSY; -} hw6202_; -#define hw6202 hw6202_ - -/* PARAMETER (MODMAX=50) - COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP), - & IOPHIG,MODBOS(MODMAX) */ -const int hepevt_size = 4000; // check in HerwigWrapper -const int modmax = 50; -extern struct { - double ALPFAC, BRHIG[12], ENHANC[12], GAMMAX, RHOHEP[3][hepevt_size]; - int IOPHIG, MODBOS[modmax]; -} hwbosc_; -#define hwbosc hwbosc_ - -/* COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST, - & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS, - & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, - & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX, - & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH, - & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL, - & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM */ -extern struct { - double ASFIXD,CLQ[6][7],COSS,COSTH,CTMAX,DISF[2][13],EMLST, EMMAX,EMMIN,EMPOW,EMSCA,EPOLN[3],GCOEF[7],GPOLN,OMEGA0,PHOMAS, PPOLN[3],PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, SINS,THMAX,Y4JT,TMNISR,TQWT,XX[2],XLMIN,XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR; - int IAPHIG,IBRN[2],IBSH, ICO[10],IDCMF,IDN[10],IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ[6],MAXFL,BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM; -} hwhard_; -#define hwhard hwhard_ - -/*C other HERWIG branching, event and hard subprocess common blocks - COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD, - & NSPAC(7),ISLENT,BREIT,FROST,USECMF */ -extern struct { - double ANOMSC[2][2],HARDST,PTINT[2][3],XFACT; - int INHAD,JNHAD,NSPAC[7],ISLENT,BREIT,FROST,USECMF; -} hwbrch_; -#define hwbrch hwbrch_ - -/* LOGICAL PRESPL - COMMON /HW6500/ PRESPL */ -extern struct { - int PRESPL; -} hw6500_; -#define hw6500 hw6500_ - -/*C R-Parity violating parameters and colours - COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3), - & LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD */ -extern struct { - double LAMDA1[3][3][3],LAMDA2[3][3][3],LAMDA3[3][3][3]; - int HRDCOL[5][2],RPARTY,COLUPD; -} hwrpar_; -#define hwrpar hwrpar_ - -/*C SUSY parameters - COMMON/HWSUSY/ - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16), - & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2), - & QMIXSS(6,2,2),LMIXSS(6,2,2), - & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3), - & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN */ -extern struct { - double TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB,ZMIXSS[4][4],ZMXNSS[4][4],ZSGNSS[4], LFCH[16],RFCH[16],SLFCH[4][16],SRFCH[4][16], WMXUSS[2][2],WMXVSS[2][2], WSGNSS[2],QMIXSS[2][2][6],LMIXSS[2][2][6],THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS,GHWWSS[3],GHZZSS[3],GHDDSS[4],GHUUSS[4],GHWHSS[3],GHSQSS[2][2][6][4],XLMNSS,RMMNSS,DMSSM,SENHNC[24],SSPARITY; - int SUSYIN; -} hwsusy_; -#define hwsusy hwsusy_ - -/*INTEGER NDECSY,NSEARCH,LRDEC,LWDEC - LOGICAL SYSPIN,THREEB,FOURB - CHARACTER *6 TAUDEC - COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB, - & FOURB,TAUDEC */ -extern struct { - int NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB,FOURB; - char TAUDEC[6]; -} hwdspn_; -#define hwdspn hwdspn_ - -/*C--common block for Les Houches interface to store information we need -C - INTEGER MAXHRP - PARAMETER (MAXHRP=100) - DOUBLE PRECISION LHWGT(MAXHRP),LHWGTS(MAXHRP),LHMXSM, - & LHXSCT(MAXHRP),LHXERR(MAXHRP),LHXMAX(MAXHRP) - INTEGER LHIWGT(MAXHRP),ITYPLH,LHNEVT(MAXHRP) - LOGICAL LHSOFT,LHGLSF - COMMON /HWGUPR/LHWGT,LHWGTS,LHXSCT,LHXERR,LHXMAX,LHMXSM,LHIWGT, - & LHNEVT,ITYPLH,LHSOFT,LHGLSF */ -const int maxhrp = 100; -extern struct { - double LHWGT[maxhrp],LHWGTS[maxhrp],LHMXSM,LHXSCT[maxhrp],LHXERR[maxhrp],LHXMAX[maxhrp]; - int LHIWGT,LHNEVT,ITYPLH,LHSOFT,LHGLSF; -} hwgupr_; -#define hwgupr hwgupr_ - -/*C New parameters for version 6.3 - INTEGER IMAXCH,IMAXOP - PARAMETER (IMAXCH=20,IMAXOP=40) - DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH) - INTEGER IOPSTP,IOPSH - LOGICAL OPTM,CHON(IMAXCH) - COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON */ -const int imaxch = 20; -extern struct { - double MJJMIN,CHNPRB[imaxch]; - int IOPSTP,IOPSH,OPTM,CHON[imaxch]; -} hw6300_; -#define hw6300 hw6300_ - - - -// common block for he event-file name -/*C QQIN IS THE EVENT FILE - CHARACTER*50 QQIN - COMMON/VVJIN/QQIN */ - -extern struct { - char QQIN[50]; -} vvjin_; -#define vvjin vvjin_ - -//------------------------------------------------------------------------------- - -HepMC::IO_HERWIG conv; -// *********************** - - -//used for defaults - static const unsigned long kNanoSecPerSec = 1000000000; - static const unsigned long kAveEventPerSec = 200; - -MCatNLOSource::MCatNLOSource( const ParameterSet & pset, - InputSourceDescription const& desc ) : - GeneratedInputSource(pset, desc), evt(0), - herwigVerbosity_ (pset.getUntrackedParameter<int>("herwigVerbosity",0)), - herwigHepMCVerbosity_ (pset.getUntrackedParameter<bool>("herwigHepMCVerbosity",false)), - maxEventsToPrint_ (pset.getUntrackedParameter<int>("maxEventsToPrint",0)), - comenergy(pset.getUntrackedParameter<double>("comEnergy",14000.)), - processNumber_(pset.getUntrackedParameter<int>("processNumber",0)) -{ - - cout << "MCatNLOSource: initializing Herwig. " << endl; - - // Call hwudat to set up HERWIG block data - hwudat(); - - // herwigVerbosity Level IPRINT - /* valid argumets are: 0: print title only - 1: + print selected input parameters - 2: + print table of particle codes and properties - 3: + tables of Sudakov form factors */ - - cout << " Herwig verbosity level = " << herwigVerbosity_ << endl; - - //Max number of events printed on verbosity level - //maxEventsToPrint_ = pset.getUntrackedParameter<int>("maxEventsToPrint",0); - cout << " Number of events to be printed = " << maxEventsToPrint_ << endl; - - // setting basic parameters ... - hwproc.PBEAM1 = comenergy/2.; - hwproc.PBEAM2 = comenergy/2.; - hwbmch.PART1[0] = 'P'; - hwbmch.PART2[0] = 'P'; - for(int i=1;i<8;++i){ - hwbmch.PART1[i] = ' '; - hwbmch.PART2[i] = ' ';} - - // seting maximum events - hwproc.MAXEV = pset.getUntrackedParameter<int>("maxEvents",0); - - // initialize other common block ... - hwigin(); - - // set some 'non-herwig' defaults - hwevnt.MAXPR = maxEventsToPrint_; // no printing out of events - hwpram.IPRINT = herwigVerbosity_; // HERWIG print out mode - hwprop.RMASS[6] = 175.0; - - // resetting all 'must be input' parameters - vvjin.QQIN[0]='\0'; - - // just read in the IPROC .. - hwproc.IPROC = processNumber_; - - // check process code - int jpr0 = (abs(hwproc.IPROC)%10000); - int jpr = jpr0/100; - if(jpr == 13 || jpr == 14) { - if(jpr0 == 1396) { - hwhard.EMMIN = -10000; - hwhard.EMMAX = -10000; - } - else if(jpr0 == 1397) { - hwprop.RMASS[200] = -10000; - hwpram.GAMZ = -10000; - hwbosc.GAMMAX = -10000; - } - else if(jpr0 == 1497 || jpr0 == 1498) { - hwprop.RMASS[198] = -10000; - hwpram.GAMW = -10000; - hwbosc.GAMMAX = -10000; - } - else if((jpr0 >= 1350 && jpr0 <= 1356) || (jpr0 >= 1361 && jpr0 <= 1366)) { - hwprop.RMASS[200] = -10000; - hwpram.GAMZ = -10000; - hwbosc.GAMMAX = -10000; - hwhard.EMMIN = -10000; - hwhard.EMMAX = -10000; - } - else if(jpr0 >= 1371 && jpr0 <= 1373) { - hwhard.EMMIN = -10000; - hwhard.EMMAX = -10000; - } - else if((jpr0 >= 1450 && jpr0 <= 1453) - || (jpr0 >= 1461 && jpr0 <= 1463) - || (jpr0 >= 1471 && jpr0 <= 1473)) { - hwprop.RMASS[198] = -10000; - hwpram.GAMW = -10000; - hwbosc.GAMMAX = -10000; - hwhard.EMMIN = -10000; - hwhard.EMMAX = -10000; - } - } - else if(jpr == 28) { - hwprop.RMASS[198] = -10000; - hwpram.GAMW = -10000; - hwprop.RMASS[200] = -10000; - hwpram.GAMZ = -10000; - hwbosc.GAMMAX = -10000; - } - else if(jpr == 17) { - if(abs(hwproc.IPROC)==1705 || abs(hwproc.IPROC)==11705) - hwprop.RMASS[5]= -10000; - else if (abs(hwproc.IPROC)==1706 || abs(hwproc.IPROC)==11706) - hwprop.RMASS[6]= -10000; - } - else if(jpr == 26) { - hwprop.RMASS[198] = -10000; - hwpram.GAMW = -10000; - hwprop.RMASS[201] = -10000; - } - else if(jpr == 27) { - hwprop.RMASS[200] = -10000; - hwpram.GAMZ = -10000; - hwprop.RMASS[201] = -10000; - } - else if(jpr == 20) - hwprop.RMASS[6] = -10000; - else { - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" bad process ID IPROC!"; - } - hwprop.RMASS[1] = -10000.; - hwprop.RMASS[2] = -10000.; - hwprop.RMASS[3] = -10000.; - hwprop.RMASS[4] = -10000.; - hwprop.RMASS[5] = -10000.; - hwprop.RMASS[13] = -10000.; - - - // Set HERWIG parameters in a single ParameterSet - ParameterSet herwig_params = - pset.getParameter<ParameterSet>("MCatNLOParameters") ; - - // The parameter sets to be read (default, min bias, user ...) in the - // proper order. - vector<string> setNames = - herwig_params.getParameter<vector<string> >("parameterSets"); - - // Loop over the sets - for ( unsigned i=0; i<setNames.size(); ++i ) { - - string mySet = setNames[i]; - - // Read the HERWIG parameters for each set of parameters - vector<string> pars = - herwig_params.getParameter<vector<string> >(mySet); - - cout << "----------------------------------------------" << endl; - cout << "Read MC@NLO parameter set " << mySet << endl; - cout << "----------------------------------------------" << endl; - - // Loop over all parameters and stop in case of mistake - for( vector<string>::const_iterator - itPar = pars.begin(); itPar != pars.end(); ++itPar ) { - static string sRandomValueSetting1("NRN(1)"); - static string sRandomValueSetting2("NRN(2)"); - if( (0 == itPar->compare(0,sRandomValueSetting1.size(),sRandomValueSetting1) )||(0 == itPar->compare(0,sRandomValueSetting2.size(),sRandomValueSetting2) )) { - throw edm::Exception(edm::errors::Configuration,"HerwigError") - <<" attempted to set random number using pythia command 'NRN(.)'. This is not allowed.\n Please use the RandomNumberGeneratorService to set the random number seed."; - } - - if( ! hwgive(*itPar) ) { - throw edm::Exception(edm::errors::Configuration,"HerwigError") - <<" herwig did not accept the following \""<<*itPar<<"\""; - } - } - } - - if(vvjin.QQIN[0]!='\0') { - cout<<" HERWIG will be reading hard events from file: "; - for(int i=0; i<50; ++i) cout<<vvjin.QQIN[i]; - cout<<endl; - } - else { - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" <prefix>.events file must be provided.\n Set the QQIN-parameter in the config file."; - } - - if(abs(hwproc.IPROC)<=10000) { - hwgupr.LHSOFT = true; - cout <<" MCatNLOInterface will produce underlying event."<<endl; - } - else { - hwgupr.LHSOFT = false; - cout <<" MCatNLOInterface will *not* produce underlying event."<<endl; - } - - /// make sure all quarks-antiquarks have the same mass - for(int i=1; i<6; ++i) - hwprop.RMASS[i+6]=hwprop.RMASS[i]; - - // Select W/Z decay modes - hwbosc.MODBOS[0]=5; - hwbosc.MODBOS[1]=5; - - // AUTPDF, MODPDF, LHACRTL *not* used - cout << " HERWIG will use internal PDFs (others not supported)." <<endl; - - // check for all relevant input parameters - if(jpr == 13 || jpr == 14) { - if(jpr0 == 1396) { - if((hwhard.EMMIN == -10000) || (hwhard.EMMAX == -10000)) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters EMMIN or EMMAX."; - } - else if(jpr0 == 1397) { - if( hwprop.RMASS[200] == -10000 || - hwpram.GAMZ == -10000 || - hwbosc.GAMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters RMASS[200], GAMZ or GAMMAX."; - } - else if(jpr0 == 1497 || jpr0 == 1498) { - if(hwprop.RMASS[198] == -10000 || - hwpram.GAMW == -10000 || - hwbosc.GAMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters RMASS[198], GAMW or GAMMAX."; - } - else if((jpr0 >= 1350 && jpr0 <= 1356) || (jpr0 >= 1361 && jpr0 <= 1366)) { - if( hwprop.RMASS[200] == -10000 || - hwpram.GAMZ == -10000 || - hwbosc.GAMMAX == -10000 || - hwhard.EMMIN == -10000 || - hwhard.EMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters RMASS[200], GAMZ, GAMMAX, EMMIN or EMMAX."; - } - else if(jpr0 >= 1371 && jpr0 <= 1373) { - if(hwhard.EMMIN == -10000 || - hwhard.EMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters EMMIN or EMMAX."; - } - else if((jpr0 >= 1450 && jpr0 <= 1453) - || (jpr0 >= 1461 && jpr0 <= 1463) - || (jpr0 >= 1471 && jpr0 <= 1473)) { - if(hwprop.RMASS[198] == -10000 || - hwpram.GAMW == -10000 || - hwbosc.GAMMAX == -10000 || - hwhard.EMMIN == -10000 || - hwhard.EMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters RMASS[198], GAMW, GAMMAX, EMMIN or EMMAX."; - } - } - else if(jpr == 28) { - if( hwprop.RMASS[198] == -10000 || - hwpram.GAMW == -10000 || - hwprop.RMASS[200] == -10000 || - hwpram.GAMZ == -10000 || - hwbosc.GAMMAX == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameters RMASS[198], GAMW, RMASS[200], GAMZ or GAMMAX."; - } - else if(jpr == 17) { - if(abs(hwproc.IPROC)==1705 || abs(hwproc.IPROC)==11705){ - if(hwprop.RMASS[5]== -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[5]."; - } - else if (abs(hwproc.IPROC)==1706 || abs(hwproc.IPROC)==11706){ - if(hwprop.RMASS[6] == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[6]."; - } - } - else if(jpr == 26) { - if(hwprop.RMASS[198] == -10000 || - hwpram.GAMW == -10000 || - hwprop.RMASS[201] == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[198], GAMW or RMASS[201]."; - } - else if(jpr == 27) { - if(hwprop.RMASS[200] == -10000 || - hwpram.GAMZ == -10000 || - hwprop.RMASS[201] == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[200], GAMZ or RMASS[201]."; - } - else if(jpr == 20) { - if(hwprop.RMASS[6] == -10000) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[6]."; - } - else { - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" bad process ID IPROC!"; - } - if(hwprop.RMASS[1] == -10000. || - hwprop.RMASS[2] == -10000. || - hwprop.RMASS[3] == -10000. || - hwprop.RMASS[4] == -10000.|| - hwprop.RMASS[5] == -10000.|| - hwprop.RMASS[13] == -10000.) - throw edm::Exception(edm::errors::Configuration,"MCatNLOError") - <<" for IPROC = "<<hwproc.IPROC<<" : missing input parameter RMASS[1],RMASS[2],RMASS[3],RMASS[4],RMASS[5] or RMASS[13]."; - - // set W+ to W- - hwprop.RMASS[199]=hwprop.RMASS[198]; - hwpram.SOFTME = false; - hwevnt.NOWGT = false; - hw6203.NEGWTS = true; - hwevnt.MAXER = hwproc.MAXEV/100; - hwpram.LRSUD = 0; - hwpram.LWSUD = 77; - hwpram.NSTRU = 8; - hwpram.PRVTX = false; - hwhard.PTMIN = 0.5; - if(!hwevnt.NOWGT) { - hwevnt.WGTMAX = 1.000001; - hw6203.AVABW = 1.000001; - } - hwprop.RLTIM[6]=1.0e-23; - hwprop.RLTIM[12]=1.0e-23; - if(abs(hwproc.IPROC)==1705 || abs(hwproc.IPROC)==11705) - hwpram.PSPLT[1] = 0.5; - - //In the future, we will get the random number seed on each event and tell - // HERWIG to use that new seed - cout << "----------------------------------------------" << endl; - cout << "Setting MCatNLO random number seeds *blank*" << endl; - cout << "----------------------------------------------" << endl; - /*edm::Service<RandomNumberGenerator> rng; - uint32_t seed1 = rng->mySeed(); - uint32_t seed2 = rng->mySeed(); - hwevnt.NRN[0] = seed1; - hwevnt.NRN[1] = seed2;*/ - - - hwuinc(); - - // callung HWUSTA to make any particle stable (PI0 by default) - hwusta("PI0 ",1); - if(jpr == 20) { - hwusta("B+ ",1); - hwusta("B- ",1); - hwusta("B_D0 ",1); - hwusta("B_DBAR0 ",1); - hwusta("B_S0 ",1); - hwusta("B_SBAR0 ",1); - hwusta("SIGMA_B+",1); - hwusta("LMBDA_B0",1); - hwusta("SIGMA_B-",1); - hwusta("XI_B0 ",1); - hwusta("XI_B- ",1); - hwusta("OMEGA_B-",1); - hwusta("B_C- ",1); - hwusta("UPSLON1S",1); - hwusta("SGM_BBR-",1); - hwusta("LMD_BBR0",1); - hwusta("SGM_BBR+",1); - hwusta("XI_BBAR0",1); - hwusta("XI_B+ ",1); - hwusta("OMG_BBR+",1); - hwusta("B_C+ ",1); - } - - // initialize elemetary process ... - hweini(); - - cout << endl; // Stetically add for the output - //******** - - produces<HepMCProduct>(); - cout << "MCatNLOSource: starting event generation ... " << endl<<endl; -} - - -MCatNLOSource::~MCatNLOSource(){ - cout << "MCatNLOSource: event generation done. " << endl; - clear(); -} - -void MCatNLOSource::clear() { - // teminate elementary process - hwefin(); -} - - -bool MCatNLOSource::produce(Event & e) { - - auto_ptr<HepMCProduct> bare_product(new HepMCProduct()); - - //******** - // - - // initialize event - hwuine(); - - // generate hard subprocess - hwepro(); - - // generate parton cascades - hwbgen(); - - // do heavy object decays - hwdhob(); - - // do cluster formation - hwcfor(); - - // do cluster decays - hwcdec(); - - // do unstable particle decays - hwdhad(); - - // do heavy flavour hadron decays - hwdhvy(); - - // add soft underlying event if needed - hwmevt(); - - // finish event - hwufne(); - - HepMC::GenEvent* evt = new HepMC::GenEvent(); - bool ok = conv.fill_next_event( evt ); - if(!ok) throw cms::Exception("HerwigError") - <<" Conversion problems in event nr."<<numberEventsInRun() - remainingEvents() - 1<<"."; - evt->set_signal_process_id(hwproc.IPROC); - evt->weights().push_back(hwevnt.EVWGT); - evt->set_event_number(numberEventsInRun() - remainingEvents() - 1); - - - if (herwigHepMCVerbosity_) { - cout << "Event process = " << evt->signal_process_id() <<endl - << "----------------------" << endl; - evt->print(); - } - - //evt = reader_->fillCurrentEventData(); - //******** - - if(evt) bare_product->addHepMCData(evt ); - - e.put(bare_product); - - return true; -} - - -bool -MCatNLOSource::hwgive(const std::string& ParameterString) { - - bool accepted = 1; - - if(!strncmp(ParameterString.c_str(),"QQIN",4)) - { - int tostart=0; - while(ParameterString.c_str()[tostart]!='=') tostart++; - tostart++; - while(ParameterString.c_str()[tostart]==' ') tostart++; - int todo = 0; - while(ParameterString.c_str()[todo+tostart]!='\0') { - vvjin.QQIN[todo]=ParameterString.c_str()[todo+tostart]; - todo++; - } - for(int i=todo ;i <50+todo; ++i) vvjin.QQIN[i]=' '; - } - else if(!strncmp(ParameterString.c_str(),"IPROC",5)) { - cout<<" WARNING: IPROC parameter will be ignored. Use 'untracked int32 processNumber = xxx' to set IPROC."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"MAXEV",5)) { - cout<<" WARNING: MAXEV parameter will be ignored. Use 'untracked int32 maxEvents = xxx' to set the number of events to be generated."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"AUTPDF(",7)){ - cout<<" WARNING: AUTPDF parameter *not* suported. HERWIG will use default PDF's."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"TAUDEC",6)){ - int tostart=0; - while(ParameterString.c_str()[tostart]!='=') tostart++; - tostart++; - while(ParameterString.c_str()[tostart]==' ') tostart++; - int todo = 0; - while(ParameterString.c_str()[todo+tostart]!='\0') { - hwdspn.TAUDEC[todo]=ParameterString.c_str()[todo+tostart]; - todo++; - } - if(todo != 6) { - throw cms::Exception("HerwigError") - <<" Attempted to set TAUDEC to "<<hwdspn.TAUDEC<<". This is not allowed.\n Options for TAUDEC are HERWIG and TAUOLA."; - } - } - else if(!strncmp(ParameterString.c_str(),"BDECAY",6)){ - cout<<" WARNING: BDECAY parameter *not* suported. HERWIG will use default b decay."<<endl; - } - else if(!strncmp(ParameterString.c_str(),"QCDLAM",6)) - hwpram.QCDLAM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VQCUT",5)) - hwpram.VQCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VGCUT",5)) - hwpram.VGCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VPCUT",5)) - hwpram.VPCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLMAX",5)) - hwpram.CLMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLPOW",5)) - hwpram.CLPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PSPLT(1)",8)) - hwpram.PSPLT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PSPLT(2)",8)) - hwpram.PSPLT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QDIQK",5)) - hwpram.QDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PDIQK",5)) - hwpram.PDIQK = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QSPAC",5)) - hwpram.QSPAC = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTRMS",5)) - hwpram.PTRMS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IPRINT",6)) - hwpram.IPRINT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRVTX",5)) - hwpram.PRVTX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NPRFMT",6)) - hwpram.NPRFMT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNDEC",6)) - hwpram.PRNDEC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNDEF",6)) - hwpram.PRNDEF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNTEX",6)) - hwpram.PRNTEX = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRNWEB",6)) - hwpram.PRNWEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXPR",5)) - hwevnt.MAXPR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXER",5)) - hwevnt.MAXER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LWEVT",5)) - hwevnt.LWEVT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LRSUD",5)) - hwpram.LRSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LWSUD",5)) - hwpram.LWSUD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NRN(1)",6)) - hwevnt.NRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NRN(2)",6)) - hwevnt.NRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WGTMAX",6)) - hwevnt.WGTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NOWGT",5)) - hwevnt.NOWGT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AVWGT",5)) - hwevnt.AVWGT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AZSOFT",6)) - hwpram.AZSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AZSPIN",6)) - hwpram.AZSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"HARDME",6)) - hwpram.HARDME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SOFTME",6)) - hwpram.SOFTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GCUTME",6)) - hwpram.GCUTME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NCOLO",5)) - hwpram.NCOLO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NFLAV",5)) - hwpram.NFLAV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODPDF(1)",9)) - hwpram.MODPDF[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODPDF(2)",9)) - hwpram.MODPDF[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NSTRU",5)) - hwpram.NSTRU = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRSOF",5)) - hwpram.PRSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ENSOF",5)) - hwpram.ENSOF = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPREM",6)) - hwpram.IOPREM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BTCLM",5)) - hwpram.BTCLM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ETAMIX",6)) - hwpram.ETAMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PHIMIX",6)) - hwpram.PHIMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"H1MIX",5)) - hwpram.H1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F0MIX",5)) - hwpram.F0MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F1MIX",5)) - hwpram.F1MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"F2MIX",5)) - hwpram.F2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ET2MIX",6)) - hwpram.ET2MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OMHMIX",6)) - hwpram.OMHMIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PH3MIX",6)) - hwpram.PH3MIX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"B1LIM",5)) - hwpram.B1LIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLDIR(1)",8)) - hwpram.CLDIR[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLDIR(2)",8)) - hwpram.CLDIR[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLSMR(1)",8)) - hwpram.CLSMR[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLSMR(2)",8)) - hwpram.CLSMR[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(1)",8)) - hwprop.RMASS[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(2)",8)) - hwprop.RMASS[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(3)",8)) - hwprop.RMASS[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(4)",8)) - hwprop.RMASS[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(5)",8)) - hwprop.RMASS[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(6)",8)) - hwprop.RMASS[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(13)",9)) - hwprop.RMASS[13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SUDORD",6)) - hwusud.SUDORD = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"INTER",5)) - hwusud.INTER = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NEGWTS",6)) - hw6203.NEGWTS = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"AVABW",5)) - hw6203.AVABW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN1",5)) - hwminb.PMBN1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN2",5)) - hwminb.PMBN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBN3",5)) - hwminb.PMBN3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBK1",5)) - hwminb.PMBK1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBK2",5)) - hwminb.PMBK2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBM1",5)) - hwminb.PMBM1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBM2",5)) - hwminb.PMBM2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP1",5)) - hwminb.PMBP1 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP2",5)) - hwminb.PMBP2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PMBP3",5)) - hwminb.PMBP3 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VMIN2",5)) - hwdist.VMIN2 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EXAG",4)) - hwdist.EXAG = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRECO",5)) - hwuclu.PRECO = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CLRECO",6)) - hwuclu.CLRECO = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(1)",6)) - hwuwts.PWT[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(2)",6)) - hwuwts.PWT[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(3)",6)) - hwuwts.PWT[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(4)",6)) - hwuwts.PWT[3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(5)",6)) - hwuwts.PWT[4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(6)",6)) - hwuwts.PWT[5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PWT(7)",6)) - hwuwts.PWT[6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,0)",12)) - hwuwts.REPWT[0][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,1)",12)) - hwuwts.REPWT[0][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,2)",12)) - hwuwts.REPWT[0][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,3)",12)) - hwuwts.REPWT[0][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,0,4)",12)) - hwuwts.REPWT[0][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,0)",12)) - hwuwts.REPWT[0][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,1)",12)) - hwuwts.REPWT[0][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,2)",12)) - hwuwts.REPWT[0][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,3)",12)) - hwuwts.REPWT[0][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,1,4)",12)) - hwuwts.REPWT[0][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,0)",12)) - hwuwts.REPWT[0][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,1)",12)) - hwuwts.REPWT[0][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,2)",12)) - hwuwts.REPWT[0][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,3)",12)) - hwuwts.REPWT[0][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,2,4)",12)) - hwuwts.REPWT[0][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,0)",12)) - hwuwts.REPWT[0][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,1)",12)) - hwuwts.REPWT[0][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,2)",12)) - hwuwts.REPWT[0][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,3)",12)) - hwuwts.REPWT[0][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,3,4)",12)) - hwuwts.REPWT[0][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,0)",12)) - hwuwts.REPWT[0][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,1)",12)) - hwuwts.REPWT[0][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,2)",12)) - hwuwts.REPWT[0][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,3)",12)) - hwuwts.REPWT[0][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(0,4,4)",12)) - hwuwts.REPWT[0][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,0)",12)) - hwuwts.REPWT[1][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,1)",12)) - hwuwts.REPWT[1][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,2)",12)) - hwuwts.REPWT[1][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,3)",12)) - hwuwts.REPWT[1][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,0,4)",12)) - hwuwts.REPWT[1][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,0)",12)) - hwuwts.REPWT[1][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,1)",12)) - hwuwts.REPWT[1][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,2)",12)) - hwuwts.REPWT[1][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,3)",12)) - hwuwts.REPWT[1][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,1,4)",12)) - hwuwts.REPWT[1][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,0)",12)) - hwuwts.REPWT[1][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,1)",12)) - hwuwts.REPWT[1][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,2)",12)) - hwuwts.REPWT[1][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,3)",12)) - hwuwts.REPWT[1][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,2,4)",12)) - hwuwts.REPWT[1][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,0)",12)) - hwuwts.REPWT[1][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,1)",12)) - hwuwts.REPWT[1][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,2)",12)) - hwuwts.REPWT[1][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,3)",12)) - hwuwts.REPWT[1][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,3,4)",12)) - hwuwts.REPWT[1][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,0)",12)) - hwuwts.REPWT[1][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,1)",12)) - hwuwts.REPWT[1][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,2)",12)) - hwuwts.REPWT[1][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,3)",12)) - hwuwts.REPWT[1][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(1,4,4)",12)) - hwuwts.REPWT[1][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,0)",12)) - hwuwts.REPWT[2][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,1)",12)) - hwuwts.REPWT[2][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,2)",12)) - hwuwts.REPWT[2][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,3)",12)) - hwuwts.REPWT[2][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,0,4)",12)) - hwuwts.REPWT[2][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,0)",12)) - hwuwts.REPWT[2][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,1)",12)) - hwuwts.REPWT[2][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,2)",12)) - hwuwts.REPWT[2][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,3)",12)) - hwuwts.REPWT[2][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,1,4)",12)) - hwuwts.REPWT[2][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,0)",12)) - hwuwts.REPWT[2][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,1)",12)) - hwuwts.REPWT[2][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,2)",12)) - hwuwts.REPWT[2][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,3)",12)) - hwuwts.REPWT[2][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,2,4)",12)) - hwuwts.REPWT[2][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,0)",12)) - hwuwts.REPWT[2][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,1)",12)) - hwuwts.REPWT[2][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,2)",12)) - hwuwts.REPWT[2][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,3)",12)) - hwuwts.REPWT[2][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,3,4)",12)) - hwuwts.REPWT[2][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,0)",12)) - hwuwts.REPWT[2][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,1)",12)) - hwuwts.REPWT[2][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,2)",12)) - hwuwts.REPWT[2][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,3)",12)) - hwuwts.REPWT[2][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(2,4,4)",12)) - hwuwts.REPWT[2][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,0)",12)) - hwuwts.REPWT[3][0][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,1)",12)) - hwuwts.REPWT[3][0][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,2)",12)) - hwuwts.REPWT[3][0][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,3)",12)) - hwuwts.REPWT[3][0][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,0,4)",12)) - hwuwts.REPWT[3][0][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,0)",12)) - hwuwts.REPWT[3][1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,1)",12)) - hwuwts.REPWT[3][1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,2)",12)) - hwuwts.REPWT[3][1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,3)",12)) - hwuwts.REPWT[3][1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,1,4)",12)) - hwuwts.REPWT[3][1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,0)",12)) - hwuwts.REPWT[3][2][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,1)",12)) - hwuwts.REPWT[3][2][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,2)",12)) - hwuwts.REPWT[3][2][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,3)",12)) - hwuwts.REPWT[3][2][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,2,4)",12)) - hwuwts.REPWT[3][2][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,0)",12)) - hwuwts.REPWT[3][3][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,1)",12)) - hwuwts.REPWT[3][3][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,2)",12)) - hwuwts.REPWT[3][3][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,3)",12)) - hwuwts.REPWT[3][3][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,3,4)",12)) - hwuwts.REPWT[3][3][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,0)",12)) - hwuwts.REPWT[3][4][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,1)",12)) - hwuwts.REPWT[3][4][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,2)",12)) - hwuwts.REPWT[3][4][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,3)",12)) - hwuwts.REPWT[3][4][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"REPWT(3,4,4)",12)) - hwuwts.REPWT[3][4][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SNGWT",5)) - hwuwts.SNGWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DECWT",5)) - hwuwts.DECWT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PLTCUT",6)) - hwdist.PLTCUT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VTOCDK(",7)){ - // we find the index ... - int ind = atoi(&ParameterString[7]); - hwprop.VTOCDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);} - else if(!strncmp(ParameterString.c_str(),"VTORDK(",7)){ - // we find the index ... - int ind = atoi(&ParameterString[7]); - hwprop.VTORDK[ind] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]);} - else if(!strncmp(ParameterString.c_str(),"PIPSMR",6)) - hwdist.PIPSMR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(1)",9)) - hw6202.VIPWID[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(2)",9)) - hw6202.VIPWID[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VIPWID(3)",9)) - hw6202.VIPWID[2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MAXDKL",6)) - hwdist.MAXDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPDKL",6)) - hwdist.IOPDKL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXRCYL",6)) - hw6202.DXRCYL = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXZMAX",6)) - hw6202.DXZMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DXRSPH",6)) - hw6202.DXRSPH = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - // else if(!strncmp(ParameterString.c_str(),"BDECAY",6)) - // hwprch.BDECAY = ParameterString[strcspn(ParameterString.c_str(),"=")+1]; - else if(!strncmp(ParameterString.c_str(),"MIXING",6)) - hwdist.MIXING = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"XMIX(1)",7)) - hwdist.XMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"XMIX(2)",7)) - hwdist.XMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YMIX(1)",7)) - hwdist.YMIX[0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YMIX(2)",7)) - hwdist.YMIX[1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(198)",10)) - hwprop.RMASS[198] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(199)",10)) - hwprop.RMASS[199] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMW",4)) - hwpram.GAMW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMZ",4)) - hwpram.GAMZ = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(200)",10)) - hwprop.RMASS[200] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WZRFR",5)) - hw6202.WZRFR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"MODBOS(",7)) { - int ind = atoi(&ParameterString[7]); - hwbosc.MODBOS[ind-1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"RMASS(201)",10)) - hwprop.RMASS[201] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPHIG",6)) - hwbosc.IOPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMMAX",6)) - hwbosc.GAMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ENHANC(",7)) { - int ind = atoi(&ParameterString[7]); - hwbosc.ENHANC[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"RMASS(209)",10)) - hwprop.RMASS[209] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(215)",10)) - hwprop.RMASS[215] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ALPHEM",6)) - hwpram.ALPHEM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SWEIN",5)) - hwpram.SWEIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"QFCH(",5)){ - int ind = atoi(&ParameterString[5]); - hwpram.QFCH[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(1,",7)){ - int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(2,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(3,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(4,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(5,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(6,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(7,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(8,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(9,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(10,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(11,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(12,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(13,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(14,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(15,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"AFCH(16,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.AFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(1,",7)){ - int ind = atoi(&ParameterString[7]); if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][0] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(2,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(3,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][2] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(4,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][3] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(5,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][4] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(6,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][5] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(7,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][6] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(8,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][7] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(9,",7)){ - int ind = atoi(&ParameterString[7]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][8] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(10,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][9] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(11,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][10] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(12,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][11] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(13,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][12] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(14,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][13] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(15,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][14] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"VFCH(16,",8)){ - int ind = atoi(&ParameterString[8]);if(ind<1||ind>2) return 0; - hwpram.VFCH[ind-1][15] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"ZPRIME",6)) - hwpram.ZPRIME = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RMASS(202)",10)) - hwprop.RMASS[202] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GAMZP",5)) - hwpram.GAMZP = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"VCKM(",5)) { - int ind1 = atoi(&ParameterString[5]); - if(ind1<1||ind1>3) return 0; - int ind2 = atoi(&ParameterString[7]); - if(ind2<1||ind2>3) return 0; - hwpram.VCKM[ind2][ind1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"SCABI",5)) - hwpram.SCABI = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EPOLN(",6)) { - int ind = atoi(&ParameterString[6]); - if(ind<1||ind>3) return 0; - hwhard.EPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"PPOLN(",6)) { - int ind = atoi(&ParameterString[6]); - if(ind<1||ind>3) return 0; - hwhard.PPOLN[ind-1] = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); } - else if(!strncmp(ParameterString.c_str(),"QLIM",4)) - hwhard.QLIM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"THMAX",5)) - hwhard.THMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Y4JT",4)) - hwhard.Y4JT = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"DURHAM",6)) - hwhard.DURHAM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOP4JT(1)",9)) - hwpram.IOP4JT[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOP4JT(2)",9)) - hwpram.IOP4JT[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BGSHAT",6)) - hwhard.BGSHAT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"BREIT",5)) - hwbrch.BREIT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"USECMF",6)) - hwbrch.USECMF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NOSPAC",6)) - hwpram.NOSPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ISPAC",5)) - hwpram.ISPAC = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"TMNISR",6)) - hwhard.TMNISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZMXISR",6)) - hwhard.ZMXISR = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ASFIXD",6)) - hwhard.ASFIXD = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OMEGA0",6)) - hwhard.OMEGA0 = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IAPHIG",6)) - hwhard.IAPHIG = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PHOMAS",6)) - hwhard.PHOMAS = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PRESPL",6)) - hw6500.PRESPL = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTMIN",5)) - hwhard.PTMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTMAX",5)) - hwhard.PTMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"PTPOW",5)) - hwhard.PTPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YJMIN",5)) - hwhard.YJMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YJMAX",5)) - hwhard.YJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMMIN",5)) - hwhard.EMMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMMAX",5)) - hwhard.EMMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"EMPOW",5)) - hwhard.EMPOW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2MIN",5)) - hwhard.Q2MIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2MAX",5)) - hwhard.Q2MAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2POW",5)) - hwhard.Q2POW = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YBMIN",5)) - hwhard.YBMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YBMAX",5)) - hwhard.YBMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"WHMIN",5)) - hwhard.WHMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZJMAX",5)) - hwhard.ZJMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2WWMN",6)) - hwhard.Q2WWMN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"Q2WWMX",6)) - hwhard.Q2WWMX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YWWMIN",6)) - hwhard.YWWMIN = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"YWWMAX",6)) - hwhard.YWWMAX = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"CSPEED",6)) - hwpram.CSPEED = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"GEV2NB",6)) - hwpram.GEV2NB = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBSH",4)) - hwhard.IBSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBRN(1)",7)) - hwhard.IBRN[0] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IBRN(2)",7)) - hwhard.IBRN[1] = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NQEV",4)) - hwusud.NQEV = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ZBINM",5)) - hwpram.ZBINM = atof(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NZBIN",5)) - hwpram.NZBIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NBTRY",5)) - hwpram.NBTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NCTRY",5)) - hwpram.NCTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NETRY",5)) - hwpram.NETRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"NSTRY",5)) - hwpram.NSTRY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"ACCUR",5)) - hwusud.ACCUR = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"RPARTY",6)) - hwrpar.RPARTY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SUSYIN",6)) - hwsusy.SUSYIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LRSUSY",6)) - hw6202.LRSUSY = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"SYSPIN",6)) - hwdspn.SYSPIN = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"THREEB",6)) - hwdspn.THREEB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"FOURB",5)) - hwdspn.FOURB = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LHSOFT",6)) - hwgupr.LHSOFT = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"LHGLSF",6)) - hwgupr.LHGLSF = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"OPTM",4)) - hw6300.OPTM = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPSTP",6)) - hw6300.IOPSTP = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - else if(!strncmp(ParameterString.c_str(),"IOPSH",5)) - hw6300.IOPSH = atoi(&ParameterString[strcspn(ParameterString.c_str(),"=")+1]); - - else accepted = 0; - - return accepted; -} - - -//------------------------------------------------------------------------------- -// dummy hwaend (has to be REMOVED from herwig) -#define hwaend hwaend_ - -extern "C" { - void hwaend(){/*dummy*/}; -} -//------------------------------------------------------------------------------- diff --git a/GeneratorInterface/MCatNLOInterface/src/ParticleData.h b/GeneratorInterface/MCatNLOInterface/src/ParticleData.h deleted file mode 100644 index cb01c46b2ed..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/ParticleData.h +++ /dev/null @@ -1,216 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_PARTICLE_DATA_H -#define HEPMC_PARTICLE_DATA_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, September 1999, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// GenParticle Data common to all particles of a given PDG id -////////////////////////////////////////////////////////////////////////// -// -// Units ID: defined by PDG group (particles are +ve, antiparticles are -ve) -// also consistent with the Pythia definitions -// See: http://d0lblt.lbl.gov/wwwpdg/mc_numbers.htm -// charge: fraction of proton charge -// mass in user defined energy units -// width: ( stored as cLifetime = hbar / Width ) -// cLifetime: c*time -// spin: fraction of photon spin (always a positive number) -// -// Default mass is 0. -// Default cLifetime is -1 which means stable (setting width = 0 gives this) -// (we define cLifetime = -1 --> width = 0 (i.e stable), -// width = -1 --> cLifetime = 0 (i.e. prompt) ) -// These defaults exist because many very basic MC generators -// may produce only massless stable particles in the event record. -// -// It is intended that a different ParticleData object is created for each -// particle and its anti-particle - useful for CP violation studies. -// -// There are few set methods for this class, there should be no reason -// to change anything after instantiating. If you need to, then -// create a new object and kill the old one. -// -// Example: -// HepMC::ParticleData* pd_electron = -// new HepMC::ParticleData("electron",11,-1,0.000511,-1,.5); -// A method is provided to allow you to set the lifetime from the -// width in the constructor -// Example: new HepMC::ParticleData("W+",24,+1,80.396, -// HepMC::clifetime_from_width(2.06),1); -// Example of finding a ParticleData object from its PDG ID -// in ParticleDataTable pdt: -// HepMC::ParticleData* electron = pdt.find(11); -// or if you just wanted two know the electron mass, you could do: -// pdt.find(11)->mass(); - -#include <iostream> -#include <string> -#include <cmath> - -namespace HepMC { - - // hbar * c --> calculated with units of [mm*GeV] - static const double HepMC_hbarc = (6.6260755e-34 * (1.e-6/1.60217733e-19) / (2*3.14159265358979323846)) - * (2.99792458e+8 * 1000.) * 1.e+3; - - // if you want to instantiate the particle lifetime from its width, - // use this static method inside the constructor: - double clifetime_from_width( double width ); - - class ParticleData { - - friend std::ostream& operator<<( std::ostream&, const ParticleData& ); - - public: - ParticleData( std::string name, int id, double charge, double mass = 0, - double cLifetime = -1, double spin = 0 ); - ParticleData( const char* name, int id, double charge, double mass = 0, - double cLifetime = -1, double spin = 0 ); - virtual ~ParticleData(); - - bool operator==( const ParticleData& ) const; - bool operator!=( const ParticleData& ) const; - - void print( std::ostream& ostr = std::cout ) const; - - bool is_lepton() const; // true if charged lepton /neutrino - bool is_charged_lepton() const;// true if a charged lepton - bool is_em() const; // true if an electron or photon - bool is_neutrino() const; // true if a neutrino - bool is_hadron() const; // true if a hadron - bool is_boson() const; // true if a gauge or higgs boson - - //////////////////// - // access methods // - //////////////////// - std::string name() const; - int pdg_id() const; - double charge() const; - double mass() const; - double width() const; // width as calculated from clifetime - double clifetime() const; - double spin() const; - - void set_charge( double ); - void set_mass( double ); - void set_width( double ); - void set_clifetime( double ); - void set_spin( double ); - - protected: - static unsigned int counter(); // num ParticleData objects in memory - - // omits susy/excited/technicolor digit from returned ID - int model_independent_pdg_id_() const; - - private: - std::string m_name; // description of the particle according to PDG - // i.e. "Delta(1900) S_31" - int m_pdg_id; // PDG ID number (note we allow -ve) - int m_3charge;// 3*electric charge in units of proton charge - double m_mass; // nominal mass in user defined energy units - double m_clifetime; // [mm] - unsigned char m_2spin; // 2*spin (J) of particle - - static unsigned int s_counter; - }; - - /////////////////////////// - // INLINES // - /////////////////////////// - - inline bool ParticleData::is_lepton() const { - // true if a charged lepton or neutrino --> | 11,13,15,12,14,16,17,18 | - return ( abs(pdg_id()) >=11 && abs(pdg_id()) <= 18 ); - } - inline bool ParticleData::is_charged_lepton() const { - // true if a charged lepton --> | 11,13,15 | - return ( is_lepton() && abs(pdg_id())%2==1 ); - } - inline bool ParticleData::is_neutrino() const { - // true if a neutrino --> | 12,14,16 | - return ( is_lepton() && abs(pdg_id())%2==0 ); - } - inline bool ParticleData::is_em() const { - // true if an electron or photon --> | 11, 22 | - return ( abs(pdg_id()) == 11 || abs(pdg_id()) == 22 ); - } - inline bool ParticleData::is_hadron() const { - // true if a hadron --> q,g,meson,baryon - return ( abs(pdg_id()) <= 9 || abs(pdg_id()) == 21 - || abs(pdg_id()) >100 ); - } - inline bool ParticleData::is_boson() const { - // true if a gauge or higgs boson --> | 9, 21-39 | - return ( ( abs(pdg_id()) >20 && abs(pdg_id()) <=40 ) - || abs(pdg_id()) == 9 ); - } - - /////////////////////////// - // INLINE Access Methods // - /////////////////////////// - - inline std::string ParticleData::name() const { return m_name; } - inline int ParticleData::pdg_id() const { return m_pdg_id; } - inline double ParticleData::charge() const { - return ( (double)m_3charge )/3.; - } - inline double ParticleData::mass() const { return m_mass; } - inline double ParticleData::clifetime() const { return m_clifetime; } - inline double ParticleData::spin() const { return m_2spin/2.; } - inline void ParticleData::set_charge( double charge ) { - if ( charge > 0 ) { - m_3charge = (int)(3.*charge+.1); - } else if ( charge < 0. ) { - m_3charge = (int)(3.*charge-.1); - } else { - m_3charge = 0; - } - } - inline void ParticleData::set_mass( double its_mass ) { - m_mass = its_mass; - } - inline void ParticleData::set_width( double width ) { - if ( width > 0 ) { - m_clifetime = HepMC_hbarc/width; - } else if ( width == 0. ) { - m_clifetime = -1.; - } else { - m_clifetime = 0.; - } - } - inline void ParticleData::set_clifetime( double its_clifetime ) { - m_clifetime = its_clifetime; - } - inline void ParticleData::set_spin( double spin ) { - m_2spin = (unsigned char)(2.*spin+.1); - } - - /////////////////////////// - // INLINE Operators // - /////////////////////////// - - inline bool ParticleData::operator==( const ParticleData& a ) const { - // compares everything except the particle's name - return ( a.m_pdg_id != m_pdg_id || - a.m_mass != m_mass || - a.m_clifetime != m_clifetime || - a.m_3charge != m_3charge || - a.m_2spin != m_2spin ) ? 0 : 1; - } - - inline bool ParticleData::operator!=( const ParticleData& a ) const { - // compares everything except the particle's name - return ( a.pdg_id() != this->pdg_id() ); - } - -} // HepMC - -#endif // HEPMC_PARTICLE_DATA_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/MCatNLOInterface/src/ParticleDataTable.h b/GeneratorInterface/MCatNLOInterface/src/ParticleDataTable.h deleted file mode 100644 index f97e3d4991c..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/ParticleDataTable.h +++ /dev/null @@ -1,233 +0,0 @@ -//-------------------------------------------------------------------------- -#ifndef HEPMC_PARTICLE_DATA_TABLE_H -#define HEPMC_PARTICLE_DATA_TABLE_H - -////////////////////////////////////////////////////////////////////////// -// Matt.Dobbs@Cern.CH, Jan 2000, refer to: -// M. Dobbs and J.B. Hansen, "The HepMC C++ Monte Carlo Event Record for -// High Energy Physics", Computer Physics Communications (to be published). -// -// Container for GenParticle Data Instances --- basically just an interface -// to STL map -- the same naming conventions are used -// A GenParticle may belong to any number of ParticleDataTables. -// The ParticleDataTable does not own the ParticleData objects and will NOT -// delete them unless explicity told to do so with the delete_all method. -// Each ParticleData entry in the table MUST have a unique pdg_id (otherwise -// an attempt to insert it as a new entry will fail). -// Updated 2000.02.08 M.Dobbs added merge_table and -// make_antiparticles_from_particles -////////////////////////////////////////////////////////////////////////// - -#include <iostream> -#include <map> -#include <cstdio> // needed for formatted output using sprintf -#include "ParticleData.h" - -namespace HepMC { - - class ParticleDataTable { - - public: - ParticleDataTable( std::string description = std::string() ); - ParticleDataTable( const char description ); - ParticleDataTable( const ParticleDataTable& ); - virtual ~ParticleDataTable(); // Shallow: does not delete - // ParticleData entries - // shallow: does not copy the entries, only makes new pointers - ParticleDataTable& operator=( const ParticleDataTable& ); - - void make_antiparticles_from_particles(); - int merge_table( const ParticleDataTable& ); - - void print( std::ostream& ostr = std::cout ) const; - - void delete_all(); //delete all ParticleData instances in this table - void clear(); //clears table without deleting - - ParticleData* operator[]( int id ) const; - ParticleData* find( int id ) const; - int size() const; - bool empty() const; - bool insert( ParticleData* ); // true if successful - bool erase( ParticleData* ); // removes from table - // does not delete - bool erase( int id ); // removes from table - // does not delete - typedef std::map<int,ParticleData*>::iterator iterator; - typedef std::map<int,ParticleData*>::const_iterator const_iterator; - iterator begin(); - iterator end(); - const_iterator begin() const; - const_iterator end() const; - - //////////////////// - // access methods // - //////////////////// - std::string description() const; - void set_description( std::string ); - void set_description( const char ); - - private: - std::string m_description; - std::map<int,ParticleData*> m_data_table; - }; - - /////////////////////////// - // INLINES // - /////////////////////////// - - inline ParticleDataTable::ParticleDataTable( std::string description ) - : m_description(description) {} - - inline ParticleDataTable::ParticleDataTable( const char description ) { - m_description = description; - } - - inline ParticleDataTable::ParticleDataTable( const ParticleDataTable& pdt){ - *this = pdt; - } - - inline ParticleDataTable::~ParticleDataTable(){} - - inline ParticleDataTable& ParticleDataTable::operator=( const - ParticleDataTable& - pdt) { - m_description = pdt.m_description; - m_data_table = pdt.m_data_table; - return *this; - } - - inline void ParticleDataTable::make_antiparticles_from_particles() { - ParticleDataTable new_data; - for ( ParticleDataTable::iterator p = begin(); p != end(); ++p ) { - ParticleData* pdata = p->second; - if ( pdata->charge() ) { - new_data.insert( new ParticleData( pdata->name()+"~", - -1*pdata->pdg_id(), - -1.*pdata->charge(), - pdata->mass(), - pdata->clifetime(), - pdata->spin() )); - } - } - merge_table( new_data ); - } - - inline void ParticleDataTable::print( std::ostream& ostr ) const { - // prints a summary of all particle Data currently in memory - // - ostr << "________________________________________" - << "________________________________________\n"; - ostr << "ParticleData: ***** ParticleDataTable" - << " ***** ( " << size() - << " entries )\n"; - ostr << " Description: " << m_description << "\n"; - ostr << " PDG ID " << " PARTICLE NAME " - << "CHARGE" << " MASS " - << " C*LIFETIME (CM) " << " SPIN\n"; - for ( std::map< int,ParticleData* >::const_iterator pd - = m_data_table.begin(); pd != m_data_table.end(); pd++ ) { - ostr << *(pd->second) << "\n"; - } - ostr << "________________________________________" - << "________________________________________" << std::endl; - } - - inline ParticleData* ParticleDataTable::find( int id ) const { - // finds a ParticleData pointer corresponding to id IF it exists in - // the table. If not returns NULL - std::map<int,ParticleData*>::const_iterator iter - = m_data_table.find(id); - return ( iter == m_data_table.end() ) ? 0 : iter->second; - } - - inline ParticleData* ParticleDataTable::operator[]( int id ) const { - return find(id); - } - - inline int ParticleDataTable::size() const { - return (int)m_data_table.size(); - } - - inline bool ParticleDataTable::empty() const { - return (bool)m_data_table.empty(); - } - - inline bool ParticleDataTable::insert( ParticleData* pdata ) { - // inserts pdata in the table IFF pdata's id has not already been used. - // It does NOT replace entries with the same id. True if successful. - // If you wish to overwrite another entry, first use erase() - if ( m_data_table.count(pdata->pdg_id()) ) return 0; - return ( m_data_table[pdata->pdg_id()] = pdata ); // true is success - } - - inline bool ParticleDataTable::erase( ParticleData* pdata ) { - // removes from table does not delete - // returns True is an entry pdata existed in the table and was erased - return (bool)m_data_table.erase( pdata->pdg_id() ); - } - - - inline bool ParticleDataTable::erase( int id ) { - // removes from table does not delete - // returns True is an entry pdata existed in the table and was erased - return (bool)m_data_table.erase( id ); - } - - inline ParticleDataTable::iterator ParticleDataTable::begin() { - return m_data_table.begin(); - } - - inline ParticleDataTable::iterator ParticleDataTable::end() { - return m_data_table.end(); - } - - inline ParticleDataTable::const_iterator ParticleDataTable::begin() const { - return m_data_table.begin(); - } - - inline ParticleDataTable::const_iterator ParticleDataTable::end() const { - return m_data_table.end(); - } - - inline std::string ParticleDataTable::description() const { - return m_description; - } - - inline void ParticleDataTable::set_description( std::string description ) { - m_description = description; - } - - inline void ParticleDataTable::set_description( const char description ) { - m_description = description; - } - - inline void ParticleDataTable::delete_all() { - // deletes all ParticleData instances in this table - for ( std::map<int,ParticleData*>::iterator pd = m_data_table.begin(); - pd != m_data_table.end(); pd++) delete pd->second; - clear(); - } - - inline void ParticleDataTable::clear() { m_data_table.clear(); } - - inline int ParticleDataTable::merge_table( const ParticleDataTable& pdt ) { - // merges pdt into this table - // each entry from pdt is inserted only if this table does not - // already have an entry matching the ParticleData's id - // returns the number of new entries inserted into this table. - int count_number_insertions =0; - for ( ParticleDataTable::const_iterator p = pdt.begin(); - p != pdt.end(); ++p ) { - if ( insert(p->second) ) ++count_number_insertions; - } - return count_number_insertions; - } - -} // HepMC - -#endif // HEPMC_PARTICLE_DATA_TABLE_H -//-------------------------------------------------------------------------- - - - diff --git a/GeneratorInterface/MCatNLOInterface/src/mcatnlo_hwlhin.f b/GeneratorInterface/MCatNLOInterface/src/mcatnlo_hwlhin.f deleted file mode 100644 index a6c2f5ebc52..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/mcatnlo_hwlhin.f +++ /dev/null @@ -1,1330 +0,0 @@ -C Collects all of the Les Houches interface routines, plus utilities -C for colour codes -C -C---------------------------------------------------------------------- - SUBROUTINE UPEVNT -C---------------------------------------------------------------------- -C Reads MC@NLO input files and fills Les Houches event common HEPEUP -C---------------------------------------------------------------------- - - -C INCLUDE 'HERWIG65.INC' - IMPLICIT NONE - DOUBLE PRECISION ZERO,ONE,TWO,THREE,FOUR,HALF - PARAMETER (ZERO =0.D0, ONE =1.D0, TWO =2.D0, - & THREE=3.D0, FOUR=4.D0, HALF=0.5D0) -C - DOUBLE PRECISION - & ACCUR,AFCH,ALPFAC,ALPHEM,ANOMSC,ASFIXD,AVWGT,B1LIM,BETAF,BRFRAC, - & BRHIG,BTCLM,CAFAC,CFFAC,CLDKWT,CLMAX,CLPOW,CLQ,CLSMR,CMMOM,COSS, - & COSTH,CSPEED,CTHRPW,CTMAX,DECPAR,DECWT,DISF,DKLTM,EBEAM1,EBEAM2, - & EMLST,EMMAX,EMMIN,EMPOW,EMSCA,ENHANC,ENSOF,EPOLN,ETAMIX,EVWGT, - & EXAG,F0MIX,F1MIX,F2MIX,GAMH,GAMMAX,GAMW,GAMWT,GAMZ,GAMZP,GCOEF, - & GEV2NB,GEV2MM,GPOLN,H1MIX,HBAR,HARDST,OMEGA0,PBEAM1,PBEAM2,PDIQK, - & PGSMX,PGSPL,PHEP,PHIMIX,PHIPAR,PHOMAS,PIFAC,PLTCUT,PPAR,PPOLN, - & PRECO,PRSOF,PSPLT,PTINT,PTMAX,PTMIN,PTPOW,PTRMS,PXRMS,PWT,Q2MAX, - & Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QCDL3,QCDL5,QCDLAM,QDIQK,QEV,QFCH,QG, - & QLIM,QSPAC,QV,QWT,REPWT,RESN,RHOHEP,RHOPAR,RLTIM,RMASS,RMIN, - & RSPIN,SCABI,SINS,SNGWT,SWEIN,SWTEF,SUD,THMAX,TLOUT,TMTOP,TMNISR, - & TQWT,VCKM,VFCH,VGCUT,VHEP,VMIN2,VPAR,VPCUT,VQCUT,VTXPIP,VTXQDK, - & WBIGST,WGTMAX,WGTSUM,WHMIN,WSQSUM,XFACT,XLMIN,XMIX,XMRCT,XX, - & XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YMIX,YMRCT,YWWMAX,YWWMIN,ZBINM, - & ZJMAX,ZMXISR,Y4JT,EFFMIN,PPCL, - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS,ZMXNSS,ZSGNSS,LFCH,RFCH,SLFCH,SRFCH, WMXUSS,WMXVSS,WSGNSS, - & QMIXSS,LMIXSS,THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS,GHZZSS,GHDDSS,GHUUSS,GHWHSS,GHSQSS -C--fix by PR 12/7/02 to avoid problems with nag compiler - DOUBLE PRECISION - & XLMNSS,RMMNSS,DMSSM,SENHNC,SSPARITY,LAMDA1,LAMDA2,LAMDA3, - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3, - & OMHMIX,ET2MIX,PH3MIX,GCUTME -C - INTEGER - & CLDIR,IAPHIG,IBRN,IBSH,ICHRG,ICO,IDCMF,IDHEP,IDHW,IDK,IDKPRD,IDN, - & IDPAR,IDPDG,IERROR,IFLAV,IFLMAX,IFLMIN,IHPRO,IMQDK,INHAD,INTER, - & IOPDKL,IOPHIG,IOPREM,IPART1,IPART2,IPRINT,IPRO,IPROC,ISLENT, - & ISPAC,ISTAT,ISTHEP,ISTPAR,JCOPAR,JDAHEP,JDAPAR,JMOHEP,JMOPAR, - & JNHAD,LNEXT,LOCN,LOCQ,LRSUD,LSTRT,LWEVT,LWSUD,MAPQ,MAXER,MAXEV, - & MAXFL,MAXPR,MODBOS,MODMAX,MODPDF,NBTRY,NCLDK,NCOLO,NCTRY,NDKYS, - & NDTRY,NETRY,NEVHEP,NEVPAR,NFLAV,NGSPL,NHEP,NME,NMODES,NMXCDK, - & NMXDKS,NMXHEP,NMXJET,NMXMOD,NMXPAR,NMXQDK,NMXRES,NMXSUD,NPAR, - & NPRODS,NQDK,NQEV,NRES,NRN,NSPAC,NSTRU,NSTRY,NSUD,NUMER,NUMERU, - & NWGTS,NZBIN,SUDORD,IOP4JT,HRDCOL,NMXCL,NCL,IDCL,NPRFMT,NRECO -C - LOGICAL - & AZSOFT,AZSPIN,BGSHAT,BREIT,CLRECO,COLISR,DKPSET,FROST,FSTEVT, - & FSTWGT,GENEV,GENSOF,HARDME,HVFCEN,MAXDKL,MIXING,NOSPAC,NOWGT, - & PRNDEC,PIPSMR,PRVTX,RSTAB,SOFTME,TMPAR,TPOL,USECMF,VTOCDK,VTORDK, - & ZPRIME,RPARTY,COLUPD,PRNDEF,PRNTEX,PRNWEB,DURHAM,SUSYIN, - & QORQQB,QBORQQ -C - CHARACTER*4 - & BDECAY - CHARACTER*8 - & PART1,PART2,RNAME - CHARACTER*20 - & AUTPDF - CHARACTER*37 - & TXNAME -C -C New standard event common - PARAMETER (NMXHEP=4000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -C -C Beams, process and number of events - COMMON/HWBEAM/IPART1,IPART2 - COMMON/HWBMCH/PART1,PART2 - COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV -C -C Basic parameters (and quantities derived from them) - COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, - & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, - & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, - & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, - & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, - & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, - & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, - & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, - & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, - & PRNDEF,PRNTEX,PRNWEB -C - COMMON/HWPRCH/AUTPDF(2),BDECAY -C -C Parton shower common (same format as /HEPEVT/) - PARAMETER (NMXPAR=500) - COMMON/HWPART/NEVPAR,NPAR,ISTPAR(NMXPAR),IDPAR(NMXPAR), - & JMOPAR(2,NMXPAR),JDAPAR(2,NMXPAR),PPAR(5,NMXPAR),VPAR(4,NMXPAR) -C -C Parton polarization common - COMMON/HWPARP/DECPAR(2,NMXPAR),PHIPAR(2,NMXPAR),RHOPAR(2,NMXPAR), - & TMPAR(NMXPAR) -C -C Electroweak boson common - PARAMETER (MODMAX=50) - COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP), - & IOPHIG,MODBOS(MODMAX) -C -C Parton colour common - COMMON/HWPARC/JCOPAR(4,NMXPAR) -C -C other HERWIG branching, event and hard subprocess common blocks - COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD, - & NSPAC(7),ISLENT,BREIT,FROST,USECMF -C - COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, - & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, - & NUMERU,NWGTS,GENSOF -C - COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST, - & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS, - & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, - & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX, - & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH, - & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL, - & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM -C -C Arrays for particle properties (NMXRES = max no of particles defined) - PARAMETER(NMXRES=500) - COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES), - & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES, - & VTOCDK(0:NMXRES),VTORDK(0:NMXRES), - & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) -C - COMMON/HWUNAM/RNAME(0:NMXRES),TXNAME(2,0:NMXRES) -C -C Arrays for particle decays (NMXDKS = max total no of decays, -C NMXMOD = max no of modes for a particle) - PARAMETER(NMXDKS=4000,NMXMOD=200) - COMMON/HWUPDT/BRFRAC(NMXDKS),CMMOM(NMXDKS),DKLTM(NMXRES), - & IDK(NMXDKS),IDKPRD(5,NMXDKS),LNEXT(NMXDKS),LSTRT(NMXRES),NDKYS, - & NME(NMXDKS),NMODES(NMXRES),NPRODS(NMXDKS),DKPSET,RSTAB(0:NMXRES) -C -C Weights used in cluster decays - COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12), - & SWTEF(NMXRES) -C -C Parameters for cluster decays (NMXCDK = max total no of cluster -C decay channels) - PARAMETER(NMXCDK=4000) - COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12), - & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO -C -C Variables controling mixing and vertex information -C--VTXPIP should have been a 5-vector, problems with NAG compiler - COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(5),XMIX(2), - & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR -C -C Arrays for temporarily storing heavy-b,c-hadrons decaying partonicaly -C (NMXQDK = max no such decays in an event) - PARAMETER (NMXQDK=20) - COMMON/HWQDKS/VTXQDK(4,NMXQDK),IMQDK(NMXQDK),LOCQ(NMXQDK),NQDK -C -C Parameters for Sudakov form factors -C (NMXSUD= max no of entries in lookup table) - PARAMETER (NMXSUD=1024) - COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD, - & SUDORD -C - PARAMETER (NMXJET=200) -C -C SUSY parameters - COMMON/HWSUSY/ - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16), - & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2), - & QMIXSS(6,2,2),LMIXSS(6,2,2), - & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3), - & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN -C -C R-Parity violating parameters and colours - COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3), - & LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD -C -C Parameters for minimum bias/soft underlying event - COMMON/HWMINB/ - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 -C -C Cluster common used by soft event routines - PARAMETER (NMXCL=500) - COMMON/HWCLUS/PPCL(5,NMXCL),IDCL(NMXCL),NCL -C -C Parameters for resonant graviton production - DOUBLE PRECISION GRVLAM,EMGRV,GAMGRV - COMMON/HWGRAV/GRVLAM,EMGRV,GAMGRV -C -C Other new parameters for version 6.2 - DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH - LOGICAL WZRFR,FIX4JT - INTEGER IMSSM,IHIGGS,PARITY,LRSUSY - COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT, - & IMSSM,IHIGGS,PARITY,LRSUSY -C -C New parameters for version 6.203 - DOUBLE PRECISION ABWGT,ABWSUM,AVABW - INTEGER NNEGWT,NNEGEV - LOGICAL NEGWTS - COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS -C -C New parameters for version 6.3 - INTEGER IMAXCH,IMAXOP - PARAMETER (IMAXCH=20,IMAXOP=40) - DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH) - INTEGER IOPSTP,IOPSH - LOGICAL OPTM,CHON(IMAXCH) - COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON -C New PDF's for version 6.3 - INTEGER NXMRS,NQMRS,NPMRS - PARAMETER(NXMRS=49,NQMRS=37,NPMRS=8) - DOUBLE PRECISION FMRS(3,NPMRS,NXMRS,NQMRS+1) - COMMON /HWPMRS/FMRS -C Circe interface for version 6.3 - INTEGER CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH - COMMON /HWCIRC/CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH -C New parameters and commons for spin correlations -C--constants for the arrays - INTEGER NMXSPN,NCFMAX - PARAMETER(NMXSPN=50,NCFMAX=3) - INTEGER NMODE2,NMODE3,NDIAGR,NMODEB,NMODE4 - PARAMETER(NMODE2=500,NMODE3=500,NDIAGR=8,NMODEB=50,NMODE4=4) -C--common block for X --> X gauge boson - DOUBLE PRECISION ABMODE(2,NMODEB),BBMODE(2,12,NMODEB), - & PBMODE(12,NMODEB),WTBMAX(12,NMODEB) - INTEGER IDBPRT(NMODEB),IBMODE(NMODEB),IBDRTP(NMODEB),NBMODE - COMMON /HWDSPB/ABMODE,BBMODE,PBMODE,WTBMAX,IDBPRT,IBDRTP,IBMODE, - & NBMODE -C--common block for two body decays - DOUBLE PRECISION A2MODE(2,NMODE2),P2MODE(NMODE2),WT2MAX(NMODE2) - INTEGER ID2PRT(NMODE2),I2DRTP(NMODE2),N2MODE - COMMON /HWDSP2/A2MODE,P2MODE,WT2MAX,ID2PRT,I2DRTP,N2MODE -C--common block for three body decays - DOUBLE PRECISION A3MODE(2,NDIAGR,NMODE3),B3MODE(2,NDIAGR,NMODE3), - & P3MODE(NMODE3),WT3MAX(NMODE3),SPN3CF(NCFMAX,NCFMAX,NMODE3) - INTEGER ID3PRT(NMODE3),I3MODE(NDIAGR,NMODE3), - & I3DRTP(NDIAGR,NMODE3),N3MODE,NDI3BY(NMODE3),N3NCFL(NMODE3), - & I3DRCF(NDIAGR,NMODE3) - COMMON /HWDSP3/A3MODE,B3MODE,P3MODE,WT3MAX,SPN3CF,ID3PRT,I3MODE, - & I3DRTP,N3MODE,NDI3BY,N3NCFL,I3DRCF -C--common block for four body decays - DOUBLE PRECISION A4MODE(2,12,NMODE4),B4MODE(2,12,NMODE4), - & P4MODE(12,12,NMODE4),WT4MAX(12,12,NMODE4) - INTEGER ID4PRT(NMODE4),I4MODE(2,NMODE4),N4MODE - COMMON /HWDSP4/A4MODE,B4MODE,P4MODE,WT4MAX,ID4PRT,I4MODE,N4MODE -C--common block for spin correlations in event - INTEGER NDECSY,NSEARCH,LRDEC,LWDEC - LOGICAL SYSPIN,THREEB,FOURB - CHARACTER *6 TAUDEC - COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB, - & FOURB,TAUDEC -C - INTEGER IDSPN(NMXSPN),JMOSPN(NMXSPN),JDASPN(2,NMXSPN),NSPN, - & ISNHEP(NMXHEP),NSNTRY,NCFL(NMXSPN),SPCOPT - DOUBLE COMPLEX MESPN(2,2,2,2,NCFMAX,NMXSPN),RHOSPN(2,2,NMXSPN) - DOUBLE PRECISION SPNCFC(NCFMAX,NCFMAX,NMXSPN) - LOGICAL DECSPN(NMXSPN) - COMMON /HWSPIN/MESPN,RHOSPN,SPNCFC,IDSPN,JMOSPN,JDASPN, - & NSPN,ISNHEP,NSNTRY,DECSPN,NCFL,SPCOPT - INTEGER JAK1,JAK2,ITDKRC,IFPHOT - COMMON /HWSTAU/ JAK1,JAK2,ITDKRC,IFPHOT -C -C--common block for Les Houches interface to store information we need -C - INTEGER MAXHRP - PARAMETER (MAXHRP=100) - DOUBLE PRECISION LHWGT(MAXHRP),LHWGTS(MAXHRP),LHMXSM, - & LHXSCT(MAXHRP),LHXERR(MAXHRP),LHXMAX(MAXHRP) - INTEGER LHIWGT(MAXHRP),ITYPLH,LHNEVT(MAXHRP) - LOGICAL LHSOFT,LHGLSF - COMMON /HWGUPR/LHWGT,LHWGTS,LHXSCT,LHXERR,LHXMAX,LHMXSM,LHIWGT, - & LHNEVT,ITYPLH,LHSOFT,LHGLSF -C -C--common block for HERWIG6.5 -C - LOGICAL PRESPL - COMMON /HW6500/ PRESPL - INTEGER ITOPRD - COMMON /HW6504/ITOPRD -C--the only change for 6505 was to increase MODMAX from 5 to 50 - DOUBLE PRECISION PDFX0,PDFPOW - COMMON /HW6506/PDFX0,PDFPOW -C--add new variable to prevent infinite loops in HWDFOR/FIV - INTEGER NDETRY - COMMON /HW6510/NDETRY -C------------------------------------------------------------------- - - -C---Les Houches Event Common Block - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP, - & XMP2,XMA2,XMB2,BETA,VA,VB,SIGMA,DELTA,S2,XKA,XKB,PTF,E,PL - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, - & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), - & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), - & SPINUP(MAXNUP) - DOUBLE PRECISION PCM(5),PTR,XMTR,HWVDOT,HWULDO,PDB(5) - INTEGER I,J,IC,JPR,MQQ,NQQ,IUNIT,ISCALE,I1HPRO,IBOS,NP,IG, - & ILEP,ID,IA,IB,ICOL4(4,4),ICOL5(5,18),JJPROC,IVHVEC,IVHLEP,MUP - PARAMETER (IUNIT=61) - LOGICAL BOPRO,NODEC,REMIT - COMMON/NQQCOM/MQQ,NQQ - COMMON/VHLIN/IVHVEC,IVHLEP -C---Colour flows for heavy quark pair production - DATA ICOL4/ - & 10,02,10,02,01,20,20,01,12,23,10,03,12,31,30,02/ - DATA ICOL5/ - & 10,02,13,30,02, 10,02,32,10,03, - & 10,21,30,20,03, 10,23,20,10,03, - & 01,20,23,30,01, 01,20,31,20,03, - & 01,23,03,20,01, 01,12,03,30,02, - & 12,20,30,10,03, 12,30,10,30,02, - & 12,03,02,10,03, 12,01,03,30,02, - & 12,23,14,40,03, 12,34,32,10,04, - & 12,23,43,10,04, 12,31,34,40,02, - & 12,34,14,30,02, 12,31,42,30,04/ - IF (IERROR.NE.0) RETURN -C---READ AN EVENT - - IF(NQQ.GE.MQQ)CALL HWWARN('UPEVNT',201,*999) - READ(IUNIT,901) I1HPRO,IC,NP - READ(IUNIT,902) (IDUP(I),I=1,NP) - READ(IUNIT,903) XWGTUP -C---Les Houches expects mean weight to be the cross section in pb - XWGTUP= XWGTUP*MQQ - READ(IUNIT,904) ((PUP(J,I),J=1,4),I=1,NP) - NQQ=NQQ+1 -C---Input format is now (px,py,pz,m) - DO I=1,NP - E=SQRT(HWVDOT(4,PUP(1,I),PUP(1,I))) - PUP(5,I)=PUP(4,I) - PUP(4,I)=E - ENDDO - CALL HWVSUM(4,PUP(1,1),PUP(1,2),PCM) - CALL HWUMAS(PCM) -C---REMIT MEANS A REAL PARTON EMISSION OCCURRED - REMIT=PUP(4,3).NE.ZERO -C---NODEC MEANS DECAYS NOT YET DONE - NODEC=NP.EQ.5 - NUP=NP -C---CHECK PROCESS CODE - JJPROC=MOD(ABS(IPROC),10000) - JPR=JJPROC/100 - BOPRO=JPR.EQ.13.OR.JPR.EQ.14.OR.JPR.EQ.16.OR.JPR.EQ.36 - IF (BOPRO) THEN -C---------------------------------------------------------------------- -C SINGLE GAUGE OR HIGGS BOSON PRODUCTION -C B = Z/gamma, W or H (SM or any MSSM neutral Higgs) -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> g B -C 402 q g -> q B -C 403 qbar q -> g B -C 404 qbar g -> qbar B -C 405 g q -> q B -C 406 g qbar -> qbar B -C 407 g g -> g B -C----------------------------------------------------------------------- -C---NODEC=.TRUE. FOR HIGGS AND UNDECAYED EW BOSON - NODEC=NP.EQ.4 - IHPRO=I1HPRO-400 - ISCALE=0 - IF(JPR.EQ.16)ISCALE=2 - ELSEIF (JPR.EQ.17.OR.JPR.EQ.20) THEN -C---------------------------------------------------------------------- -C HEAVY Q and/or QBAR PRODUCTION -C IPROC=-1705,-1706 for Q=b,t -C IPROC=-2000 for single top -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> g Q Qbar -C 402 q g -> q Q Qbar -C 403 qbar q -> g Q Qbar -C 404 qbar g -> qbar Q Qbar -C 405 g q -> q Q Qbar -C 406 g qbar -> qbar Q Qbar -C 407 g g -> g Q Qbar -C 408 q q -> g t q -C 409 qbar qbar -> g tbar qbar -C----------------------------------------------------------------------- -C IC SPECIFIES THE COLOUR CONNECTION (NOW IN INPUT FILE) -C----------------------------------------------------------------------- -C---SET IHPRO AS FOR DIRECT PHOTON (IPROC=1800) - IHPRO=I1HPRO-360 - ISCALE=0 - IF(ABS(IPROC).EQ.1705.OR.ABS(IPROC).EQ.11705)ISCALE=5 - ELSEIF (JPR.EQ.28) THEN -C---------------------------------------------------------------------- -C GAUGE BOSON PAIR PRODUCTION -C VV=WW,ZZ,ZW+,ZW- FOR IPROC=-2850,-2860,-2870,-2880 -C----------------------------------------------------------------------- -C I1HPRO IDENTIFIES THE PARTONIC SUBPROCESS, WITH THE FOLLOWING CONVENTIONS: -C I1HPRO PROCESS -C 401 q qbar -> g V V -C 402 q g -> q V V -C 403 qbar q -> g V V -C 404 qbar g -> qbar V V -C 405 g q -> q V V -C 406 g qbar -> qbar V V -C----------------------------------------------------------------------- - IHPRO=I1HPRO-400 - ISCALE=0 - ELSEIF (JPR.EQ.26.OR.JPR.EQ.27) THEN -C---------------------------------------------------------------------- -C GAUGE BOSON PLUS HIGGS PRODUCTION -C VH=WH,ZH FOR IPROC=-2600-ID,-2700-ID -C WHERE ID CONTROLS HIGGS DECAY AS IN STANDARD HERWIG -C----------------------------------------------------------------------- - IHPRO=I1HPRO-400 - ISCALE=0 - ELSE - CALL HWWARN('UPEVNT',202,*999) - ENDIF -C---HARD SCALE - SCALUP=PCM(5) - IF (REMIT) THEN - IF (ISCALE.EQ.0) THEN - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - SCALUP=PCM(5)-2.*PTR - ELSEIF(ISCALE.EQ.1)THEN - SCALUP=PCM(5) - ELSEIF (ISCALE.EQ.2) THEN - SCALUP=SQRT(PUP(1,3)**2+PUP(2,3)**2) - ELSEIF (ISCALE.EQ.3.OR.ISCALE.EQ.4.OR.ISCALE.EQ.5) THEN - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - IA=4 - IB=5 - XMP2=PUP(5,3)**2 - XMA2=PUP(5,IA)**2 - XMB2=PUP(5,IB)**2 - S2=XMA2+XMB2+2*HWULDO(PUP(1,IA),PUP(1,IB)) - SIGMA=XMA2+XMB2 - DELTA=XMA2-XMB2 - BETA=SQRT(1-2*SIGMA/S2+(DELTA/S2)**2) - VA=BETA/(1+DELTA/S2) - VB=BETA/(1-DELTA/S2) - XKA=HWULDO(PUP(1,3),PUP(1,IA)) - XKB=HWULDO(PUP(1,3),PUP(1,IB)) - E=(XKA+XKB)/SQRT(S2) - PL=-2.0/((VA+VB)*BETA*SQRT(S2))*(VA*XKA-VB*XKB) - PTF=E**2-PL**2-XMP2 - IF (PTF.LE.ZERO) CALL HWWARN('UPEVNT',103,*999) - PTF=SQRT(PTF) - IF(ISCALE.EQ.3)THEN - SCALUP=PCM(5)-2.*MIN(PTR,PTF) - ELSEIF(ISCALE.EQ.4)THEN - SCALUP=MIN(PTR,PTF) - ELSE - SCALUP=(MIN(PTR,PTF))**2+(XMA2+XMB2)/2.D0 - SCALUP=SQRT(SCALUP) - ENDIF - IF (SCALUP.LE.ZERO) CALL HWWARN('UPEVNT',100,*999) - ELSEIF (ISCALE.EQ.6) THEN - XMTR=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2) - PTR=SQRT(PUP(1,3)**2+PUP(2,3)**2) - SCALUP=PCM(5)-PTR-XMTR - IF (SCALUP.LE.ZERO) CALL HWWARN('UPEVNT',100,*999) - ELSEIF (ISCALE.EQ.7) THEN - SCALUP=SQRT(PUP(5,4)**2+PUP(1,4)**2+PUP(2,4)**2) - ELSE - CALL HWWARN('UPEVNT',501,*999) - ENDIF - ELSE - NUP=NUP-1 - ENDIF -C---INITIAL STATE - DO I=1,2 - ISTUP(I)=-1 - MOTHUP(1,I)=0 - MOTHUP(2,I)=0 - ENDDO -C---FINAL STATE - DO I=3,NUP - ISTUP(I)=1 - MOTHUP(1,I)=1 - MOTHUP(2,I)=2 - ENDDO - IF (BOPRO.AND.NODEC) THEN -C---SINGLE BOSON (UNDECAYED) - IF (REMIT) THEN -C---SET COLOUR CONNECTIONS - DO I=1,3 - ICOLUP(1,I)=501 - ICOLUP(2,I)=502 - ENDDO - IF (IHPRO.EQ.1) THEN - ICOLUP(2,1)=0 - ICOLUP(1,2)=0 - ELSEIF (IHPRO.EQ.2) THEN - ICOLUP(1,1)=502 - ICOLUP(2,1)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.3) THEN - ICOLUP(1,1)=0 - ICOLUP(2,2)=0 - ELSEIF (IHPRO.EQ.4) THEN - ICOLUP(1,1)=0 - ICOLUP(2,1)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.5) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.6) THEN - ICOLUP(1,2)=0 - ICOLUP(2,2)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.7) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=503 - ICOLUP(2,3)=503 - ELSE - CALL HWWARN('UPEVNT',101,*999) - ENDIF - ELSE - CALL HWVEQU(5,PUP(1,4),PUP(1,3)) -C---SET COLOUR CONNECTIONS - DO I=1,2 - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - IF (IDUP(1).GT.0) THEN - ICOLUP(1,1)=501 - ICOLUP(2,2)=501 - IF (IDUP(1).GT.0) THEN -C---GG FUSION - ICOLUP(2,1)=502 - ICOLUP(1,2)=502 - ENDIF - ELSE -C---QBAR Q - ICOLUP(2,1)=501 - ICOLUP(1,2)=501 - ENDIF - ENDIF - ICOLUP(1,NUP)=0 - ICOLUP(2,NUP)=0 -C---LOAD BOSON ID - IF (JPR.EQ.13) THEN - IDUP(NUP)=23 - ELSEIF (JPR.EQ.16) THEN - IDUP(NUP)=25 - ELSEIF (JPR.EQ.36) THEN - IBOS=MOD(JJPROC,100) - IF (IBOS.EQ.10) THEN - IDUP(NUP)=26 - ELSEIF (IBOS.EQ.20) THEN - IDUP(NUP)=35 - ELSEIF (IBOS.EQ.30) THEN - IDUP(NUP)=36 - ELSE - CALL HWWARN('UPEVNT',502,*999) - ENDIF - ELSEIF (JPR.EQ.14) THEN - IBOS=0 - DO I=1,NUP-1 - ID=IDUP(I) - IF (ID.EQ.21) THEN - IC=0 - ELSEIF (ID.GT.0) THEN - IC=ICHRG(ID) - ELSE - IC=ICHRG(6-ID) - ENDIF - IBOS=IBOS+IC - ENDDO - IF (REMIT) IBOS=IBOS-2*IC - IF (ABS(IBOS).NE.3) CALL HWWARN('UPEVNT',503,*999) - IDUP(NUP)=8*IBOS - ENDIF - ELSEIF (JPR.EQ.17) THEN -C---HEAVY QUARKS - IF (REMIT) THEN -C---3-BODY FINAL STATE -C---SET COLOUR CONNECTIONS - IF (IC.LE.18) THEN - DO I=1,5 - CALL UPCODE(ICOL5(I,IC),ICOLUP(1,I)) - ENDDO - ELSE - CALL HWWARN('UPEVNT',105,*999) - ENDIF - ELSE -C---2-BODY FINAL STATE - IDUP(3)=IDUP(4) - IDUP(4)=IDUP(5) - CALL HWVEQU(5,PUP(1,4),PUP(1,3)) - CALL HWVEQU(5,PUP(1,5),PUP(1,4)) -C---SET COLOUR CONNECTIONS - IF (IC.LE.4) THEN - DO I=1,4 - CALL UPCODE(ICOL4(I,IC),ICOLUP(1,I)) - ENDDO - ELSE - CALL HWWARN('UPEVNT',104,*999) - ENDIF - ENDIF - ELSEIF (JPR.EQ.20) THEN -C---SINGLE TOP: IA,IB ARE THE QUARKS THAT ARE COLOUR CONNECTED -C I.E. (FOR H EVENTS) THOSE THAT ARE NOT CONNECTED TO GLUON - IA=IC/10 - IB=IC-10*IA - IF (IA.LT.1.OR.IA.GT.5) CALL HWWARN('UPEVNT',108,*999) - IF (IB.LT.1.OR.IB.GT.5) CALL HWWARN('UPEVNT',109,*999) - IF (IA.EQ.IB) CALL HWWARN('UPEVNT',110,*999) - DO I=1,5 - IF (I.EQ.IA.OR.I.EQ.IB) THEN - IF (IDUP(I).GT.0) THEN - ICOLUP(1,I)=501 - ICOLUP(2,I)=0 - ELSE - ICOLUP(1,I)=0 - ICOLUP(2,I)=501 - ENDIF - ELSEIF (IDUP(I).EQ.21) THEN - IG=I - ICOLUP(1,I)=502 - ICOLUP(2,I)=503 - ELSEIF (IDUP(I).GT.0) THEN - ICOLUP(1,I)=502 - ICOLUP(2,I)=0 - ELSE - ICOLUP(1,I)=0 - ICOLUP(2,I)=502 - ENDIF - ENDDO - IF (REMIT) THEN -C---3-BODY FINAL STATE -C---COMPLETE GLUON COLOUR CONNECTIONS - DO I=1,5 - IF (I.NE.IA.AND.I.NE.IB.AND.I.NE.IG) THEN - IF (IDUP(I).GT.0) THEN - IF((I.LT.3.AND.IG.LT.3) - & .OR.(I.GT.2.AND.IG.GT.2)) ICOLUP(1,I)=503 - ELSE - IF((I.LT.3.AND.IG.GT.2) - & .OR.(I.GT.2.AND.IG.LT.3)) ICOLUP(2,I)=503 - ENDIF - ENDIF - ENDDO - ELSE -C---2-BODY FINAL STATE - IDUP(3)=IDUP(4) - IDUP(4)=IDUP(5) - ICOLUP(1,3)=ICOLUP(1,4) - ICOLUP(2,3)=ICOLUP(2,4) - ICOLUP(1,4)=ICOLUP(1,5) - ICOLUP(2,4)=ICOLUP(2,5) - CALL HWVEQU(5,PUP(1,4),PUP(1,3)) - CALL HWVEQU(5,PUP(1,5),PUP(1,4)) - ENDIF - ELSE -C---BOSON PAIR OR LEPTON PAIR - IF (BOPRO.OR.NODEC) THEN - NUP=6 - DO I=6,5,-1 - CALL HWVEQU(5,PUP(1,I-1),PUP(1,I)) - IDUP(I)=IDUP(I-1) - ISTUP(I)=1 - ENDDO - ELSE -C---BOSON PAIR: ONE OR BOTH DECAYED -C---ADD BOSON(S) TO EVENT RECORD - IF (ABS(IDUP(6)).LT.20) THEN - NUP=8 - I=2 - IF (ABS(IDUP(4)).LT.20) THEN - NUP=10 - I=3 - ENDIF - MUP=NUP-1 - CALL HWVEQU(5,PUP(1,MUP-I),PUP(1,MUP)) - CALL HWVEQU(5,PUP(1,NUP-I),PUP(1,NUP)) - CALL HWVSUM(4,PUP(1,MUP),PUP(1,NUP),PUP(1,6)) - CALL HWUMAS(PUP(1,6)) - IDUP(MUP)=IDUP(MUP-I) - IDUP(NUP)=IDUP(NUP-I) - ISTUP(MUP)=1 - ISTUP(NUP)=1 - MOTHUP(1,MUP)=6 - MOTHUP(2,MUP)=6 - MOTHUP(1,NUP)=6 - MOTHUP(2,NUP)=6 - ISTUP(6)=2 - ID=IDUP(MUP)+IDUP(NUP) - IF (ID.EQ.0) THEN - IDUP(6)=23 - ELSEIF (ABS(ID).EQ.1) THEN - IDUP(6)=24*ID - ELSE - CALL HWWARN('UPEVNT',106,*999) - ENDIF - ENDIF - IF (ABS(IDUP(4)).LT.20) THEN - CALL HWVZRO(4,PDB) - DO I=8,7,-1 - CALL HWVEQU(5,PUP(1,I-3),PUP(1,I)) - CALL HWVSUM(4,PUP(1,I),PDB,PDB) - IDUP(I)=IDUP(I-3) - ISTUP(I)=1 - MOTHUP(1,I)=5 - MOTHUP(2,I)=5 - ENDDO - CALL HWUMAS(PDB) - CALL HWVEQU(5,PDB,PUP(1,5)) - ISTUP(5)=2 - ID=IDUP(7)+IDUP(8) - IF (ID.EQ.0) THEN - IDUP(5)=23 - ELSEIF (ABS(ID).EQ.1) THEN - IDUP(5)=24*ID - ELSE - CALL HWWARN('UPEVNT',107,*999) - ENDIF - ELSE - CALL HWVEQU(5,PUP(1,4),PUP(1,5)) - IDUP(5)=IDUP(4) - ISTUP(5)=1 - MOTHUP(1,5)=4 - MOTHUP(2,5)=4 - ENDIF - ENDIF -C---ADD DIBOSON OR DILEPTON TO EVENT RECORD (TO FIX ITS MASS) - CALL HWVZRO(4,PDB) - DO I=6,5,-1 - CALL HWVSUM(4,PUP(1,I),PDB,PDB) - MOTHUP(1,I)=4 - MOTHUP(2,I)=4 - ENDDO - CALL HWUMAS(PDB) - CALL HWVEQU(5,PDB,PUP(1,4)) - ISTUP(4)=2 - IDUP(4)=0 - IF (REMIT) THEN -C---SET COLOUR CONNECTIONS - DO I=1,3 - ICOLUP(1,I)=501 - ICOLUP(2,I)=502 - ENDDO - IF (IHPRO.EQ.1) THEN - ICOLUP(2,1)=0 - ICOLUP(1,2)=0 - ELSEIF (IHPRO.EQ.2) THEN - ICOLUP(1,1)=502 - ICOLUP(2,1)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.3) THEN - ICOLUP(1,1)=0 - ICOLUP(2,2)=0 - ELSEIF (IHPRO.EQ.4) THEN - ICOLUP(1,1)=0 - ICOLUP(2,1)=501 - ICOLUP(1,3)=0 - ELSEIF (IHPRO.EQ.5) THEN - ICOLUP(1,2)=502 - ICOLUP(2,2)=0 - ICOLUP(2,3)=0 - ELSEIF (IHPRO.EQ.6) THEN - ICOLUP(1,2)=0 - ICOLUP(2,2)=501 - ICOLUP(1,3)=0 - ELSE - CALL HWWARN('UPEVNT',102,*999) - ENDIF - DO I=4,NUP - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - ELSE - DO I=5,NUP - CALL HWVEQU(5,PUP(1,I),PUP(1,I-2)) - IDUP(I-2)=IDUP(I) - ISTUP(I-2)=ISTUP(I) - MOTHUP(1,I-2)=MOTHUP(1,I)-2 - MOTHUP(2,I-2)=MOTHUP(1,I)-2 - ENDDO - MOTHUP(1,3)=1 - MOTHUP(1,4)=1 - NUP=NUP-2 -C---SET COLOUR CONNECTIONS - DO I=1,NUP - ICOLUP(1,I)=0 - ICOLUP(2,I)=0 - ENDDO - IF (IDUP(1).GT.0) THEN - ICOLUP(1,1)=501 - ICOLUP(2,2)=501 - ELSE - ICOLUP(2,1)=501 - ICOLUP(1,2)=501 - ENDIF - ENDIF - IF (BOPRO) THEN -C---DILEPTON PRODUCTION - IBOS=MOD(JJPROC,100) - ILEP=MOD(JJPROC,10) - IBOS=IBOS-ILEP -C---LOAD LEPTON AND BOSON ID - I=NUP-1 - J=NUP - IF ( IBOS.EQ.50 .OR. - # (IBOS.EQ.60.AND.JPR.EQ.13) .OR. - # (IBOS.EQ.70.AND.JPR.EQ.13) ) THEN - IDUP(I)=-ILEP-10 - IDUP(J)=-IDUP(I) - IF (REMIT) IDUP(4)=23 - ELSEIF (IBOS.EQ.60.AND.JPR.EQ.14) THEN - IDUP(I)=-9-2*ILEP - IDUP(J)=1-IDUP(I) - IF (REMIT) IDUP(4)=24 - ELSEIF (IBOS.EQ.70.AND.JPR.EQ.14) THEN - IDUP(I)=-10-2*ILEP - IDUP(J)=-1-IDUP(I) - IF (REMIT) IDUP(4)=-24 - ELSE - CALL HWWARN('UPEVNT',504,*999) - ENDIF - ENDIF - ENDIF - 999 CONTINUE - IF(IERROR.LT.100) RETURN - PRINT * - DO I=1,NUP - PRINT '(4I4,3F8.2)',IDUP(I),ISTUP(I),(ICOLUP(J,I),J=1,2), - & (PUP(J,I),J=1,3) - ENDDO -c IPR, IC, NP - 901 FORMAT(1X,I3,2(1X,I2)) -c (ID(I),I=1,NP) - 902 FORMAT(7(1X,I3)) -c XEVWGT - 903 FORMAT(1X,D14.8) -c ((P(J,I),J=1,4),I=1,NP) - 904 FORMAT(28(1X,D14.8)) -c 901 FORMAT(1X,I3,4(1X,I2)) -c 902 FORMAT(1X,D14.8) -c 903 FORMAT(16(1X,D14.8)) - END -C---------------------------------------------------------------------- - SUBROUTINE UPCODE(ICODE,ICOL) -C--DECODES COLOUR CONNECTIONS -C---------------------------------------------------------------------- - IMPLICIT NONE - INTEGER ICODE,ICOL(2) - ICOL(1)=ICODE/10 - IF (ICOL(1).NE.0) ICOL(1)=ICOL(1)+500 - ICOL(2)=MOD(ICODE,10) - IF (ICOL(2).NE.0) ICOL(2)=ICOL(2)+500 - END -C---------------------------------------------------------------------- - SUBROUTINE UPINIT -C---------------------------------------------------------------------- -C Reads MC@NLO input headers and fills Les Houches run common HEPRUP -C---------------------------------------------------------------------- -C INCLUDE 'HERWIG65.INC' - - IMPLICIT NONE - DOUBLE PRECISION ZERO,ONE,TWO,THREE,FOUR,HALF - PARAMETER (ZERO =0.D0, ONE =1.D0, TWO =2.D0, - & THREE=3.D0, FOUR=4.D0, HALF=0.5D0) -C - DOUBLE PRECISION - & ACCUR,AFCH,ALPFAC,ALPHEM,ANOMSC,ASFIXD,AVWGT,B1LIM,BETAF,BRFRAC, - & BRHIG,BTCLM,CAFAC,CFFAC,CLDKWT,CLMAX,CLPOW,CLQ,CLSMR,CMMOM,COSS, - & COSTH,CSPEED,CTHRPW,CTMAX,DECPAR,DECWT,DISF,DKLTM,EBEAM1,EBEAM2, - & EMLST,EMMAX,EMMIN,EMPOW,EMSCA,ENHANC,ENSOF,EPOLN,ETAMIX,EVWGT, - & EXAG,F0MIX,F1MIX,F2MIX,GAMH,GAMMAX,GAMW,GAMWT,GAMZ,GAMZP,GCOEF, - & GEV2NB,GEV2MM,GPOLN,H1MIX,HBAR,HARDST,OMEGA0,PBEAM1,PBEAM2,PDIQK, - & PGSMX,PGSPL,PHEP,PHIMIX,PHIPAR,PHOMAS,PIFAC,PLTCUT,PPAR,PPOLN, - & PRECO,PRSOF,PSPLT,PTINT,PTMAX,PTMIN,PTPOW,PTRMS,PXRMS,PWT,Q2MAX, - & Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QCDL3,QCDL5,QCDLAM,QDIQK,QEV,QFCH,QG, - & QLIM,QSPAC,QV,QWT,REPWT,RESN,RHOHEP,RHOPAR,RLTIM,RMASS,RMIN, - & RSPIN,SCABI,SINS,SNGWT,SWEIN,SWTEF,SUD,THMAX,TLOUT,TMTOP,TMNISR, - & TQWT,VCKM,VFCH,VGCUT,VHEP,VMIN2,VPAR,VPCUT,VQCUT,VTXPIP,VTXQDK, - & WBIGST,WGTMAX,WGTSUM,WHMIN,WSQSUM,XFACT,XLMIN,XMIX,XMRCT,XX, - & XXMIN,YBMAX,YBMIN,YJMAX,YJMIN,YMIX,YMRCT,YWWMAX,YWWMIN,ZBINM, - & ZJMAX,ZMXISR,Y4JT,EFFMIN,PPCL, - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS,ZMXNSS,ZSGNSS,LFCH,RFCH,SLFCH,SRFCH, WMXUSS,WMXVSS,WSGNSS, - & QMIXSS,LMIXSS,THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS,GHZZSS,GHDDSS,GHUUSS,GHWHSS,GHSQSS -C--fix by PR 12/7/02 to avoid problems with nag compiler - DOUBLE PRECISION - & XLMNSS,RMMNSS,DMSSM,SENHNC,SSPARITY,LAMDA1,LAMDA2,LAMDA3, - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3, - & OMHMIX,ET2MIX,PH3MIX,GCUTME -C - INTEGER - & CLDIR,IAPHIG,IBRN,IBSH,ICHRG,ICO,IDCMF,IDHEP,IDHW,IDK,IDKPRD,IDN, - & IDPAR,IDPDG,IERROR,IFLAV,IFLMAX,IFLMIN,IHPRO,IMQDK,INHAD,INTER, - & IOPDKL,IOPHIG,IOPREM,IPART1,IPART2,IPRINT,IPRO,IPROC,ISLENT, - & ISPAC,ISTAT,ISTHEP,ISTPAR,JCOPAR,JDAHEP,JDAPAR,JMOHEP,JMOPAR, - & JNHAD,LNEXT,LOCN,LOCQ,LRSUD,LSTRT,LWEVT,LWSUD,MAPQ,MAXER,MAXEV, - & MAXFL,MAXPR,MODBOS,MODMAX,MODPDF,NBTRY,NCLDK,NCOLO,NCTRY,NDKYS, - & NDTRY,NETRY,NEVHEP,NEVPAR,NFLAV,NGSPL,NHEP,NME,NMODES,NMXCDK, - & NMXDKS,NMXHEP,NMXJET,NMXMOD,NMXPAR,NMXQDK,NMXRES,NMXSUD,NPAR, - & NPRODS,NQDK,NQEV,NRES,NRN,NSPAC,NSTRU,NSTRY,NSUD,NUMER,NUMERU, - & NWGTS,NZBIN,SUDORD,IOP4JT,HRDCOL,NMXCL,NCL,IDCL,NPRFMT,NRECO -C - LOGICAL - & AZSOFT,AZSPIN,BGSHAT,BREIT,CLRECO,COLISR,DKPSET,FROST,FSTEVT, - & FSTWGT,GENEV,GENSOF,HARDME,HVFCEN,MAXDKL,MIXING,NOSPAC,NOWGT, - & PRNDEC,PIPSMR,PRVTX,RSTAB,SOFTME,TMPAR,TPOL,USECMF,VTOCDK,VTORDK, - & ZPRIME,RPARTY,COLUPD,PRNDEF,PRNTEX,PRNWEB,DURHAM,SUSYIN, - & QORQQB,QBORQQ -C - CHARACTER*4 - & BDECAY - CHARACTER*8 - & PART1,PART2,RNAME - CHARACTER*20 - & AUTPDF - CHARACTER*37 - & TXNAME -C -C New standard event common - PARAMETER (NMXHEP=4000) - COMMON/HEPEVT/NEVHEP,NHEP,ISTHEP(NMXHEP),IDHEP(NMXHEP), - & JMOHEP(2,NMXHEP),JDAHEP(2,NMXHEP),PHEP(5,NMXHEP),VHEP(4,NMXHEP) -C -C Beams, process and number of events - COMMON/HWBEAM/IPART1,IPART2 - COMMON/HWBMCH/PART1,PART2 - COMMON/HWPROC/EBEAM1,EBEAM2,PBEAM1,PBEAM2,IPROC,MAXEV -C -C Basic parameters (and quantities derived from them) - COMMON/HWPRAM/AFCH(16,2),ALPHEM,B1LIM,BETAF,BTCLM,CAFAC,CFFAC, - & CLMAX,CLPOW,CLSMR(2),CSPEED,ENSOF,ETAMIX,F0MIX,F1MIX,F2MIX,GAMH, - & GAMW,GAMZ,GAMZP,GEV2NB,H1MIX,PDIQK,PGSMX,PGSPL(4),PHIMIX,PIFAC, - & PRSOF,PSPLT(2),PTRMS,PXRMS,QCDL3,QCDL5,QCDLAM,QDIQK,QFCH(16),QG, - & QSPAC,QV,SCABI,SWEIN,TMTOP,VFCH(16,2),VCKM(3,3),VGCUT,VQCUT, - & VPCUT,ZBINM,EFFMIN,OMHMIX,ET2MIX,PH3MIX,GCUTME, - & IOPREM,IPRINT,ISPAC,LRSUD,LWSUD,MODPDF(2),NBTRY,NCOLO,NCTRY, - & NDTRY,NETRY,NFLAV,NGSPL,NSTRU,NSTRY,NZBIN,IOP4JT(2),NPRFMT, - & AZSOFT,AZSPIN,CLDIR(2),HARDME,NOSPAC,PRNDEC,PRVTX,SOFTME,ZPRIME, - & PRNDEF,PRNTEX,PRNWEB -C - COMMON/HWPRCH/AUTPDF(2),BDECAY -C -C Parton shower common (same format as /HEPEVT/) - PARAMETER (NMXPAR=500) - COMMON/HWPART/NEVPAR,NPAR,ISTPAR(NMXPAR),IDPAR(NMXPAR), - & JMOPAR(2,NMXPAR),JDAPAR(2,NMXPAR),PPAR(5,NMXPAR),VPAR(4,NMXPAR) -C -C Parton polarization common - COMMON/HWPARP/DECPAR(2,NMXPAR),PHIPAR(2,NMXPAR),RHOPAR(2,NMXPAR), - & TMPAR(NMXPAR) -C -C Electroweak boson common - PARAMETER (MODMAX=50) - COMMON/HWBOSC/ALPFAC,BRHIG(12),ENHANC(12),GAMMAX,RHOHEP(3,NMXHEP), - & IOPHIG,MODBOS(MODMAX) -C -C Parton colour common - COMMON/HWPARC/JCOPAR(4,NMXPAR) -C -C other HERWIG branching, event and hard subprocess common blocks - COMMON/HWBRCH/ANOMSC(2,2),HARDST,PTINT(3,2),XFACT,INHAD,JNHAD, - & NSPAC(7),ISLENT,BREIT,FROST,USECMF -C - COMMON/HWEVNT/AVWGT,EVWGT,GAMWT,TLOUT,WBIGST,WGTMAX,WGTSUM,WSQSUM, - & IDHW(NMXHEP),IERROR,ISTAT,LWEVT,MAXER,MAXPR,NOWGT,NRN(2),NUMER, - & NUMERU,NWGTS,GENSOF -C - COMMON/HWHARD/ASFIXD,CLQ(7,6),COSS,COSTH,CTMAX,DISF(13,2),EMLST, - & EMMAX,EMMIN,EMPOW,EMSCA,EPOLN(3),GCOEF(7),GPOLN,OMEGA0,PHOMAS, - & PPOLN(3),PTMAX,PTMIN,PTPOW,Q2MAX,Q2MIN,Q2POW,Q2WWMN,Q2WWMX,QLIM, - & SINS,THMAX,Y4JT,TMNISR,TQWT,XX(2),XLMIN,XXMIN,YBMAX,YBMIN,YJMAX, - & YJMIN,YWWMAX,YWWMIN,WHMIN,ZJMAX,ZMXISR,IAPHIG,IBRN(2),IBSH, - & ICO(10),IDCMF,IDN(10),IFLMAX,IFLMIN,IHPRO,IPRO,MAPQ(6),MAXFL, - & BGSHAT,COLISR,FSTEVT,FSTWGT,GENEV,HVFCEN,TPOL,DURHAM -C -C Arrays for particle properties (NMXRES = max no of particles defined) - PARAMETER(NMXRES=500) - COMMON/HWPROP/RLTIM(0:NMXRES),RMASS(0:NMXRES),RSPIN(0:NMXRES), - & ICHRG(0:NMXRES),IDPDG(0:NMXRES),IFLAV(0:NMXRES),NRES, - & VTOCDK(0:NMXRES),VTORDK(0:NMXRES), - & QORQQB(0:NMXRES),QBORQQ(0:NMXRES) -C - COMMON/HWUNAM/RNAME(0:NMXRES),TXNAME(2,0:NMXRES) -C -C Arrays for particle decays (NMXDKS = max total no of decays, -C NMXMOD = max no of modes for a particle) - PARAMETER(NMXDKS=4000,NMXMOD=200) - COMMON/HWUPDT/BRFRAC(NMXDKS),CMMOM(NMXDKS),DKLTM(NMXRES), - & IDK(NMXDKS),IDKPRD(5,NMXDKS),LNEXT(NMXDKS),LSTRT(NMXRES),NDKYS, - & NME(NMXDKS),NMODES(NMXRES),NPRODS(NMXDKS),DKPSET,RSTAB(0:NMXRES) -C -C Weights used in cluster decays - COMMON/HWUWTS/REPWT(0:3,0:4,0:4),SNGWT,DECWT,QWT(3),PWT(12), - & SWTEF(NMXRES) -C -C Parameters for cluster decays (NMXCDK = max total no of cluster -C decay channels) - PARAMETER(NMXCDK=4000) - COMMON/HWUCLU/CLDKWT(NMXCDK),CTHRPW(12,12),PRECO,RESN(12,12), - & RMIN(12,12),LOCN(12,12),NCLDK(NMXCDK),NRECO,CLRECO -C -C Variables controling mixing and vertex information -C--VTXPIP should have been a 5-vector, problems with NAG compiler - COMMON/HWDIST/EXAG,GEV2MM,HBAR,PLTCUT,VMIN2,VTXPIP(5),XMIX(2), - & XMRCT(2),YMIX(2),YMRCT(2),IOPDKL,MAXDKL,MIXING,PIPSMR -C -C Arrays for temporarily storing heavy-b,c-hadrons decaying partonicaly -C (NMXQDK = max no such decays in an event) - PARAMETER (NMXQDK=20) - COMMON/HWQDKS/VTXQDK(4,NMXQDK),IMQDK(NMXQDK),LOCQ(NMXQDK),NQDK -C -C Parameters for Sudakov form factors -C (NMXSUD= max no of entries in lookup table) - PARAMETER (NMXSUD=1024) - COMMON/HWUSUD/ACCUR,QEV(NMXSUD,6),SUD(NMXSUD,6),INTER,NQEV,NSUD, - & SUDORD -C - PARAMETER (NMXJET=200) -C -C SUSY parameters - COMMON/HWSUSY/ - & TANB,ALPHAH,COSBPA,SINBPA,COSBMA,SINBMA,COSA,SINA,COSB,SINB,COTB, - & ZMIXSS(4,4),ZMXNSS(4,4),ZSGNSS(4), LFCH(16),RFCH(16), - & SLFCH(16,4),SRFCH(16,4), WMXUSS(2,2),WMXVSS(2,2), WSGNSS(2), - & QMIXSS(6,2,2),LMIXSS(6,2,2), - & THETAT,THETAB,THETAL,ATSS,ABSS,ALSS,MUSS,FACTSS, - & GHWWSS(3),GHZZSS(3),GHDDSS(4),GHUUSS(4),GHWHSS(3), - & GHSQSS(4,6,2,2),XLMNSS,RMMNSS,DMSSM,SENHNC(24),SSPARITY,SUSYIN -C -C R-Parity violating parameters and colours - COMMON /HWRPAR/ LAMDA1(3,3,3),LAMDA2(3,3,3), - & LAMDA3(3,3,3),HRDCOL(2,5),RPARTY,COLUPD -C -C Parameters for minimum bias/soft underlying event - COMMON/HWMINB/ - & PMBN1,PMBN2,PMBN3,PMBK1,PMBK2,PMBM1,PMBM2,PMBP1,PMBP2,PMBP3 -C -C Cluster common used by soft event routines - PARAMETER (NMXCL=500) - COMMON/HWCLUS/PPCL(5,NMXCL),IDCL(NMXCL),NCL -C -C Parameters for resonant graviton production - DOUBLE PRECISION GRVLAM,EMGRV,GAMGRV - COMMON/HWGRAV/GRVLAM,EMGRV,GAMGRV -C -C Other new parameters for version 6.2 - DOUBLE PRECISION VIPWID,DXRCYL,DXZMAX,DXRSPH - LOGICAL WZRFR,FIX4JT - INTEGER IMSSM,IHIGGS,PARITY,LRSUSY - COMMON/HW6202/VIPWID(3),DXRCYL,DXZMAX,DXRSPH,WZRFR,FIX4JT, - & IMSSM,IHIGGS,PARITY,LRSUSY -C -C New parameters for version 6.203 - DOUBLE PRECISION ABWGT,ABWSUM,AVABW - INTEGER NNEGWT,NNEGEV - LOGICAL NEGWTS - COMMON/HW6203/ABWGT,ABWSUM,AVABW,NNEGWT,NNEGEV,NEGWTS -C -C New parameters for version 6.3 - INTEGER IMAXCH,IMAXOP - PARAMETER (IMAXCH=20,IMAXOP=40) - DOUBLE PRECISION MJJMIN,CHNPRB(IMAXCH) - INTEGER IOPSTP,IOPSH - LOGICAL OPTM,CHON(IMAXCH) - COMMON/HW6300/MJJMIN,CHNPRB,IOPSTP,IOPSH,OPTM,CHON -C New PDF's for version 6.3 - INTEGER NXMRS,NQMRS,NPMRS - PARAMETER(NXMRS=49,NQMRS=37,NPMRS=8) - DOUBLE PRECISION FMRS(3,NPMRS,NXMRS,NQMRS+1) - COMMON /HWPMRS/FMRS -C Circe interface for version 6.3 - INTEGER CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH - COMMON /HWCIRC/CIRCOP,CIRCAC,CIRCVR,CIRCRV,CIRCCH -C New parameters and commons for spin correlations -C--constants for the arrays - INTEGER NMXSPN,NCFMAX - PARAMETER(NMXSPN=50,NCFMAX=3) - INTEGER NMODE2,NMODE3,NDIAGR,NMODEB,NMODE4 - PARAMETER(NMODE2=500,NMODE3=500,NDIAGR=8,NMODEB=50,NMODE4=4) -C--common block for X --> X gauge boson - DOUBLE PRECISION ABMODE(2,NMODEB),BBMODE(2,12,NMODEB), - & PBMODE(12,NMODEB),WTBMAX(12,NMODEB) - INTEGER IDBPRT(NMODEB),IBMODE(NMODEB),IBDRTP(NMODEB),NBMODE - COMMON /HWDSPB/ABMODE,BBMODE,PBMODE,WTBMAX,IDBPRT,IBDRTP,IBMODE, - & NBMODE -C--common block for two body decays - DOUBLE PRECISION A2MODE(2,NMODE2),P2MODE(NMODE2),WT2MAX(NMODE2) - INTEGER ID2PRT(NMODE2),I2DRTP(NMODE2),N2MODE - COMMON /HWDSP2/A2MODE,P2MODE,WT2MAX,ID2PRT,I2DRTP,N2MODE -C--common block for three body decays - DOUBLE PRECISION A3MODE(2,NDIAGR,NMODE3),B3MODE(2,NDIAGR,NMODE3), - & P3MODE(NMODE3),WT3MAX(NMODE3),SPN3CF(NCFMAX,NCFMAX,NMODE3) - INTEGER ID3PRT(NMODE3),I3MODE(NDIAGR,NMODE3), - & I3DRTP(NDIAGR,NMODE3),N3MODE,NDI3BY(NMODE3),N3NCFL(NMODE3), - & I3DRCF(NDIAGR,NMODE3) - COMMON /HWDSP3/A3MODE,B3MODE,P3MODE,WT3MAX,SPN3CF,ID3PRT,I3MODE, - & I3DRTP,N3MODE,NDI3BY,N3NCFL,I3DRCF -C--common block for four body decays - DOUBLE PRECISION A4MODE(2,12,NMODE4),B4MODE(2,12,NMODE4), - & P4MODE(12,12,NMODE4),WT4MAX(12,12,NMODE4) - INTEGER ID4PRT(NMODE4),I4MODE(2,NMODE4),N4MODE - COMMON /HWDSP4/A4MODE,B4MODE,P4MODE,WT4MAX,ID4PRT,I4MODE,N4MODE -C--common block for spin correlations in event - INTEGER NDECSY,NSEARCH,LRDEC,LWDEC - LOGICAL SYSPIN,THREEB,FOURB - CHARACTER *6 TAUDEC - COMMON /HWDSPN/NDECSY,NSEARCH,LRDEC,LWDEC,SYSPIN,THREEB, - & FOURB,TAUDEC -C - INTEGER IDSPN(NMXSPN),JMOSPN(NMXSPN),JDASPN(2,NMXSPN),NSPN, - & ISNHEP(NMXHEP),NSNTRY,NCFL(NMXSPN),SPCOPT - DOUBLE COMPLEX MESPN(2,2,2,2,NCFMAX,NMXSPN),RHOSPN(2,2,NMXSPN) - DOUBLE PRECISION SPNCFC(NCFMAX,NCFMAX,NMXSPN) - LOGICAL DECSPN(NMXSPN) - COMMON /HWSPIN/MESPN,RHOSPN,SPNCFC,IDSPN,JMOSPN,JDASPN, - & NSPN,ISNHEP,NSNTRY,DECSPN,NCFL,SPCOPT - INTEGER JAK1,JAK2,ITDKRC,IFPHOT - COMMON /HWSTAU/ JAK1,JAK2,ITDKRC,IFPHOT -C -C--common block for Les Houches interface to store information we need -C - INTEGER MAXHRP - PARAMETER (MAXHRP=100) - DOUBLE PRECISION LHWGT(MAXHRP),LHWGTS(MAXHRP),LHMXSM, - & LHXSCT(MAXHRP),LHXERR(MAXHRP),LHXMAX(MAXHRP) - INTEGER LHIWGT(MAXHRP),ITYPLH,LHNEVT(MAXHRP) - LOGICAL LHSOFT,LHGLSF - COMMON /HWGUPR/LHWGT,LHWGTS,LHXSCT,LHXERR,LHXMAX,LHMXSM,LHIWGT, - & LHNEVT,ITYPLH,LHSOFT,LHGLSF -C -C--common block for HERWIG6.5 -C - LOGICAL PRESPL - COMMON /HW6500/ PRESPL - INTEGER ITOPRD - COMMON /HW6504/ITOPRD -C--the only change for 6505 was to increase MODMAX from 5 to 50 - DOUBLE PRECISION PDFX0,PDFPOW - COMMON /HW6506/PDFX0,PDFPOW -C--add new variable to prevent infinite loops in HWDFOR/FIV - INTEGER NDETRY - COMMON /HW6510/NDETRY -C------------------------------------------------------------------------ - -C--Les Houches Common Blocks - INTEGER MAXPUP - PARAMETER(MAXPUP=100) - INTEGER IDBMUP,PDFGUP,PDFSUP,IDWTUP,NPRUP,LPRUP - DOUBLE PRECISION EBMUP,XSECUP,XERRUP,XMAXUP - COMMON /HEPRUP/ IDBMUP(2),EBMUP(2),PDFGUP(2),PDFSUP(2), - & IDWTUP,NPRUP,XSECUP(MAXPUP),XERRUP(MAXPUP), - & XMAXUP(MAXPUP),LPRUP(MAXPUP) - INTEGER MAXNUP - PARAMETER (MAXNUP=500) - INTEGER NUP,IDPRUP,IDUP,ISTUP,MOTHUP,ICOLUP - DOUBLE PRECISION XWGTUP,SCALUP,AQEDUP,AQCDUP,PUP,VTIMUP,SPINUP - COMMON/HEPEUP/NUP,IDPRUP,XWGTUP,SCALUP,AQEDUP,AQCDUP, - & IDUP(MAXNUP),ISTUP(MAXNUP),MOTHUP(2,MAXNUP), - & ICOLUP(2,MAXNUP),PUP(5,MAXNUP),VTIMUP(MAXNUP), - & SPINUP(MAXNUP) - DOUBLE PRECISION XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,XMT,XMW,XMZ, - & XMH,XMV,XM1,XM2,XM3,XM4,XM5,XM21,XLAM,GAH,TINY - DOUBLE PRECISION XMV1,GAV1,GAMAX1,XMV2,GAV2,GAMAX2 - INTEGER IVVCODE,IFAIL,MQQ,NQQ,IHW,I,NDNS,JPR,JPR0,IH, - & IVHVEC,IVHLEP,IVLEP1,IVLEP2 - CHARACTER*60 TMPSTR - CHARACTER*4 STRP1,STRP2 - CHARACTER*8 STRGRP - CHARACTER*2 STRSCH - CHARACTER*3 STRFMT - CHARACTER*50 QQIN - LOGICAL FK88STRNOEQ - DATA TINY/1.D-3/ - COMMON/NQQCOM/MQQ,NQQ - COMMON/VVJIN/QQIN - COMMON/VHLIN/IVHVEC,IVHLEP - COMMON/VVLIN/IVLEP1,IVLEP2 -C - - - IF (IERROR.NE.0) RETURN -C--SET UP INPUT FILES - OPEN(UNIT=61,FILE=QQIN,STATUS='UNKNOWN') -C--READ HEADERS OF EVENT FILE - READ(61,801)XCKECM,XTMP1,XTMP2,XTMP3,XTMP4,TMPSTR - READ(61,802)IVVCODE,TMPSTR - IVVCODE=MOD(IVVCODE,10000) -C---CHECK PROCESS CODE - JPR0=MOD(ABS(IPROC),10000) - JPR=JPR0/100 - IF (JPR.NE.IVVCODE/100) CALL HWWARN('UPINIT',500,*999) - IF ((JPR.EQ.17.OR.JPR.EQ.28.OR.JPR.EQ.36).AND. - & IVVCODE.NE.MOD(ABS(IPROC),10000)) CALL HWWARN('UPINIT',501,*999) - IF (JPR.EQ.13.OR.JPR.EQ.14) THEN - IF(JPR0.EQ.1396.OR.JPR0.EQ.1371.OR. - # JPR0.EQ.1372.OR.JPR0.EQ.1373)THEN - READ(61,808)EMMIN,EMMAX,TMPSTR - ELSE - READ(61,809)XMV,GAH,GAMMAX,TMPSTR - ENDIF -C-- CHECK VECTOR BOSON MASS - IF( (IVVCODE.EQ.1397.AND.ABS(XMV-RMASS(200)).GT.TINY) .OR. - # (IVVCODE.EQ.1497.AND.ABS(XMV-RMASS(198)).GT.TINY) .OR. - # (IVVCODE.EQ.1498.AND.ABS(XMV-RMASS(199)).GT.TINY) ) - # THEN - WRITE(*,*) IVVCODE - WRITE(*,*) 'exiting' - CALL HWWARN('UPINIT',511,*999) - endif - ELSEIF (JPR.EQ.26.OR.JPR.EQ.27) THEN - READ(61,810)IVHVEC,IVHLEP,TMPSTR - READ(61,809)XMV,GAH,GAMMAX,TMPSTR - READ(61,809)XMH,GAH,GAMMAX,TMPSTR - IF( (JPR.EQ.26.AND.ABS(XMV-RMASS(199)).GT.TINY) .OR. - # (JPR.EQ.27.AND.ABS(XMV-RMASS(200)).GT.TINY) ) - # CALL HWWARN('UPINIT',508,*999) - IF(ABS(XMH-RMASS(201)).GT.TINY) CALL HWWARN('UPINIT',509,*999) - ELSEIF (JPR.EQ.28) THEN - READ(61,808)XMW,XMZ,TMPSTR -C-- CHECK VECTOR BOSON MASSES - IF(ABS(XMW-RMASS(198)).GT.TINY .OR. - # ABS(XMZ-RMASS(200)).GT.TINY) - # CALL HWWARN('UPINIT',502,*999) - READ(61,810)IVLEP1,IVLEP2,TMPSTR - READ(61,809)XMV1,GAV1,GAMAX1,TMPSTR - READ(61,809)XMV2,GAV2,GAMAX2,TMPSTR - ELSEIF (JPR.EQ.16.OR.JPR.EQ.36) THEN - READ(61,809)XMH,GAH,XMT,TMPSTR -C-- CHECK HIGGS AND TOP MASSES - IH=201 - IF (JPR.EQ.36) IH=IVVCODE/10-158 - IF(ABS(XMH-RMASS(IH)).GT.TINY) CALL HWWARN('UPINIT',503,*999) - IF(ABS(XMT-RMASS(6)) .GT.TINY) CALL HWWARN('UPINIT',504,*999) - ELSEIF (JPR.EQ.17) THEN - READ(61,803)XMT,TMPSTR -C-- CHECK HEAVY QUARK MASS - IF( (IVVCODE.EQ.1706.AND.ABS(XMT-RMASS(6)).GT.TINY) .OR. - # (IVVCODE.EQ.1705.AND.ABS(XMT-RMASS(5)).GT.TINY) .OR. - # (IVVCODE.EQ.1704.AND.ABS(XMT-RMASS(4)).GT.TINY) ) - # CALL HWWARN('UPINIT',505,*999) - ELSEIF (JPR.EQ.20) THEN - READ(61,803)XMT,TMPSTR -C-- CHECK HEAVY QUARK MASS - IF(ABS(XMT-RMASS(6)).GT.TINY) CALL HWWARN('UPINIT',511,*999) - ELSE - CALL HWWARN('UPINIT',506,*999) - ENDIF - READ(61,804)XM1,XM2,XM3,XM4,XM5,XM21,TMPSTR - READ(61,805)STRP1,STRP2,TMPSTR - READ(61,806)STRGRP,NDNS,TMPSTR - READ(61,807)XLAM,STRSCH,TMPSTR -C--CHECK THAT EVENT FILE HAS BEEN GENERATED CONSISTENTLY WITH -C--HERWIG PARAMETERS ADOPTED HERE - IFAIL=0 -C-- CM ENERGY - IF( ABS(XCKECM-PBEAM1-PBEAM2).GT.TINY .OR. -C-- QUARK AND GLUON MASSES - # ABS(XM1-RMASS(1)).GT.TINY .OR. - # ABS(XM2-RMASS(2)).GT.TINY .OR. - # ABS(XM3-RMASS(3)).GT.TINY .OR. - # ABS(XM4-RMASS(4)).GT.TINY .OR. - # ABS(XM5-RMASS(5)).GT.TINY .OR. - # ABS(XM21-RMASS(13)).GT.TINY .OR. -C-- LAMBDA_QCD: NOW REMOVED TO ALLOW MORE FLEXIBILITY (NNLO EFFECT ANYHOW) -C # ABS(XLAM-QCDLAM).GT.TINY .OR. -C-- REPLACE THE FOLLOWING WITH A CONDITION ON STRSCH, IF CONSISTENT -C-- INFORMATION ON PDF SCHEME WILL BE AVAILABLE FROM PDF LIBRARIES AND HERWIG -C-- COLLIDING PARTICLE TYPE - # FK88STRNOEQ(STRP1,PART1) .OR. - # FK88STRNOEQ(STRP2,PART2) )IFAIL=1 -C--IF PDF LIBRARY IS USED, CHECK PDF CONSISTENCY - IF( IFAIL.EQ.0 .AND. MODPDF(1).NE.-1)THEN - IF( - # FK88STRNOEQ(STRGRP,AUTPDF(1)) .OR. - # FK88STRNOEQ(STRGRP,AUTPDF(2)) .OR. - # ABS(NDNS-MODPDF(1)).GT.TINY .OR. - # ABS(NDNS-MODPDF(2)).GT.TINY )IFAIL=1 -C--WHEN LHAPDF IS LINKED, AUTPDF() IS A MC@NLO-DEFINED STRING - IF(AUTPDF(1).EQ.'LHAPDF'.OR.AUTPDF(1).EQ.'LHAEXT')THEN - AUTPDF(1)='DEFAULT' - AUTPDF(2)='DEFAULT' - ENDIF - ENDIF - IF(IFAIL.EQ.1) CALL HWWARN('UPINIT',507,*999) - CALL HWUIDT(3,IDBMUP(1),IHW,PART1) - CALL HWUIDT(3,IDBMUP(2),IHW,PART2) - DO I=1,2 - EBMUP(I)=HALF*XCKECM - PDFGUP(I)=-1 - PDFSUP(I)=-1 - ENDDO - IDWTUP=-4 - NPRUP=1 - LPRUP(1)=IVVCODE -C-- TEST FOR NEW FORMAT INPUT MOMENTA: (PX,PY,PZ,M) - READ(61,811) STRFMT,TMPSTR - IF (STRFMT.NE.'P,M') CALL HWWARN('UPINIT',510,*999) - READ(61,900) MQQ - NQQ=0 -C-- LARGEST EXPECTED NUMBER OF LEGS - NUP=10 - AQEDUP=ZERO - AQCDUP=ZERO - DO I=1,NUP - VTIMUP(I)=ZERO - SPINUP(I)=9. - ENDDO - 801 FORMAT(5(1X,D10.4),1X,A) - 802 FORMAT(1X,I6,1X,A) - 803 FORMAT(1X,D10.4,1X,A) - 804 FORMAT(6(1X,D10.4),1X,A) - 805 FORMAT(2(1X,A4),1X,A) - 806 FORMAT(1X,A8,1X,I6,1X,A) - 807 FORMAT(1X,D10.4,1X,A2,1X,A) - 808 FORMAT(2(1X,D10.4),1X,A) - 809 FORMAT(3(1X,D10.4),1X,A) - 810 FORMAT(2(1X,I2),1X,A) - 811 FORMAT(1X,A3,1X,A) - 900 FORMAT(I9) - 999 END diff --git a/GeneratorInterface/MCatNLOInterface/src/mcatnlo_str.f b/GeneratorInterface/MCatNLOInterface/src/mcatnlo_str.f deleted file mode 100644 index b8565211761..00000000000 --- a/GeneratorInterface/MCatNLOInterface/src/mcatnlo_str.f +++ /dev/null @@ -1,122 +0,0 @@ -c Utilities working on strings -c - function fk88strnoeq(str1,str2) -c Returns true if str1#str2, false otherwise. The comparison -c is case INSENSITIVE - logical fk88strnoeq,flag - character * (*) str1,str2 - character * 70 strin,tmp1,tmp2 -c - strin=str1 - call fk88low_to_upp(strin,tmp1) - strin=str2 - call fk88low_to_upp(strin,tmp2) - if(tmp1.eq.tmp2)then - flag=.false. - else - flag=.true. - endif - fk88strnoeq=flag - return - end - - - subroutine fk88low_to_upp(strin,strout) -c Converts lowercase to uppercase - implicit real*8(a-h,o-z) - character*70 strin,strout,tmp - character*1 ch,ch1 -c - len=ifk88istrl(strin) - if(len.eq.0)then - return - elseif(len.eq.1)then - ch=strin - call fk88xgetchar1(ch,ch1) - strout=ch1 - else - do i=1,len - ch=strin(i:i+1) - call fk88xgetchar1(ch,ch1) - if(i.eq.1)then - strout=ch1 - else - call fk88strcat(strout,ch1,tmp) - strout=tmp - endif - enddo - endif - return - end - - - subroutine fk88xgetchar1(ch,ch1) -c Converts lowercase to uppercase (1 character only) - character*1 ch,ch1 -c ia=ascii value of a - parameter (ia=97) -c iz=ascii value of z - parameter (iz=122) -c ishift=difference between the ascii value of a and A - parameter (ishift=32) -c - ic=ichar(ch) - if(ic.ge.ia.and.ic.le.iz)then - ch1=char(ic-ishift) - else - ch1=ch - endif - return - end - - - subroutine fk88strnum(string,num) -c- writes the number num on the string string starting at the blank -c- following the last non-blank character - character * (*) string - character * 20 tmp - l = len(string) - write(tmp,'(i15)')num - j=1 - dowhile(tmp(j:j).eq.' ') - j=j+1 - enddo - ipos = ifk88istrl(string) - ito = ipos+1+(15-j) - if(ito.gt.l) then - write(*,*)'error, string too short' - write(*,*) string - stop - endif - string(ipos+1:ito)=tmp(j:) - end - - - function ifk88istrl(string) -c returns the position of the last non-blank character in string - character * (*) string - i = len(string) - dowhile(i.gt.0.and.string(i:i).eq.' ') - i=i-1 - enddo - ifk88istrl = i - end - - - subroutine fk88strcat(str1,str2,str) -c concatenates str1 and str2 into str. Ignores trailing blanks of str1,str2 - character *(*) str1,str2,str - l1=ifk88istrl(str1) - l2=ifk88istrl(str2) - l =len(str) - if(l.lt.l1+l2) then - write(*,*) 'error: l1+l2>l in fk88strcat' - write(*,*) 'l1=',l1,' str1=',str1 - write(*,*) 'l2=',l2,' str2=',str2 - write(*,*) 'l=',l - stop - endif - if(l1.ne.0) str(1:l1)=str1(1:l1) - if(l2.ne.0) str(l1+1:l1+l2)=str2(1:l2) - if(l1+l2+1.le.l) str(l1+l2+1:l)= ' ' - end diff --git a/GeneratorInterface/MCatNLOInterface/test/ZeeAnalyzer.cc b/GeneratorInterface/MCatNLOInterface/test/ZeeAnalyzer.cc deleted file mode 100644 index 50fd95c7cbe..00000000000 --- a/GeneratorInterface/MCatNLOInterface/test/ZeeAnalyzer.cc +++ /dev/null @@ -1,113 +0,0 @@ -/* This is en example for an Analyzer of a MCatNLO HeoMCProduct - The analyzer fills a histogram with the event weights, - and looks for electron/positron pairs and fills a histogram - with the invaraint mass of the two. -*/ - -// -// Original Author: Fabian Stoeckli -// Created: Tue Nov 14 13:43:02 CET 2006 -// $Id$ -// -// - - -// system include files -#include <memory> -#include <iostream> - -// user include files -#include "ZeeAnalyzer.h" - - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "CLHEP/HepMC/WeightContainer.h" -#include "CLHEP/HepMC/GenEvent.h" -#include "CLHEP/HepMC/GenParticle.h" - -#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" - -#include "TH1D.h" -#include "TFile.h" - -ZeeAnalyzer::ZeeAnalyzer(const edm::ParameterSet& iConfig) -{ - outputFilename=iConfig.getUntrackedParameter<std::string>("OutputFilename","dummy.root"); - weight_histo = new TH1D("weight_histo","weight_histo",20,-10,10); - invmass_histo = new TH1D("invmass_histo","invmass_histo",20,70,110); -} - - -ZeeAnalyzer::~ZeeAnalyzer() -{ - -} - - -// ------------ method called to for each event ------------ -void -ZeeAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - - // get HepMC::GenEvent ... - Handle<HepMCProduct> evt_h; - iEvent.getByType(evt_h); - HepMC::GenEvent * evt = new HepMC::GenEvent(*(evt_h->GetEvent())); - - - // get weight and fill it to histogram - HepMC::WeightContainer weights = evt->weights(); - double weight = weights.front(); - if(weight) weight_histo->Fill(weight); - - // look for stable electrons/positrons - std::vector<HepMC::GenParticle*> electrons; - for(HepMC::GenEvent::particle_iterator it = evt->particles_begin(); it != evt->particles_end(); ++it) { - if(abs((*it)->pdg_id())==11 && (*it)->status()==1) - electrons.push_back(*it); - } - - // if there are at least two electrons/positrons, - // calculate invarant mass of first two and fill it into histogram - HepLorentzVector tot_momentum; - double inv_mass = 0.0; - if(electrons.size()>1) { - tot_momentum = electrons[0]->momentum(); - tot_momentum += electrons[1]->momentum(); - inv_mass = sqrt(tot_momentum.m2()); - } - - // IMPORTANT: use the weight of the event ... - double weight_sign = (weight > 0) ? 1. : -1.; - invmass_histo->Fill(inv_mass,weight_sign); - -} - - -// ------------ method called once each job just before starting event loop ------------ -void -ZeeAnalyzer::beginJob(const edm::EventSetup&) -{ -} - -// ------------ method called once each job just after ending the event loop ------------ -void -ZeeAnalyzer::endJob() { - // save histograms into file - TFile file(outputFilename.c_str(),"RECREATE"); - weight_histo->Write(); - invmass_histo->Write(); - file.Close(); - -} - -//define this as a plug-in -DEFINE_FWK_MODULE(ZeeAnalyzer) diff --git a/GeneratorInterface/PartonShowerVeto/doc/html/index.html b/GeneratorInterface/PartonShowerVeto/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/PartonShowerVeto/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/PartonShowerVeto/doc/html/overview.html b/GeneratorInterface/PartonShowerVeto/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/PartonShowerVeto/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/PomwigInterface/doc/html/index.html b/GeneratorInterface/PomwigInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/PomwigInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/PomwigInterface/doc/html/overview.html b/GeneratorInterface/PomwigInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/PomwigInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/PyquenInterface/doc/html/index.html b/GeneratorInterface/PyquenInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/PyquenInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/PyquenInterface/doc/html/overview.html b/GeneratorInterface/PyquenInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/PyquenInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/SherpaInterface/doc/html/index.html b/GeneratorInterface/SherpaInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/SherpaInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/SherpaInterface/doc/html/overview.html b/GeneratorInterface/SherpaInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/SherpaInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/GeneratorInterface/ThePEGInterface/doc/html/index.html b/GeneratorInterface/ThePEGInterface/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/GeneratorInterface/ThePEGInterface/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/GeneratorInterface/ThePEGInterface/doc/html/overview.html b/GeneratorInterface/ThePEGInterface/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/GeneratorInterface/ThePEGInterface/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Geometry/CMSCommonData/data/beampipe.xml b/Geometry/CMSCommonData/data/beampipe.xml index 88bae542a03..51dc51899b8 100644 --- a/Geometry/CMSCommonData/data/beampipe.xml +++ b/Geometry/CMSCommonData/data/beampipe.xml @@ -574,6 +574,16 @@ </LogicalPartSection> <PosPartSection label="beampipe.xml"> + <PosPart copyNumber="1"> + <rParent name="cms:CMSE"/> + <rChild name="beampipe:BEAM"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="2"> + <rParent name="cms:CMSE"/> + <rChild name="beampipe:BEAM"/> + <rRotation name="rotations:180D"/> + </PosPart> <PosPart copyNumber="1"> <rParent name="beampipe:BEAM"/> <rChild name="beampipe:BeamTube1"/> diff --git a/Geometry/CMSCommonData/data/caloBase.xml b/Geometry/CMSCommonData/data/caloBase.xml deleted file mode 100644 index c735c4eb861..00000000000 --- a/Geometry/CMSCommonData/data/caloBase.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This file is a common need by Ecal and Hcal. - In order to allow other sub-detectors to be isolated from the over-all - CMS Ideal Geometry this was taken out of cms.xml. ---> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> -<SolidSection label="caloBase.xml"> - <Polycone name="CALO" startPhi="0*deg" deltaPhi="360*deg" > - <ZSection z="-[cms:CalorBeamZ2]" rMin="[cms:CalorBeamR2]" rMax="[cms:CalorMuonR]" /> - <ZSection z="-[cms:CalorBeamZ1]" rMin="[cms:CalorBeamR1]" rMax="[cms:CalorMuonR]" /> - <ZSection z="-[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:CalorMuonR]" /> - <ZSection z="-[cms:TrackBeamZ2]" rMin="[cms:TrackCalorR]" rMax="[cms:CalorMuonR]" /> - <ZSection z="[cms:TrackBeamZ2]" rMin="[cms:TrackCalorR]" rMax="[cms:CalorMuonR]" /> - <ZSection z="[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:CalorMuonR]" /> - <ZSection z="[cms:CalorBeamZ1]" rMin="[cms:CalorBeamR1]" rMax="[cms:CalorMuonR]" /> - <ZSection z="[cms:CalorBeamZ2]" rMin="[cms:CalorBeamR2]" rMax="[cms:CalorMuonR]" /> - </Polycone> -</SolidSection> - -<LogicalPartSection label="caloBase.xml"> - <LogicalPart name="CALO" category="unspecified"> - <rSolid name="CALO"/> - <rMaterial name="materials:Air"/> - </LogicalPart> -</LogicalPartSection> - -</DDDefinition> - - diff --git a/Geometry/CMSCommonData/data/cavern.xml b/Geometry/CMSCommonData/data/cavern.xml index dc2763b3d22..4f84e05a5e3 100644 --- a/Geometry/CMSCommonData/data/cavern.xml +++ b/Geometry/CMSCommonData/data/cavern.xml @@ -1,7 +1,4 @@ <?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: As per Sunanda Banerjee's request, this file - should be kept around for background studies. ---> <DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> <ConstantsSection label="cavern.xml" eval="true"> diff --git a/Geometry/CMSCommonData/data/cms.xml b/Geometry/CMSCommonData/data/cms.xml index eef1ab44dda..6764a963595 100644 --- a/Geometry/CMSCommonData/data/cms.xml +++ b/Geometry/CMSCommonData/data/cms.xml @@ -1,9 +1,6 @@ <?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This base file provides global constants - to be used in all CMS XML Geometry files and provides a single - point of editting to change sub-detector boundaries. ---> <DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> + <ConstantsSection label="cms.xml" eval="true"> <Constant name="Rmin" value="0*fm"/> <Constant name="Zmin" value="0*fm"/> @@ -82,6 +79,44 @@ <ZSection z="[CMSZ2]" rMin="[Rmin]" rMax="[CMSR2]" /> <ZSection z="[HallZ]" rMin="[Rmin]" rMax="[CMSR2]" /> </Polycone> + <Polycone name="Tracker" startPhi="0*deg" deltaPhi="360*deg" > + <ZSection z="-[TrackBeamZ2]" rMin="[TrackBeamR2]" rMax="[TrackCalorR]" /> + <ZSection z="-[TrackBeamZ1]" rMin="[TrackBeamR1]" rMax="[TrackCalorR]" /> + <ZSection z="[TrackBeamZ1]" rMin="[TrackBeamR1]" rMax="[TrackCalorR]" /> + <ZSection z="[TrackBeamZ2]" rMin="[TrackBeamR2]" rMax="[TrackCalorR]" /> + </Polycone> + <Polycone name="CALO" startPhi="0*deg" deltaPhi="360*deg" > + <ZSection z="-[CalorBeamZ2]" rMin="[CalorBeamR2]" rMax="[CalorMuonR]" /> + <ZSection z="-[CalorBeamZ1]" rMin="[CalorBeamR1]" rMax="[CalorMuonR]" /> + <ZSection z="-[TrackBeamZ2]" rMin="[TrackBeamR2]" rMax="[CalorMuonR]" /> + <ZSection z="-[TrackBeamZ2]" rMin="[TrackCalorR]" rMax="[CalorMuonR]" /> + <ZSection z="[TrackBeamZ2]" rMin="[TrackCalorR]" rMax="[CalorMuonR]" /> + <ZSection z="[TrackBeamZ2]" rMin="[TrackBeamR2]" rMax="[CalorMuonR]" /> + <ZSection z="[CalorBeamZ1]" rMin="[CalorBeamR1]" rMax="[CalorMuonR]" /> + <ZSection z="[CalorBeamZ2]" rMin="[CalorBeamR2]" rMax="[CalorMuonR]" /> + </Polycone> + <Polycone name="MUON" startPhi="0*deg" deltaPhi="360*deg" > + <ZSection z="-[MuonBeamZ2]" rMin="[TotemMuonR2]" rMax="[CMSR1]" /> + <ZSection z="-[TotemMuonZ1]" rMin="[TotemMuonR2]" rMax="[CMSR1]" /> + <ZSection z="-[TotemMuonZ1]" rMin="[TotemMuonR1]" rMax="[CMSR1]" /> + <ZSection z="-[MuonBeamZ1]" rMin="[MuonBeamR2]" rMax="[CMSR1]" /> + <ZSection z="-[MuonBeamZ1]" rMin="[MuonBeamR1]" rMax="[CMSR1]" /> + <ZSection z="-[MuonBeamZ0]" rMin="[MuonBeamR0]" rMax="[CMSR1]" /> + <ZSection z="-[CalorBeamZ2]" rMin="[CalorBeamR2]" rMax="[CMSR1]" /> + <ZSection z="-[CalorBeamZ2]" rMin="[CalorMuonR]" rMax="[CMSR1]" /> + <ZSection z="[CalorBeamZ2]" rMin="[CalorMuonR]" rMax="[CMSR1]" /> + <ZSection z="[CalorBeamZ2]" rMin="[CalorBeamR2]" rMax="[CMSR1]" /> + <ZSection z="[MuonBeamZ0]" rMin="[MuonBeamR0]" rMax="[CMSR1]" /> + <ZSection z="[MuonBeamZ1]" rMin="[MuonBeamR1]" rMax="[CMSR1]" /> + <ZSection z="[MuonBeamZ1]" rMin="[MuonBeamR2]" rMax="[CMSR1]" /> + <ZSection z="[TotemMuonZ1]" rMin="[TotemMuonR1]" rMax="[CMSR1]" /> + <ZSection z="[TotemMuonZ1]" rMin="[TotemMuonR2]" rMax="[CMSR1]" /> + <ZSection z="[MuonBeamZ2]" rMin="[TotemMuonR2]" rMax="[CMSR1]" /> + </Polycone> + <Tubs name="MB" rMin="[MBarRmin]" rMax="[CMSR1]" dz="[MBarZ]" + startPhi="0*deg" deltaPhi="360*deg"/> + <Tubs name="MBWheel" rMin="[MBarRmin]" rMax="[MBarRmax]" dz="[MBRingZ]" + startPhi="0*deg" deltaPhi="360*deg"/> </SolidSection> <LogicalPartSection label="cms.xml"> @@ -101,6 +136,107 @@ <rSolid name="CMSE"/> <rMaterial name="materials:Air"/> </LogicalPart> + <LogicalPart name="Tracker" category="unspecified"> + <rSolid name="Tracker"/> + <rMaterial name="materials:Air"/> + </LogicalPart> + <LogicalPart name="CALO" category="unspecified"> + <rSolid name="CALO"/> + <rMaterial name="materials:Air"/> + </LogicalPart> + <LogicalPart name="MUON" category="unspecified"> + <rSolid name="MUON"/> + <rMaterial name="materials:Air"/> + </LogicalPart> + <LogicalPart name="MB" category="unspecified"> + <rSolid name="MB"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> +<LogicalPart name="MBWheel_0" category="unspecified"> + <rSolid name="MBWheel"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> + <LogicalPart name="MBWheel_1P" category="unspecified"> + <rSolid name="MBWheel"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> + <LogicalPart name="MBWheel_2P" category="unspecified"> + <rSolid name="MBWheel"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> + <LogicalPart name="MBWheel_1N" category="unspecified"> + <rSolid name="MBWheel"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> + <LogicalPart name="MBWheel_2N" category="unspecified"> + <rSolid name="MBWheel"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> </LogicalPartSection> +<PosPartSection label="cms.xml"> + <PosPart copyNumber="1"> + <rParent name="cms:World"/> + <rChild name="cms:OCMS"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:World"/> + <rChild name="cms:MCMS"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:OCMS"/> + <rChild name="cms:CMSE"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:CMSE"/> + <rChild name="cms:Tracker"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:CMSE"/> + <rChild name="cms:CALO"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:CMSE"/> + <rChild name="cms:MUON"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:MUON"/> + <rChild name="cms:MB"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="1"> + <rParent name="cms:MB"/> + <rChild name="cms:MBWheel_2N"/> + <rRotation name="rotations:000D"/> + <Translation x="0*fm" y="0*fm" z="-5.342*m" /> + </PosPart> + <PosPart copyNumber="2"> + <rParent name="cms:MB"/> + <rChild name="cms:MBWheel_1N"/> + <rRotation name="rotations:000D"/> + <Translation x="0*fm" y="0*fm" z="-2.686*m" /> + </PosPart> +<PosPart copyNumber="3"> + <rParent name="cms:MB"/> + <rChild name="cms:MBWheel_0"/> + <rRotation name="rotations:000D"/> + </PosPart> + <PosPart copyNumber="4"> + <rParent name="cms:MB"/> + <rChild name="cms:MBWheel_1P"/> + <rRotation name="rotations:000D"/> + <Translation x="0*fm" y="0*fm" z="2.686*m" /> + </PosPart> + <PosPart copyNumber="5"> + <rParent name="cms:MB"/> + <rChild name="cms:MBWheel_2P"/> + <rRotation name="rotations:000D"/> + <Translation x="0*fm" y="0*fm" z="5.342*m" /> + </PosPart> +</PosPartSection> + </DDDefinition> diff --git a/Geometry/CMSCommonData/data/cmsCalo.xml b/Geometry/CMSCommonData/data/cmsCalo.xml deleted file mode 100644 index a17900a6adf..00000000000 --- a/Geometry/CMSCommonData/data/cmsCalo.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This file provides the link between the - cms:CMSE LogicalPart and the caloBase:CALO LogicalPart. By leaving - this file out of the configuration one can have CALO as the root - node in the graph. ---> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> - -<PosPartSection label="cms.xml"> - - <PosPart copyNumber="1"> - <rParent name="cms:CMSE"/> - <rChild name="caloBase:CALO"/> - <rRotation name="rotations:000D"/> - </PosPart> - -</PosPartSection> - -</DDDefinition> diff --git a/Geometry/CMSCommonData/data/cmsMagneticField.xml b/Geometry/CMSCommonData/data/cmsMagneticField.xml deleted file mode 100644 index 76643a819b8..00000000000 --- a/Geometry/CMSCommonData/data/cmsMagneticField.xml +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0"?> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> - -<PosPartSection label="cmsMagneticField.xml"> - <PosPart copyNumber="1"> - <rParent name="cms:World"/> - <rChild name="cms:MCMS"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="cms:MCMS"/> - <rChild name="MagneticFieldVolumes:MAGF"/> - <!-- NOT NEEDED : rRotation name="rotations:000D"/--> - </PosPart> -</PosPartSection> - -</DDDefinition> diff --git a/Geometry/CMSCommonData/data/cmsMuonMagnetBeam.xml b/Geometry/CMSCommonData/data/cmsMuonMagnetBeam.xml deleted file mode 100644 index dbc87545861..00000000000 --- a/Geometry/CMSCommonData/data/cmsMuonMagnetBeam.xml +++ /dev/null @@ -1,51 +0,0 @@ -<?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This file is necessary because for - Tracker to work right in simulation it needs the magnet and the - beampipe. MUON contains the beampipe and magnet it needs to be - positioned as well. ---> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> - - -<PosPartSection label="cmsMuonMagnetBeam.xml"> - <PosPart copyNumber="1"> - <rParent name="cms:World"/> - <rChild name="cms:OCMS"/> - </PosPart> - - <PosPart copyNumber="1"> - <rParent name="cms:OCMS"/> - <rChild name="cms:CMSE"/> - <rRotation name="rotations:000D"/> - </PosPart> - -<!-- mec : NOTE: these positioning instructions allow the sub-detectors, -like tracker.xml file to be independent of the whole CMS detector. ---> - <PosPart copyNumber="1"> - <rParent name="cms:CMSE"/> - <rChild name="muonBase:MUON"/> - <rRotation name="rotations:000D"/> - </PosPart> - - <PosPart copyNumber="1"> - <rParent name="cms:CMSE"/> - <rChild name="beampipe:BEAM"/> - <rRotation name="rotations:000D"/> - </PosPart> - <PosPart copyNumber="2"> - <rParent name="cms:CMSE"/> - <rChild name="beampipe:BEAM"/> - <rRotation name="rotations:180D"/> - </PosPart> - - <PosPart copyNumber="1"> - <rParent name="muonBase:MUON"/> - <rChild name="mgnt:MGNT"/> - <rRotation name="rotations:000D"/> - </PosPart> - - -</PosPartSection> - -</DDDefinition> diff --git a/Geometry/CMSCommonData/data/cmsTracker.xml b/Geometry/CMSCommonData/data/cmsTracker.xml deleted file mode 100644 index 4f4d6396397..00000000000 --- a/Geometry/CMSCommonData/data/cmsTracker.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This file links the tracker:Tracker - LogicalPart to the cms:CMSE LogicalPart. By leaving this file - out of the configuration one can have Tracker as the root - node in the graph. ---> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> - -<PosPartSection label="cms.xml"> - - <PosPart copyNumber="1"> - <rParent name="cms:CMSE"/> - <rChild name="tracker:Tracker"/> - <rRotation name="rotations:000D"/> - </PosPart> - -</PosPartSection> - -</DDDefinition> diff --git a/Geometry/CMSCommonData/data/mgnt.xml b/Geometry/CMSCommonData/data/mgnt.xml index bef7bb60f82..c481ef05c1c 100644 --- a/Geometry/CMSCommonData/data/mgnt.xml +++ b/Geometry/CMSCommonData/data/mgnt.xml @@ -139,6 +139,11 @@ <PosPartSection label="mgnt.xml"> + <PosPart copyNumber="1"> + <rParent name="cms:MUON"/> + <rChild name="mgnt:MGNT"/> + <rRotation name="rotations:000D"/> + </PosPart> <PosPart copyNumber="1"> <rParent name="mgnt:MGNT"/> <rChild name="mgnt:COII"/> diff --git a/Geometry/CMSCommonData/data/muonBase.xml b/Geometry/CMSCommonData/data/muonBase.xml deleted file mode 100644 index e0a53ee7808..00000000000 --- a/Geometry/CMSCommonData/data/muonBase.xml +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0"?> -<!-- 2006-09-19 Michael Case: This file defines the LogicalParts - necessary to build the Muon Barrel. This is kept separate from - the placement of the LPs in their parents, again, to allow - isolation of the sub-graph with MUON as root. ---> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd"> - -<SolidSection label="muonBase.xml"> - <Polycone name="MUON" startPhi="0*deg" deltaPhi="360*deg" > - <ZSection z="-[cms:MuonBeamZ2]" rMin="[cms:TotemMuonR2]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:TotemMuonZ1]" rMin="[cms:TotemMuonR2]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:TotemMuonZ1]" rMin="[cms:TotemMuonR1]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:MuonBeamZ1]" rMin="[cms:MuonBeamR2]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:MuonBeamZ1]" rMin="[cms:MuonBeamR1]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:MuonBeamZ0]" rMin="[cms:MuonBeamR0]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:CalorBeamZ2]" rMin="[cms:CalorBeamR2]" rMax="[cms:CMSR1]" /> - <ZSection z="-[cms:CalorBeamZ2]" rMin="[cms:CalorMuonR]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:CalorBeamZ2]" rMin="[cms:CalorMuonR]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:CalorBeamZ2]" rMin="[cms:CalorBeamR2]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:MuonBeamZ0]" rMin="[cms:MuonBeamR0]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:MuonBeamZ1]" rMin="[cms:MuonBeamR1]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:MuonBeamZ1]" rMin="[cms:MuonBeamR2]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:TotemMuonZ1]" rMin="[cms:TotemMuonR1]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:TotemMuonZ1]" rMin="[cms:TotemMuonR2]" rMax="[cms:CMSR1]" /> - <ZSection z="[cms:MuonBeamZ2]" rMin="[cms:TotemMuonR2]" rMax="[cms:CMSR1]" /> - </Polycone> - <Tubs name="MB" rMin="[cms:MBarRmin]" rMax="[cms:CMSR1]" dz="[cms:MBarZ]" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="MBWheel" rMin="[cms:MBarRmin]" rMax="[cms:MBarRmax]" dz="[cms:MBRingZ]" - startPhi="0*deg" deltaPhi="360*deg"/> -</SolidSection> - -<LogicalPartSection label="muonBase.xml"> - <LogicalPart name="MUON" category="unspecified"> - <rSolid name="MUON"/> - <rMaterial name="materials:Air"/> - </LogicalPart> - <LogicalPart name="MB" category="unspecified"> - <rSolid name="MB"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> - <LogicalPart name="MBWheel_0" category="unspecified"> - <rSolid name="MBWheel"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> - <LogicalPart name="MBWheel_1P" category="unspecified"> - <rSolid name="MBWheel"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> - <LogicalPart name="MBWheel_2P" category="unspecified"> - <rSolid name="MBWheel"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> - <LogicalPart name="MBWheel_1N" category="unspecified"> - <rSolid name="MBWheel"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> - <LogicalPart name="MBWheel_2N" category="unspecified"> - <rSolid name="MBWheel"/> - <rMaterial name="materials:M_B_Air"/> - </LogicalPart> -</LogicalPartSection> - -</DDDefinition> diff --git a/Geometry/CaloTopology/src/CaloTowerTopology.cc b/Geometry/CaloTopology/src/CaloTowerTopology.cc index be8975c3b97..9b28c9ebc15 100644 --- a/Geometry/CaloTopology/src/CaloTowerTopology.cc +++ b/Geometry/CaloTopology/src/CaloTowerTopology.cc @@ -1,8 +1,6 @@ #include "DataFormats/CaloTowers/interface/CaloTowerDetId.h" #include "Geometry/CaloTopology/interface/CaloTowerTopology.h" -static const int DoubleHE = 21; -static const int QuadHF = 40; bool CaloTowerTopology::valid(const DetId& id) const { CaloTowerDetId tid(id); @@ -13,52 +11,20 @@ bool CaloTowerTopology::valid(const DetId& id) const { std::vector<DetId> CaloTowerTopology::east(const DetId& id) const { std::vector<DetId> dd; CaloTowerDetId tid(id); - int ieta=tid.ieta(); - int iphi=tid.iphi(); - - if (ieta==1) ieta=-1; - else if (ieta==DoubleHE) { - ieta--; - dd.push_back(CaloTowerDetId(ieta,iphi+1)); - } else if (ieta-1==-DoubleHE) { - if ((iphi%2)==0) iphi--; - ieta--; - } else if (ieta==QuadHF) { - ieta--; - dd.push_back(CaloTowerDetId(ieta,iphi+2)); - } else if (ieta-1==-QuadHF) { - if (((iphi-1)%4)!=0) iphi-=2; - } else ieta--; - + int ieta=tid.ieta()-1; + if (ieta==0) ieta--; if (ieta>=-41) - dd.push_back(CaloTowerDetId(ieta,iphi)); + dd.push_back(CaloTowerDetId(ieta,tid.iphi())); return dd; } std::vector<DetId> CaloTowerTopology::west(const DetId& id) const { std::vector<DetId> dd; CaloTowerDetId tid(id); - - int ieta=tid.ieta(); - int iphi=tid.iphi(); - - if (ieta==-1) ieta=1; - else if (ieta==-DoubleHE) { - ieta++; - dd.push_back(CaloTowerDetId(ieta,iphi+1)); - } else if (ieta+1==DoubleHE) { - if ((iphi%2)==0) iphi--; - ieta++; - } else if (ieta==-QuadHF) { - ieta++; - dd.push_back(CaloTowerDetId(ieta,iphi+2)); - } else if (ieta+1==QuadHF) { - if (((iphi-1)%4)!=0) iphi-=2; - } else ieta++; - + int ieta=tid.ieta()+1; + if (ieta==0) ieta++; if (ieta<=41) - dd.push_back(CaloTowerDetId(ieta,iphi)); - + dd.push_back(CaloTowerDetId(ieta,tid.iphi())); return dd; } @@ -66,15 +32,6 @@ std::vector<DetId> CaloTowerTopology::north(const DetId& id) const { CaloTowerDetId tid(id); int iphi_n=tid.iphi()+1; if (iphi_n>72) iphi_n=1; - if (tid.ietaAbs()>=DoubleHE && (iphi_n%2)==0) { - iphi_n++; - if (iphi_n>72) iphi_n-=72; - } - if (tid.ietaAbs()>=QuadHF && ((iphi_n-1)%4)!=0) { - iphi_n+=2; - if (iphi_n>72) iphi_n-=72; - } - std::vector<DetId> dd; dd.push_back(CaloTowerDetId(tid.ieta(),iphi_n)); return dd; @@ -84,12 +41,6 @@ std::vector<DetId> CaloTowerTopology::south(const DetId& id) const { CaloTowerDetId tid(id); int iphi_s=tid.iphi()-1; if (iphi_s==0) iphi_s=72; - if (tid.ietaAbs()>=DoubleHE && (iphi_s%2)==0) iphi_s--; - if (tid.ietaAbs()>=QuadHF && ((iphi_s-1)%4)!=0) { - iphi_s-=2; - if (iphi_s<=0) iphi_s+=72; - } - std::vector<DetId> dd; dd.push_back(CaloTowerDetId(tid.ieta(),iphi_s)); return dd; diff --git a/Geometry/CommonTopologies/interface/RadialStripTopology.h b/Geometry/CommonTopologies/interface/RadialStripTopology.h deleted file mode 100644 index c724723d1b9..00000000000 --- a/Geometry/CommonTopologies/interface/RadialStripTopology.h +++ /dev/null @@ -1,230 +0,0 @@ -#ifndef _RADIAL_STRIP_TOPOLOGY_H_ -#define _RADIAL_STRIP_TOPOLOGY_H_ - -#include "Geometry/CommonTopologies/interface/StripTopology.h" - -/** - * \class RadialStripTopology - * A StripTopology in which the component strips subtend a constant - * angular width, and, if projected, intersect at a point. - * - * \author Tim Cox - * - * WARNING! Wherever 'float strip' is used the units of 'strip' are angular - * widths of each strip. The range is from 0.0 at the extreme edge of the - * 'first' strip at one edge of the detector, to nstrip*angular width - * at the other edge. <BR> - * The centre of the first strip is at strip = 0.5 <BR> - * The centre of the last strip is at strip = 0.5 + (nstrip-1) <BR> - * This is for consistency with CommonDet usage of 'float strip' (but - * where units are strip pitch rather than strip angular width.)<BR> - * - */ - -class RadialStripTopology : public StripTopology { - public: - - /** - * Constructor from:<BR> - * number of strips<BR> - * angular width of a strip<BR> - * detector height (2 x apothem - we love that word)<BR> - * radial distance from symmetry centre of detector to the point at which - * the outer edges of the two extreme strips (projected) intersect.<BR> - * orientation of local y axis: 1 means pointing from the smaller side of - * the module to the larger side (along apothem), and -1 means in the - * opposite direction, i.e. from the larger side along the apothem to the - * smaller side. Default value is 1. - */ - RadialStripTopology( int ns, float aw, float dh, float r, int yAx = 1); - - /** - * Destructor - */ - virtual ~RadialStripTopology(){} - - // ========================================================= - // StripTopology interface - implement pure virtual methods - // ========================================================= - - /** - * LocalPoint on x axis for given 'strip' - * 'strip' is a float in units of the strip (angular) width - */ - virtual LocalPoint localPosition(float strip) const; - - /** - * LocalPoint for a given MeasurementPoint <BR> - * What's a MeasurementPoint? <BR> - * In analogy with that used with TrapezoidalStripTopology objects, - * a MeasurementPoint is a 2-dim object.<BR> - * The first dimension measures the - * angular position wrt central line of symmetry of detector, - * in units of strip (angular) widths (range 0 to total angle subtended - * by a detector).<BR> - * The second dimension measures - * the fractional position along the strip (range -0.5 to +0.5).<BR> - * BEWARE! The components are not Cartesian.<BR> - */ - virtual LocalPoint localPosition(const MeasurementPoint&) const; - - /** - * LocalError for a pure strip measurement, where 'strip' - * is the (float) position (a 'phi' angle wrt y axis) and - * stripErr2 is the sigma-squared. Both quantities are expressed in - * units of theAngularWidth of a strip. - */ - virtual LocalError localError(float strip, float stripErr2) const; - - /** - * LocalError for a given MeasurementPoint with known MeasurementError. - * This may be used in Kalman filtering and hence must allow possible - * correlations between the components. - */ - virtual LocalError localError(const MeasurementPoint&, const MeasurementError&) const; - - /** - * Strip in which a given LocalPoint lies. This is a float which - * represents the fractional strip position within the detector.<BR> - * Returns zero if the LocalPoint falls at the extreme low edge of the - * detector or BELOW, and float(nstrips) if it falls at the extreme high - * edge or ABOVE. - */ - virtual float strip(const LocalPoint&) const; - - - /** - * Pitch at centre of detector, along local x axis.<BR> - * BEWARE: Approximation since strip width along x is not - * constant for a RadialStripTopology. You may really need some - * other quantity... - * This returns arc length for a strip centred on y axis. - */ - virtual float pitch() const; - - /** - * Pitch at a given LocalPoint. <BR> - * BEWARE: like pitch(), not very useful in a - * RadialStripTopology. - */ - virtual float localPitch(const LocalPoint&) const; - - /** - * Angle between strip and symmetry axis (=local y axis) - * for given strip. <BR> - * This is like a phi angle but measured clockwise from y axis - * rather than counter clockwise from x axis. - * Note that 'strip' is a float with a continuous range from 0 to - * float(nstrips) to cover the whole detector, and the centres of - * strips correspond to half-integer values 0.5, 1.5, ..., nstrips-0.5 - * whereas values 1, 2, ... nstrips correspond to the upper phi edges of - * the strips. - */ - virtual float stripAngle(float strip) const; - - /** - * Total number of strips - */ - virtual int nstrips() const { return theNumberOfStrips; } - - /** - * Height of detector (= length of long symmetry axis), - * just as for a TrapezoidalStripTopology. <BR> - */ - virtual float stripLength() const { return theDetHeight; } - - /** - * Length of a strip passing through a given LocalPpoint - */ - virtual float localStripLength(const LocalPoint& ) const; - - - // ========================================================= - // Topology interface (not already implemented for - // StripTopology interface) - // ========================================================= - - virtual MeasurementPoint measurementPosition( const LocalPoint& ) const; - - virtual MeasurementError measurementError( const LocalPoint&, const LocalError& ) const; - - /** - * Channel number corresponding to a given LocalPoint.<BR> - * This is effectively an integer version of strip(), with range 0 to - * nstrips-1. <BR> - * LocalPoints outside the detector will be considered - * as contributing to the edge channels 0 or nstrips-1. - */ - virtual int channel( const LocalPoint& ) const; - - - // ========================================================= - // RadialStripTopology interface itself - // ========================================================= - - /** - * Angular width of a each strip - */ - float angularWidth() const { return theAngularWidth;} - - /** - * Phi pitch of each strip (= angular width!) - */ - virtual float phiPitch(void) const { return angularWidth(); } - - /** - * Length of long symmetry axis of plane of strips - */ - float detHeight() const { return theDetHeight;} - - /** - * Distance from the intersection of the projections of - * the extreme edges of the two extreme strips to the symmetry - * centre of the plane of strips. - */ - float centreToIntersection() const { return theCentreToIntersection; } - - /** - * Convenience function to access azimuthal angle of extreme edge of first strip - * measured relative to long symmetry axis of the plane of strips. <BR> - * - * WARNING! This angle is measured clockwise from the local y axis - * which means it is in the conventional azimuthal phi plane, - * but azimuth is of course measured from local x axis not y. - * The range of this angle is - * -(full angle)/2 to +(full angle)/2. <BR> - * where (full angle) = nstrips() * angularWidth(). <BR> - * - */ - float phiOfOneEdge() const { return thePhiOfOneEdge; } - - /** - * Local x where centre of strip intersects input local y - */ - float xOfStrip(int strip, float y) const; - - /** - * Nearest strip to given LocalPoint - */ - virtual int nearestStrip(const LocalPoint&) const; - - /** - * y axis orientation, 1 means detector width increases with local y - */ - int yAxisOrientation() const { return theYAxisOrientation; } - - friend std::ostream & operator<<(std::ostream&, const RadialStripTopology& ); - - private: - - int theNumberOfStrips; // total no. of strips in plane of strips - float theAngularWidth; // angle subtended by each strip = phi pitch - float theDetHeight; // length of long symmetry axis = twice the apothem of the enclosing trapezoid - float theCentreToIntersection; // distance centre of detector face to intersection of edge strips (projected) - float thePhiOfOneEdge; // local 'phi' of one edge of plane of strips (I choose it negative!) - int theYAxisOrientation; // 1 means y axis going from smaller to larger side, -1 means opposite direction -}; - -#endif - - diff --git a/Geometry/CommonTopologies/src/RadialStripTopology.cc b/Geometry/CommonTopologies/src/RadialStripTopology.cc deleted file mode 100644 index 44c5c3fb309..00000000000 --- a/Geometry/CommonTopologies/src/RadialStripTopology.cc +++ /dev/null @@ -1,232 +0,0 @@ -#include <Geometry/CommonTopologies/interface/RadialStripTopology.h> -#include <FWCore/MessageLogger/interface/MessageLogger.h> -#include <Utilities/General/interface/CMSexception.h> - -#include <iostream> -#include <cmath> -#include <algorithm> - -RadialStripTopology::RadialStripTopology(int ns, float aw, float dh, float r, int yAx) : - theNumberOfStrips(ns), theAngularWidth(aw), - theDetHeight(dh), theCentreToIntersection(r), - theYAxisOrientation(yAx) { - // Angular offset of extreme edge of detector, so that angle is - // zero for a strip lying along local y axis = long symmetry axis of plane of strips - thePhiOfOneEdge = -(theNumberOfStrips/2.) * theAngularWidth; - - LogDebug("RadialStripTopology") << "Constructing RadialStripTopology:" - << " strips = " << ns - << " of width = " << aw << " rad " - << " det height = " << dh - << " ctoi = " << r - << " thePhiOfOneEdge = " << thePhiOfOneEdge << " rad " - << " theYAxisOrientation = " << theYAxisOrientation - << "\n"; -} - -float -RadialStripTopology::xOfStrip(int strip, float y) const { - //@@ Expect input 'strip' to be in range 1 to nstrips() - float tanPhi = tan( stripAngle(static_cast<float>(strip) - 0.5 ) ); - return ( y*theYAxisOrientation+centreToIntersection() ) * tanPhi; -} - -LocalPoint -RadialStripTopology::localPosition(float strip) const { - return LocalPoint( theCentreToIntersection * tan( stripAngle(strip) ), 0.0 ); -} - -LocalPoint -RadialStripTopology::localPosition(const MeasurementPoint& mp) const { - float phi = stripAngle( mp.x() ); - // 2nd component of MP is fractional position along strip, range +/-0.5, - // so distance along strip (measured from mid-point of length of strip) is - // mp.y() * (length of strip). - // Strip is always bisected by x=0. Thus local y is - // mp.y() * (length of strip) * cos(phi) - // But (length of strip) = theDetHeight/cos(phi), so - float y = mp.y() * theDetHeight; - float x = ( theCentreToIntersection + y * theYAxisOrientation ) * tan ( phi ); - return LocalPoint( x, y ); -} - -LocalError -RadialStripTopology::localError(float strip, float stripErr2) const { - // Consider measurement as strip (phi) position and - // mid-point of strip (which is on local x axis). - // Since 'strip' is in units of angular strip-widths, stripErr2 is - // required to be in corresponding units. - - float t = tan( stripAngle( strip ) ); // tan(angle between strip and y) - float c2 = 1./(1. + t*t); // cos(angle)**2 - float cs = t*c2; // sin(angle)*cos(angle); tan carries sign of sin! - float s2 = t*t * c2; // sin(angle)**2 - - float D2 = theCentreToIntersection*theCentreToIntersection / c2; - float L2 = theDetHeight*theDetHeight / c2; // length**2 of strip across detector - float A2 = theAngularWidth*theAngularWidth; - - // @@ CHECK THIS ERROR ASSIGNMENT MAKES SENSE... GIVING THE SAME - // @@ ERROR TO *ANY* MEASUREMENT ALONG STRIP, INDEPENDENT OF ORIGIN. SEEMS SUSPECT? - // But the error**2 we're assigning is L2/12 wherever we measure the position along the strip - // from... we just know the measurement is somewhere ON the strip. So probably OK. - - float SD2 = L2 / 12.; // SR = Sigma-Radius ('Radius' is along strip) - float SA2 = A2 * stripErr2; // SA = Sigma-Angle - - float sx2 = c2 * D2 * SA2 + s2 * SD2; - float sy2 = s2 * D2 * SA2 + c2 * SD2; - float rhosxsy = cs * ( SD2 - D2 * SA2 ); - - return LocalError(sx2, rhosxsy, sy2); -} - -LocalError -RadialStripTopology::localError(const MeasurementPoint& mp, - const MeasurementError& merr) const { - // Here we need to allow the possibility of correlated errors, since - // that may happen during Kalman filtering - - float phi = thePhiOfOneEdge + mp.x() * theAngularWidth; - - float t = tan( phi ); // tan(angle between strip and y) - float c2 = 1./(1. + t*t); // cos(angle)**2 - float cs = t*c2; // sin(angle)*cos(angle); tan carries sign of sin! - float s2 = t*t * c2; // sin(angle)**2 - - float A = theAngularWidth; - float A2 = A * A; - - // D is distance from intersection of edges to hit on strip - float D = (theCentreToIntersection + mp.y() * theYAxisOrientation * theDetHeight) / sqrt(c2); - float D2 = D * D; - - // L is length of strip across face of chamber - float L2 = theDetHeight*theDetHeight / c2; - float L = sqrt(L2); - - // MeasurementError elements are already squared - // but they're normalized to products of A and L (N.B. L not D!) - // @@ ENSURE MEASUREMENT ERROR COMPONENTS INDEED ARE NORMALIZED LIKE THIS! - - float SA2 = merr.uu() * A2; - float SD2 = merr.vv() * L2; // Note this norm uses stripLength**2 - float RHOSASR = merr.uv() * A * L; - - float sx2 = SA2 * D2 * c2 + 2. * RHOSASR * D * cs + SD2 * s2; - float sy2 = SA2 * D2 * s2 - 2. * RHOSASR * D * cs + SD2 * c2; - float rhosxsy = cs * ( SD2 - D2 * SA2 ) + RHOSASR * D * ( c2 - s2 ); - - return LocalError(sx2, rhosxsy, sy2); -} - -float -RadialStripTopology::strip(const LocalPoint& lp) const { - // Note that this phi is (pi/2 - conventional local phi) - // This means use atan2(x,y) rather than more usual atan2(y,x) - float phi = atan2( lp.x(), lp.y()*theYAxisOrientation+theCentreToIntersection ); - float aStrip = (phi-thePhiOfOneEdge)/theAngularWidth; - aStrip = (aStrip >= 0. ? aStrip : 0.); - aStrip = (aStrip <= theNumberOfStrips ? aStrip : theNumberOfStrips); - return aStrip; -} - -MeasurementPoint -RadialStripTopology::measurementPosition(const LocalPoint& lp) const { - // Note that this phi is (pi/2 - conventional local phi) - // This means use atan2(x,y) rather than more usual atan2(y,x) - float phi = atan2( lp.x(), lp.y()*theYAxisOrientation+theCentreToIntersection ); - return MeasurementPoint( (phi-thePhiOfOneEdge)/theAngularWidth, - lp.y()/theDetHeight ); -} - -MeasurementError -RadialStripTopology::measurementError(const LocalPoint& lp, - const LocalError& lerr) const { - - float yHitToInter = lp.y()*theYAxisOrientation + theCentreToIntersection; - - float t = lp.x() / yHitToInter; // tan(angle between strip and y) = tan(phi) - float c2 = 1./(1. + t*t); // cos(angle)**2 - float cs = t*c2; // sin(angle)*cos(angle); tan carries sign of sin! - float s2 = t*t * c2; // sin(angle)**2 - - // D is distance from intersection of edges to hit on strip - float D2 = lp.x()*lp.x() + yHitToInter*yHitToInter; - float D = sqrt(D2); - - float SA2 = ( c2 * lerr.xx() - 2. * cs * lerr.xy() + s2 * lerr.yy() ) / D2; - float SD2 = s2 * lerr.xx() + 2. * cs * lerr.xy() + c2 * lerr.yy(); - float RHOSASR = ( cs * ( lerr.xx() - lerr.yy() ) + ( c2 - s2 ) * lerr.xy() ) / D; - - return MeasurementError(SA2, RHOSASR, SD2); -} - -int -RadialStripTopology::channel(const LocalPoint& lp) const { - return std::min( int( strip(lp) ), theNumberOfStrips-1 ); -} - -float -RadialStripTopology::pitch() const { - // BEWARE: I am throwing an exception here since the strip is - // not constant along local x axis for a RadialStripTopology. - // The method localPitch() should be called instead - throw Genexception("RadialStripTopology::pitch() called (makes no sense)"); - return 0.; -} - -float -RadialStripTopology::localPitch(const LocalPoint& lp) const { - // The local pitch is the local x width of the strip at the local (x,y) - - // Calculating it is a nightmare...deriving the expression below is left - // as a exercise for the reader. - - float fstrip = strip(lp); // position in strip units - int istrip = static_cast<int>(fstrip + 1.0); // which strip number - istrip = (istrip>nstrips() ? nstrips() : istrip); // enforce maximum - float fangle = stripAngle(static_cast<float>(istrip - 0.5)); // angle of strip centre - float localp = ( lp.y()*theYAxisOrientation + theCentreToIntersection ) * sin(theAngularWidth) / - ( cos(fangle-theAngularWidth/2.)*cos(fangle+theAngularWidth/2.) ); - return localp; -} - -float -RadialStripTopology::stripAngle(float strip) const { - return ( thePhiOfOneEdge + strip*theAngularWidth ); -} - -float RadialStripTopology::localStripLength(const LocalPoint& lp) const { - float yHitToInter = lp.y()*theYAxisOrientation + theCentreToIntersection; - float t = lp.x() / yHitToInter; // tan(angle between strip and y) - float c2 = 1./(1. + t*t); // cos(angle)**2 - return theDetHeight / sqrt(c2); -} - -int RadialStripTopology::nearestStrip(const LocalPoint & lp) const -{ - // xxxStripTopology::strip() is expected to have range 0. to - // float(no of strips), but be extra careful and enforce that - - float fstrip = this->strip(lp); - int n_strips = this->nstrips(); - fstrip = ( fstrip>=0. ? fstrip : 0. ); // enforce minimum 0. - int near = static_cast<int>( fstrip ) + 1; // first strip is 1 - near = ( near<=n_strips ? near : n_strips ); // enforce maximum at right edge - return near; -} - -std::ostream & operator<<( std::ostream & os, const RadialStripTopology & rst ) -{ - os << "RadialStripTopology " << std::endl - << " " << std::endl - << "number of strips " << rst.nstrips() << std::endl - << "centre to whereStripsMeet " << rst.centreToIntersection() << std::endl - << "detector height in y " << rst.stripLength() << std::endl - << "angular width of strips " << rst.phiPitch() << std::endl - << "phi of one edge " << rst.thePhiOfOneEdge << std::endl - << "approximate pitch in x " << rst.pitch() << std::endl - << "y axis orientation " << rst.yAxisOrientation() << std::endl; - return os; -} diff --git a/Geometry/EcalCommonData/test/data/ecal_test.xml b/Geometry/EcalCommonData/test/data/ecal_test.xml deleted file mode 100644 index e6ebeeffef1..00000000000 --- a/Geometry/EcalCommonData/test/data/ecal_test.xml +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0"?> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../DetectorDescription/Schema/DDLSchema.xsd"> - -<SolidSection label="ecal.xml"> - <Polycone name="ECAL" startPhi="0*deg" deltaPhi="360*deg" > - <ZSection z="-3.75*m" rMin="26.3457*cm" rMax="1.775*m" /> - <ZSection z="-2.935*m" rMin="20.6199*cm" rMax="1.775*m" /> - <ZSection z="-2.935*m" rMin="1.238*m" rMax="1.775*m" /> - <ZSection z="2.935*m" rMin="1.238*m" rMax="1.775*m" /> - <ZSection z="2.935*m" rMin="20.6199*cm" rMax="1.775*m" /> - <ZSection z="3.75*m" rMin="26.3457*cm" rMax="1.775*m" /> - </Polycone> - <Polycone name="EREG" startPhi="0*deg" deltaPhi="360*deg" > - <ZSection z="0*fm" rMin="1.238*m" rMax="1.775*m" /> - <ZSection z="2.935*m" rMin="1.238*m" rMax="1.775*m" /> - <ZSection z="2.935*m" rMin="20.6199*cm" rMax="1.775*m" /> - <ZSection z="3.75*m" rMin="26.3457*cm" rMax="1.775*m" /> - </Polycone> - <Tubs name="BLOCK" rMin="1.238*m" rMax="1.538*m" dz="1.875*m" startPhi="0*deg" deltaPhi="360*deg"/> - -</SolidSection> - -<LogicalPartSection label="ecal.xml"> - <LogicalPart name="ECAL" category="unspecified"> - <rSolid name="ECAL"/> - <rMaterial name="materials:Air"/> - </LogicalPart> - <LogicalPart name="EREG" category="unspecified"> - <rSolid name="EREG"/> - <rMaterial name="materials:E_Air"/> - </LogicalPart> - <LogicalPart name="BLOCK" category="unspecified"> - <rSolid name="BLOCK"/> - <rMaterial name="materials:E_PbWO4"/> - </LogicalPart> -</LogicalPartSection> - -<PosPartSection label="ecal.xml"> - <PosPart copyNumber="1"> - <rParent name="cms:CALO"/> - <rChild name="ecal_test:ECAL"/> - <rRotation name="rotations:000D"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="ecal_test:ECAL"/> - <rChild name="ecal_test:EREG"/> - <rRotation name="rotations:000D"/> - </PosPart> - <PosPart copyNumber="2"> - <rParent name="ecal_test:ECAL"/> - <rChild name="ecal_test:EREG"/> - <rRotation name="rotations:180D"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="ecal_test:EREG"/> - <rChild name="ecal_test:BLOCK"/> - <rRotation name="rotations:000D"/> - <Translation x="0*fm" y="0*fm" z="1.875*m" /> - </PosPart> -</PosPartSection> - - -</DDDefinition> diff --git a/Geometry/EcalMapping/doc/html/index.html b/Geometry/EcalMapping/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Geometry/EcalMapping/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Geometry/EcalMapping/doc/html/overview.html b/Geometry/EcalMapping/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Geometry/EcalMapping/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Geometry/ForwardGeometry/doc/html/index.html b/Geometry/ForwardGeometry/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Geometry/ForwardGeometry/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Geometry/ForwardGeometry/doc/html/overview.html b/Geometry/ForwardGeometry/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Geometry/ForwardGeometry/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Geometry/HcalCommonData/data/hcalalgo.xml b/Geometry/HcalCommonData/data/hcalalgo.xml index d419b08a357..69693ecf1c6 100644 --- a/Geometry/HcalCommonData/data/hcalalgo.xml +++ b/Geometry/HcalCommonData/data/hcalalgo.xml @@ -5,34 +5,31 @@ Shuichi Konori, and Chris Tully. --> <ConstantsSection label="hcalalgo.xml" eval="true"> - <Constant name="Z0HBHE" value="375.000*cm"/> - <Constant name="Z1HB" value="324.000*cm"/> - <Constant name="z2HB" value="370.460*cm"/> - <Constant name="z3HB" value="375.022*cm"/> - <Constant name="z4HB" value="446.079*cm"/> - <Constant name="z5HB" value="449.127*cm"/> - <Constant name="z6HB" value="[cms:CalorBeamZ2]"/> - <Constant name="zRat" value="([Z0HBHE]-[z6HB])/([cms:CalorBeamZ1]-[z6HB])"/> + <Constant name="Z0HBHE" value="375.000*cm"/> + <Constant name="Z1HB" value="324.000*cm"/> + <Constant name="z2HB" value="370.460*cm"/> + <Constant name="z3HB" value="375.022*cm"/> + <Constant name="z4HB" value="446.079*cm"/> + <Constant name="z5HB" value="449.127*cm"/> + <Constant name="z6HB" value="[cms:CalorBeamZ2]"/> - <Constant name="rMin1" value="177.500*cm"/> - <Constant name="rMin4" value="277.071*cm"/> - <Constant name="rMin5" value="281.342*cm"/> - <Constant name="rMin2" value="[cms:CalorBeamR2]+[zRat]* - ([cms:CalorBeamR1]-[cms:CalorBeamR2])"/> + <Constant name="rMin1" value="177.500*cm"/> + <Constant name="rMin4" value="277.071*cm"/> + <Constant name="rMin5" value="281.342*cm"/> - <Constant name="rMax1" value="186.650*cm"/> - <Constant name="rMax3" value="192.703*cm"/> - <Constant name="rMax4" value="287.000*cm"/> + <Constant name="rMax1" value="186.650*cm"/> + <Constant name="rMax3" value="192.703*cm"/> + <Constant name="rMax4" value="287.000*cm"/> </ConstantsSection> <SolidSection label="hcalalgo.xml"> <Polycone name="HCal" startPhi="0*deg" deltaPhi="360*deg" > <ZSection z="-[z6HB]" rMin="[cms:CalorBeamR2]" rMax="[cms:CalorMuonR]" /> - <ZSection z="-[Z0HBHE]" rMin="[rMin2]" rMax="[cms:CalorMuonR]" /> + <ZSection z="-[Z0HBHE]" rMin="[cms:CalorBeamR1]" rMax="[cms:CalorMuonR]" /> <ZSection z="-[Z0HBHE]" rMin="[rMin1]" rMax="[cms:CalorMuonR]" /> <ZSection z="[Z0HBHE]" rMin="[rMin1]" rMax="[cms:CalorMuonR]" /> - <ZSection z="[Z0HBHE]" rMin="[rMin2]" rMax="[cms:CalorMuonR]" /> + <ZSection z="[Z0HBHE]" rMin="[cms:CalorBeamR1]" rMax="[cms:CalorMuonR]" /> <ZSection z="[z6HB]" rMin="[cms:CalorBeamR2]" rMax="[cms:CalorMuonR]" /> </Polycone> <Polyhedra name="HRCF" numSide="18" startPhi="350*deg" deltaPhi="360*deg" > @@ -102,7 +99,7 @@ <PosPartSection label="hcalalgo.xml"> <PosPart copyNumber="1"> - <rParent name="caloBase:CALO"/> + <rParent name="cms:CALO"/> <rChild name="hcalalgo:HCal"/> <rRotation name="rotations:000D"/> </PosPart> diff --git a/Geometry/HcalCommonData/data/hcalouteralgo.xml b/Geometry/HcalCommonData/data/hcalouteralgo.xml index fb66a81c625..ca5df6837bd 100644 --- a/Geometry/HcalCommonData/data/hcalouteralgo.xml +++ b/Geometry/HcalCommonData/data/hcalouteralgo.xml @@ -673,7 +673,7 @@ </PosPartSection> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <String name="ChildName" value="MBAT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="12" /> @@ -686,7 +686,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="12" /> @@ -699,7 +699,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="3" /> @@ -712,7 +712,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <String name="ChildName" value="MBBT_R1P"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="1" /> @@ -725,7 +725,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="8" /> @@ -738,7 +738,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="12" /> @@ -751,7 +751,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="2" /> @@ -764,7 +764,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <String name="ChildName" value="MBBT_R1M"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="1" /> @@ -777,7 +777,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="9" /> @@ -790,7 +790,7 @@ <Numeric name="zoffset" value="0*fm"/> </Algorithm> <Algorithm name="hcal:DDHCalAngular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <String name="ChildName" value="MBBT"/> <String name="RotNameSpace" value="hcalrotations"/> <Numeric name="n" value="12" /> diff --git a/Geometry/HcalSimData/TagLog b/Geometry/HcalSimData/TagLog new file mode 100644 index 00000000000..c45d9d29944 --- /dev/null +++ b/Geometry/HcalSimData/TagLog @@ -0,0 +1,12 @@ +** V00-02-03 [Mon Dec 5 18:33:51 2005] +Move all xml files to data + +** V00-02-02 [Mon Nov 28 09:26:57 2005] +Introduce CaloTrkProcessing as a SD + +** V00-02-00 [Tue Nov 8 18:00:11 2005] +updated version to V00-02-00 + +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryLoader.cc b/Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryLoader.cc index 7823ccb2613..095f0e5fb98 100644 --- a/Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryLoader.cc +++ b/Geometry/HcalTowerAlgo/src/HcalHardcodeGeometryLoader.cc @@ -105,10 +105,6 @@ const CaloCellGeometry * HcalHardcodeGeometryLoader::makeCell(const HcalDetId & if(subdet == HcalForward) { eta1 = theHFEtaBounds[etaRing-theTopology.firstHFRing()]; eta2 = theHFEtaBounds[etaRing-theTopology.firstHFRing()+1]; - } else if (etaRing==28 && detId.depth()==3) { - // double-width in eta at depth 3 in ieta=28 - eta1 = theHBHEEtaBounds[etaRing-1]; - eta2 = theHBHEEtaBounds[etaRing+1]; } else { eta1 = theHBHEEtaBounds[etaRing-1]; eta2 = theHBHEEtaBounds[etaRing]; @@ -173,10 +169,7 @@ const CaloCellGeometry * HcalHardcodeGeometryLoader::makeCell(const HcalDetId & thickness = theHEZPos[3] - z; } else if (nDepthBins==2 && depth==2) { z = theHEZPos[depth - 1]; - if (etaRing==29) // special case for tower 29 - thickness = theHEZPos[depth] - z; - else - thickness = theHEZPos[3] - z; + thickness = theHEZPos[3] - z; } else { z = theHEZPos[depth - 1]; thickness = theHEZPos[depth] - z; diff --git a/Geometry/MTCCTrackerCommonData/data/tracker.xml b/Geometry/MTCCTrackerCommonData/data/tracker.xml deleted file mode 100644 index 7ce9a2224ec..00000000000 --- a/Geometry/MTCCTrackerCommonData/data/tracker.xml +++ /dev/null @@ -1,225 +0,0 @@ -<?xml version="1.0"?> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../DetectorDescription/Schema/DDLSchema.xsd"> - -<!-- 2006/10/24:MEC (case) IMPORTANT: This file is for MTCC and was previously named tracker_mtcc.xml. - However for making things work together we should use the same DDL namespace, tracker, - therefore I've renamed it. ---> - -<ConstantsSection label="tracker.xml" eval="true"> - <Constant name="zero" value="0.0*fm"/> - <Constant name="ActiveScreenL" value="5.640*m"/> - <Constant name="ActiveScreenR" value="0.190*cm"/> - <Constant name="ActiveScreenRin" value="1.182*m"/> - <Constant name="ActiveScreenRmid" value="1.187*m"/> - <Constant name="ActiveScreenRout" value="1.188*m"/> - <Constant name="ActiveScreenRpos" value="1.184*m"/> - <Constant name="PatchPannelInL" value="0.30*cm"/> - <Constant name="PatchPannelL" value="9.00*cm"/> - <Constant name="PatchPannelMidL" value="7.70*cm"/> - <Constant name="PatchPannelMidZ" value="-([PatchPannelL]- - [PatchPannelMidL])/2+[PatchPannelInL]" /> - <Constant name="PatchPannelOutL" value="1.00*cm"/> - <Constant name="PatchPannelRMin" value="7.40*cm"/> - <Constant name="PatchPannelRMax" value="1.233*m"/> - <Constant name="PatchPannelR1" value="30.00*cm"/> - <Constant name="PatchPannelR2" value="62.50*cm"/> - <Constant name="PatchPannelR3" value="1.105*m"/> - <Constant name="PatchPannelZ" value="2.865*m"/> -</ConstantsSection> - -<SolidSection label="tracker.xml"> - <Polycone name="Tracker" startPhi="0*deg" deltaPhi="360*deg" > - <ZSection z="-[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:TrackCalorR]" /> - <ZSection z="-[cms:TrackBeamZ1]" rMin="[cms:TrackBeamR1]" rMax="[cms:TrackCalorR]" /> - <ZSection z="[cms:TrackBeamZ1]" rMin="[cms:TrackBeamR1]" rMax="[cms:TrackCalorR]" /> - <ZSection z="[cms:TrackBeamZ2]" rMin="[cms:TrackBeamR2]" rMax="[cms:TrackCalorR]" /> - </Polycone> - <Tubs name="TrackerScreenCont" rMin="[ActiveScreenRin]" - rMax="[ActiveScreenRout]" dz="[ActiveScreenL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerScreenSupp" rMin="[ActiveScreenRmid]" - rMax="[ActiveScreenRout]" dz="[ActiveScreenL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerScreen" rMin="[zero]" - rMax="[ActiveScreenR]" dz="[ActiveScreenL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerPatchPanel" rMin="[PatchPannelRMin]" - rMax="[PatchPannelRMax]" dz="[PatchPannelL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerPatchPanelIn" rMin="[PatchPannelR1]" - rMax="[PatchPannelR3]" dz="[PatchPannelInL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerPatchPanelMid1" rMin="[PatchPannelR1]" - rMax="[PatchPannelR3]" dz="[PatchPannelMidL]/2" - startPhi="-10*deg" deltaPhi="20*deg"/> - <Tubs name="TrackerPatchPanelMid2" rMin="[PatchPannelR1]" - rMax="[PatchPannelR2]" dz="[PatchPannelMidL]/2" - startPhi="-80*deg" deltaPhi="160*deg"/> - <Tubs name="TrackerPatchPanelMid3" rMin="[PatchPannelR2]" - rMax="[PatchPannelR3]" dz="[PatchPannelMidL]/2" - startPhi="-35*deg" deltaPhi="70*deg"/> - <Tubs name="TrackerPatchPanelOut" rMin="[PatchPannelR1]" - rMax="[PatchPannelR3]" dz="[PatchPannelOutL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> - <Tubs name="TrackerPatchPanelUp" rMin="[PatchPannelR3]" - rMax="[PatchPannelRMax]" dz="[PatchPannelL]/2" - startPhi="0*deg" deltaPhi="360*deg"/> -</SolidSection> - -<LogicalPartSection label="tracker.xml"> - <LogicalPart name="Tracker" category="unspecified"> - <rSolid name="Tracker"/> - <rMaterial name="materials:Air"/> - </LogicalPart> - <LogicalPart name="TrackerScreenCont" category="unspecified"> - <rSolid name="TrackerScreenCont"/> - <rMaterial name="materials:Foam"/> - </LogicalPart> - <LogicalPart name="TrackerScreenSupp" category="unspecified"> - <rSolid name="TrackerScreenSupp"/> - <rMaterial name="materials:Carbon fibre str."/> - </LogicalPart> - <LogicalPart name="TrackerScreen" category="unspecified"> - <rSolid name="TrackerScreen"/> - <rMaterial name="trackermaterial:active_screen"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanel" category="unspecified"> - <rSolid name="TrackerPatchPanel"/> - <rMaterial name="materials:Air"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelIn" category="unspecified"> - <rSolid name="TrackerPatchPanelIn"/> - <rMaterial name="trackermaterial:Tk_panels_in"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelMid1" category="unspecified"> - <rSolid name="TrackerPatchPanelMid1"/> - <rMaterial name="trackermaterial:Tk_panels_mid1"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelMid2" category="unspecified"> - <rSolid name="TrackerPatchPanelMid2"/> - <rMaterial name="trackermaterial:Tk_panels_mid2"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelMid3" category="unspecified"> - <rSolid name="TrackerPatchPanelMid3"/> - <rMaterial name="trackermaterial:Tk_panels_mid3"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelOut" category="unspecified"> - <rSolid name="TrackerPatchPanelOut"/> - <rMaterial name="trackermaterial:Tk_panels_out"/> - </LogicalPart> - <LogicalPart name="TrackerPatchPanelUp" category="unspecified"> - <rSolid name="TrackerPatchPanelUp"/> - <rMaterial name="trackermaterial:Tk_panels_up"/> - </LogicalPart> -</LogicalPartSection> - -<RotationSection label="tracker.xml"> - <Rotation name="180D" thetaX="90*deg" phiX="180*deg" thetaY="90*deg" - phiY="90*deg" thetaZ="180*deg" phiZ="0*deg" /> -</RotationSection> - -<PosPartSection label="tracker.xml"> - <PosPart copyNumber="1"> - <rParent name="tracker:Tracker"/> - <rChild name="tracker:TrackerScreenCont"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:TrackerScreenCont"/> - <rChild name="tracker:TrackerScreenSupp"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:Tracker"/> - <rChild name="tracker:TrackerPatchPanel"/> - <Translation x="[zero]" y="[zero]" z="[PatchPannelZ]"/> - </PosPart> - <PosPart copyNumber="2"> - <rParent name="tracker:Tracker"/> - <rChild name="tracker:TrackerPatchPanel"/> - <rRotation name="tracker:180D"/> - <Translation x="[zero]" y="[zero]" z="-[PatchPannelZ]"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:TrackerPatchPanel"/> - <rChild name="tracker:TrackerPatchPanelIn"/> - <Translation x="[zero]" y="[zero]" z="-([PatchPannelL]-[PatchPannelInL])/2"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:TrackerPatchPanel"/> - <rChild name="tracker:TrackerPatchPanelOut"/> - <Translation x="[zero]" y="[zero]" z="([PatchPannelL]-[PatchPannelOutL])/2"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:TrackerPatchPanel"/> - <rChild name="tracker:TrackerPatchPanelUp"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:Tracker"/> - <rChild name="tib_mtcc:TIB"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:Tracker"/> - <rChild name="tob_mtcc:TOB"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="tracker:Tracker"/> - <rChild name="tec_mtcc:TEC"/> - <Translation x="[zero]" y="[zero]" z="[tec_mtcc:ZPos]"/> - </PosPart> -</PosPartSection> - -<Algorithm name="track:DDTrackerAngular"> - <rParent name="tracker:TrackerScreenCont"/> - <String name="ChildName" value="tracker:TrackerScreen"/> - <Numeric name="N" value="96" /> - <Numeric name="StartCopyNo" value="1" /> - <Numeric name="IncrCopyNo" value="1" /> - <Numeric name="RangeAngle" value="360*deg"/> - <Numeric name="StartAngle" value="0*deg"/> - <Numeric name="Radius" value="[ActiveScreenRpos]"/> - <Vector name="Center" type="numeric" nEntries="3"> 0, 0, 0 </Vector> -</Algorithm> - -<Algorithm name="track:DDTrackerAngular"> - <rParent name="tracker:TrackerPatchPanel"/> - <String name="ChildName" value="tracker:TrackerPatchPanelMid1"/> - <Numeric name="N" value="2" /> - <Numeric name="StartCopyNo" value="1" /> - <Numeric name="IncrCopyNo" value="1" /> - <Numeric name="RangeAngle" value="360*deg"/> - <Numeric name="StartAngle" value="90*deg"/> - <Numeric name="Radius" value="[zero]"/> - <Vector name="Center" type="numeric" nEntries="3"> - [zero], [zero], [PatchPannelMidZ] - </Vector> -</Algorithm> - -<Algorithm name="track:DDTrackerAngular"> - <rParent name="tracker:TrackerPatchPanel"/> - <String name="ChildName" value="tracker:TrackerPatchPanelMid2"/> - <Numeric name="N" value="2" /> - <Numeric name="StartCopyNo" value="1" /> - <Numeric name="IncrCopyNo" value="1" /> - <Numeric name="RangeAngle" value="360*deg"/> - <Numeric name="StartAngle" value="0*deg"/> - <Numeric name="Radius" value="[zero]"/> - <Vector name="Center" type="numeric" nEntries="3"> - [zero], [zero], [PatchPannelMidZ] - </Vector> -</Algorithm> - -<Algorithm name="track:DDTrackerAngular"> - <rParent name="tracker:TrackerPatchPanel"/> - <String name="ChildName" value="tracker:TrackerPatchPanelMid3"/> - <Numeric name="N" value="4" /> - <Numeric name="StartCopyNo" value="1" /> - <Numeric name="IncrCopyNo" value="1" /> - <Numeric name="RangeAngle" value="360*deg"/> - <Numeric name="StartAngle" value="45*deg"/> - <Numeric name="Radius" value="[zero]"/> - <Vector name="Center" type="numeric" nEntries="3"> - [zero], [zero], [PatchPannelMidZ] - </Vector> -</Algorithm> - -</DDDefinition> diff --git a/Geometry/MuonCommonData/data/mb1.xml b/Geometry/MuonCommonData/data/mb1.xml index 27205fd4ea3..bf08fe9b6b9 100644 --- a/Geometry/MuonCommonData/data/mb1.xml +++ b/Geometry/MuonCommonData/data/mb1.xml @@ -649,7 +649,7 @@ <!-- #### MB1: DTBX chamber --> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb1:MB1N0P"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="4" /> @@ -670,7 +670,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB1PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb1:MB1P"/> <ParE name="startCopyNo" value="2" /> <ParE name="incrCopyNo" value="4" /> @@ -688,7 +688,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB1PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb1:MB1P"/> <ParE name="startCopyNo" value="3" /> <ParE name="incrCopyNo" value="4" /> @@ -706,7 +706,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB1PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb1:MB1N0P"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="4" /> @@ -729,31 +729,31 @@ <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb1:MB1P"/> <rRotation name="rotations:RM1872"/> <Translation x="[MB1Pos_x]" y="[MB1Pos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb1:MB1P"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB1Pos_x]*0.86602543*mm-[MB1Pos_y]*0.5*mm" y="[MB1Pos_x]*0.5*mm+[MB1Pos_y]*0.86602543*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb1:MB1P"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB1Pos_x]*0.5*mm-[MB1Pos_y]*0.86602543*mm" y="[MB1Pos_x]*0.86602543*mm+[MB1Pos_y]*0.5*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb1:MB1ChimP"/> <rRotation name="rotations:RM1902"/> <Translation x="-[MB1Pos_y]" y="[MB1Pos_x]" z="[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb1:MB1P"/> <ParE name="startCopyNo" value="5" /> <ParE name="incrCopyNo" value="1" /> @@ -773,25 +773,25 @@ </AlgoPosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb1:MB1N"/> <rRotation name="rotations:E127"/> <Translation x="[MB1Pos_x]" y="[MB1Pos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb1:MB1N"/> <rRotation name="rotations:MM200"/> <Translation x="[MB1Pos_x]*0.86602543*mm-[MB1Pos_y]*0.5*mm" y="[MB1Pos_x]*0.5*mm+[MB1Pos_y]*0.86602543*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb1:MB1ChimN"/> <rRotation name="rotations:MM300"/> <Translation x="[MB1Pos_x]*0.5*mm-[MB1Pos_y]*0.86602543*mm" y="[MB1Pos_x]*0.86602543*mm+[MB1Pos_y]*0.5*mm" z="-[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb1:MB1N"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="1" /> @@ -814,7 +814,7 @@ </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb1:MB1P"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> @@ -833,7 +833,7 @@ </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb1:MB1N"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> diff --git a/Geometry/MuonCommonData/data/mb2.xml b/Geometry/MuonCommonData/data/mb2.xml index 05cd8c30e1c..b0f5e14e61f 100644 --- a/Geometry/MuonCommonData/data/mb2.xml +++ b/Geometry/MuonCommonData/data/mb2.xml @@ -264,6 +264,14 @@ <LogicalPartSection label="mb2.xml"> <!-- #### MB2 Unit --> <!-- #### MB2: DTBX --> + <LogicalPart name="MB2P" category="unspecified"> + <rSolid name="MB2P"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> + <LogicalPart name="MB2N" category="unspecified"> + <rSolid name="MB2N"/> + <rMaterial name="materials:M_B_Air"/> + </LogicalPart> <!-- # There are several combinations of DT and RPC chambers for this station: mixing DT positive and negative and RPC positive with 3 gas volumes inner and 2 outer, positive with 2 gas volumes inner and 2 outer, negative with 3 gas volumes inner and 2 outer, negative with 2 gas volumes inner and 2 outer Wheel_0: DT pos, RPC pos 3/2 - MB2P32P Wheel_0: DT neg, RPC pos 3/2 - MB2N32P @@ -647,7 +655,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) <!-- #### MB2: DTBX chamber --> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb2:MB2N32P"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="4" /> @@ -668,7 +676,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) <ParE name="rotateSolid" value="270.*deg-[MB2PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb2:MB2P32P"/> <ParE name="startCopyNo" value="2" /> <ParE name="incrCopyNo" value="4" /> @@ -686,7 +694,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) <ParE name="rotateSolid" value="270.*deg-[MB2PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb2:MB2P32P"/> <ParE name="startCopyNo" value="3" /> <ParE name="incrCopyNo" value="4" /> @@ -704,7 +712,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) <ParE name="rotateSolid" value="270.*deg-[MB2PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb2:MB2N32P"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="4" /> @@ -727,31 +735,31 @@ plus MB2ChimP (32P) , MB2ChimN (32N) <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb2:MB2P32P"/> <rRotation name="rotations:RM1872"/> <Translation x="[MB2Pos_x]" y="[MB2Pos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb2:MB2P32P"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB2Pos_x]*0.86602543*mm-[MB2Pos_y]*0.5*mm" y="[MB2Pos_x]*0.5*mm+[MB2Pos_y]*0.86602543*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb2:MB2P32P"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB2Pos_x]*0.5*mm-[MB2Pos_y]*0.86602543*mm" y="[MB2Pos_x]*0.86602543*mm+[MB2Pos_y]*0.5*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb2:MB2ChimP"/> <rRotation name="rotations:RM1902"/> <Translation x="-[MB2Pos_y]" y="[MB2Pos_x]" z="[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb2:MB2P32P"/> <ParE name="startCopyNo" value="5" /> <ParE name="incrCopyNo" value="1" /> @@ -771,25 +779,25 @@ plus MB2ChimP (32P) , MB2ChimN (32N) </AlgoPosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb2:MB2N32N"/> <rRotation name="rotations:E127"/> <Translation x="[MB2Pos_x]" y="[MB2Pos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb2:MB2N32N"/> <rRotation name="rotations:MM200"/> <Translation x="[MB2Pos_x]*0.86602543*mm-[MB2Pos_y]*0.5*mm" y="[MB2Pos_x]*0.5*mm+[MB2Pos_y]*0.86602543*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb2:MB2ChimN"/> <rRotation name="rotations:MM300"/> <Translation x="[MB2Pos_x]*0.5*mm-[MB2Pos_y]*0.86602543*mm" y="[MB2Pos_x]*0.86602543*mm+[MB2Pos_y]*0.5*mm" z="-[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb2:MB2N32N"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="1" /> @@ -812,7 +820,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb2:MB2P23P"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> @@ -831,7 +839,7 @@ plus MB2ChimP (32P) , MB2ChimN (32N) </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb2:MB2N23N"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> diff --git a/Geometry/MuonCommonData/data/mb3.xml b/Geometry/MuonCommonData/data/mb3.xml index 0224b5bf844..a311d1785bd 100644 --- a/Geometry/MuonCommonData/data/mb3.xml +++ b/Geometry/MuonCommonData/data/mb3.xml @@ -574,7 +574,7 @@ <!-- #### MB3: DTBX chamber --> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb3:MB3N"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="4" /> @@ -595,7 +595,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB3PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb3:MB3P"/> <ParE name="startCopyNo" value="2" /> <ParE name="incrCopyNo" value="4" /> @@ -613,7 +613,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB3PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb3:MB3P"/> <ParE name="startCopyNo" value="3" /> <ParE name="incrCopyNo" value="4" /> @@ -631,7 +631,7 @@ <ParE name="rotateSolid" value="270.*deg-[MB3PosAngle]"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb3:MB3N"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="4" /> @@ -654,31 +654,31 @@ <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb3:MB3P"/> <rRotation name="rotations:RM1872"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle])" y="[MB3UnitRadius]*sin([MB3PosAngle])" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb3:MB3P"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle]+30*deg)" y="[MB3UnitRadius]*sin([MB3PosAngle]+30*deg)" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb3:MB3P"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle]+60*deg)" y="[MB3UnitRadius]*sin([MB3PosAngle]+60*deg)" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb3:MB3ChimP"/> <rRotation name="rotations:RM1902"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle]+90*deg)" y="[MB3UnitRadius]*sin([MB3PosAngle]+90*deg)" z="[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb3:MB3P"/> <ParE name="startCopyNo" value="5" /> <ParE name="incrCopyNo" value="1" /> @@ -698,25 +698,25 @@ </AlgoPosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb3:MB3N"/> <rRotation name="rotations:E127"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle])" y="[MB3UnitRadius]*sin([MB3PosAngle])" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb3:MB3N"/> <rRotation name="rotations:MM200"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle]+30.*deg)" y="[MB3UnitRadius]*sin([MB3PosAngle]+30.*deg)" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb3:MB3ChimN"/> <rRotation name="rotations:MM300"/> <Translation x="[MB3UnitRadius]*cos([MB3PosAngle]+60.*deg)" y="[MB3UnitRadius]*sin([MB3PosAngle]+60.*deg)" z="-[mbCommon:MBChimPos_z]" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb3:MB3N"/> <ParE name="startCopyNo" value="4" /> <ParE name="incrCopyNo" value="1" /> @@ -739,7 +739,7 @@ </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb3:MB3P"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> @@ -758,7 +758,7 @@ </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb3:MB3N"/> <ParE name="startCopyNo" value="1" /> <ParE name="incrCopyNo" value="1" /> diff --git a/Geometry/MuonCommonData/data/mb4.xml b/Geometry/MuonCommonData/data/mb4.xml index a039d1e7995..4910785847d 100644 --- a/Geometry/MuonCommonData/data/mb4.xml +++ b/Geometry/MuonCommonData/data/mb4.xml @@ -800,255 +800,255 @@ <!-- #### MB4 Unit --> <!-- #### MB4: DTBX chamber --> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM401"/> <Translation x="[MB4BigPos_x]" y="[MB4BigPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB4BigUnitRadius]*cos(30.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(30.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB4BigUnitRadius]*cos(60.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(60.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="13"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="-[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM405"/> <Translation x="[MB4BigUnitRadius]*cos(120.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(120.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:RM1922"/> <Translation x="[MB4BigUnitRadius]*cos(150.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(150.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:90XD"/> <Translation x="[MB4BigUnitRadius]*cos(180.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(180.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4SmallRightN"/> <rRotation name="rotations:MM408"/> <Translation x="-[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4FeetN"/> <rRotation name="rotations:MM409"/> <Translation x="-[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BottomLeftP"/> <rRotation name="rotations:RM1842"/> <Translation x="-[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="14"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4BottomRightP"/> <rRotation name="rotations:RM1842"/> <Translation x="[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4FeetP"/> <rRotation name="rotations:RM1852"/> <Translation x="[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="mb4:MB4SmallLeftN"/> <rRotation name="rotations:MM412"/> <Translation x="[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1872"/> <Translation x="[MB4BigPos_x]" y="[MB4BigPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB4BigUnitRadius]*cos(30.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(30.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB4BigUnitRadius]*cos(60.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(60.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4TopChimP"/> <rRotation name="rotations:RM1902"/> <Translation x="[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBChimPos_z]" /> </PosPart> <PosPart copyNumber="13"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4TopChimP"/> <rRotation name="rotations:RM1902"/> <Translation x="-[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBChimPos_z]" /> </PosPart> <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:RM1912"/> <Translation x="[MB4BigUnitRadius]*cos(120.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(120.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:RM1922"/> <Translation x="[MB4BigUnitRadius]*cos(150.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(150.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:90XD"/> <Translation x="[MB4BigUnitRadius]*cos(180.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(180.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4SmallLeftP"/> <rRotation name="rotations:RM1822"/> <Translation x="-[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4FeetP"/> <rRotation name="rotations:RM1832"/> <Translation x="-[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BottomLeftP"/> <rRotation name="rotations:RM1842"/> <Translation x="-[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="14"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4BottomRightP"/> <rRotation name="rotations:RM1842"/> <Translation x="[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4FeetP"/> <rRotation name="rotations:RM1852"/> <Translation x="[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mb4:MB4SmallRightP"/> <rRotation name="rotations:RM1862"/> <Translation x="[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1872"/> <Translation x="[MB4BigPos_x]" y="[MB4BigPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1882"/> <Translation x="[MB4BigUnitRadius]*cos(30.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(30.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigRightP"/> <rRotation name="rotations:RM1892"/> <Translation x="[MB4BigUnitRadius]*cos(60.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(60.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4TopP"/> <rRotation name="rotations:RM1902"/> <Translation x="[MB4TopPos_x]" y="[MB4TopPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="13"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4TopP"/> <rRotation name="rotations:RM1902"/> <Translation x="-[MB4TopPos_x]" y="[MB4TopPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:RM1912"/> <Translation x="[MB4BigUnitRadius]*cos(120.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(120.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:RM1922"/> <Translation x="[MB4BigUnitRadius]*cos(150.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(150.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BigLeftP"/> <rRotation name="rotations:90XD"/> <Translation x="[MB4BigUnitRadius]*cos(180.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(180.*deg-[MB4BigPosAngle])*mm" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4SmallLeftP"/> <rRotation name="rotations:RM1822"/> <Translation x="-[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4FeetP"/> <rRotation name="rotations:RM1832"/> <Translation x="-[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BottomLeftP"/> <rRotation name="rotations:RM1842"/> <Translation x="-[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="14"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4BottomRightP"/> <rRotation name="rotations:RM1842"/> <Translation x="[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4FeetP"/> <rRotation name="rotations:RM1852"/> <Translation x="[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="-[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mb4:MB4SmallRightP"/> <rRotation name="rotations:RM1862"/> <Translation x="[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="-[mbCommon:MBPos_z]" /> @@ -1056,170 +1056,170 @@ <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM401"/> <Translation x="[MB4BigPos_x]" y="[MB4BigPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM402"/> <Translation x="[MB4BigUnitRadius]*cos(30.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(30.*deg+[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigChimN"/> <rRotation name="rotations:MM403"/> <Translation x="[MB4BigUnitRadius]*cos(60.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(60.*deg+[MB4BigPosAngle])*mm" z="-[mbCommon:MBChimPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="13"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="-[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM405"/> <Translation x="[MB4BigUnitRadius]*cos(120.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(120.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM406"/> <Translation x="[MB4BigUnitRadius]*cos(150.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(150.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM407"/> <Translation x="[MB4BigUnitRadius]*cos(180.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(180.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4SmallRightN"/> <rRotation name="rotations:MM408"/> <Translation x="-[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4FeetN"/> <rRotation name="rotations:MM409"/> <Translation x="-[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BottomRightN"/> <rRotation name="rotations:MM410"/> <Translation x="-[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="14"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4BottomLeftN"/> <rRotation name="rotations:MM410"/> <Translation x="[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4FeetN"/> <rRotation name="rotations:MM411"/> <Translation x="[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mb4:MB4SmallLeftN"/> <rRotation name="rotations:MM412"/> <Translation x="[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM401"/> <Translation x="[MB4BigPos_x]" y="[MB4BigPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM402"/> <Translation x="[MB4BigUnitRadius]*cos(30.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(30.*deg+[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigLeftN"/> <rRotation name="rotations:MM403"/> <Translation x="[MB4BigUnitRadius]*cos(60.*deg+[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(60.*deg+[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="13"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4TopN"/> <rRotation name="rotations:MM404"/> <Translation x="-[MB4TopPos_x]" y="[MB4TopPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM405"/> <Translation x="[MB4BigUnitRadius]*cos(120.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(120.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM406"/> <Translation x="[MB4BigUnitRadius]*cos(150.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(150.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BigRightN"/> <rRotation name="rotations:MM407"/> <Translation x="[MB4BigUnitRadius]*cos(180.*deg-[MB4BigPosAngle])*mm" y="[MB4BigUnitRadius]*sin(180.*deg-[MB4BigPosAngle])*mm" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4SmallRightN"/> <rRotation name="rotations:MM408"/> <Translation x="-[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4FeetN"/> <rRotation name="rotations:MM409"/> <Translation x="-[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BottomRightN"/> <rRotation name="rotations:MM410"/> <Translation x="-[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="14"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4BottomLeftN"/> <rRotation name="rotations:MM410"/> <Translation x="[MB4BottomPos_x]" y="[MB4BottomPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4FeetN"/> <rRotation name="rotations:MM411"/> <Translation x="[MB4FeetPos_x]" y="[MB4FeetPos_y]" z="[mbCommon:MBPos_z]" /> </PosPart> <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mb4:MB4SmallLeftN"/> <rRotation name="rotations:MM412"/> <Translation x="[MB4SmallPos_x]" y="[MB4SmallPos_y]" z="[mbCommon:MBPos_z]" /> diff --git a/Geometry/MuonCommonData/data/mbCommon.xml b/Geometry/MuonCommonData/data/mbCommon.xml index ce3418af00f..7574abc765b 100644 --- a/Geometry/MuonCommonData/data/mbCommon.xml +++ b/Geometry/MuonCommonData/data/mbCommon.xml @@ -412,41 +412,6 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPartSection label="mbCommon.xml"> - <PosPart copyNumber="1"> - <rParent name="muonBase:MUON"/> - <rChild name="muonBase:MB"/> - <rRotation name="rotations:000D"/> - </PosPart> - <PosPart copyNumber="1"> - <rParent name="muonBase:MB"/> - <rChild name="muonBase:MBWheel_2N"/> - <rRotation name="rotations:000D"/> - <Translation x="0*fm" y="0*fm" z="-5.342*m" /> - </PosPart> - <PosPart copyNumber="2"> - <rParent name="muonBase:MB"/> - <rChild name="muonBase:MBWheel_1N"/> - <rRotation name="rotations:000D"/> - <Translation x="0*fm" y="0*fm" z="-2.686*m" /> - </PosPart> -<PosPart copyNumber="3"> - <rParent name="muonBase:MB"/> - <rChild name="muonBase:MBWheel_0"/> - <rRotation name="rotations:000D"/> - </PosPart> - <PosPart copyNumber="4"> - <rParent name="muonBase:MB"/> - <rChild name="muonBase:MBWheel_1P"/> - <rRotation name="rotations:000D"/> - <Translation x="0*fm" y="0*fm" z="2.686*m" /> - </PosPart> - <PosPart copyNumber="5"> - <rParent name="muonBase:MB"/> - <rChild name="muonBase:MBWheel_2P"/> - <rRotation name="rotations:000D"/> - <Translation x="0*fm" y="0*fm" z="5.342*m" /> - </PosPart> - <!--%%%%%%%%%%% Cables inside wheels --> <PosPart copyNumber="1"> @@ -477,7 +442,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -489,7 +454,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -501,7 +466,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -513,7 +478,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_IntChim"/> @@ -525,7 +490,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -537,7 +502,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -549,7 +514,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -561,7 +526,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -573,7 +538,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -585,7 +550,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -597,7 +562,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -609,7 +574,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -623,7 +588,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -645,7 +610,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="1"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -657,7 +622,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="2"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -669,7 +634,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_IntChim"/> @@ -681,7 +646,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -693,7 +658,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="5"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -705,7 +670,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="6"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -717,7 +682,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="7"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -729,7 +694,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="8"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -741,7 +706,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="9"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -753,7 +718,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="10"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -765,7 +730,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="11"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -777,7 +742,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="12"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -791,7 +756,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="mbCommon:MBCablesBox_Int"/> @@ -817,7 +782,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Wheels0_1"/> @@ -843,7 +808,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Wheels0_1"/> @@ -869,7 +834,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Wheels1_2"/> @@ -895,7 +860,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Wheels1_2"/> @@ -923,7 +888,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="1"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Ext"/> @@ -935,7 +900,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="2"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Ext"/> @@ -947,7 +912,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="3"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Ext"/> @@ -959,7 +924,7 @@ This volume should not include the Ibeam horizontal bars (those that make the 'I <PosPart copyNumber="4"> - <rParent name="muonBase:MB"/> + <rParent name="cms:MB"/> <rChild name="mbCommon:MBCables_Ext"/> diff --git a/Geometry/MuonCommonData/data/mf.xml b/Geometry/MuonCommonData/data/mf.xml index aa7f917a232..604dc4e1918 100644 --- a/Geometry/MuonCommonData/data/mf.xml +++ b/Geometry/MuonCommonData/data/mf.xml @@ -1006,12 +1006,12 @@ <PosPartSection label="mf.xml"> <PosPart copyNumber="1"> - <rParent name="muonBase:MUON"/> + <rParent name="cms:MUON"/> <rChild name="mf:ME"/> <rRotation name="rotations:000D"/> </PosPart> <PosPart copyNumber="2"> - <rParent name="muonBase:MUON"/> + <rParent name="cms:MUON"/> <rChild name="mf:ME"/> <rRotation name="rotations:180R"/> </PosPart> diff --git a/Geometry/MuonCommonData/data/muonYoke.xml b/Geometry/MuonCommonData/data/muonYoke.xml index 291e75fdadc..f7fbcad5bb1 100644 --- a/Geometry/MuonCommonData/data/muonYoke.xml +++ b/Geometry/MuonCommonData/data/muonYoke.xml @@ -1449,7 +1449,7 @@ <ParE name="center" value="10.73*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1463,7 +1463,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_b4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1477,7 +1477,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1491,7 +1491,7 @@ <ParE name="center" value="0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1505,7 +1505,7 @@ <ParE name="center" value="-0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="348.0669*deg"/> @@ -1519,7 +1519,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1533,7 +1533,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1547,7 +1547,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9027*deg"/> @@ -1561,7 +1561,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9027*deg"/> @@ -1575,7 +1575,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="4.294*deg"/> @@ -1589,7 +1589,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -1604,7 +1604,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -1619,13 +1619,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1Chim_w1N_b3"/> <rRotation name="rotations:R330"/> <Translation x="4.67312*m*cos(64.294*deg)" y="4.67312*m*sin(64.294*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -1640,7 +1640,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b4"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -1655,7 +1655,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -1670,7 +1670,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -1685,7 +1685,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="355.706*deg"/> @@ -1699,7 +1699,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b5"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -1714,7 +1714,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b5"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9 "/> @@ -1729,13 +1729,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1Chim_w1N_b5"/> <rRotation name="rotations:R330"/> <Translation x="4.67312*m*cos(55.706*deg)" y="4.67312*m*sin(55.706*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.9603*deg"/> @@ -1749,7 +1749,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.9603*deg"/> @@ -1763,7 +1763,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1777,7 +1777,7 @@ <ParE name="center" value="0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1791,7 +1791,7 @@ <ParE name="center" value="-0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="348.0669*deg"/> @@ -1805,7 +1805,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="348.0669*deg"/> @@ -1819,7 +1819,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB1_w2P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1833,7 +1833,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB1_w2N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.771*deg"/> @@ -1847,7 +1847,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB1_w2P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1861,7 +1861,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB1_w2N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.8778*deg"/> @@ -1875,7 +1875,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB1_w2P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="348.0669*deg"/> @@ -1889,7 +1889,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB1_w2N_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="348.0669*deg"/> @@ -1903,7 +1903,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -1917,7 +1917,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB1_w0_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -1931,7 +1931,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="10.132*deg"/> @@ -1945,7 +1945,7 @@ <ParE name="center" value="-1.073*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="10.132*deg"/> @@ -1959,7 +1959,7 @@ <ParE name="center" value="1.073*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="4.1649*deg"/> @@ -1973,7 +1973,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m2"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -1988,7 +1988,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m2"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2003,13 +2003,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1Chim_w1N_m2"/> <rRotation name="rotations:R330"/> <Translation x="4.81772*m*cos(64.1649*deg)" y="4.81772*m*sin(64.1649*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -2024,7 +2024,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m3"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -2039,13 +2039,13 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1Chim_w1P_m3"/> <rRotation name="rotations:000D"/> <Translation x="4.805*m*cos(90.*deg)" y="4.805*m*sin(90.*deg)" z="-1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2060,7 +2060,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2075,13 +2075,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1Chim_w1N_m3"/> <rRotation name="rotations:R330"/> <Translation x="4.805*m*cos(60*deg)" y="4.805*m*sin(60*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="355.8351*deg"/> @@ -2095,7 +2095,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2110,7 +2110,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2125,13 +2125,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1Chim_w1N_m4"/> <rRotation name="rotations:R330"/> <Translation x="4.81772*m*cos(55.8351*deg)" y="4.81772*m*sin(55.8351*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="349.8677*deg"/> @@ -2145,7 +2145,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="349.8677*deg"/> @@ -2159,7 +2159,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB1_w1P_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2173,7 +2173,7 @@ <ParE name="center" value="0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB1_w1N_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2187,7 +2187,7 @@ <ParE name="center" value="-0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB1_w2P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2201,7 +2201,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB1_w2N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2215,7 +2215,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YBSepar2_w0_1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2229,7 +2229,7 @@ <ParE name="center" value="0.63405*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YBSepar2_w0_2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2243,7 +2243,7 @@ <ParE name="center" value="-0.63405*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YBSepar2_w1P"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2257,7 +2257,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YBSepar2_w1N"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2271,7 +2271,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YBSepar2_w2P"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2285,7 +2285,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YBSepar2_w2N"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="12.776*deg"/> @@ -2299,7 +2299,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.084*deg"/> @@ -2313,7 +2313,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.084*deg"/> @@ -2327,7 +2327,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2341,7 +2341,7 @@ <ParE name="center" value="0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2355,7 +2355,7 @@ <ParE name="center" value="-0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2369,7 +2369,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2383,7 +2383,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.085*deg"/> @@ -2397,7 +2397,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.085*deg"/> @@ -2411,7 +2411,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.8748*deg"/> @@ -2425,7 +2425,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.8748*deg"/> @@ -2439,7 +2439,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="3.7125*deg"/> @@ -2453,7 +2453,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <ParE name="startCopyNo" value="1" /> <rChild name="YB2_w1N_b3"/> <ParE name="n" value="2"/> @@ -2468,7 +2468,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <ParE name="startCopyNo" value="4" /> <rChild name="YB2_w1N_b3"/> <ParE name="n" value="9"/> @@ -2483,13 +2483,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_b3"/> <rRotation name="rotations:R330"/> <Translation x="5.40384*m*cos(63.7125*deg)" y="5.40384*m*sin(63.7125*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -2504,7 +2504,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b4"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -2519,7 +2519,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2534,7 +2534,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2549,7 +2549,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="356.2875*deg"/> @@ -2563,7 +2563,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b5"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2578,7 +2578,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b5"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2593,13 +2593,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_b5"/> <rRotation name="rotations:R330"/> <Translation x="5.40384*m*cos(56.2875*deg)" y="5.40384*m*sin(56.2875*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="351.7612*deg"/> @@ -2613,7 +2613,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="351.7612*deg"/> @@ -2627,7 +2627,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2641,7 +2641,7 @@ <ParE name="center" value="0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2655,7 +2655,7 @@ <ParE name="center" value="-0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2669,7 +2669,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2683,7 +2683,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.085*deg"/> @@ -2697,7 +2697,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.085*deg"/> @@ -2711,7 +2711,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2725,7 +2725,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.6287*deg"/> @@ -2739,7 +2739,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2753,7 +2753,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.5636*deg"/> @@ -2767,7 +2767,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2781,7 +2781,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -2795,7 +2795,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="9.7567*deg"/> @@ -2809,7 +2809,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="9.7567*deg"/> @@ -2823,7 +2823,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="3.5375*deg"/> @@ -2837,7 +2837,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m2"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2852,7 +2852,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m2"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2867,13 +2867,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_m2"/> <rRotation name="rotations:R330"/> <Translation x="5.67081*m*cos(63.5375*deg)" y="5.67081*m*sin(63.5375*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -2888,7 +2888,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m3"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -2903,13 +2903,13 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2Chim_w1P_m3"/> <rRotation name="rotations:000D"/> <Translation x="5.66*m*cos(90.*deg)" y="5.66*m*sin(90.*deg)" z="-1.0739*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2924,7 +2924,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2939,13 +2939,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_m3"/> <rRotation name="rotations:R330"/> <Translation x="5.66*m*cos(60*deg)" y="5.66*m*sin(60*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="356.4625*deg"/> @@ -2959,7 +2959,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -2974,7 +2974,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -2989,13 +2989,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_m4"/> <rRotation name="rotations:R330"/> <Translation x="5.67081*m*cos(56.4625*deg)" y="5.67081*m*sin(56.4625*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="350.2433*deg"/> @@ -3009,7 +3009,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="350.2433*deg"/> @@ -3023,7 +3023,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -3037,7 +3037,7 @@ <ParE name="center" value="0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -3051,7 +3051,7 @@ <ParE name="center" value="-0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -3065,7 +3065,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -3079,7 +3079,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3093,7 +3093,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3107,7 +3107,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3121,7 +3121,7 @@ <ParE name="center" value="0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3135,7 +3135,7 @@ <ParE name="center" value="-0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3149,7 +3149,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB2_w0_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3163,7 +3163,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3177,7 +3177,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3191,7 +3191,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9976*deg"/> @@ -3205,7 +3205,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9976*deg"/> @@ -3219,7 +3219,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="3.3782*deg"/> @@ -3233,7 +3233,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3248,7 +3248,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3263,13 +3263,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_t3"/> <rRotation name="rotations:R330"/> <Translation x="5.93782*m*cos(63.3782*deg)" y="5.93782*m*sin(63.3782*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -3284,7 +3284,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t4"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -3299,7 +3299,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3314,7 +3314,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3329,7 +3329,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="356.6218*deg"/> @@ -3343,7 +3343,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t5"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3358,7 +3358,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t5"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3373,13 +3373,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2Chim_w1N_t5"/> <rRotation name="rotations:R330"/> <Translation x="5.93782*m*cos(56.6218*deg)" y="5.93782*m*sin(56.6218*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.4959*deg"/> @@ -3393,7 +3393,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.4959*deg"/> @@ -3407,7 +3407,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3421,7 +3421,7 @@ <ParE name="center" value="0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3435,7 +3435,7 @@ <ParE name="center" value="-0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB2_w1P_t8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3449,7 +3449,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB2_w1N_t8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3463,7 +3463,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3477,7 +3477,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.399*deg"/> @@ -3491,7 +3491,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3505,7 +3505,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.5026*deg"/> @@ -3519,7 +3519,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB2_w2P_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3533,7 +3533,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB2_w2N_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="347.0778*deg"/> @@ -3547,7 +3547,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YBSepar3_w0_1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3561,7 +3561,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YBSepar3_w0_2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3575,7 +3575,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YBSepar3_w1P"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3589,7 +3589,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YBSepar3_w1N"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3603,7 +3603,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YBSepar3_w2P"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3617,7 +3617,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YBSepar3_w2N"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.8409*deg"/> @@ -3631,7 +3631,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.533*deg"/> @@ -3645,7 +3645,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.533*deg"/> @@ -3659,7 +3659,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2228*deg"/> @@ -3673,7 +3673,7 @@ <ParE name="center" value="0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2228*deg"/> @@ -3687,7 +3687,7 @@ <ParE name="center" value="-0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -3701,7 +3701,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -3715,7 +3715,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.533*deg"/> @@ -3729,7 +3729,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.533*deg"/> @@ -3743,7 +3743,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9814*deg"/> @@ -3757,7 +3757,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.9814*deg"/> @@ -3771,7 +3771,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="3.1208*deg"/> @@ -3785,7 +3785,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3800,7 +3800,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3815,13 +3815,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_b3"/> <rRotation name="rotations:R330"/> <Translation x="6.42703*m*cos(63.1208*deg)" y="6.42703*m*sin(63.1208*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -3836,7 +3836,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b4"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -3851,7 +3851,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3866,7 +3866,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3881,7 +3881,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="356.8792*deg"/> @@ -3895,7 +3895,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b5"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -3910,7 +3910,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b5"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -3925,13 +3925,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_b5"/> <rRotation name="rotations:R330"/> <Translation x="6.42703*m*cos(56.8792*deg)" y="6.42703*m*sin(56.8792*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.2371*deg"/> @@ -3945,7 +3945,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.2371*deg"/> @@ -3959,7 +3959,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2228*deg"/> @@ -3973,7 +3973,7 @@ <ParE name="center" value="0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2228*deg"/> @@ -3987,7 +3987,7 @@ <ParE name="center" value="-0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -4001,7 +4001,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_b8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -4015,7 +4015,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.542*deg"/> @@ -4029,7 +4029,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_b1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.542*deg"/> @@ -4043,7 +4043,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2234*deg"/> @@ -4057,7 +4057,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_b2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0.2234*deg"/> @@ -4071,7 +4071,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -4085,7 +4085,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_b3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.6774*deg"/> @@ -4099,7 +4099,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4113,7 +4113,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4127,7 +4127,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="9.4324*deg"/> @@ -4141,7 +4141,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="9.4324*deg"/> @@ -4155,7 +4155,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="2.9962*deg"/> @@ -4169,7 +4169,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m2"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4184,7 +4184,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m2"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4199,13 +4199,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_m2"/> <rRotation name="rotations:R330"/> <Translation x="6.69415*m*cos(62.9962*deg)" y="6.69415*m*sin(62.9962*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -4220,7 +4220,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m3"/> <ParE name="startCopyNo" value="8" /> <ParE name="n" value="8"/> @@ -4235,13 +4235,13 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="4"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3Chim_w1P_m3"/> <rRotation name="rotations:000D"/> <Translation x="6.685*m*cos(90.*deg)" y="6.685*m*sin(90.*deg)" z="-1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4256,7 +4256,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4271,13 +4271,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_m3"/> <rRotation name="rotations:R330"/> <Translation x="6.685*m*cos(60*deg)" y="6.685*m*sin(60*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="357.0038*deg"/> @@ -4291,7 +4291,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4306,7 +4306,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4321,13 +4321,13 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_m4"/> <rRotation name="rotations:R330"/> <Translation x="6.69415*m*cos(57.0038*deg)" y="6.69415*m*sin(57.0038*deg)" z="1.0729*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="350.5676*deg"/> @@ -4341,7 +4341,7 @@ <ParE name="center" value="-1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="350.5676*deg"/> @@ -4355,7 +4355,7 @@ <ParE name="center" value="1.0729*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4369,7 +4369,7 @@ <ParE name="center" value="0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_m6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4383,7 +4383,7 @@ <ParE name="center" value="-0.195*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4397,7 +4397,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_m1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="0*deg"/> @@ -4411,7 +4411,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.051*deg"/> @@ -4425,7 +4425,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t4"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.051*deg"/> @@ -4439,7 +4439,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3702*deg"/> @@ -4453,7 +4453,7 @@ <ParE name="center" value="0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3702*deg"/> @@ -4467,7 +4467,7 @@ <ParE name="center" value="-0.62495*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3522*deg"/> @@ -4481,7 +4481,7 @@ <ParE name="center" value="0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YB3_w0_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3522*deg"/> @@ -4495,7 +4495,7 @@ <ParE name="center" value="-0.63395*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.052*deg"/> @@ -4509,7 +4509,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.052*deg"/> @@ -4523,7 +4523,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.337*deg"/> @@ -4537,7 +4537,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="7.337*deg"/> @@ -4551,7 +4551,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="2.8811*deg"/> @@ -4565,7 +4565,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t3"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4580,7 +4580,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t3"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4595,13 +4595,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_t3"/> <rRotation name="rotations:R330"/> <Translation x="6.9613*m*cos(62.8811*deg)" y="6.9613*m*sin(62.8811*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="3"/> @@ -4616,7 +4616,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t4"/> <ParE name="startCopyNo" value="5" /> <ParE name="n" value="8"/> @@ -4631,7 +4631,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t4"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4646,7 +4646,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t4"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4661,7 +4661,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t5"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="357.1189*deg"/> @@ -4675,7 +4675,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t5"/> <ParE name="startCopyNo" value="1" /> <ParE name="n" value="2"/> @@ -4690,7 +4690,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t5"/> <ParE name="startCopyNo" value="4" /> <ParE name="n" value="9"/> @@ -4705,13 +4705,13 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <PosPart copyNumber="3"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3Chim_w1N_t5"/> <rRotation name="rotations:R330"/> <Translation x="6.9613*m*cos(57.1189*deg)" y="6.9613*m*sin(57.1189*deg)" z="1.0639*m" /> </PosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.0437*deg"/> @@ -4725,7 +4725,7 @@ <ParE name="center" value="-1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t6"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="352.0437*deg"/> @@ -4739,7 +4739,7 @@ <ParE name="center" value="1.0639*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3696*deg"/> @@ -4753,7 +4753,7 @@ <ParE name="center" value="0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t7"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3696*deg"/> @@ -4767,7 +4767,7 @@ <ParE name="center" value="-0.186*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1P"/> + <rParent name="cms:MBWheel_1P"/> <rChild name="YB3_w1P_t8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3516*deg"/> @@ -4781,7 +4781,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_1N"/> + <rParent name="cms:MBWheel_1N"/> <rChild name="YB3_w1N_t8"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3516*deg"/> @@ -4795,7 +4795,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.052*deg"/> @@ -4809,7 +4809,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_t1"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="13.052*deg"/> @@ -4823,7 +4823,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3696*deg"/> @@ -4837,7 +4837,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_t2"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="359.3696*deg"/> @@ -4851,7 +4851,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2P"/> + <rParent name="cms:MBWheel_2P"/> <rChild name="YB3_w2P_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3516*deg"/> @@ -4865,7 +4865,7 @@ <ParE name="center" value="0*m"/> </AlgoPosPart> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_2N"/> + <rParent name="cms:MBWheel_2N"/> <rChild name="YB3_w2N_t3"/> <ParE name="n" value="12"/> <ParE name="startAngle" value="346.3516*deg"/> @@ -4881,7 +4881,7 @@ <!--- #### Non iron volumes --> <AlgoPosPart algo="global:angular"> - <rParent name="muonBase:MBWheel_0"/> + <rParent name="cms:MBWheel_0"/> <rChild name="YBSepar_1"/> <ParE name="n" value="12" /> <ParE name="radius" value="4.23467*m"/> diff --git a/Geometry/RPCGeometry/interface/RPCChamber.h b/Geometry/RPCGeometry/interface/RPCChamber.h deleted file mode 100644 index d5542a41f0e..00000000000 --- a/Geometry/RPCGeometry/interface/RPCChamber.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef RPCGeometry_RPCChamber_h -#define RPCGeometry_RPCChamber_h - -/** \class RPCChamber - * - * Model of a RPC chamber. - * - * A chamber is a GeomDet. - * The chamber is composed by 2 or 3 Roll (GeomDetUnit). - * - * $Date: 2006/08/3 12:00:00 $ - * $Revision: 1.6 $ - * \author R. Trentadue - */ - -#include "Geometry/CommonDetUnit/interface/GeomDet.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" -#include "DataFormats/MuonDetId/interface/RPCDetId.h" - -class RPCRoll; - -class RPCChamber : public GeomDet { - - public: - /// Constructor - RPCChamber(RPCDetId id, const BoundPlane::BoundPlanePointer& plane); - - /// Destructor - virtual ~RPCChamber(); - - /// Return the DetId of this chamber - virtual DetId geographicalId() const; - - /// Return the RPCChamberId of this chamber - RPCDetId id() const; - - // Which subdetector - virtual SubDetector subDetector() const {return GeomDetEnumerators::RPCBarrel;} - - /// equal if the id is the same - bool operator==(const RPCChamber& ch) const; - - /// Add Roll to the chamber which takes ownership - void add(RPCRoll* rl); - - /// Return the rolls in the chamber - virtual std::vector< const GeomDet*> components() const; - - /// Return the sub-component (roll) with a given id in this chamber - virtual const GeomDet* component(DetId id) const; - - /// Return the Roll corresponding to the given id - const RPCRoll* roll(RPCDetId id) const; - - const RPCRoll* roll(int isl) const; - - /// Return the Rolls - const std::vector<const RPCRoll*>& rolls() const; - - private: - - RPCDetId theId; - - // The chamber owns its Rolls - std::vector<const RPCRoll*> theRolls; - -}; -#endif diff --git a/Geometry/RPCGeometry/interface/RPCGeometry.h b/Geometry/RPCGeometry/interface/RPCGeometry.h index 5a6fbffdb9d..430b135d618 100644 --- a/Geometry/RPCGeometry/interface/RPCGeometry.h +++ b/Geometry/RPCGeometry/interface/RPCGeometry.h @@ -11,15 +11,14 @@ #include "DataFormats/DetId/interface/DetId.h" #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h" #include "Geometry/RPCGeometry/interface/RPCRoll.h" -#include "Geometry/RPCGeometry/interface/RPCChamber.h" #include <vector> #include <map> - class GeomDetType; class GeomDetUnit; class RPCGeometry : public TrackingGeometry { + typedef std::map<DetId, RPCRoll*> RPCRollMap; public: /// Default constructor @@ -52,14 +51,14 @@ class RPCGeometry : public TrackingGeometry { //---- Extension of the interface - /// Return a vector of all RPC chambers - const std::vector<RPCChamber*>& chambers() const; + // Return a vector of all RPC chambers + //const std::vector<RPCChamber*>& chambers() const; /// Return a vector of all RPC rolls const std::vector<RPCRoll*>& rolls() const; // Return a RPCChamber given its id - const RPCChamber* chamber(RPCDetId id) const; + //const RPCChamber* chamber(RPCDetId id) const; /// Return a roll given its id const RPCRoll* roll(RPCDetId id) const; @@ -67,21 +66,14 @@ class RPCGeometry : public TrackingGeometry { /// Add a RPC roll to the Geometry void add(RPCRoll* roll); - /// Add a RPC roll to the Geometry - void add(RPCChamber* ch); - private: DetUnitContainer theRolls; DetContainer theDets; DetTypeContainer theRollTypes; DetIdContainer theRollIds; - DetIdContainer theDetIds; - - // Map for efficient lookup by DetId - mapIdToDet theMap; - - std::vector<RPCRoll*> allRolls; // Are not owned by this class; are owned by their chamber. - std::vector<RPCChamber*> allChambers; // Are owned by this class. + mapIdToDet idtoDet; + mapIdToDetUnit idtoRoll; + std::vector<RPCRoll*> allRolls; }; diff --git a/Geometry/RPCGeometry/interface/RPCRoll.h b/Geometry/RPCGeometry/interface/RPCRoll.h index 5b702d21c17..1220f924aee 100644 --- a/Geometry/RPCGeometry/interface/RPCRoll.h +++ b/Geometry/RPCGeometry/interface/RPCRoll.h @@ -8,24 +8,19 @@ class StripTopology; class RPCRollSpecs; -class RPCChamber; class RPCRoll : public GeomDetUnit{ public: - RPCRoll(RPCDetId id, BoundPlane::BoundPlanePointer bp, RPCRollSpecs* rrs, const RPCChamber* ch=0); + RPCRoll( BoundPlane* bp, RPCRollSpecs* rrs, RPCDetId id); ~RPCRoll(); const RPCRollSpecs* specs() const; DetId geographicalId() const; RPCDetId id() const; const Topology& topology() const; - const StripTopology& specificTopology() const; const GeomDetType& type() const; - - /// Return the chamber this SL belongs to (0 if any, eg if a SL is - /// built on his own) - - const RPCChamber* chamber() const; + + public: int nstrips() const; @@ -39,10 +34,13 @@ class RPCRoll : public GeomDetUnit{ bool isBarrel() const; bool isForward() const; + private: + const StripTopology* striptopology() const; + private: + mutable const StripTopology* top_; private: RPCDetId _id; RPCRollSpecs* _rrs; - const RPCChamber* theCh; // NOT owned }; #endif diff --git a/Geometry/RPCGeometry/interface/RPCRollSpecs.h b/Geometry/RPCGeometry/interface/RPCRollSpecs.h index cf57d288f84..049e51d402a 100644 --- a/Geometry/RPCGeometry/interface/RPCRollSpecs.h +++ b/Geometry/RPCGeometry/interface/RPCRollSpecs.h @@ -11,8 +11,6 @@ #include <vector> #include <string> -class StripTopology; - #include "Geometry/CommonDetUnit/interface/GeomDetType.h" @@ -27,12 +25,10 @@ class RPCRollSpecs : public GeomDetType { const Topology& topology() const; - const StripTopology& specificTopology() const; - const std::string& detName() const; private: - StripTopology* _top; + Topology* _top; std::vector<float> _p; std::string _n; diff --git a/Geometry/RPCGeometry/src/RPCChamber.cc b/Geometry/RPCGeometry/src/RPCChamber.cc deleted file mode 100644 index f7a57f8ed60..00000000000 --- a/Geometry/RPCGeometry/src/RPCChamber.cc +++ /dev/null @@ -1,78 +0,0 @@ -/** \file - * - * $Date: 2006/09/21 15:33:47 $ - * $Revision: 1.1 $ - * \author Stefano Lacaprara - INFN Padova <stefano.lacaprara@pd.infn.it> - */ - -/* This Class Header */ -#include "Geometry/RPCGeometry/interface/RPCChamber.h" - -/* Collaborating Class Header */ -#include "Geometry/RPCGeometry/interface/RPCRoll.h" -#include "DataFormats/MuonDetId/interface/RPCDetId.h" -#include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" - -/* C++ Headers */ -#include <iostream> - -/* ====================================================================== */ - -/* Constructor */ -RPCChamber::RPCChamber(RPCDetId id, const BoundPlane::BoundPlanePointer& plane) : - GeomDet(plane), - theId(id) { -} - -/* Destructor */ -RPCChamber::~RPCChamber() { - // delete all rolls associated to this chamber - for (std::vector<const RPCRoll*>::const_iterator iroll = theRolls.begin(); - iroll != theRolls.end(); ++iroll){ - delete (*iroll); - } -} - -/* Operations */ -DetId RPCChamber::geographicalId() const { - return theId; -} - -RPCDetId RPCChamber::id() const { - return theId; -} - -bool RPCChamber::operator==(const RPCChamber& ch) const { - return id()==ch.id(); -} - -void RPCChamber::add(RPCRoll* rl) { - theRolls.push_back(rl); -} - -std::vector<const GeomDet*> RPCChamber::components() const { - return std::vector<const GeomDet*>(theRolls.begin(), theRolls.end()); -} - -const GeomDet* RPCChamber::component(DetId id) const { - return roll(RPCDetId(id.rawId())); -} - -const std::vector<const RPCRoll*>& RPCChamber::rolls() const { - return theRolls; -} - -const RPCRoll* RPCChamber::roll(RPCDetId id) const{ - if (id.chamberId()!=theId) return 0; // not in this Roll! - return roll(id.roll()); -} - - -const RPCRoll* RPCChamber::roll(int isl) const { - for (std::vector<const RPCRoll*>::const_iterator i = theRolls.begin(); - i!= theRolls.end(); ++i) { - if ((*i)->id().roll()==isl) return (*i); - } - return 0; -} - diff --git a/Geometry/RPCGeometry/src/RPCGeometry.cc b/Geometry/RPCGeometry/src/RPCGeometry.cc index 2fafe79bd22..4bc18af95c1 100644 --- a/Geometry/RPCGeometry/src/RPCGeometry.cc +++ b/Geometry/RPCGeometry/src/RPCGeometry.cc @@ -3,20 +3,20 @@ * \author M. Maggi - INFN Bari */ -#include <Geometry/RPCGeometry/interface/RPCGeometry.h> +#include "Geometry/RPCGeometry/interface/RPCGeometry.h" #include <Geometry/CommonDetUnit/interface/GeomDetUnit.h> #include <Geometry/CommonDetUnit/interface/GeomDetType.h> -#include <Geometry/RPCGeometry/interface/RPCChamber.h> + RPCGeometry::RPCGeometry(){} RPCGeometry::~RPCGeometry() { - // delete all the chamber associated to the geometry - for (std::vector<RPCChamber*>::const_iterator ich = allChambers.begin(); - ich != allChambers.end(); ++ich){ - delete (*ich); + // delete all the roll associated to the geometry + for (std::vector<RPCRoll*>::const_iterator iroll = allRolls.begin(); + iroll != allRolls.end(); ++iroll){ + delete (*iroll); } } @@ -42,56 +42,52 @@ const RPCGeometry::DetIdContainer& RPCGeometry::detUnitIds() const{ const RPCGeometry::DetIdContainer& RPCGeometry::detIds() const{ - return theDetIds; + return theRollIds; } const GeomDetUnit* RPCGeometry::idToDetUnit(DetId id) const{ - return dynamic_cast<const GeomDetUnit*>(idToDet(id)); + if (idtoRoll.find(id) != idtoRoll.end()) + return (idtoRoll.find(id))->second; + else + return 0; } const GeomDet* RPCGeometry::idToDet(DetId id) const{ - mapIdToDet::const_iterator i = theMap.find(id); - return (i != theMap.end()) ? - i->second : 0 ; -} +// if (idtoDet.find(id) != idtoDet.end()) +// return (idtoDet.find(id))->second; +// else +// return 0; -const std::vector<RPCChamber*>& RPCGeometry::chambers() const { - return allChambers; + // For the time being, the only RPC dets are the rolls... + return idToDetUnit(id); } + const std::vector<RPCRoll*>& RPCGeometry::rolls() const{ return allRolls; } -const RPCChamber* RPCGeometry::chamber(RPCDetId id) const{ - return dynamic_cast<const RPCChamber*>(idToDet(id.chamberId())); -} + const RPCRoll* RPCGeometry::roll(RPCDetId id) const{ - return dynamic_cast<const RPCRoll*>(idToDetUnit(id)); + return (const RPCRoll*)(idToDetUnit(id)); } + + + void RPCGeometry::add(RPCRoll* roll){ - theDets.push_back(roll); allRolls.push_back(roll); theRolls.push_back(roll); theRollIds.push_back(roll->geographicalId()); - theDetIds.push_back(roll->geographicalId()); GeomDetType* _t = const_cast<GeomDetType*>(&roll->type()); theRollTypes.push_back(_t); - theMap.insert(std::pair<DetId,GeomDetUnit*> - (roll->geographicalId(),roll)); + idtoRoll.insert(std::pair<DetId,GeomDetUnit*> + (roll->geographicalId(),roll)); + theDets.push_back(roll); } -void -RPCGeometry::add(RPCChamber* chamber){ - allChambers.push_back(chamber); - theDets.push_back(chamber); - theDetIds.push_back(chamber->geographicalId()); - theMap.insert(std::pair<DetId,GeomDet*> - (chamber->geographicalId(),chamber)); -} diff --git a/Geometry/RPCGeometry/src/RPCRoll.cc b/Geometry/RPCGeometry/src/RPCRoll.cc index 31529a38964..f47f6eb30dd 100644 --- a/Geometry/RPCGeometry/src/RPCRoll.cc +++ b/Geometry/RPCGeometry/src/RPCRoll.cc @@ -1,19 +1,18 @@ #include "Geometry/RPCGeometry/interface/RPCRoll.h" #include "Geometry/RPCGeometry/interface/RPCRollSpecs.h" -#include "Geometry/RPCGeometry/interface/RPCChamber.h" #include "Geometry/CommonTopologies/interface/RectangularStripTopology.h" #include "Geometry/CommonTopologies/interface/TrapezoidalStripTopology.h" -RPCRoll::RPCRoll(RPCDetId id, BoundPlane::BoundPlanePointer bp, RPCRollSpecs* rrs, const RPCChamber* ch) : - GeomDetUnit(bp), _id(id),_rrs(rrs), theCh(ch) +RPCRoll::RPCRoll( BoundPlane* bp, RPCRollSpecs* rrs, RPCDetId id) : + GeomDetUnit(bp), top_(0), _id(id),_rrs(rrs) { } RPCRoll::~RPCRoll() { - delete _rrs; //Assume the roll owns it specs (specs are not shared) + } const RPCRollSpecs* @@ -46,53 +45,50 @@ RPCRoll::type() const return (*_rrs); } -const RPCChamber* RPCRoll::chamber() const { - return theCh; -} int RPCRoll::nstrips() const { - return this->specificTopology().nstrips(); + return this->striptopology()->nstrips(); } LocalPoint RPCRoll::centreOfStrip(int strip) const { float s = static_cast<float>(strip)-0.5; - return this->specificTopology().localPosition(s); + return this->striptopology()->localPosition(s); } LocalPoint RPCRoll::centreOfStrip(float strip) const { - return this->specificTopology().localPosition(strip); + return this->striptopology()->localPosition(strip); } LocalError RPCRoll::localError(float strip) const { - return this->specificTopology().localError(strip,1./sqrt(12.)); + return this->striptopology()->localError(strip,1./sqrt(12.)); } float RPCRoll::strip(const LocalPoint& lp) const { - return this->specificTopology().strip(lp); + return this->striptopology()->strip(lp); } float RPCRoll::localPitch(const LocalPoint& lp) const { - return this->specificTopology().localPitch(lp); + return this->striptopology()->localPitch(lp); } float RPCRoll::pitch() const { - return this->specificTopology().pitch(); + return this->striptopology()->pitch(); } @@ -111,8 +107,16 @@ RPCRoll::isForward() const -const StripTopology& -RPCRoll::specificTopology() const +const StripTopology* +RPCRoll::striptopology() const { - return _rrs->specificTopology(); + if(!top_){ + if (this->isBarrel()){ + top_ = dynamic_cast<const RectangularStripTopology*>(&this->topology()); + }else{ + top_ = dynamic_cast<const TrapezoidalStripTopology*>(&this->topology()); + + } + } + return top_; } diff --git a/Geometry/RPCGeometry/src/RPCRollSpecs.cc b/Geometry/RPCGeometry/src/RPCRollSpecs.cc index 4b1957471c0..00f3672db7d 100644 --- a/Geometry/RPCGeometry/src/RPCRollSpecs.cc +++ b/Geometry/RPCGeometry/src/RPCRollSpecs.cc @@ -45,12 +45,6 @@ RPCRollSpecs::topology() const return *(_top); } -const StripTopology& -RPCRollSpecs::specificTopology() const -{ - return *(_top); -} - const std::string& RPCRollSpecs::detName() const diff --git a/Geometry/RPCGeometry/test/RPCGeometryAnalyzer.cc b/Geometry/RPCGeometry/test/RPCGeometryAnalyzer.cc index db38c604828..0a29543169f 100644 --- a/Geometry/RPCGeometry/test/RPCGeometryAnalyzer.cc +++ b/Geometry/RPCGeometry/test/RPCGeometryAnalyzer.cc @@ -25,8 +25,6 @@ #include <iomanip> #include <set> -using namespace std; - class RPCGeometryAnalyzer : public edm::EDAnalyzer { public: @@ -72,11 +70,8 @@ RPCGeometryAnalyzer::analyze( const edm::Event& iEvent, const edm::EventSetup& i std::cout << " Geometry node for RPCGeom is " << &(*pDD) << std::endl; - cout << " I have "<<pDD->detTypes().size() << " detTypes" << endl; - cout << " I have "<<pDD->detUnits().size() << " detUnits" << endl; - cout << " I have "<<pDD->dets().size() << " dets" << endl; - cout << " I have "<<pDD->rolls().size() << " rolls" << endl; - cout << " I have "<<pDD->chambers().size() << " chambers" << endl; + std::cout << " I have "<<pDD->dets().size() << " detectors" << std::endl; + std::cout << " I have "<<pDD->detTypes().size() << " types" << "\n" << std::endl; std::cout << myName() << ": Begin iteration over geometry..." << std::endl; std::cout << "iter " << dashedLine_ << std::endl; @@ -86,7 +81,7 @@ RPCGeometryAnalyzer::analyze( const edm::Event& iEvent, const edm::EventSetup& i " phi(0) phi(s1) phi(sN) dphi dphi' ds off" " uR uL lR lL" << std::endl; - int icount = 0, iRPCCHcount = 0; + int icount = 0; const double dPi = 3.14159265358; const double radToDeg = 180. / dPi; //@@ Where to get pi from? @@ -102,27 +97,8 @@ RPCGeometryAnalyzer::analyze( const edm::Event& iEvent, const edm::EventSetup& i vlp.push_back(LocalPoint( 0, 0,-1)); vlp.push_back(LocalPoint( 0, 0, 0)); vlp.push_back(LocalPoint( 0, 0, 1)); - for(TrackingGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++){ - //----------------------- RPCCHAMBER TEST ------------------------------------------------------- - - if( dynamic_cast< RPCChamber* >( *it ) != 0 ){ - ++iRPCCHcount; - RPCChamber* ch = dynamic_cast< RPCChamber* >( *it ); - RPCDetId detId=ch->id(); - int idRaf = detId.rawId(); - // RPCRoll* rollRaf = ch->roll(1); - std::cout<<"Num = "<<iRPCCHcount<<" "<<"RPCDet = "<<idRaf<<std::endl; - // " "<<"Roll 1 = "<<(rollRaf->id()).rawId()<<std::endl; - - std::vector< const RPCRoll*> rollsRaf = (ch->rolls()); - for(std::vector<const RPCRoll*>::iterator r = rollsRaf.begin(); - r != rollsRaf.end(); ++r){ - std::cout<<"scemo"<<(*r)->id().rawId()<<std::endl; - } - } - //_______________________________________________________________________________________________ // Do we really have a RPC Roll? @@ -347,3 +323,4 @@ RPCGeometryAnalyzer::analyze( const edm::Event& iEvent, const edm::EventSetup& i //define this as a plug-in #include <FWCore/Framework/interface/MakerMacros.h> DEFINE_FWK_MODULE(RPCGeometryAnalyzer); + diff --git a/Geometry/TrackerGeometryBuilder/src/PlaneBuilderForGluedDet.cc b/Geometry/TrackerGeometryBuilder/src/PlaneBuilderForGluedDet.cc index 92c00dc6bcd..42c888840f0 100644 --- a/Geometry/TrackerGeometryBuilder/src/PlaneBuilderForGluedDet.cc +++ b/Geometry/TrackerGeometryBuilder/src/PlaneBuilderForGluedDet.cc @@ -39,7 +39,7 @@ std::pair<RectangularPlaneBounds, GlobalVector> PlaneBuilderForGluedDet::compute std::vector<GlobalPoint> corners; for (std::vector<const GeomDetUnit*>::const_iterator idet=dets.begin(); idet != dets.end(); idet++) { - const BoundPlane& plane = dynamic_cast<const BoundPlane&>(dets.front()->surface()); + const BoundPlane& plane = dynamic_cast<const BoundPlane&>((*idet)->surface()); std::vector<GlobalPoint> dc = BoundingBox().corners(plane); corners.insert( corners.end(), dc.begin(), dc.end()); } diff --git a/Geometry/TrackerSimData/data/trackerProdCuts.xml b/Geometry/TrackerSimData/data/trackerProdCuts.xml index 711f7fde2e1..bb42817a504 100644 --- a/Geometry/TrackerSimData/data/trackerProdCuts.xml +++ b/Geometry/TrackerSimData/data/trackerProdCuts.xml @@ -61,6 +61,22 @@ <Parameter name="ProdCutsForGamma" value="0.01*mm"/> </SpecPar> + <SpecPar name="BeamPipe"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipe" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="0.01*mm"/> + <Parameter name="ProdCutsForPositrons" value="0.01*mm"/> + <Parameter name="ProdCutsForGamma" value="0.01*mm"/> + </SpecPar> + + <SpecPar name="BeamPipeNotBeryllium"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipeInternal" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="10000*mm"/> + <Parameter name="ProdCutsForPositrons" value="10000*mm"/> + <Parameter name="ProdCutsForGamma" value="10000*mm"/> + </SpecPar> + <SpecPar name="TIB_Ledge_Side_Prod_Cuts"> <PartSelector path="//TIBModCoolSide" /> <Parameter name="CMSCutsRegion" value="TIB_Ledge_Side_ProdCuts" eval="false"/> diff --git a/Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml b/Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml deleted file mode 100644 index d020c90ea81..00000000000 --- a/Geometry/TrackerSimData/data/trackerProdCutsBEAM.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0"?> -<DDDefinition xmlns="http://www.cern.ch/cms/DDL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../DDLSchema/DDLSchema.xsd"> - -<SpecParSection label="trackerProdCuts.xml" eval="true"> - <SpecPar name="BeamPipe"> - <PartSelector path="//BEAM" /> - <Parameter name="CMSCutsRegion" value="BeamPipe" eval="false"/> - <Parameter name="ProdCutsForElectrons" value="0.01*mm"/> - <Parameter name="ProdCutsForPositrons" value="0.01*mm"/> - <Parameter name="ProdCutsForGamma" value="0.01*mm"/> - </SpecPar> - - <SpecPar name="BeamPipeNotBeryllium"> - <PartSelector path="//BEAM" /> - <Parameter name="CMSCutsRegion" value="BeamPipeInternal" eval="false"/> - <Parameter name="ProdCutsForElectrons" value="10000*mm"/> - <Parameter name="ProdCutsForPositrons" value="10000*mm"/> - <Parameter name="ProdCutsForGamma" value="10000*mm"/> - </SpecPar> - -</SpecParSection> - -</DDDefinition> - - diff --git a/Geometry/TrackerSimData/data/trackerProdCuts_mtcc.xml b/Geometry/TrackerSimData/data/trackerProdCuts_mtcc.xml index f95463b1786..5ce123f72c4 100644 --- a/Geometry/TrackerSimData/data/trackerProdCuts_mtcc.xml +++ b/Geometry/TrackerSimData/data/trackerProdCuts_mtcc.xml @@ -29,6 +29,23 @@ </SpecPar> + + <SpecPar name="BeamPipe"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipe" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="0.01*mm"/> + <Parameter name="ProdCutsForPositrons" value="0.01*mm"/> + <Parameter name="ProdCutsForGamma" value="0.01*mm"/> + </SpecPar> + + <SpecPar name="BeamPipeNotBeryllium"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipeInternal" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="10000*mm"/> + <Parameter name="ProdCutsForPositrons" value="10000*mm"/> + <Parameter name="ProdCutsForGamma" value="10000*mm"/> + </SpecPar> + <SpecPar name="TIB_Ledge_Side_Prod_Cuts"> <PartSelector path="//TIBModCoolSide" /> <Parameter name="CMSCutsRegion" value="TIB_Ledge_Side_ProdCuts" eval="false"/> diff --git a/Geometry/TrackerSimData/data/trackerProdCuts_twentyfivepercent.xml b/Geometry/TrackerSimData/data/trackerProdCuts_twentyfivepercent.xml index 47773079924..226a473b878 100644 --- a/Geometry/TrackerSimData/data/trackerProdCuts_twentyfivepercent.xml +++ b/Geometry/TrackerSimData/data/trackerProdCuts_twentyfivepercent.xml @@ -28,6 +28,22 @@ <Parameter name="ProdCutsForGamma" value="0.1*mm"/> </SpecPar> + <SpecPar name="BeamPipe"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipe" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="0.01*mm"/> + <Parameter name="ProdCutsForPositrons" value="0.01*mm"/> + <Parameter name="ProdCutsForGamma" value="0.01*mm"/> + </SpecPar> + + <SpecPar name="BeamPipeNotBeryllium"> + <PartSelector path="//BEAM" /> + <Parameter name="CMSCutsRegion" value="BeamPipeInternal" eval="false"/> + <Parameter name="ProdCutsForElectrons" value="10000*mm"/> + <Parameter name="ProdCutsForPositrons" value="10000*mm"/> + <Parameter name="ProdCutsForGamma" value="10000*mm"/> + </SpecPar> + <SpecPar name="TIB_Ledge_Side_Prod_Cuts"> <PartSelector path="//TIBModCoolSide" /> <Parameter name="CMSCutsRegion" value="TIB_Ledge_Side_ProdCuts" eval="false"/> diff --git a/Geometry/TrackerTopology/doc/TrackerTopology.doc b/Geometry/TrackerTopology/doc/TrackerTopology.doc deleted file mode 100644 index 4502c3d7ccd..00000000000 --- a/Geometry/TrackerTopology/doc/TrackerTopology.doc +++ /dev/null @@ -1,41 +0,0 @@ - -/*! - -\page Geometry_TrackerTopology Package Geometry/TrackerTopology - -<center> -<small> - -<!-- @CVS_TAG@ will be substituted at build time, no need to touch --> -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/Geometry/TrackerTopology/?cvsroot=CMSSW&only_with_tag=@CVS_TAG@>Source code (CVS tag: @CVS_TAG@)</a> - -<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/Geometry/TrackerTopology/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a> -</small> -</center> - -\section desc Description -<!-- Short description of what this package is supposed to provide --> - -Class to define the specific pixel topology - -\subsection interface Public interface -<!-- List the classes that are provided for use in other packages (if any) --> - -- RectangularPixelTopology - -\subsection modules Modules -<!-- Describe modules implemented in this package and their parameter set --> -None - -\subsection tests Unit tests and examples -<!-- Describe cppunit tests and example configuration files --> -None - -\section status Status and planned development -<!-- e.g. completed, stable, missing features --> -None - -<hr> -Last updated: -@DATE@ Author: Ambroglini Filippo. -*/ - diff --git a/HLTrigger/Configuration/doc/HLTrigger_AOD.doi b/HLTrigger/Configuration/doc/HLTrigger_AOD.doi new file mode 100644 index 00000000000..fdaf91563d0 --- /dev/null +++ b/HLTrigger/Configuration/doc/HLTrigger_AOD.doi @@ -0,0 +1,3 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>HLT collections</td> +</tr> diff --git a/HLTrigger/Configuration/doc/HLTrigger_Configuration.doc b/HLTrigger/Configuration/doc/HLTrigger_Configuration.doc new file mode 100644 index 00000000000..218aebde909 --- /dev/null +++ b/HLTrigger/Configuration/doc/HLTrigger_Configuration.doc @@ -0,0 +1,49 @@ +/*! + +\page HLTrigger_Configuration Package HLTrigger/Configuration + +<center> +<small> + +<!-- @CVS_TAG@ will be substituted at build time, no need to touch --> +<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/HLTrigger/Configuration/?cvsroot=CMSSW&only_with_tag=@CVS_TAG@>Source code (CVS tag: @CVS_TAG@)</a> - +<a href=http://cmsdoc.cern.ch/swdev/viewcvs/viewcvs.cgi/CMSSW/HLTrigger/Configuration/.admin/developers?rev=HEAD&cvsroot=CMSSW&content-type=text/vnd.viewcvs-markup>Administrative privileges</a> +</small> +</center> + + +\section desc Configuration Package for HLTrigger Sequences and Event Content definitions + +\subsection files Configuration Fragments + +- \b HLTrigger.cff : configuration fragment which defines the sequence + +- \b HLTrigger_EventContent.cff : configuration fragment which contains blocks definitions for FullEvent, \ref RecoData "RECO" and \ref AodData "AOD" + +\subsection seq Sequence + +- \b hltrigger : sequence to perform the whole muon reconstruction. + +<pre> +\htmlinclude HLTrigger.cff +</pre> +. +\b inputs are: +- X \b Y + +\subsection eventc EventContent + +- \b the FEVT (Full Event), \ref RecoData "RECO" and \ref AodData "AOD" Tier save the following products: + +TriggerResults (the "bits") + +<pre> +\htmlinclude HLTrigger_EventContent.cff +</pre> + +<hr> + +Last updated: @DATE@ Martin Grunewald + + +*/ diff --git a/HLTrigger/Configuration/doc/HLTrigger_RECO.doi b/HLTrigger/Configuration/doc/HLTrigger_RECO.doi new file mode 100644 index 00000000000..fdaf91563d0 --- /dev/null +++ b/HLTrigger/Configuration/doc/HLTrigger_RECO.doi @@ -0,0 +1,3 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>HLT collections</td> +</tr> diff --git a/HLTrigger/Egamma/doc/html/index.html b/HLTrigger/Egamma/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTrigger/Egamma/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTrigger/Egamma/doc/html/overview.html b/HLTrigger/Egamma/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTrigger/Egamma/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTrigger/JetMET/doc/html/index.html b/HLTrigger/JetMET/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTrigger/JetMET/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTrigger/JetMET/doc/html/overview.html b/HLTrigger/JetMET/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTrigger/JetMET/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTrigger/Muon/doc/html/index.html b/HLTrigger/Muon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTrigger/Muon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTrigger/Muon/doc/html/overview.html b/HLTrigger/Muon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTrigger/Muon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTrigger/btau/doc/html/index.html b/HLTrigger/btau/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTrigger/btau/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTrigger/btau/doc/html/overview.html b/HLTrigger/btau/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTrigger/btau/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTrigger/special/doc/html/index.html b/HLTrigger/special/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTrigger/special/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTrigger/special/doc/html/overview.html b/HLTrigger/special/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTrigger/special/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/BJet/doc/html/index.html b/HLTriggerOffline/BJet/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/BJet/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/BJet/doc/html/overview.html b/HLTriggerOffline/BJet/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/BJet/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Common/doc/html/index.html b/HLTriggerOffline/Common/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Common/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Common/doc/html/overview.html b/HLTriggerOffline/Common/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Common/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Egamma/doc/html/index.html b/HLTriggerOffline/Egamma/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Egamma/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Egamma/doc/html/overview.html b/HLTriggerOffline/Egamma/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Egamma/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/HeavyFlavor/doc/html/index.html b/HLTriggerOffline/HeavyFlavor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/HeavyFlavor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/HeavyFlavor/doc/html/overview.html b/HLTriggerOffline/HeavyFlavor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/HeavyFlavor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Higgs/doc/html/index.html b/HLTriggerOffline/Higgs/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Higgs/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Higgs/doc/html/overview.html b/HLTriggerOffline/Higgs/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Higgs/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/JetMET/doc/html/index.html b/HLTriggerOffline/JetMET/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/JetMET/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/JetMET/doc/html/overview.html b/HLTriggerOffline/JetMET/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/JetMET/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Muon/doc/html/index.html b/HLTriggerOffline/Muon/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Muon/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Muon/doc/html/overview.html b/HLTriggerOffline/Muon/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Muon/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/SUSYBSM/doc/html/index.html b/HLTriggerOffline/SUSYBSM/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/SUSYBSM/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/SUSYBSM/doc/html/overview.html b/HLTriggerOffline/SUSYBSM/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/SUSYBSM/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Tau/doc/html/index.html b/HLTriggerOffline/Tau/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Tau/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Tau/doc/html/overview.html b/HLTriggerOffline/Tau/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Tau/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/Top/doc/html/index.html b/HLTriggerOffline/Top/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/Top/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/Top/doc/html/overview.html b/HLTriggerOffline/Top/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/Top/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HLTriggerOffline/special/doc/html/index.html b/HLTriggerOffline/special/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HLTriggerOffline/special/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HLTriggerOffline/special/doc/html/overview.html b/HLTriggerOffline/special/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HLTriggerOffline/special/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HeavyFlavorAnalysis/Configuration/doc/html/index.html b/HeavyFlavorAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HeavyFlavorAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HeavyFlavorAnalysis/Configuration/doc/html/overview.html b/HeavyFlavorAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HeavyFlavorAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HeavyFlavorAnalysis/Skimming/doc/html/index.html b/HeavyFlavorAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HeavyFlavorAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HeavyFlavorAnalysis/Skimming/doc/html/overview.html b/HeavyFlavorAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HeavyFlavorAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HeavyIonsAnalysis/Configuration/doc/html/index.html b/HeavyIonsAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HeavyIonsAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HeavyIonsAnalysis/Configuration/doc/html/overview.html b/HeavyIonsAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HeavyIonsAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HiggsAnalysis/Configuration/doc/html/index.html b/HiggsAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HiggsAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HiggsAnalysis/Configuration/doc/html/overview.html b/HiggsAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HiggsAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/HiggsAnalysis/Skimming/doc/html/index.html b/HiggsAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/HiggsAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/HiggsAnalysis/Skimming/doc/html/overview.html b/HiggsAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/HiggsAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/IOMC/EventVertexGenerators/src/BetafuncEvtVtxGenerator.cc b/IOMC/EventVertexGenerators/src/BetafuncEvtVtxGenerator.cc index a8177ed0079..f8aabade8af 100644 --- a/IOMC/EventVertexGenerators/src/BetafuncEvtVtxGenerator.cc +++ b/IOMC/EventVertexGenerators/src/BetafuncEvtVtxGenerator.cc @@ -1,5 +1,5 @@ -// $Id: BetafuncEvtVtxGenerator.cc,v 1.0 2006/07/20 14:34:40 yumiceva Exp $ +// $Id: BetafuncEvtVtxGenerator.cc,v 1.1 2006/11/09 00:24:04 yumiceva Exp $ /* ________________________________________________________________________ @@ -40,8 +40,8 @@ BetafuncEvtVtxGenerator::BetafuncEvtVtxGenerator(const edm::ParameterSet & p ) fY0 = p.getParameter<double>("Y0")*cm; fZ0 = p.getParameter<double>("Z0")*cm; fSigmaZ = p.getParameter<double>("SigmaZ")*cm; - fdxdz = p.getParameter<double>("dxdz")*cm; - fdydz = p.getParameter<double>("dydz")*cm; + fdxdz = p.getParameter<double>("dxdz")*radian; + fdydz = p.getParameter<double>("dydz")*radian; fbetastar = p.getParameter<double>("BetaStar")*cm; femmitance = p.getParameter<double>("Emmitance")*cm; diff --git a/IOMC/NtupleConverter/src/Ntuple2HepMCFiller.cc b/IOMC/NtupleConverter/src/Ntuple2HepMCFiller.cc index a388ab9240c..da49914aa59 100644 --- a/IOMC/NtupleConverter/src/Ntuple2HepMCFiller.cc +++ b/IOMC/NtupleConverter/src/Ntuple2HepMCFiller.cc @@ -138,7 +138,7 @@ bool Ntuple2HepMCFiller::toGenEvent( int evtnum, HepMC::GenEvent* evt ){ } // hepevt_particle.clear(); return true; -}; +} //------------------------------------------------------- HepMC::GenParticle* Ntuple2HepMCFiller::createParticle( int index ) { diff --git a/IOPool/Common/bin/CollUtil.cc b/IOPool/Common/bin/CollUtil.cc index d79083f52f3..459a1887cf4 100644 --- a/IOPool/Common/bin/CollUtil.cc +++ b/IOPool/Common/bin/CollUtil.cc @@ -2,6 +2,7 @@ #include "DataFormats/Common/interface/EventAux.h" #include "DataFormats/Common/interface/EventID.h" #include "DataFormats/Common/interface/Timestamp.h" +#include "DataFormats/Common/interface/EDProduct.h" #include <iostream> #include <string> @@ -90,18 +91,153 @@ namespace edm { return; } +// void showEventsAndEntries(TFile *hdl, const std::string& trname, const long iLow, const long iHigh) { + +// TTree *tree= (TTree*)hdl->Get(trname.c_str()); + +// if ( tree != 0 ) { + +// EventAux* evtAux_=0; +// TBranch *evtAuxBr = tree->GetBranch("EventAux"); +// tree->SetBranchAddress("EventAux",&evtAux_); +// long int max= tree->GetEntries(); +// long int entrycounter = 0; +// for (long int i=iLow; i<= iHigh && i< max; i++) { +// evtAuxBr->GetEntry(i); +// if ( evtAux_ != 0 ) { +// Timestamp time_=evtAux_->time(); +// EventID id_=evtAux_->id(); +// std::cout << id_ << " time: " << time_.value() << std::endl; + +// // Now count # of entries in each branch for this event +// int nB=tree->GetListOfBranches()->GetEntries(); +// std::cout << "No. of branches = " << nB << std::endl; + +// for ( int j=0; j<nB; j++) { +// TBranch *br = (TBranch *)tree->GetListOfBranches()->At(j); +// TString branchName = br->GetName(); +// branchName+="obj."; +// std::cout << "The branch name is " << branchName << std::endl; +// // TClass *cp = gROOT->GetClass(br->GetClassName()); +// TClass *cp = gROOT->GetClass(branchName); +// std::cout << "GotClass " << cp->GetName() << std::endl; +// EDProduct *p = static_cast<EDProduct *>(cp->New()); +// std::cout << "Got EDProduct" << std::endl; +// br->SetAddress(&p); +// br->GetEntry(i); +// } +// } +// else{ +// std::cout << "Event: " << i << " Nonsense EventAux object? " << std::endl; +// } +// } + +// } else { +// std::cout << "ERR cannot find a TTree named \"" << trname << "\"" +// << std::endl; +// return; +// } + +// return; +// } + + void printBranchNames( TTree *tree) { if ( tree != 0 ) { int nB=tree->GetListOfBranches()->GetEntries(); for ( int i=0; i<nB; i++) { - std::cout << "Branch " << i <<" of " << tree->GetName() <<" tree: " << tree->GetListOfBranches()->At(i)->GetName() << std::endl; + TBranch *btemp = (TBranch *)tree->GetListOfBranches()->At(i); + std::cout << "Branch " << i <<" of " << tree->GetName() <<" tree: " << btemp->GetName() << " Total size = " << btemp->GetTotalSize() << std::endl; + } + } + else{ + std::cout << "Missing Events tree?\n"; + } + + } + + void longBranchPrint( TTree *tr) { + + if ( tr != 0 ) { + int nB=tr->GetListOfBranches()->GetEntries(); + for ( int i=0; i<nB; i++) { + tr->GetListOfBranches()->At(i)->Print(); } } else{ std::cout << "Missing Events tree?\n"; } + + } + + void printUuids( TTree *uuidTree) { + char uuidCA[1024]; + uuidTree->SetBranchAddress("db_string",uuidCA); + uuidTree->GetEntry(0); + // Then pick out relevent piece of this string + // 9A440868-8058-DB11-85E3-00304885AB94 from + // [NAME=FID][VALUE=9A440868-8058-DB11-85E3-00304885AB94] + + std::string uuidStr(uuidCA); + std::string::size_type start=uuidStr.find("VALUE="); + if ( start == std::string::npos ) { + std::cout << "Seemingly invalid db_string entry in ##Params tree?\n"; + std::cout << uuidStr << std::endl; + } + else{ + std::string::size_type stop=uuidStr.find("]",start); + if ( stop == std::string::npos ) { + std::cout << "Seemingly invalid db_string entry in ##Params tree?\n"; + std::cout << uuidStr << std::endl; + } + else{ + //Everything is Ok - just proceed... + std::string result=uuidStr.substr(start+6,stop-start-6); + std::cout << "UUID: " << result << std::endl; + } + } } + void printEventLists( std::string remainingEvents, int numevents, TFile *tfl, bool entryoption) { + bool keepgoing=true; + while ( keepgoing ) { + long int iLow(-1),iHigh(-2); + // split by commas + std::string::size_type pos= remainingEvents.find_first_of(","); + std::string evtstr=remainingEvents; + + if ( pos == std::string::npos ) { + keepgoing=false; + } + else{ + evtstr=remainingEvents.substr(0,pos); + remainingEvents=remainingEvents.substr(pos+1); + } + + pos= evtstr.find_first_of("-"); + if ( pos == std::string::npos ) { + iLow= (int)atof(evtstr.c_str()); + iHigh= iLow; + } else { + iLow= (int)atof(evtstr.substr(0,pos).c_str()); + iHigh= (int)atof(evtstr.substr(pos+1).c_str()); + } + + // edm::showEvents(tfile,"Events",vm["events"].as<std::string>()); + if ( iLow < 1 ) iLow=1; + if ( iHigh > numevents ) iHigh=numevents; + + // shift by one.. C++ starts at 0 + iLow--; + iHigh--; + if(entryoption==false) + showEvents(tfl,"Events",iLow,iHigh); +// else if(entryoption==true) +// showEventsAndEntries(tfl,"Events",iLow,iHigh); + } + + } + } diff --git a/IOPool/Common/bin/CollUtil.h b/IOPool/Common/bin/CollUtil.h index 431c98fcc36..8dc6f803d0d 100644 --- a/IOPool/Common/bin/CollUtil.h +++ b/IOPool/Common/bin/CollUtil.h @@ -14,6 +14,10 @@ namespace edm { void printBranchNames(TTree *tree); long int numEntries(TFile *hdl, const std::string& trname); void showEvents(TFile *hdl, const std::string& trname, const long firstEv, const long lastEv); +/* void showEventsAndEntries(TFile *hdl, const std::string& trname, const long firstEv, const long lastEv); */ + void longBranchPrint(TTree *tr); + void printUuids(TTree *uuidTree); + void printEventLists(std::string remainingEvents, int numevents, TFile *tfl, bool displayEntries); // void showEvents(TFile *hdl, const std::string& trname, const std::string& evtstr); } diff --git a/IOPool/Common/bin/EdmFileUtil.cpp b/IOPool/Common/bin/EdmFileUtil.cpp index 8c1844a1cdd..0dbbe8baaaa 100644 --- a/IOPool/Common/bin/EdmFileUtil.cpp +++ b/IOPool/Common/bin/EdmFileUtil.cpp @@ -1,7 +1,7 @@ //---------------------------------------------------------------------- // EdmFileUtil.cpp // -// $Id: EdmFileUtil.cpp,v 1.6 2006/11/02 11:57:11 dlange Exp $ +// $Id: EdmFileUtil.cpp,v 1.2 2006/11/22 06:10:22 dlange Exp $ // // Author: Chih-hsiang Cheng, LLNL // Chih-Hsiang.Cheng@cern.ch @@ -43,9 +43,14 @@ int main(int argc, char* argv[]) { ("print,P", "Print all") ("uuid,u", "Print uuid") ("verbose,v","Verbose printout") + ("decodeLFN,d", "Convert LFN to PFN") + ("printBranchDetails,b","Call Print()sc for all branches") ("allowRecovery","Allow root to auto-recover corrupted files") ("events,e",boost::program_options::value<std::string>(), - "Show event ids for events within a range or set of ranges , e.g., 5-13,30,60-90 "); + "Show event ids for events within a range or set of ranges , e.g., 5-13,30,60-90 ") +// ("entries,i",boost::program_options::value<std::string>(), +// "Show entries per branch for each event within a range or set of ranges , e.g., 5-13,30,60-90 ") + ; // What trees do we require for this to be a valid collection? std::vector<std::string> expectedTrees; @@ -113,141 +118,105 @@ int main(int argc, char* argv[]) { std::vector<std::string> in = vm["file"].as<std::vector<std::string> >(); std::string catalogIn = (vm.count("catalog") ? vm["catalog"].as<std::string>() : std::string()); - std::cout << in[0] << "\n"; pset.addUntrackedParameter<std::vector<std::string> >("fileNames", in); pset.addUntrackedParameter<std::string>("catalog", catalogIn); edm::InputFileCatalog catalog(pset); std::vector<std::string> const& filesIn = catalog.fileNames(); - - // open a data file - std::string datafile=filesIn[0]; - TFile *tfile= edm::openFileHdl(datafile); - - - - if ( tfile == 0 ) return 1; - if ( verbose ) std::cout << "ECU:: Opened " << datafile << std::endl; - - // First check that this file is not auto-recovered - // Stop the job unless specified to do otherwise - - bool isRecovered = tfile->TestBit(TFile::kRecovered); - if ( isRecovered ) { - std::cout << datafile << " appears not to have been closed correctly and has been autorecovered \n"; - if ( vm.count("allowRecovery") ) { - std::cout << "Proceeding anyway\n"; - } - else{ - std::cout << "Stopping. Use --allowRecovery to try ignoring this\n"; - return 1; - } - } - else{ - if ( verbose ) std::cout << "ECU:: Collection not autorecovered. Continuing\n"; - } - - // Ok. Do we have the expected trees? - for ( unsigned int i=0; i<expectedTrees.size(); i++) { - TTree *t= (TTree*) tfile->Get(expectedTrees[i].c_str()); - if ( t==0 ) { - std::cout << "Tree " << expectedTrees[i] << " appears to be missing. Not a valid collection\n"; - std::cout << "Exiting\n"; - return 1; - } - else{ - if ( verbose ) std::cout << "ECU:: Found Tree " << expectedTrees[i] << std::endl; - } - } - - if ( verbose ) std::cout << "ECU:: Found all expected trees\n"; - - // Ok. How many events? - long int nevts= edm::numEntries(tfile,"Events"); - std::cout << tfile->GetName() << " ( " << nevts << " events, " - << tfile->GetSize() << " bytes )" << std::endl; - - // Look at the collection contents - if ( vm.count("ls")) { - if ( tfile != 0 ) tfile->ls(); - } - - // Print out each tree - if ( vm.count("print") ) { - TTree *eventsTree=(TTree*)tfile->Get("Events"); - edm::printBranchNames(eventsTree); - } - - if ( vm.count("uuid") ) { - TTree *paramsTree=(TTree*)tfile->Get("##Params"); - char uuidCA[1024]; - paramsTree->SetBranchAddress("db_string",uuidCA); - paramsTree->GetEntry(0); - - // Then pick out relevent piece of this string - // 9A440868-8058-DB11-85E3-00304885AB94 from - // [NAME=FID][VALUE=9A440868-8058-DB11-85E3-00304885AB94] - - std::string uuidStr(uuidCA); - std::string::size_type start=uuidStr.find("VALUE="); - if ( start == std::string::npos ) { - std::cout << "Seemingly invalid db_string entry in ##Params tree?\n"; - std::cout << uuidStr << std::endl; + // Allow user to input multiple files + for(unsigned int j = 0;j < in.size();j++) { + + // We _only_ want the LFN->PFN conversion. No need to open the file, + // just check the catalog and move on + if ( vm.count("decodeLFN") ) { + std::cout << filesIn[j] << std::endl; + continue; } - else{ - std::string::size_type stop=uuidStr.find("]",start); - if ( stop == std::string::npos ) { - std::cout << "Seemingly invalid db_string entry in ##Params tree?\n"; - std::cout << uuidStr << std::endl; + + // open a data file + std::cout << in[j] << "\n"; + std::string datafile=filesIn[j]; + TFile *tfile= edm::openFileHdl(datafile); + + if ( tfile == 0 ) return 1; + if ( verbose ) std::cout << "ECU:: Opened " << datafile << std::endl; + + // First check that this file is not auto-recovered + // Stop the job unless specified to do otherwise + + bool isRecovered = tfile->TestBit(TFile::kRecovered); + if ( isRecovered ) { + std::cout << datafile << " appears not to have been closed correctly and has been autorecovered \n"; + if ( vm.count("allowRecovery") ) { + std::cout << "Proceeding anyway\n"; } else{ - //Everything is Ok - just proceed... - std::string result=uuidStr.substr(start+6,stop-start-6); - std::cout << "UUID: " << result << std::endl; + std::cout << "Stopping. Use --allowRecovery to try ignoring this\n"; + return 1; } } - } - - // Print out event lists - if ( vm.count("events") ) { - bool keepgoing=true; - std::string remainingStr=vm["events"].as<std::string>(); - while ( keepgoing ) { - long int iLow(-1),iHigh(-2); - // split by commas - std::string::size_type pos= remainingStr.find_first_of(","); - std::string evtstr=remainingStr; - - if ( pos == std::string::npos ) { - keepgoing=false; + else{ + if ( verbose ) std::cout << "ECU:: Collection not autorecovered. Continuing\n"; + } + + // Ok. Do we have the expected trees? + for ( unsigned int i=0; i<expectedTrees.size(); i++) { + TTree *t= (TTree*) tfile->Get(expectedTrees[i].c_str()); + if ( t==0 ) { + std::cout << "Tree " << expectedTrees[i] << " appears to be missing. Not a valid collection\n"; + std::cout << "Exiting\n"; + return 1; } else{ - evtstr=remainingStr.substr(0,pos); - remainingStr=remainingStr.substr(pos+1); - } - - pos= evtstr.find_first_of("-"); - if ( pos == std::string::npos ) { - iLow= (int)atof(evtstr.c_str()); - iHigh= iLow; - } else { - iLow= (int)atof(evtstr.substr(0,pos).c_str()); - iHigh= (int)atof(evtstr.substr(pos+1).c_str()); + if ( verbose ) std::cout << "ECU:: Found Tree " << expectedTrees[i] << std::endl; } - - // edm::showEvents(tfile,"Events",vm["events"].as<std::string>()); - if ( iLow < 1 ) iLow=1; - if ( iHigh > nevts ) iHigh=nevts; - - // shift by one.. C++ starts at 0 - iLow--; - iHigh--; - edm::showEvents(tfile,"Events",iLow,iHigh); } - } + + if ( verbose ) std::cout << "ECU:: Found all expected trees\n"; + + // Ok. How many events? + long int nevts= edm::numEntries(tfile,"Events"); + std::cout << tfile->GetName() << " ( " << nevts << " events, " + << tfile->GetSize() << " bytes )" << std::endl; + + // Look at the collection contents + if ( vm.count("ls")) { + if ( tfile != 0 ) tfile->ls(); + } + + // Print out each tree + if ( vm.count("print") ) { + TTree *eventsTree=(TTree*)tfile->Get("Events"); + edm::printBranchNames(eventsTree); + } + + if ( vm.count("printBranchDetails") ) { + TTree *printTree=(TTree*)tfile->Get("Events"); + edm::longBranchPrint(printTree); + } + + if ( vm.count("uuid") ) { + TTree *paramsTree=(TTree*)tfile->Get("##Params"); + edm::printUuids(paramsTree); + } + + // Print out event lists + if ( vm.count("events") ) { + bool listentries=false; + std::string remainingStr=vm["events"].as<std::string>(); + edm::printEventLists(remainingStr, nevts, tfile, listentries); + } + +// if ( vm.count("entries") ) { +// bool listentries=true; +// std::string remainingStr=vm["entries"].as<std::string>(); +// edm::printEventLists(remainingStr, nevts, tfile, listentries); +// } + } } + catch (cms::Exception& e) { std::cout << "cms::Exception caught in " <<"EdmFileUtil" diff --git a/IOPool/Input/src/RootFile.cc b/IOPool/Input/src/RootFile.cc index aeab8e8855d..59de1b8dd52 100644 --- a/IOPool/Input/src/RootFile.cc +++ b/IOPool/Input/src/RootFile.cc @@ -1,5 +1,5 @@ /*---------------------------------------------------------------------- -$Id: RootFile.cc,v 1.36 2006/09/28 20:33:57 wmtan Exp $ +$Id: RootFile.cc,v 1.39 2006/12/04 23:13:42 wmtan Exp $ ----------------------------------------------------------------------*/ #include "IOPool/Input/src/RootFile.h" @@ -210,7 +210,7 @@ namespace edm { // We're not done ... so prepare the EventPrincipal boost::shared_ptr<DelayedReader> store_(new RootDelayedReader(entryNumber(), branches_, filePtr_)); std::auto_ptr<EventPrincipal> thisEvent(new EventPrincipal( - eventID_, evAux.time(), pReg, evAux.luminosityBlockID(), + eventID_, evAux.time(), pReg, evAux.luminosityBlockID(), evAux.processHistoryID_, store_)); // Loop over provenance std::vector<BranchEntryDescription>::iterator pit = eventProvenance_.begin(); @@ -223,13 +223,15 @@ namespace edm { // br->GetEntry(rootFile_->entryNumber()); // std::auto_ptr<Provenance> prov(new Provenance(*pit)); // prov->product = productMap_[prov.event.productID_]; - // std::auto_ptr<Group> g(new Group(std::auto_ptr<EDProduct>(p), prov)); + // bool const isPresent = prov->event.isPresent(); + // std::auto_ptr<Group> g(new Group(std::auto_ptr<EDProduct>(p), prov, isPresent)); // END These lines read all branches // BEGIN These lines defer reading branches std::auto_ptr<Provenance> prov(new Provenance); prov->event = *pit; prov->product = productMap_[prov->event.productID_]; - std::auto_ptr<Group> g(new Group(prov, prov->event.isPresent())); + bool const isPresent = prov->event.isPresent(); + std::auto_ptr<Group> g(new Group(prov, isPresent)); // END These lines defer reading branches thisEvent->addGroup(g); } diff --git a/IOPool/Output/src/PoolOutputModule.cc b/IOPool/Output/src/PoolOutputModule.cc index 851bafb44ff..5a29973c26c 100644 --- a/IOPool/Output/src/PoolOutputModule.cc +++ b/IOPool/Output/src/PoolOutputModule.cc @@ -1,4 +1,4 @@ -// $Id: PoolOutputModule.cc,v 1.52 2006/11/09 00:09:33 wmtan Exp $ +// $Id: PoolOutputModule.cc,v 1.53 2006/11/19 00:20:31 wmtan Exp $ #include "IOPool/Output/src/PoolOutputModule.h" #include "IOPool/Common/interface/PoolDataSvc.h" @@ -196,10 +196,12 @@ namespace edm { void PoolOutputModule::PoolFile::commitTransaction() const { context()->transaction().commitAndHold(); + provenances_.clear(); } void PoolOutputModule::PoolFile::commitAndFlushTransaction() const { context()->transaction().commit(); + provenances_.clear(); } void PoolOutputModule::PoolFile::makePlacement(std::string const& treeName_, std::string const& branchName, pool::Placement& placement) { @@ -279,8 +281,6 @@ namespace edm { void PoolOutputModule::PoolFile::fillBranches(OutputItemList const& items, DataBlockImpl const& dataBlock) const { - std::list<BranchEntryDescription> dummyProvenances; - // Loop over EDProduct branches, fill the provenance, and write the branch. for (OutputItemList::const_iterator i = outputItemList_[InEvent].begin(); i != outputItemList_[InEvent].end(); ++i) { @@ -304,8 +304,8 @@ namespace edm { provenance.isPresent_ = false; provenance.cid_ = 0; - dummyProvenances.push_front(provenance); - pool::Ref<BranchEntryDescription const> refp(context(), &*dummyProvenances.begin()); + provenances_.push_front(provenance); + pool::Ref<BranchEntryDescription const> refp(context(), &*provenances_.begin()); refp.markWrite(i->provenancePlacement_); } else { throw edm::Exception(errors::ProductNotFound,"NoMatch") @@ -321,9 +321,9 @@ namespace edm { refp.markWrite(i->provenancePlacement_); } else { // We need to make a private copy of the provenance so we can set isPresent_ correctly. - dummyProvenances.push_front(g->provenance().event); - dummyProvenances.begin()->isPresent_ = present; - pool::Ref<BranchEntryDescription const> refp(context(), &*dummyProvenances.begin()); + provenances_.push_front(g->provenance().event); + provenances_.begin()->isPresent_ = present; + pool::Ref<BranchEntryDescription const> refp(context(), &*provenances_.begin()); refp.markWrite(i->provenancePlacement_); } product = g->product(); diff --git a/IOPool/Output/src/PoolOutputModule.h b/IOPool/Output/src/PoolOutputModule.h index 42fe0541ac9..a87e54faa00 100644 --- a/IOPool/Output/src/PoolOutputModule.h +++ b/IOPool/Output/src/PoolOutputModule.h @@ -3,7 +3,7 @@ ////////////////////////////////////////////////////////////////////// // -// $Id: PoolOutputModule.h,v 1.13 2006/11/07 18:06:55 wmtan Exp $ +// $Id: PoolOutputModule.h,v 1.15 2006/12/01 03:38:17 wmtan Exp $ // // Class PoolOutputModule. Output module to POOL file // @@ -93,8 +93,8 @@ namespace edm { pool::Placement productPlacement_; }; typedef std::vector<OutputItem> OutputItemList; - typedef boost::array<OutputItemList, 3> OutputItemListArray; - typedef boost::array<std::vector<std::string>, 3> BranchNamesArray; + typedef boost::array<OutputItemList, EndBranchType> OutputItemListArray; + typedef boost::array<std::vector<std::string>, EndBranchType> BranchNamesArray; void fillBranches(OutputItemList const& items, DataBlockImpl const& dataBlock) const; @@ -105,13 +105,14 @@ namespace edm { JobReport::Token reportToken_; unsigned long eventCount_; unsigned long fileSizeCheckEvent_; - boost::array<pool::Placement, 3> auxiliaryPlacement_; + boost::array<pool::Placement, EndBranchType> auxiliaryPlacement_; pool::Placement productDescriptionPlacement_; pool::Placement parameterSetPlacement_; pool::Placement moduleDescriptionPlacement_; pool::Placement processHistoryPlacement_; pool::Placement fileFormatVersionPlacement_; PoolOutputModule const* om_; + mutable std::list<BranchEntryDescription> provenances_; }; } diff --git a/IOPool/PFNCatalog/doc/html/index.html b/IOPool/PFNCatalog/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/IOPool/PFNCatalog/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/IOPool/PFNCatalog/doc/html/overview.html b/IOPool/PFNCatalog/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/IOPool/PFNCatalog/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/IOPool/Streamer/interface/EventMessage.h b/IOPool/Streamer/interface/EventMessage.h index 114bd6babda..9790c4e7a4e 100644 --- a/IOPool/Streamer/interface/EventMessage.h +++ b/IOPool/Streamer/interface/EventMessage.h @@ -28,11 +28,6 @@ class EventMsgView { public: - //Don't use THIS CTOR any more, its here for backward compatability only. - EventMsgView(void* buf, uint32 hlt_bit_cnt, uint32 l1_bit_cnt); - - - //Only THIS CTOR is supposed to be used. EventMsgView(void* buf); uint32 code() const { return head_.code(); } diff --git a/IOPool/Streamer/interface/FileRecord.h b/IOPool/Streamer/interface/FileRecord.h new file mode 100644 index 00000000000..4780bde4729 --- /dev/null +++ b/IOPool/Streamer/interface/FileRecord.h @@ -0,0 +1,64 @@ +#ifndef FILERECORD_H +#define FILERECORD_H + +// $Id: FileRecord.h,v 1.1 2006/11/29 10:10:15 klute Exp $ +#include <string> + +namespace edm { + + + class FileRecord + { + public: + FileRecord(int, std::string, std::string); + ~FileRecord() {} + + void report(std::ostream &os, int indentation) const; + void setFileCounter(int i) { fileCounter_ = i; } + void fileSystem(int); + void writeToSummaryCatalog(); + void writeToMailBox(); + void moveFileToClosed(); + void firstEntry(double d) { firstEntry_ = d; } + void lastEntry(double d) { lastEntry_ = d; } + void increaseFileSize(int i){ fileSize_ += i; } + void increaseEventCount() { events_++; } + + std::string fileName() { return fileName_; } + std::string basePath() { return basePath_; } + std::string fileSystem() { return basePath_ + fileSystem_; } + std::string workingDir() { return basePath_ + fileSystem_ + workingDir_; } + + std::string fileCounterStr(); + std::string filePath(); + std::string completeFileName(); + + int lumiSection() { return lumiSection_; } + int fileCounter() { return fileCounter_; } + int fileSize() { return fileSize_; } + int events() { return events_; } + + double lastEntry() { return lastEntry_; } + double firstEntry() { return firstEntry_; } + + private: + std::string fileName_; // file name ( w/o ending ) + std::string basePath_; // base path name + std::string fileSystem_; // file system directory + std::string workingDir_; // current working directory + + std::string statFileName_; // catalog file name + std::string mailBoxPath_; // mail box path + + int lumiSection_; // luminosity section + int fileCounter_; // number of files with fileName_ as name + int fileSize_; // current file size + int events_; // total number of events + double firstEntry_; // time when last event was writen + double lastEntry_; // time when last event was writen + + }; + + +} // edm namespace +#endif diff --git a/IOPool/Streamer/interface/InitMessage.h b/IOPool/Streamer/interface/InitMessage.h index edcd983bc6c..3c3454ad48b 100644 --- a/IOPool/Streamer/interface/InitMessage.h +++ b/IOPool/Streamer/interface/InitMessage.h @@ -68,6 +68,7 @@ public: const uint8* descData() const { return desc_start_; } uint32 headerSize() const {return desc_start_-buf_;} uint32 eventHeaderSize() const; + private: void getNames(uint8* from, uint32 from_len, Strings& to) const; diff --git a/IOPool/Streamer/interface/OutputService.h b/IOPool/Streamer/interface/OutputService.h new file mode 100644 index 00000000000..91cfed6dec0 --- /dev/null +++ b/IOPool/Streamer/interface/OutputService.h @@ -0,0 +1,40 @@ +#ifndef OUTPUTSERVICE_H +#define OUTPUTSERVICE_H + +// $Id:$ + +#include "IOPool/Streamer/interface/EventMessage.h" +#include "IOPool/Streamer/interface/InitMessage.h" +#include "IOPool/Streamer/interface/FileRecord.h" +#include "IOPool/Streamer/src/StreamerFileWriter.h" + +#include <boost/shared_ptr.hpp> +#include <string> + + +namespace edm { + + + class OutputService + { + + public: + OutputService(boost::shared_ptr<FileRecord>, InitMsgView const&); + ~OutputService(); + + void writeEvent(EventMsgView const&); + double lastEntry() { return file_->lastEntry(); } + void report(std::ostream &os, int indentation) const; + + + private: + void writeHeader(InitMsgView const&); + void closeFile(); + double getTimeStamp(); + + boost::shared_ptr<StreamerFileWriter> writer_; // writes streamer and index file + boost::shared_ptr<FileRecord> file_; // writes streamer and index file + }; + +} // edm namespace +#endif diff --git a/IOPool/Streamer/interface/StreamService.h b/IOPool/Streamer/interface/StreamService.h new file mode 100644 index 00000000000..9f4c049509a --- /dev/null +++ b/IOPool/Streamer/interface/StreamService.h @@ -0,0 +1,100 @@ +#ifndef STREAMSERVICE_H +#define STREAMSERVICE_H + +// $Id:$ + +// - handling output files per stream make the problem 1-dimensional +// - allows to use different file handling rules per stream + +// functionality: +// - create and delete output service +// - pass init and event message to correct output service +// - do accounting +// - enforce file management rules + +// needs: +// - event selector +// - copy of init message to create a new file +// - filename, rules, etc. + +#include "FWCore/Framework/interface/EventSelector.h" + +#include "IOPool/Streamer/interface/InitMessage.h" +#include "IOPool/Streamer/interface/EventMessage.h" +#include "IOPool/Streamer/interface/FileRecord.h" +#include "IOPool/Streamer/interface/OutputService.h" + +#include <boost/shared_ptr.hpp> +#include <string> +#include <map> + +namespace edm { + + typedef std::vector <boost::shared_ptr<FileRecord> > OutputSummary; + typedef std::vector <boost::shared_ptr<FileRecord> >::iterator OutputSummaryIterator; + typedef std::vector <boost::shared_ptr<FileRecord> >::reverse_iterator OutputSummaryReIterator; + typedef std::map <boost::shared_ptr<FileRecord>, boost::shared_ptr<OutputService> > OutputMap; + typedef std::map <boost::shared_ptr<FileRecord>, boost::shared_ptr<OutputService> >::iterator OutputMapIterator; + + class StreamService + { + public: + StreamService(ParameterSet const&, InitMsgView const&); + ~StreamService() {} + + bool nextEvent(EventMsgView const&); + void stop(); + void report(std::ostream &os, int indentation) const; + + void setNumberOfFileSystems(int i) { numberOfFileSystems_ = i; } + void setCatalog(string s) { catalog_ = s; } + + std::list<std::string> getFileList(); + std::list<std::string>getCurrentFileList(); + + private: + boost::shared_ptr<OutputService> newOutputService(); + boost::shared_ptr<OutputService> getOutputService(EventMsgView const&); + boost::shared_ptr<FileRecord> generateFileRecord(); + + void saveInitMessage(InitMsgView const&); + void initializeSelection(InitMsgView const&); + bool acceptEvent(EventMsgView const&); + void setStreamParameter(); + void closeTimedOutFiles(); + double getCurrentTime(); + bool checkEvent(boost::shared_ptr<FileRecord>, EventMsgView const&); + bool checkFileSystem(); + void handleLock(boost::shared_ptr<FileRecord>); + + // + ParameterSet parameterSet_; + boost::shared_ptr<edm::EventSelector> eventSelector_; + OutputMap outputMap_; + OutputSummary outputSummary_; + string currentLockPath_; + + // set from event message + int runNumber_; + int lumiSection_; + + // set from init message ( is init message ) + char saved_initmsg_[1000*1000*2]; + + // should be output module parameter + int numberOfFileSystems_; + string catalog_; + + // output module parameter + string fileName_; + string filePath_; + string mailboxPath_; + string setupLabel_; + string streamLabel_; + int maxSize_; + double highWaterMark_; + double lumiSectionTimeOut_; + }; + +} // edm namespace +#endif diff --git a/IOPool/Streamer/interface/StreamerOutSrvcManager.h b/IOPool/Streamer/interface/StreamerOutSrvcManager.h index 68f2f175f78..92abf7b1892 100644 --- a/IOPool/Streamer/interface/StreamerOutSrvcManager.h +++ b/IOPool/Streamer/interface/StreamerOutSrvcManager.h @@ -1,55 +1,56 @@ -#include "FWCore/Utilities/interface/Exception.h" +#ifndef _STREAMEROUTSRVCMANAGER_H_ +#define _STREAMEROUTSRVCMANAGER_H_ + +// $Id:$ + #include "FWCore/ParameterSet/interface/ProcessDesc.h" +#include "FWCore/Framework/interface/EventSelector.h" #include "IOPool/Streamer/interface/InitMessage.h" #include "IOPool/Streamer/interface/EventMessage.h" - #include "IOPool/Streamer/interface/StreamerOutputService.h" +#include "IOPool/Streamer/interface/StreamService.h" -#include "boost/shared_ptr.hpp" - +#include <boost/shared_ptr.hpp> #include <vector> -#include <map> -#include <stdexcept> -#include <iostream> -#include <algorithm> -#include <iterator> - -namespace edm { - - class StreamerOutSrvcManager { - - public: - - explicit StreamerOutSrvcManager(const std::string& config); - ~StreamerOutSrvcManager(); - - void stop(); - - /** Handles arrival of New Init Message */ - //Currently the fileName parameter is ignored - void manageInitMsg(std::string fileName, uint32 runNum, unsigned long maxFileSize, double highWaterMark, - std::string path, std::string mpath, std::string catalog, uint32 disks, - InitMsgView& init_message); - - /** mages event messages */ - void manageEventMsg(EventMsgView& msg); - - std::list<std::string>& get_filelist(); - std::list<std::string>& get_currfiles(); - - private: - void collectStreamerPSets(const std::string& config); - //Store References ?? - std::vector<edm::ParameterSet> outModPSets_; - std::vector<edm::StreamerOutputService*> managedOutputs_; - - // Maintain these lists here, so that we - // could return by refs, instead of by value - std::list<std::string> filelist_; - std::list<std::string> currfiles_; - - }; - +#include <list> +#include <string> + +namespace edm +{ + + typedef std::vector<boost::shared_ptr<StreamService> > Streams; + typedef std::vector<boost::shared_ptr<StreamService> >::iterator StreamsIterator; + + + class StreamerOutSrvcManager { + + public: + + explicit StreamerOutSrvcManager(const std::string& config); + ~StreamerOutSrvcManager(); + + void stop(); + + void manageInitMsg(std::string fileName, uint32 runNum, unsigned long maxFileSize, double highWaterMark, + std::string path, std::string mpath, std::string catalog, uint32 disks, + InitMsgView& init_message); + + void manageEventMsg(EventMsgView& msg); + + std::list<std::string>& get_filelist(); + std::list<std::string>& get_currfiles(); + + private: + void collectStreamerPSets(const std::string& config); + + std::vector<ParameterSet> outModPSets_; + Streams managedOutputs_; + boost::shared_ptr<edm::EventSelector> eventSelector_; + std::list<std::string> filelist_; + std::list<std::string> currfiles_; + }; + }//edm-namespace +#endif diff --git a/IOPool/Streamer/interface/StreamerOutputModule.h b/IOPool/Streamer/interface/StreamerOutputModule.h index bbb91145dc6..152a39f35a6 100644 --- a/IOPool/Streamer/interface/StreamerOutputModule.h +++ b/IOPool/Streamer/interface/StreamerOutputModule.h @@ -41,6 +41,7 @@ #include <vector> #include <utility> #include <iostream> +#include <sys/time.h> // test luminosity sections namespace { @@ -108,7 +109,8 @@ namespace edm std::auto_ptr<EventMsgBuilder> serializeEvent(EventPrincipal const& e); void setHltMask(EventPrincipal const& e); - + void setLumiSection(); + private: Selections const* selections_; @@ -119,6 +121,10 @@ namespace edm bool useCompression_; int compressionLevel_; + // test luminosity sections + int lumiSectionInterval_; + double timeInSecSinceUTC; + Consumer* c_; StreamTranslator* translator_; @@ -141,6 +147,7 @@ StreamerOutputModule<Consumer>::StreamerOutputModule(edm::ParameterSet const& ps maxEventSize_(ps.template getParameter<int>("max_event_size")), useCompression_(ps.template getParameter<bool>("use_compression")), compressionLevel_(ps.template getParameter<int>("compression_level")), + lumiSectionInterval_(ps.template getUntrackedParameter<int>("lumiSection_interval", 0)), c_(new Consumer(ps)), //Try auto_ptr with this ? translator_(new StreamTranslator(selections_)), hltsize_(0), @@ -149,6 +156,13 @@ StreamerOutputModule<Consumer>::StreamerOutputModule(edm::ParameterSet const& ps hltbits_(0), reserved_(0) // no compression as default value - we need this! { + + // test luminosity sections + struct timeval now; + struct timezone dummyTZ; + gettimeofday(&now, &dummyTZ); + timeInSecSinceUTC = (double) now.tv_sec + ((double) now.tv_usec / 1000000.0); + if(useCompression_ == true) { if(compressionLevel_ <= 0) { @@ -275,6 +289,23 @@ void StreamerOutputModule<Consumer>::setHltMask(EventPrincipal const& e) } + +// test luminosity sections +template <class Consumer> + void StreamerOutputModule<Consumer>::setLumiSection() + { + struct timeval now; + struct timezone dummyTZ; + gettimeofday(&now, &dummyTZ); + double timeInSec = (double) now.tv_sec + ((double) now.tv_usec / 1000000.0) - timeInSecSinceUTC; + // what about overflows? + if(lumiSectionInterval_ > 0) lumi_ = (uint32)(timeInSec/lumiSectionInterval_); + + std::cout << " \n call StreamerOutputModule<Consumer>::setLumiSection() --- lumi = " << lumi_ << std::endl; + } + + + template <class Consumer> std::auto_ptr<EventMsgBuilder> StreamerOutputModule<Consumer>::serializeEvent( EventPrincipal const& e) @@ -290,6 +321,8 @@ std::auto_ptr<EventMsgBuilder> StreamerOutputModule<Consumer>::serializeEvent( setHltMask(e); + setLumiSection(); + std::auto_ptr<EventMsgBuilder> msg( new EventMsgBuilder(&bufs_[0], bufs_.size(), e.id().run(), e.id().event(), lumi_, diff --git a/IOPool/Streamer/interface/Utilities.h b/IOPool/Streamer/interface/Utilities.h index 7f2235eac6a..946ba224ff5 100644 --- a/IOPool/Streamer/interface/Utilities.h +++ b/IOPool/Streamer/interface/Utilities.h @@ -29,6 +29,8 @@ namespace edm edm::ProductRegistry getRegFromFile(const std::string& filename); std::auto_ptr<SendJobHeader> readHeaderFromStream(std::ifstream& ist); bool registryIsSubset(const SendJobHeader&, const ProductRegistry& reg); + bool registryIsSubset(const SendJobHeader& sd, const SendJobHeader& ref); + //bool registryIsSame(const SendJobHeader& sd, const SendJobHeader& ref); void mergeWithRegistry(const SendDescs& descs, ProductRegistry& reg); void declareStreamers(const SendDescs& descs); void buildClassCache(const SendDescs& descs); diff --git a/IOPool/Streamer/src/EventMessage.cc b/IOPool/Streamer/src/EventMessage.cc index 1f7ea3c91c0..f9a6daacc44 100644 --- a/IOPool/Streamer/src/EventMessage.cc +++ b/IOPool/Streamer/src/EventMessage.cc @@ -1,44 +1,6 @@ #include "IOPool/Streamer/interface/EventMessage.h" -// uint32 hlt_bit_cnt, uint32 l1_bit_cnt Are practically don't care parameters, -// we should remove this constructor - -EventMsgView::EventMsgView(void* buf, uint32 hlt_bit_cnt, uint32 l1_bit_cnt): - buf_((uint8*)buf),head_(buf), - v2Detected_(false) - //hlt_bits_count_(hlt_bit_cnt),l1_bits_count_(l1_bit_cnt) -{ - uint8* l1_bit_size_ptr = buf_ + sizeof(EventHeader); //Just after Header - l1_bits_count_ = convert32(l1_bit_size_ptr); - uint32 l1_sz = l1_bits_count_; - - l1_bits_start_ = l1_bit_size_ptr + sizeof(uint32); - - //Lets detect if thats V2 message - if (l1_bits_count_ == 11 && l1_bits_start_[0] == 0x53) - { - l1_sz = 1; - v2Detected_=true; - } - - if (v2Detected_ == false) { - if (l1_sz != 0) l1_sz = 1 + ((l1_sz-1)/8); - } - - uint8* hlt_bit_size_ptr = l1_bits_start_ + l1_sz; - hlt_bits_count_ = convert32(hlt_bit_size_ptr); - hlt_bits_start_ = hlt_bit_size_ptr + sizeof(uint32); - uint32 hlt_sz = hlt_bits_count_; - if (hlt_sz != 0) hlt_sz = 1+ ((hlt_sz-1)/4); - - if(v2Detected_) hlt_sz=2; - event_start_ = hlt_bits_start_ + hlt_sz; - event_len_ = convert32(event_start_); - event_start_ += sizeof(char_uint32); -} - -//This ctor should be used in all future code EventMsgView::EventMsgView(void* buf): buf_((uint8*)buf),head_(buf), v2Detected_(false) diff --git a/IOPool/Streamer/src/FileRecord.cc b/IOPool/Streamer/src/FileRecord.cc new file mode 100644 index 00000000000..5ce3190dc4f --- /dev/null +++ b/IOPool/Streamer/src/FileRecord.cc @@ -0,0 +1,149 @@ +// $Id: FileRecord.cc,v 1.2 2006/12/09 16:39:40 hcheung Exp $ + +#include "IOPool/Streamer/interface/FileRecord.h" + +#include <iostream> +#include <sstream> +#include <fstream> +#include <iomanip> + +using namespace edm; +using namespace std; + + +// +// *** FileRecord +// +FileRecord::FileRecord(int lumi, string file, string path): + fileName_(file), + basePath_(path), + fileSystem_(""), + workingDir_("/open/"), + statFileName_("summaryCatalog.txt"), + mailBoxPath_(path+"/mbox"), + lumiSection_(lumi), + fileCounter_(0), + fileSize_(0), + events_(0), + firstEntry_(0.0), + lastEntry_(0.0) +{ +} + + +// +// *** write mailbox entry +// +void FileRecord::writeToMailBox() +{ + ostringstream oss; + oss << mailBoxPath_ << "/" << fileName_ << fileCounterStr() << ".smry"; + ofstream of(oss.str().c_str()); + of << completeFileName(); + of.close(); +} + + +// +// *** write summary information in catalog +// +void FileRecord::writeToSummaryCatalog() +{ + ostringstream currentStat; + string ind(":"); + currentStat << fileName_ << ind + << fileSize_ << ind + << events_ << endl; + string currentStatString (currentStat.str()); + ofstream of(statFileName_.c_str(), ios_base::ate | ios_base::out | ios_base::app ); + //of << currentStat; + of << currentStatString; + of.close(); +} + + +// +// *** return a formatted string for the file counter +// +string FileRecord::fileCounterStr() +{ + std::ostringstream oss; + oss << "." << setfill('0') << std::setw(4) << fileCounter_; + return oss.str(); +} + + +// +// *** return the full path +// +string FileRecord::filePath() +{ + return ( basePath_ + fileSystem_ + workingDir_); +} + + +// +// *** return the complete file name and path (w/o file ending) +// +string FileRecord::completeFileName() +{ + return ( basePath_ + fileSystem_ + workingDir_ + fileName_ + fileCounterStr() ); +} + + +// +// *** set the current file system +// +void FileRecord::fileSystem(int i) +{ + std::ostringstream oss; + oss << "/" << setfill('0') << std::setw(2) << i; + fileSystem_ = oss.str(); +} + + +// +// *** move index and streamer file to "closed" directory +// +void FileRecord::moveFileToClosed() +{ + string openIndexFileName = completeFileName() + ".ind"; + string openStreamerFileName = completeFileName() + ".dat"; + workingDir_ = "/closed/"; + string closedIndexFileName = completeFileName() + ".ind"; + string closedStreamerFileName = completeFileName() + ".dat"; + + int result = rename( openIndexFileName.c_str() , closedIndexFileName.c_str() ); + result += rename( openStreamerFileName.c_str() , closedStreamerFileName.c_str() ); + + if (result != 0 ) + cout << " *** FileRecord::closeFile() Houston there is a problem moving " + << openStreamerFileName << " to " << closedStreamerFileName << endl; + +} + + +// +// *** report status of FileRecord +// +void FileRecord::report(ostream &os, int indentation) const +{ + string prefix(indentation, ' '); + os << "\n"; + os << prefix << "------------- FileRecord -------------\n"; + os << prefix << "fileName " << fileName_ << "\n"; + os << prefix << "basePath_ " << basePath_ << "\n"; + os << prefix << "workingDir_ " << workingDir_ << "\n"; + os << prefix << "fileSystem_ " << fileSystem_ << "\n"; + os << prefix << "statFileName_ " << statFileName_ << "\n"; + os << prefix << "mailBoxPath_ " << mailBoxPath_ << "\n"; + os << prefix << "lumiSection_ " << lumiSection_ << "\n"; + os << prefix << "fileCounter_ " << fileCounter_ << "\n"; + os << prefix << "fileSize " << fileSize_ << "\n"; + os << prefix << "events " << events_ << "\n"; + os << prefix << "first entry " << firstEntry_ << "\n"; + os << prefix << "last entry " << lastEntry_ << "\n"; + os << prefix << "-----------------------------------------\n"; +} + + diff --git a/IOPool/Streamer/src/OutputService.cc b/IOPool/Streamer/src/OutputService.cc new file mode 100644 index 00000000000..dafcd43a37c --- /dev/null +++ b/IOPool/Streamer/src/OutputService.cc @@ -0,0 +1,115 @@ +// $Id: OutputService.cc,v 1.1 2006/11/29 10:10:16 klute Exp $ + +#include "IOPool/Streamer/interface/OutputService.h" +#include "IOPool/Streamer/interface/StreamerStatService.h" + +#include <iostream> +#include <string> +#include <sys/time.h> + +using namespace edm; +using namespace std; +using boost::shared_ptr; + + +// +// *** OutputService +// +OutputService::OutputService(boost::shared_ptr<FileRecord> file, + InitMsgView const& view): + file_(file) +{ + string streamerFileName = file_ -> filePath() + file_ -> fileName() + file_ -> fileCounterStr() + ".dat"; + string indexFileName = file_ -> filePath() + file_ -> fileName() + file_ -> fileCounterStr() + ".ind"; + + writer_ = shared_ptr<StreamerFileWriter> (new StreamerFileWriter(streamerFileName, indexFileName)); + writeHeader(view); + + //file_ -> increaseFileSize(view.size()); //this is duplicated + file_ -> firstEntry(getTimeStamp()); +} + + +// +// *** call close file +// +OutputService::~OutputService() +{ + closeFile(); +} + + +// +// *** write file header +// *** write increase file size by file header size +// +void OutputService::writeHeader(InitMsgView const& view) +{ + writer_ -> doOutputHeader(view); + file_ -> increaseFileSize(view.size()); +} + + +// +// *** write event to file +// *** increase the file size +// *** update time of last entry +// *** increase event count +// +void OutputService::writeEvent(EventMsgView const& view) +{ + writer_ -> doOutputEvent(view); + file_ -> increaseFileSize(view.size()); + file_ -> lastEntry(getTimeStamp()); + file_ -> increaseEventCount(); +} + + +// +// *** stop file write +// *** add end of file record size to file size +// *** move file to "closed" directory +// *** write to summary catalog +// *** write to mail box +// +void OutputService::closeFile() +{ + writer_ -> stop(); + file_ -> increaseFileSize(writer_->getStreamEOFSize()); + file_ -> moveFileToClosed(); + file_ -> writeToSummaryCatalog(); + file_ -> writeToMailBox(); +} + + +// +// *** get the current time stamp +// +double OutputService::getTimeStamp() +{ + struct timeval now; + struct timezone dummyTZ; + gettimeofday(&now, &dummyTZ); + return (double) now.tv_sec + (double) now.tv_usec / 1000000.0; +} + + +// +// *** report status of OutputService +// +void OutputService::report(ostream &os, int indentation) const +{ + string prefix(indentation, ' '); + os << prefix << "------------- OutputService -------------\n"; + file_ -> report(os,indentation); + double time = (double) file_ -> lastEntry() - (double) file_ -> firstEntry(); + double rate = (time>0) ? (double) file_ -> events() / (double) time : 0.; + double tput = (time>0) ? (double) file_ -> fileSize() / ((double) time * 1048576.) : 0.; + os << prefix << "rate " << rate << " evts/s\n"; + os << prefix << "throughput " << tput << " MB/s\n"; + os << prefix << "time " << time << " s\n"; + os << prefix << "-----------------------------------------\n"; +} + + + diff --git a/IOPool/Streamer/src/StreamService.cc b/IOPool/Streamer/src/StreamService.cc new file mode 100644 index 00000000000..fa93e55d427 --- /dev/null +++ b/IOPool/Streamer/src/StreamService.cc @@ -0,0 +1,348 @@ +// $Id: StreamService.cc,v 1.4 2006/12/10 11:51:45 hcheung Exp $ + +#include "IOPool/Streamer/interface/StreamService.h" + +#include <iostream> +#include <iomanip> +#include <sys/time.h> +#include <sys/statfs.h> + +using namespace edm; +using namespace std; +using boost::shared_ptr; + + +// +// *** construct stream service from +// *** parameter set and init message +// +StreamService::StreamService(ParameterSet const& pset, InitMsgView const& view): + parameterSet_(pset) +{ + saveInitMessage(view); + initializeSelection(view); + setStreamParameter(); +} + + +// +// *** event loop for stream service +// +bool StreamService::nextEvent(EventMsgView const& view) +{ + if ( ! acceptEvent(view) ) + return false; + + runNumber_ = view.run(); + lumiSection_ = view.lumi(); + + shared_ptr<OutputService> outputService = getOutputService(view); + + outputService -> writeEvent(view); + + closeTimedOutFiles(); + + return true; +} + + +// +// *** close all files on stop signal +// +void StreamService::stop() +{ + outputMap_.erase(outputMap_.begin(), outputMap_.end()); +} + + +// +// *** close all output service which have not received an events +// *** for lumiSectionTimeOut seconds and make a record of the file +// +void StreamService::closeTimedOutFiles() +{ + // can be done in a more clever way ... + double currentTime = getCurrentTime(); + for (OutputMapIterator it = outputMap_.begin(); it != outputMap_.end(); it++) + { + if ( currentTime - it->second->lastEntry() > lumiSectionTimeOut_ ) + { + outputMap_.erase(it); + it = outputMap_.begin(); + } + } +} + + +// +// *** find output service in map or return a new one +// *** rule: only one file for each lumi section is output map +// +boost::shared_ptr<OutputService> StreamService::getOutputService(EventMsgView const& view) +{ + for (OutputMapIterator it = outputMap_.begin(); it != outputMap_.end(); it++) + { + if ( it->first->lumiSection() == lumiSection_) + { + if (checkEvent(it->first, view)) + return it->second; + else + { + outputMap_.erase(it); + break; + } + } + } + return newOutputService(); +} + + +// +// *** generate file descriptor +// *** generate output service +// *** add ouput service to output map +// *** add ouput service to output summary +// *** handle lock file +// +boost::shared_ptr<OutputService> StreamService::newOutputService() +{ + boost::shared_ptr<FileRecord> file = generateFileRecord(); + InitMsgView view(&saved_initmsg_[0]); + + shared_ptr<OutputService> outputService (new OutputService(file, view)); + + outputMap_[file] = outputService; + outputSummary_ . push_back(file); + + handleLock(file); + return outputService; +} + + +// +// *** handle lock for this stream +// *** has to be in sync with other streams +// +void StreamService::handleLock(shared_ptr<FileRecord> file) +{ + string lockFileName = currentLockPath_ + ".lock"; + remove( lockFileName.c_str() ); + + currentLockPath_ = file -> filePath(); + lockFileName = currentLockPath_ + ".lock"; + + ofstream *lockFile = new ofstream(lockFileName.c_str(), ios_base::ate | ios_base::out | ios_base::app ); + delete(lockFile); +} + + +// +// *** perform checks before writing the event +// *** so far ... check the event will fit into the file +// +bool StreamService::checkEvent(shared_ptr<FileRecord> file, EventMsgView const& view) +{ + if (file -> fileSize() + (int) view.size() > maxSize_ && file -> events() > 0) + return false; + + return true; +} + + +// +// *** check that the file system exists and that there +// *** is enough disk space +// +bool StreamService::checkFileSystem() +{ + struct statfs64 buf; + int retVal = statfs64(filePath_.c_str(), &buf); + if(retVal!=0) + { + std::cout << "StreamService: " << "Could not stat output filesystem for path " + << filePath_ << std::endl; + return false; + } + + unsigned long btotal = 0; + unsigned long bfree = 0; + unsigned long blksize = 0; + if(retVal==0) + { + blksize = buf.f_bsize; + btotal = buf.f_blocks; + bfree = buf.f_bfree; + } + float dfree = float(bfree)/float(btotal); + float dusage = 1. - dfree; + + if(dusage>highWaterMark_) + { + cout << "StreamService: " << "Output filesystem for path " << filePath_ + << " is more than " << highWaterMark_*100 << "% full " << endl; + return false; + } + + return true; +} + + +// +// *** initialize stream selection +// +void StreamService::initializeSelection(InitMsgView const& initView) +{ + Strings triggerNameList; + initView.hltTriggerNames(triggerNameList); + eventSelector_.reset(new EventSelector(parameterSet_.getUntrackedParameter("SelectEvents", ParameterSet()),triggerNameList)); +} + + +// +// *** accept event according to their high level trigger bits +// +bool StreamService::acceptEvent(EventMsgView const& view) +{ + std::vector<unsigned char> hlt_out; + hlt_out.resize(1 + (view.hltCount()-1)/4); + view.hltTriggerBits(&hlt_out[0]); + int num_paths = view.hltCount(); + bool rc = (eventSelector_->wantAll() || eventSelector_->acceptEvent(&hlt_out[0], num_paths)); + return rc; +} + + +// +// *** save init message need to open new output service +// +void StreamService::saveInitMessage(InitMsgView const& view) +{ + saved_initmsg_[0] = '\0'; + char* pos = &saved_initmsg_[0]; + unsigned char* from = view.startAddress(); + unsigned int dsize = view.size(); + copy(from,from+dsize,pos); +} + + +// +// *** file private data member from parameter set +// +void StreamService::setStreamParameter() +{ + fileName_ = parameterSet_.getParameter<string> ("fileName"); + filePath_ = parameterSet_.getParameter<string> ("filePath"); + mailboxPath_ = parameterSet_.getParameter<string> ("mailboxPath"); + setupLabel_ = parameterSet_.getParameter<string> ("setupLabel"); + streamLabel_ = parameterSet_.getParameter<string> ("streamLabel"); + maxSize_ = parameterSet_.getParameter<int> ("maxSize"); + highWaterMark_ = parameterSet_.getParameter<double> ("highWaterMark"); + lumiSectionTimeOut_ = parameterSet_.getParameter<double> ("lumiSectionTimeOut"); + // report(cout, 4); +} + + +// +// *** generate a unique file descriptor +// +// The run number, stream name and storage manager instance have +// to be part of the file name. I have added the lumi section, +// but in any case we have to make sure that file names are +// unique. +// +// Keep a list of file names and check if file name +// was not already used in this run. +// +boost::shared_ptr<FileRecord> StreamService::generateFileRecord() +{ + std::ostringstream oss; + oss << setupLabel_ + << "." << setfill('0') << std::setw(8) << runNumber_ + << "." << setfill('0') << std::setw(4) << lumiSection_ + << "." << streamLabel_ + << "." << fileName_; + string fileName = oss.str(); + + shared_ptr<FileRecord> fd = shared_ptr<FileRecord>(new FileRecord(lumiSection_, fileName, filePath_)); + + for (OutputSummaryReIterator it = outputSummary_.rbegin(); it != outputSummary_.rend(); it++) + { + if ( (*it)->fileName() == fd->fileName() ) + { + fd->setFileCounter( (*it)->fileCounter()+1 ); + break; + } + } + + if ( numberOfFileSystems_ > 0 && numberOfFileSystems_ < 100 ) + fd -> fileSystem(( runNumber_+ outputSummary_.size() ) % numberOfFileSystems_); + + // fd->report(cout, 12); + return fd; +} + + +// +// *** get all files in this run (including open files) +// return for each the count, filename, number of events, file size separated by a space +// +std::list<std::string> StreamService::getFileList() +{ + std::list<std::string> files_; + for (OutputSummaryIterator it = outputSummary_.begin(); it != outputSummary_.end(); it++) + { + std::ostringstream entry; + entry << (*it)->fileCounter() << " " + << (*it)->completeFileName() << " " + << (*it)->events() << " " + << (*it)->fileSize(); + files_.push_back(entry.str()); + } + return files_; +} + + +// +// *** get all open (current) files +// +std::list<std::string> StreamService::getCurrentFileList() +{ + std::list<std::string> files_; + for (OutputMapIterator it = outputMap_.begin(); it != outputMap_.end(); it++) + files_.push_back(it->first->completeFileName()); + return files_; +} + + +// +// *** get the current time +// +double StreamService::getCurrentTime() +{ + struct timeval now; + struct timezone dummyTZ; + gettimeofday(&now, &dummyTZ); + return ((double) now.tv_sec + ((double) now.tv_usec / 1000000.0)); +} + + +// +// *** report the status of stream service +// +void StreamService::report(ostream &os, int indentation) const +{ + string prefix(indentation, ' '); + os << "\n"; + os << prefix << "------------- StreamService -------------\n"; + os << prefix << "fileName " << fileName_ << "\n"; + os << prefix << "filePath " << filePath_ << "\n"; + os << prefix << "mailboxPath " << mailboxPath_ << "\n"; + os << prefix << "setupLabel " << setupLabel_ << "\n"; + os << prefix << "streamLabel " << streamLabel_ << "\n"; + os << prefix << "maxSize " << maxSize_ << "\n"; + os << prefix << "highWaterMark " << highWaterMark_ << "\n"; + os << prefix << "lumiSectionTimeOut " << lumiSectionTimeOut_ << "\n"; + os << prefix << "no. active files " << outputMap_.size() << "\n"; + os << prefix << "no. files " << outputSummary_.size() << "\n"; + os << prefix << "-----------------------------------------\n"; +} diff --git a/IOPool/Streamer/src/StreamerOutSrvcManager.cc b/IOPool/Streamer/src/StreamerOutSrvcManager.cc index 0e137b987bc..f41099bec5f 100644 --- a/IOPool/Streamer/src/StreamerOutSrvcManager.cc +++ b/IOPool/Streamer/src/StreamerOutSrvcManager.cc @@ -1,63 +1,114 @@ -// $Id: StreamerOutSrvcManager.cc,v 1.7 2006/10/11 15:03:52 klute Exp $ -#include "IOPool/Streamer/interface/StreamerOutSrvcManager.h" -#include "IOPool/Streamer/interface/StreamerOutputService.h" +// $Id: StreamerOutSrvcManager.cc,v 1.11 2006/12/10 11:53:37 hcheung Exp $ -#include <iomanip> +#include "IOPool/Streamer/interface/StreamerOutSrvcManager.h" +#include "FWCore/Utilities/interface/Exception.h" using namespace std; +using namespace edm; +using boost::shared_ptr; -namespace edm { StreamerOutSrvcManager::StreamerOutSrvcManager(const std::string& config): outModPSets_(0), managedOutputs_(0) - { - //cout << "CONFIG RECEIVED IS: "<<config<<endl; - collectStreamerPSets(config); - } +{ + collectStreamerPSets(config); +} + StreamerOutSrvcManager::~StreamerOutSrvcManager() -{ - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - delete (*it); - } +{ + managedOutputs_.clear(); } + void StreamerOutSrvcManager::stop() { - // Received a stop(), Pass it ON to each outputFile - // outputFile(service) will close files and write EOF Message - - // Not caling stop() from destructor, as its not a preffered way - // for some mysterious reason. Hope to figure that out soon. - // Though it seems OK to call it from destructor here - // instead of explicitly calling in FragCollector - - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - (*it)->stop(); - } + for(StreamsIterator it = managedOutputs_.begin(); + it != managedOutputs_.end(); ++it) + { + (*it)->stop(); + } +} + + +void StreamerOutSrvcManager::manageInitMsg(std::string fileName, uint32 runNum, + unsigned long maxFileSize, double highWaterMark, + std::string path, std::string mpath, + std::string catalog, uint32 disks, + InitMsgView& view) +{ + for(std::vector<ParameterSet>::iterator it = outModPSets_.begin(); + it != outModPSets_.end(); ++it) + { + shared_ptr<StreamService> stream = shared_ptr<StreamService>(new StreamService((*it),view)); + stream -> setCatalog(catalog); + stream -> setNumberOfFileSystems(disks); + managedOutputs_. push_back( stream ); + stream -> report(cout,3); + } +} + + +void StreamerOutSrvcManager::manageEventMsg(EventMsgView& msg) +{ + bool eventAccepted = false; + for(StreamsIterator it = managedOutputs_.begin(); it != managedOutputs_.end(); ++it) + eventAccepted = (*it)->nextEvent(msg) || eventAccepted; + +} + + +// +// *** get all files from all streams +// +std::list<std::string>& StreamerOutSrvcManager::get_filelist() +{ + filelist_.clear(); + for(StreamsIterator it = managedOutputs_.begin(); + it != managedOutputs_.end(); ++it) + { + std::list<std::string> sub_list = (*it)->getFileList(); + if(sub_list.size() > 0) + filelist_.insert(filelist_.end(), sub_list.begin(), sub_list.end() ); + } + return filelist_; +} + + +// +// *** get all current files from all streams +// +std::list<std::string>& StreamerOutSrvcManager::get_currfiles() +{ + currfiles_.clear(); + for(StreamsIterator it = managedOutputs_.begin(); + it != managedOutputs_.end(); ++it) + { + std::list<std::string> sub_list = (*it)->getCurrentFileList(); + if(sub_list.size() > 0) + filelist_.insert(filelist_.end(), sub_list.begin(), sub_list.end() ); + } + return currfiles_; } + +// +// *** wrote similar example code in IOPool/Streamer/test/ParamSetWalker_t.cpp +// *** this method is diluted version of same code. +// *** if more items needs to be extracted for config, refer to example code +// void StreamerOutSrvcManager::collectStreamerPSets(const std::string& config) { - // wrote similar example code in IOPool/Streamer/test/ParamSetWalker_t.cpp - // this method is diluted version of same code. - // if more items needs to be extracted for config, refer to example code try{ ProcessDesc pdesc(config.c_str()); boost::shared_ptr<ParameterSet> procPset = pdesc.getProcessPSet(); - //std::cout<<"Process PSet:"<<procPset->toString()<<endl; ParameterSet allTrigPaths = procPset-> getUntrackedParameter<ParameterSet>("@trigger_paths"); - //std::cout <<"Found Trig Path :"<<allTrigPaths.toString()<<endl; if (allTrigPaths.empty()) throw cms::Exception("collectStreamerPSets","StreamerOutSrvcManager") @@ -74,28 +125,19 @@ void StreamerOutSrvcManager::collectStreamerPSets(const std::string& config) it != allEndPaths.end(); ++it) { - //std::cout <<"Found an end Path :"<<(*it)<<std::endl; - //Lets try to get this PSet from the Process PSet std::vector<std::string> anEndPath = procPset->getParameter<std::vector<std::string> >((*it)); for(std::vector<std::string>::iterator it = anEndPath.begin(); it != anEndPath.end(); ++it) { - //std::cout <<"Found a end Path PSet :"<<(*it)<<endl; - //Lets Check this Module if its a EventStreamFileWriter type - ParameterSet aModInEndPathPset = - procPset->getParameter<ParameterSet>((*it)); - if (aModInEndPathPset.empty()) - throw cms::Exception("collectStreamerPSets","StreamerOutSrvcManager") - << "Empty End Path Found in the Config File" <<endl; - //std::cout <<"This Module PSet is: "<<aModInEndPathPset.toString()<<std::endl; - std::string mod_type = aModInEndPathPset.getParameter<std::string> ("@module_type"); - //std::cout <<"Type of This Module is: "<<mod_type<<endl; - if (mod_type == "EventStreamFileWriter") - //if (mod_type == "I2OStreamConsumer") - { - //cout<<"FOUND WHAT WAS LOOKING FOR:::"<<std::endl; - outModPSets_.push_back(aModInEndPathPset); - } + ParameterSet aModInEndPathPset = + procPset->getParameter<ParameterSet>((*it)); + if (aModInEndPathPset.empty()) + throw cms::Exception("collectStreamerPSets","StreamerOutSrvcManager") + << "Empty End Path Found in the Config File" <<endl; + + std::string mod_type = aModInEndPathPset.getParameter<std::string> ("@module_type"); + if (mod_type == "EventStreamFileWriter") + outModPSets_.push_back(aModInEndPathPset); } } }catch (cms::Exception & e) { @@ -104,97 +146,3 @@ void StreamerOutSrvcManager::collectStreamerPSets(const std::string& config) } } -void StreamerOutSrvcManager::manageInitMsg(std::string fileName, uint32 runNum, unsigned long maxFileSize, double highWaterMark, - std::string path, std::string mpath, std::string catalog, uint32 disks, InitMsgView& init_message) - { - - //received file name is ignored for now, and later we can remove it, not understood if its required - - // An INIT Message has arrived, and we need to open - // StreamerOutputService (output file) - // for each of outModPSets_ - - for(std::vector<ParameterSet>::iterator it = outModPSets_.begin(); - it != outModPSets_.end(); ++it) - { - //Get the filename (HWKC - how to specify default parameters in call? - std::string fileNameLocal = (*it).getParameter<string> ("fileName"); - std::string filePathLocal = (*it).getParameter<string> ("filePath"); - std::string mailboxPathLocal = (*it).getParameter<string> ("mailboxPath"); - std::string setupLabelLocal = (*it).getParameter<string> ("setupLabel"); - std::string streamLabelLocal = (*it).getParameter<string> ("streamLabel"); - uint32 maxFileSizeLocal = (*it).getParameter<int> ("maxSize"); - double highWaterMarkLocal = (*it).getParameter<double> ("highWaterMark"); - - //Other parameters can also be pulled here, if provided in config file. - - StreamerOutputService* outputFile = new StreamerOutputService((*it)); - //invoke its init, later StreamerOutputService CTOR will call its own init - //it should take a SelectEvents PSet too - // HWKC - we need to check no two outputs streams have the same filename! - //outputFile->init(fileNameLocal, maxFileSize, highWaterMark, - // path, mpath, catalog, disks, init_message); - std::ostringstream stm; - stm << setupLabelLocal << "." << setfill('0') << std::setw(8) << runNum - << "." << streamLabelLocal << "." << fileName; - std::string filenLocal = stm.str(); - outputFile->init(filenLocal, maxFileSizeLocal, highWaterMarkLocal, - filePathLocal, mailboxPathLocal, catalog, disks, init_message); - - //Stor it in list of managed outputFiles - managedOutputs_.push_back(outputFile); - } - } - -void StreamerOutSrvcManager::manageEventMsg(EventMsgView& msg) - { - //Received an Event Message, Pass it ON to each outputFile - // outputFile(service) will decide to write or Pass it - - bool condition = true; - - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - condition = condition && (*it)->writeEvent(msg); - } - - // close all managed file synchronous ( if condition == false ) - if ( !condition ) - { - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - (*it)->closeFile(msg); - } - } - } - - -std::list<std::string>& StreamerOutSrvcManager::get_filelist() - { - filelist_.clear(); - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - std::list<std::string>& sub_list = (*it)->get_filelist(); - if(sub_list.size() > 0) - filelist_.insert(filelist_.end(), sub_list.begin(), sub_list.end() ); -// filelist_.assign(sub_list.begin(), sub_list.end() ); - } - return filelist_; - } - - -std::list<std::string>& StreamerOutSrvcManager::get_currfiles() - { - currfiles_.clear(); - for(std::vector<StreamerOutputService*>::iterator it = managedOutputs_.begin(); - it != managedOutputs_.end(); ++it) - { - currfiles_.push_back((*it)->get_currfile()); - } - return currfiles_; - } -} //emd-namespace - diff --git a/IOPool/Streamer/src/TestFileReader.cc b/IOPool/Streamer/src/TestFileReader.cc index a6b9f93bfae..23aaa3a5cd5 100644 --- a/IOPool/Streamer/src/TestFileReader.cc +++ b/IOPool/Streamer/src/TestFileReader.cc @@ -98,8 +98,12 @@ namespace edmtestp EventBuffer::ProducerBuffer b(*to_); const EventMsgView* eview = stream_reader_->currentRecord(); stor::FragEntry* msg = - new (b.buffer()) stor::FragEntry(eview->startAddress(), - eview->startAddress(), + // new (b.buffer()) stor::FragEntry(eview->startAddress(), + // eview->startAddress(), + // the first arg should be startAddress() right? + //new (b.buffer()) stor::FragEntry((void*)eview->eventData(), + new (b.buffer()) stor::FragEntry((void*)eview->startAddress(), + (void*)eview->eventData(), eview->size(),1,1, eview->code(),1); assert(msg); diff --git a/IOPool/Streamer/src/Utilities.cc b/IOPool/Streamer/src/Utilities.cc index 5b08b2b1316..197b58a374f 100644 --- a/IOPool/Streamer/src/Utilities.cc +++ b/IOPool/Streamer/src/Utilities.cc @@ -1,5 +1,6 @@ #include "IOPool/Streamer/interface/Utilities.h" +#include "IOPool/Streamer/interface/StreamTranslator.h" #include "IOPool/Streamer/interface/ClassFiller.h" #include "FWCore/Utilities/interface/Exception.h" #include "FWCore/Utilities/interface/DebugMacros.h" @@ -116,6 +117,50 @@ namespace edm return rc; } + bool registryIsSubset(const SendJobHeader& sd, + const SendJobHeader& ref) + { + bool rc = true; + SendDescs::const_iterator i(sd.descs_.begin()),e(sd.descs_.end()); + + FDEBUG(6) << "registryIsSubset: Product List: " << endl; + for(;i!=e; ++i) { + // the new products must be contained in the old registry + // form a branchkey from the *i branchdescription, + // use the productlist from the product registry to locate + // the branchkey. If not found, then error in this state + BranchKey key(*i); + // look for matching in ref + FDEBUG(9) << "Looking for " << i->className() << "\n"; + SendDescs::const_iterator iref(ref.descs_.begin()),eref(ref.descs_.end()); + bool found = false; + for(;iref!=eref; ++iref) { + FDEBUG(9) << "testing against " << iref->className() << "\n"; + BranchKey refkey(*iref); + if(key == refkey) { + found = true; + FDEBUG(9) << "found!" << "\n"; + break; + } + } + if(!found) { + rc = false; + break; +#if 0 + throw cms::Exception("InconsistentRegistry","EventStreamer") + << "A new product registry was received during the " + << "running state with entries that were not present " + << "in the original registry.\n" + << "The new type is " << i->className() << "\n"; +#endif + FDEBUG(6) << "Inconsistent Registry: new type is " + << i->className() << "\n"; + } + } + + return rc; + } + void mergeWithRegistry(const SendDescs& descs, ProductRegistry& reg) { @@ -260,18 +305,40 @@ namespace edm JobHeaderDecoder decoder; vector<char> regdata(1000*1000); - int len; - ist.read((char*)&len,sizeof(int)); - regdata.resize(len); - ist.read(®data[0],len); + //int len; + //ist.read((char*)&len,sizeof(int)); + //regdata.resize(len); + //ist.read(®data[0],len); + ist.read(®data[0], sizeof(HeaderView)); - if(!ist) + if (ist.eof() || (unsigned int)ist.gcount() < sizeof(HeaderView) ) + { + throw cms::Exception("ReadHeader","getRegFromFile") + << "No file exists or Empty file encountered:\n"; + } + + HeaderView head(®data[0]); + uint32 code = head.code(); + if (code != Header::INIT) /** Not an init message should return ******/ + { throw cms::Exception("ReadHeader","getRegFromFile") - << "Could not read the registry information from the test\n" - << "event stream file \n"; + << "Expecting an init Message at start of file\n"; + } + + uint32 headerSize = head.size(); + //Bring the pointer at start of Start Message/start of file + ist.seekg(0, ios::beg); + ist.read(®data[0], headerSize); + + //if(!ist) + // throw cms::Exception("ReadHeader","getRegFromFile") + // << "Could not read the registry information from the test\n" + // << "event stream file \n"; - edm::InitMsg msg(®data[0],len); - std::auto_ptr<SendJobHeader> p = decoder.decodeJobHeader(msg); + //edm::InitMsg msg(®data[0],len); + //std::auto_ptr<SendJobHeader> p = decoder.decodeJobHeader(msg); + InitMsgView initView(®data[0]); + std::auto_ptr<SendJobHeader> p = StreamTranslator::deserializeRegistry(initView); return p; } diff --git a/IOPool/Streamer/test/EventMessageTest.cpp b/IOPool/Streamer/test/EventMessageTest.cpp index 223c1a23f4b..3a6ed92b7c6 100644 --- a/IOPool/Streamer/test/EventMessageTest.cpp +++ b/IOPool/Streamer/test/EventMessageTest.cpp @@ -106,7 +106,7 @@ int main() // ------ check for sameness - EventMsgView eview(&buf[0],hltsize,l1bit.size()); + EventMsgView eview(&buf[0]); std::vector<bool> l1_out; uint8 hlt_out[10]; diff --git a/IOPool/TrivialFileCatalog/doc/trivial.dtd b/IOPool/TrivialFileCatalog/doc/trivial.dtd deleted file mode 100644 index cba00946ffd..00000000000 --- a/IOPool/TrivialFileCatalog/doc/trivial.dtd +++ /dev/null @@ -1,11 +0,0 @@ -<!ELEMENT storage-mapping (lfn-to-pfn+, pfn-to-lfn+)> -<!ELEMENT lfn-to-pfn EMPTY> -<!ATTLIST lfn-to-pfn protocol CDATA> -<!ATTLIST lfn-to-pfn destination-match CDATA> -<!ATTLIST lfn-to-pfn path-match CDATA> -<!ATTLIST lfn-to-pfn result CDATA> -<!ELEMENT pfn-to-lfn EMPTY> -<!ATTLIST pfn-to-lfn protocol CDATA> -<!ATTLIST pfn-to-lfn destination-match CDATA> -<!ATTLIST pfn-to-lfn path-match CDATA> -<!ATTLIST pfn-to-lfn result CDATA> diff --git a/IORawData/CaloPatterns/BuildFile b/IORawData/CaloPatterns/BuildFile deleted file mode 100644 index 5e42e2a9c7d..00000000000 --- a/IORawData/CaloPatterns/BuildFile +++ /dev/null @@ -1,16 +0,0 @@ -<use name=xerces-c> -<use name=FWCore/Framework> -<use name=FWCore/Utilities> -<use name=DataFormats/HcalDetId> -<use name=DataFormats/HcalDigi> -<use name=CondFormats/DataRecord> -<use name=CondFormats/HcalObjects> -<flags SEAL_PLUGIN_NAME="IORawDataCaloPatterns"> -<export> - <use name=xerces-c> - <use name=FWCore/Framework> - <use name=FWCore/Utilities> - <use name=DataFormats/HcalDetId> - <use name=DataFormats/HcalDigi> - <lib name=IORawDataCaloPatterns> -</export> diff --git a/IORawData/CaloPatterns/interface/HcalFiberPattern.h b/IORawData/CaloPatterns/interface/HcalFiberPattern.h deleted file mode 100644 index de6f99c9957..00000000000 --- a/IORawData/CaloPatterns/interface/HcalFiberPattern.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef IORAWDATA_CALOPATTERNS_HCALFIBERPATTERN_H -#define IORAWDATA_CALOPATTERNS_HCALFIBERPATTERN_H 1 - -#include "DataFormats/HcalDigi/interface/HcalQIESample.h" -#include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" -#include <string> -#include <map> -#include <vector> - -/** \class HcalFiberPattern - * - * $Date: $ - * $Revision: $ - * \author J. Mans - Minnesota - */ -class HcalFiberPattern { -public: - HcalFiberPattern(const std::map<std::string, std::string>& params, const std::vector<uint32_t>& data); - std::vector<HcalQIESample> getSamples(int bunch, int npresamples, int nsamples, int fiberChan); - HcalElectronicsId getId(int fiberChan); - int crate() const { return crate_; } - int slot() const { return slot_; } - int fiber() const { return fiber_; } -private: - HcalQIESample unpack(int bc, int fc); - int crate_, slot_, tb_, fiber_, spigot_, dcc_; - std::vector<uint32_t> pattern_; -}; - -#endif diff --git a/IORawData/CaloPatterns/interface/HcalPatternXMLParser.h b/IORawData/CaloPatterns/interface/HcalPatternXMLParser.h deleted file mode 100644 index 4d91cf5c408..00000000000 --- a/IORawData/CaloPatterns/interface/HcalPatternXMLParser.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef HcalPatternXMLParser_hh_included -#define HcalPatternXMLParser_hh_included 1 - -#include <string> -#include <vector> -#include <map> -#include <memory> -#include <stdint.h> - -class HcalPatternXMLParserImpl; - -class HcalPatternXMLParser { -public: - HcalPatternXMLParser(); - ~HcalPatternXMLParser(); - void parse(const std::string& xmlDocument, std::map<std::string,std::string>& parameters, std::vector<std::string>& items, std::string& encoding); - void parse(const std::string& xmlDocument, std::map<std::string,std::string>& parameters, std::vector<uint32_t>& items); -private: - HcalPatternXMLParserImpl* m_parser; -}; - - -#endif // HcalPatternXMLParser_hh_included diff --git a/IORawData/CaloPatterns/src/HcalFiberPattern.cc b/IORawData/CaloPatterns/src/HcalFiberPattern.cc deleted file mode 100644 index 0120fd1ad4c..00000000000 --- a/IORawData/CaloPatterns/src/HcalFiberPattern.cc +++ /dev/null @@ -1,64 +0,0 @@ -#include "IORawData/CaloPatterns/interface/HcalFiberPattern.h" -#include "FWCore/Utilities/interface/Exception.h" - -static inline int setIf(const std::string& name,const std::map<std::string, std::string>& params) { - std::map<std::string, std::string>::const_iterator j=params.find(name); - if (j==params.end()) throw cms::Exception("InvalidFormat") << "Missing parameter '" << name << "'"; - else return strtol(j->second.c_str(),0,0); -} - -HcalFiberPattern::HcalFiberPattern(const std::map<std::string, std::string>& params, const std::vector<uint32_t>& data) : pattern_(data) { - crate_=setIf("CRATE",params); - slot_=setIf("SLOT",params); - fiber_=setIf("FIBER",params); - dcc_=setIf("DCC",params); - spigot_=setIf("SPIGOT",params); - tb_=setIf("TOPBOTTOM",params); -} - -HcalQIESample HcalFiberPattern::unpack(int bc, int fc) { - uint32_t w1=pattern_[bc*2]; // lsw - uint32_t w2=pattern_[bc*2+1]; // msw - - int adc=0, capid=0; - bool dv=(w1&0x10000)!=0; - bool er=(w1&0x20000)!=0; - - switch (fc) { - case (0): - adc=(w2&0xFE00)>>9; - capid=(w1&0x0180)>>7; - break; - case (1): - adc=(w2&0xFE)>>1; - capid=(w1&0x0060)>>5; - break; - case (2): - adc=(w1&0xFE00)>>9; - capid=(w1&0x0018)>>3; - break; - default: - break; - } - return HcalQIESample(adc,capid,fiber_,fc,dv,er); -} - -std::vector<HcalQIESample> HcalFiberPattern::getSamples(int bunch, int npresamples, int nsamples, int fiberChan) { - if (bunch<npresamples) throw cms::Exception("InvalidArgument") << "Asked for " << npresamples << " presamples with event at bunch " << bunch; - if (nsamples-npresamples+bunch>=(int)(pattern_.size()/2)) throw cms::Exception("InvalidArgument") << "Asked for " << nsamples << " with event at " << bunch << " and " << npresamples << " presamples, but only " << pattern_.size()/2 << " bunches are available"; - - std::vector<HcalQIESample> retval; - retval.reserve(nsamples); - - for (int i=0; i<nsamples; i++) { - int bc=bunch+i-npresamples; - retval.push_back(unpack(bc,fiberChan)); - } - return retval; -} - -HcalElectronicsId HcalFiberPattern::getId(int fiberChan) { - HcalElectronicsId retval(fiberChan,fiber_,spigot_,dcc_); - retval.setHTR(crate_,slot_,tb_); - return retval; -} diff --git a/IORawData/CaloPatterns/src/HcalPatternSource.cc b/IORawData/CaloPatterns/src/HcalPatternSource.cc deleted file mode 100644 index 6198a4c0d9b..00000000000 --- a/IORawData/CaloPatterns/src/HcalPatternSource.cc +++ /dev/null @@ -1,137 +0,0 @@ -#include "IORawData/CaloPatterns/src/HcalPatternSource.h" -#include "IORawData/CaloPatterns/interface/HcalPatternXMLParser.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "CondFormats/DataRecord/interface/HcalElectronicsMapRcd.h" -#include "CondFormats/HcalObjects/interface/HcalElectronicsMap.h" -#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" -#include <wordexp.h> - -HcalPatternSource::HcalPatternSource(const edm::ParameterSet & pset, edm::InputSourceDescription const& desc) : - edm::ConfigurableInputSource(pset,desc), - bunches_(pset.getUntrackedParameter<std::vector<int> >("Bunches",std::vector<int>())), - presamples_(pset.getUntrackedParameter<int>("Presamples",4)), - samples_(pset.getUntrackedParameter<int>("Samples",10)) -{ - loadPatterns(pset.getUntrackedParameter<std::string>("Patterns")); - produces<HBHEDigiCollection>(); - produces<HODigiCollection>(); - produces<HFDigiCollection>(); -} - -void HcalPatternSource::beginJob(edm::EventSetup const& es) { - edm::ESHandle<HcalElectronicsMap> item; - es.get<HcalElectronicsMapRcd>().get(item); - elecmap_=item.product(); -} - -bool HcalPatternSource::produce(edm::Event& e) { - if (e.id().event()>bunches_.size()) return false; - - std::auto_ptr<HBHEDigiCollection> hbhe(new HBHEDigiCollection()); - std::auto_ptr<HFDigiCollection> hf(new HFDigiCollection()); - std::auto_ptr<HODigiCollection> ho(new HODigiCollection()); - - int bc=bunches_[e.id().event()-1]; - for (std::vector<HcalFiberPattern>::iterator i=patterns_.begin(); i!=patterns_.end(); i++) { - std::vector<HcalQIESample> samples; - for (int fc=0; fc<3; fc++) { - samples=i->getSamples(bc,presamples_, samples_, fc); - HcalElectronicsId eid=i->getId(fc); - HcalDetId did(elecmap_->lookup(eid)); - - if (did.null()) { - edm::LogWarning("HCAL") << "No electronics map match for id " << eid; - continue; - } - - switch (did.subdet()) { - case (HcalBarrel): - case (HcalEndcap): - hbhe->push_back(HBHEDataFrame(did)); - hbhe->back().setSize(samples_); - hbhe->back().setPresamples(presamples_); - for (int i=0; i<samples_; i++) hbhe->back().setSample(i,samples[i]); - hbhe->back().setReadoutIds(eid); - break; - case (HcalForward): - hf->push_back(HFDataFrame(did)); - hf->back().setSize(samples_); - hf->back().setPresamples(presamples_); - for (int i=0; i<samples_; i++) hf->back().setSample(i,samples[i]); - hf->back().setReadoutIds(eid); - break; - case (HcalOuter) : - ho->push_back(HODataFrame(did)); - ho->back().setSize(samples_); - ho->back().setPresamples(presamples_); - for (int i=0; i<samples_; i++) ho->back().setSample(i,samples[i]); - ho->back().setReadoutIds(eid); - break; - default: continue; - } - } - } - hbhe->sort(); - ho->sort(); - hf->sort(); - - e.put(hbhe); - e.put(ho); - e.put(hf); - return true; -} - -void HcalPatternSource::loadPatterns(const std::string& patspec) { - wordexp_t p; - char** files; - - wordexp(patspec.c_str(),&p, WRDE_NOCMD); // do not run shell commands! - files=p.we_wordv; - for (unsigned int i=0; i<p.we_wordc; i++) { - LogDebug ("HCAL") << "Reading pattern file '" << files[i] << "'"; - loadPatternFile(files[i]); - LogDebug ("HCAL") << "Fibers so far " << patterns_.size(); - } - wordfree(&p); -} - -void HcalPatternSource::loadPatternFile(const std::string& filename) { - HcalPatternXMLParser parser; - std::string buffer, element; - std::map<std::string,std::string> params; - std::vector<uint32_t> data; - - FILE* f=fopen(filename.c_str(), "r"); - if (f==0) return; - else { - char block[4096]; - while (!feof(f)) { - int read=fread(block,1,4096,f); - buffer.append(block,block+read); - } - fclose(f); - } - if (buffer.find("<?xml")!=0) { - throw cms::Exception("InvalidFormat") << "Not a valid XML file: " << filename; - } - std::string::size_type i=0,j; - while (buffer.find("<CFGBrick>",i)!=std::string::npos) { - i=buffer.find("<CFGBrick>",i); - j=buffer.find("</CFGBrick>",i); - element="<?xml version='1.0'?>\n"; - element.append(buffer,i,j-i); - element.append("</CFGBrick>"); - // LogDebug("HCAL") << element; - params.clear(); - data.clear(); - parser.parse(element,params,data); - patterns_.push_back(HcalFiberPattern(params,data)); - i=j+5; - } - - -} diff --git a/IORawData/CaloPatterns/src/HcalPatternSource.h b/IORawData/CaloPatterns/src/HcalPatternSource.h deleted file mode 100644 index e23e2509ed4..00000000000 --- a/IORawData/CaloPatterns/src/HcalPatternSource.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef IORAWDATA_CALOPATTERNS_HCALPATTERNSOURCE_H -#define IORAWDATA_CALOPATTERNS_HCALPATTERNSOURCE_H 1 - -#include <vector> -#include "IORawData/CaloPatterns/interface/HcalFiberPattern.h" -#include "FWCore/Framework/interface/ConfigurableInputSource.h" - -class HcalElectronicsMap; - -/** \class HcalPatternSource - * - * $Date: $ - * $Revision: $ - * \author J. Mans - Minnesota - */ -class HcalPatternSource : public edm::ConfigurableInputSource { -public: - HcalPatternSource(const edm::ParameterSet & pset, edm::InputSourceDescription const& desc); -protected: - virtual void beginJob(edm::EventSetup const& es); - virtual bool produce(edm::Event & e); -private: - void loadPatterns(const std::string& patspec); - void loadPatternFile(const std::string& filename); - std::vector<int> bunches_; - std::vector<HcalFiberPattern> patterns_; - const HcalElectronicsMap* elecmap_; - int presamples_, samples_; -}; - -#endif diff --git a/IORawData/CaloPatterns/src/HcalPatternXMLParser.cc b/IORawData/CaloPatterns/src/HcalPatternXMLParser.cc deleted file mode 100644 index 5f17038d8de..00000000000 --- a/IORawData/CaloPatterns/src/HcalPatternXMLParser.cc +++ /dev/null @@ -1,179 +0,0 @@ -#include "xercesc/sax2/SAX2XMLReader.hpp" -#include <xercesc/sax2/XMLReaderFactory.hpp> -#include "xercesc/sax2/DefaultHandler.hpp" -#include "xercesc/sax2/Attributes.hpp" -#include "FWCore/Utilities/interface/Exception.h" -#include <xercesc/framework/MemBufInputSource.hpp> -XERCES_CPP_NAMESPACE_USE -#include "IORawData/CaloPatterns/interface/HcalPatternXMLParser.h" - -class HcalPatternXMLParserImpl { -public: - std::auto_ptr<SAX2XMLReader> parser; -}; - -HcalPatternXMLParser::HcalPatternXMLParser() { - m_parser=0; -} -HcalPatternXMLParser::~HcalPatternXMLParser() { - if (m_parser!=0) delete m_parser; -} - - /* - Example - <pre> - <CFGBrick> - <Parameter name='IETA' type='int'>14</Parameter> - <Parameter name='IPHI' type='int'>2</Parameter> - <Parameter name='DEPTH' type='int'>1</Parameter> - <Parameter name='CRATE' type='int'>1</Parameter> - <Parameter name='SLOT' type='int'>8</Parameter> - <Parameter name='TOPBOTTOM' type='int'>0</Parameter> - <Parameter name='CHANNEL' type='int'>6</Parameter> - <Parameter name='LUT_TYPE' type='int'>1</Parameter> - <Parameter name='CREATIONTAG' type='string'>Identity</Parameter> - <Parameter name='CREATIONSTAMP' type='string'>2005-03-08 11:44:34</Parameter> - <Parameter name='FORMATREVISION' type='string'>1</Parameter> - <Parameter name='TARGETFIRMWARE' type='string'>0</Parameter> - <Parameter name='GENERALIZEDINDEX' type='int'>140211</Parameter> - <Data elements='128' encoding='hex'> .. </Data> - </CFGBrick> - </pre> - */ - - class ConfigurationDBHandler : public DefaultHandler { - enum { md_Idle, md_Parameter, md_Data } m_mode; - public: - ConfigurationDBHandler(std::map<std::string,std::string>& parameters, std::vector<std::string>& items, std::string& encoding) : m_dataEncoding(encoding), m_items(items), m_parameters(parameters) { - m_mode=md_Idle; - xc_Parameter=XMLString::transcode("Parameter"); - xc_Data=XMLString::transcode("Data"); - xc_name=XMLString::transcode("name"); - xc_type=XMLString::transcode("type"); - xc_elements=XMLString::transcode("elements"); - xc_encoding=XMLString::transcode("encoding"); - m_items.clear(); - m_parameters.clear(); - } - virtual ~ConfigurationDBHandler() { - XMLString::release(&xc_Parameter); - XMLString::release(&xc_Data); - XMLString::release(&xc_name); - XMLString::release(&xc_type); - XMLString::release(&xc_elements); - XMLString::release(&xc_encoding); - } - virtual void startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs); - virtual void endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname); - virtual void characters(const XMLCh* const chars, const unsigned int length); - virtual void ignorableWhitespace(const XMLCh* chars, const unsigned int length); - private: - inline bool cvt2String(const XMLCh* val, std::string& ou) { - if (val==0) return false; - char* tool=XMLString::transcode(val); - ou=tool; - XMLString::release(&tool); - return true; - } - XMLCh *xc_Parameter, *xc_Data, *xc_name, *xc_type, *xc_elements, *xc_encoding; - std::string m_pname, m_ptype, m_text; - int n_elements; - std::string& m_dataEncoding; - std::vector<std::string>& m_items; - std::map<std::string,std::string>& m_parameters; - char m_workc[512]; - XMLCh m_workx[256]; - }; - - void ConfigurationDBHandler::startElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname, const Attributes &attrs) { - if (m_mode!=md_Idle) return; - if (!XMLString::compareIString(localname,xc_Parameter)) { - // parameter name - if (!cvt2String(attrs.getValue(xc_name),m_pname)) return; - // parameter type - if (!cvt2String(attrs.getValue(xc_type),m_ptype)) return; - // switch mode - m_mode=md_Parameter; - m_text=""; - } else if (!XMLString::compareIString(localname,xc_Data)) { - // elements - std::string strElements; - if (!cvt2String(attrs.getValue(xc_elements),strElements)) return; - n_elements=atoi(strElements.c_str()); - // encoding - m_dataEncoding=""; - cvt2String(attrs.getValue(xc_encoding),m_dataEncoding); - // switch mode - m_mode=md_Data; - m_text=""; - } - - } - void ConfigurationDBHandler::endElement (const XMLCh *const uri, const XMLCh *const localname, const XMLCh *const qname) { - if (m_mode==md_Idle) return; - - if (m_mode==md_Parameter) { - m_parameters[m_pname]=m_text; // ignore the type for now... - } else if (m_mode==md_Data) { - // parse the text - std::string entry; - for (std::string::iterator q=m_text.begin(); q!=m_text.end(); q++) { - if (isspace(*q)) { - if (entry.empty()) continue; - m_items.push_back(entry); - entry=""; - } else entry+=*q; - } - } - - m_mode=md_Idle; - } - void ConfigurationDBHandler::ignorableWhitespace(const XMLCh* chars, const unsigned int length) { - if (m_mode==md_Idle) return; - m_text+=' '; - } - void ConfigurationDBHandler::characters(const XMLCh* chars, const unsigned int length) { - if (m_mode==md_Idle) return; - unsigned int offset=0; - while (offset<length) { - unsigned int i=0; - for (i=0; i<length-offset && i<255; i++) m_workx[i]=chars[i+offset]; - m_workx[i]=0; // terminate string - XMLString::transcode(m_workx,m_workc,511); - m_text+=m_workc; - offset+=i; - } - } - -void HcalPatternXMLParser::parse(const std::string& xmlDocument, std::map<std::string,std::string>& parameters, std::vector<std::string>& items, std::string& encoding) { - // uses XERCES SAX2 parser - ConfigurationDBHandler handler(parameters,items,encoding); - - try { - if (m_parser==0) { - m_parser=new HcalPatternXMLParserImpl(); - m_parser->parser=std::auto_ptr<xercesc::SAX2XMLReader>(xercesc::XMLReaderFactory::createXMLReader()); - } - - MemBufInputSource src((const unsigned char*)xmlDocument.c_str(), xmlDocument.length(),"hcal::PatternReader"); - m_parser->parser->setContentHandler(&handler); - m_parser->parser->parse(src); - } catch (std::exception& ex) { - throw cms::Exception("ParseError") << ex.what(); - } - } - -void HcalPatternXMLParser::parse(const std::string& xmlDocument, std::map<std::string,std::string>& parameters, std::vector<uint32_t>& data) { - std::vector<std::string> items; - std::string encoding; - - this->parse(xmlDocument,parameters,items,encoding); - int formatting=0; - if (encoding=="dec") formatting=10; - if (encoding=="hex") formatting=16; - - data.clear(); - for (std::vector<std::string>::const_iterator i=items.begin(); i!=items.end(); i++) - data.push_back(strtol(i->c_str(),0,formatting)); - -} diff --git a/IORawData/CaloPatterns/src/SealModule.cc b/IORawData/CaloPatterns/src/SealModule.cc deleted file mode 100644 index 8ceee2099c7..00000000000 --- a/IORawData/CaloPatterns/src/SealModule.cc +++ /dev/null @@ -1,7 +0,0 @@ -#include "IORawData/CaloPatterns/src/HcalPatternSource.h" - -#include "FWCore/Framework/interface/InputSourceMacros.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_INPUT_SOURCE(HcalPatternSource); diff --git a/IORawData/DaqSource/ChangeLog b/IORawData/DaqSource/ChangeLog index bc2dd09c000..4a1e7fa9294 100644 --- a/IORawData/DaqSource/ChangeLog +++ b/IORawData/DaqSource/ChangeLog @@ -1,6 +1,6 @@ 2006-11-11 Philipp Schieferdecker <philipp.schieferdecker@cern.ch> - * tag V00-03-02 + * tag V00-03-01 * src/DaqFakeReader.cc (fillFEDs): include <cmath> and change log -> std::log and exp -> std::exp for slc4/gcc3.4.5 compliance. diff --git a/IORawData/SiPixelInputSources/doc/html/index.html b/IORawData/SiPixelInputSources/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/IORawData/SiPixelInputSources/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/IORawData/SiPixelInputSources/doc/html/overview.html b/IORawData/SiPixelInputSources/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/IORawData/SiPixelInputSources/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETAnalysis/Configuration/doc/html/index.html b/JetMETAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETAnalysis/Configuration/doc/html/overview.html b/JetMETAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETAnalysis/JetSkims/doc/html/index.html b/JetMETAnalysis/JetSkims/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETAnalysis/JetSkims/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETAnalysis/JetSkims/doc/html/overview.html b/JetMETAnalysis/JetSkims/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETAnalysis/JetSkims/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETAnalysis/METSkims/doc/html/index.html b/JetMETAnalysis/METSkims/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETAnalysis/METSkims/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETAnalysis/METSkims/doc/html/overview.html b/JetMETAnalysis/METSkims/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETAnalysis/METSkims/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETCorrections/Algorithms/doc/html/index.html b/JetMETCorrections/Algorithms/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETCorrections/Algorithms/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETCorrections/Algorithms/doc/html/overview.html b/JetMETCorrections/Algorithms/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETCorrections/Algorithms/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETCorrections/Configuration/doc/html/index.html b/JetMETCorrections/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETCorrections/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETCorrections/Configuration/doc/html/overview.html b/JetMETCorrections/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETCorrections/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETCorrections/JetVertexAssociation/BuildFile b/JetMETCorrections/JetVertexAssociation/BuildFile new file mode 100644 index 00000000000..0779e706644 --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/BuildFile @@ -0,0 +1,32 @@ +<use name=clhep> +<use name=DataFormats/Common> +<use name=FWCore/Framework> +<use name=Foundation/PluginManager> +<use name=FWCore/ParameterSet> +<use name=DataFormats/JetReco> +<use name=DataFormats/TrackReco> +<use name=DataFormats/VertexReco> +<use name=DataFormats/TrajectoryState> +<use name=TrackingTools/TransientTrack> +<use name=TrackingTools/TrajectoryState> +<use name=TrackingTools/TrajectoryParametrization> +<use name=Geometry/CommonDetAlgo> +<use name=rootrflx> +<flags SEAL_PLUGIN_NAME="JetMETCorrectionsJetVertexAssociation"> +<export> + <lib name=JetMETCorrectionsJetVertexAssociation> + <use name=FWCore/Framework> + <use name=Foundation/PluginManager> + <use name=FWCore/ParameterSet> + <use name=DataFormats/JetReco> + <use name=DataFormats/TrackReco> + <use name=DataFormats/VertexReco> + <use name=DataFormats/Common> + <use name=DataFormats/TrajectoryState> + <use name=TrackingTools/TransientTrack> + <use name=TrackingTools/TrajectoryState> + <use name=TrackingTools/TrajectoryParametrization> + <use name=Geometry/CommonDetAlgo> + <use name=rootrflx> + <use name=clhep> +</export> diff --git a/JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h b/JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h new file mode 100644 index 00000000000..ca32183d7b4 --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h @@ -0,0 +1,45 @@ +#ifndef JetVertexAssociation_h +#define JetVertexAssociation_h + +#include "FWCore/Framework/interface/EDProducer.h" +#include "DataFormats/Common/interface/EDProduct.h" + +#include "JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h" + +#include <memory> +#include <iostream> +#include <iomanip> +#include <string> +#include <cmath> +#include <vector> + + +namespace edm { + class ParameterSet; + class Event; + class EventSetup; +} + +namespace cms{ + + class JetVertexAssociation : public edm::EDProducer{ + + public: + + JetVertexAssociation (const edm::ParameterSet& ps); + + ~JetVertexAssociation () {} + + void produce(edm::Event& e, const edm::EventSetup& c); + + private: + typedef std::vector<double> ResultCollection1; + typedef std::vector<bool> ResultCollection2; + + JetVertexMain m_algo; + int jet_algo; + }; +} + + +#endif diff --git a/JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h b/JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h new file mode 100644 index 00000000000..a43fd47aeff --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h @@ -0,0 +1,42 @@ +#ifndef JetVertexMain_H +#define JetVertexMain_H + +#include "DataFormats/JetReco/interface/CaloJet.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "MagneticField/Engine/interface/MagneticField.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/Framework/interface/Handle.h" +#include <cmath> + +using namespace std; +using namespace edm; +using namespace reco; + +class CaloJet; + +class JetVertexMain { + +public: + + JetVertexMain(const edm::ParameterSet & parameters ); + + ~JetVertexMain(){}; + + + pair <double, bool> Main (const reco::CaloJet& jet, edm::Handle<TrackCollection> tracks, double SIGNAL_V_Z); + + private: + double DeltaR(double eta1, double eta2, double phi1, double phi2); + double Track_Pt(double px, double py); + +//algorithm parameters + double deltaZ; + double threshold; + double cone_size; + int Algo; + + +}; + +#endif + diff --git a/JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc b/JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc new file mode 100644 index 00000000000..81459d3229d --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc @@ -0,0 +1,121 @@ +// -*- C++ -*- +// +// Package: JetVertexAssociation +// Class: JetVertexAssociation +// +/**\class JetVertexAssociation JetVertexAssociation.cc JetMETCorrections/JetVertexAssociation/src/JetVertexAssociation.cc + + Description: <one line class summary> + + Implementation: + <Notes on implementation> +*/ +// +// Original Author: Natalia Ilina +// Created: Tue Oct 31 10:52:41 CET 2006 +// $Id$ +// +// + +/** + * 'JetVertexAssociation' represents the association of the jet with the signal vertex + * + * Parameters of the method: JV_deltaZ, JV_alpha_threshold(alpha_0 or beta_0), + * JV_cone_size, JV_type_Algo ("1" - alpha, "2" - beta) - (the details are in CMS NOTE 2006/091), + * + * Output: <pair<double, bool> >. + * The first - variable alpha(beta) for the jet, + * the second - "true" for jet from signal vertex, "false" for jet from pile-up. + **/ + +#include <memory> +#include <iostream> +#include <iomanip> +#include <string> +#include <cmath> + + +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/EDProducer.h" +#include "DataFormats/Common/interface/EDProduct.h" +#include "FWCore/Framework/interface/Event.h" + +#include "PluginManager/ModuleDef.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "FWCore/Framework/interface/Handle.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "DataFormats/JetReco/interface/CaloJetCollection.h" +#include "DataFormats/JetReco/interface/CaloJet.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/VertexReco/interface/Vertex.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h" +#include "JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h" + +using namespace std; +using namespace reco; +namespace cms{ + + JetVertexAssociation::JetVertexAssociation(const edm::ParameterSet& iConfig): m_algo(iConfig) , jet_algo(iConfig.getParameter<int>("JET_ALGO")) { + + produces<ResultCollection1>("Var"); + produces<ResultCollection2>("JetType"); + + + } + + void JetVertexAssociation::produce(edm::Event& iEvent, const edm::EventSetup& iSetup){ + + edm::Handle<CaloJetCollection> jets; + if (jet_algo == 1) iEvent.getByLabel("iterativeCone5CaloJets", jets); + if (jet_algo == 2) iEvent.getByLabel("ktCaloJets", jets); + if (jet_algo == 3) iEvent.getByLabel("midPointCone5CaloJets", jets); + + edm::Handle<TrackCollection> tracks; + iEvent.getByLabel("ctfWithMaterialTracks", tracks); + + edm::Handle<VertexCollection> vertexes; + iEvent.getByLabel("offlinePrimaryVerticesFromCTFTracks", vertexes); + + double SIGNAL_V_Z = 0.; + double ptmax = -100.; + + VertexCollection::const_iterator vert = vertexes->begin (); + if(vertexes->size() > 0 ) { + for (; vert != vertexes->end (); vert++) { + + SIGNAL_V_Z = vert->z(); + double pt = 0.; + reco::track_iterator tr = vert->tracks_begin(); + for (; tr != vert->tracks_end(); tr++) pt += (*tr)->pt(); + if( pt >= ptmax ){ + + ptmax = pt; + SIGNAL_V_Z = vert->z(); + + } + + } + } + + pair<double, bool> result; + std::auto_ptr<ResultCollection1> result1 (new ResultCollection1) ; + std::auto_ptr<ResultCollection2> result2 (new ResultCollection2) ; + + CaloJetCollection::const_iterator jet = jets->begin (); + + if(jets->size() > 0 ) { + for (; jet != jets->end (); jet++) { + result = m_algo.Main(*jet, tracks, SIGNAL_V_Z); + result1->push_back(result.first); + result2->push_back(result.second); + + } + } + + iEvent.put(result1, "Var"); + iEvent.put(result2, "JetType"); + + } +} diff --git a/JetMETCorrections/JetVertexAssociation/src/JetVertexMain.cc b/JetMETCorrections/JetVertexAssociation/src/JetVertexMain.cc new file mode 100644 index 00000000000..b721439e846 --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/src/JetVertexMain.cc @@ -0,0 +1,93 @@ + +#include "JetMETCorrections/JetVertexAssociation/interface/JetVertexMain.h" +#include "DataFormats/JetReco/interface/CaloJet.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include <cmath> +using namespace reco; +using namespace edm; + +JetVertexMain::JetVertexMain(const ParameterSet & parameters) { + + deltaZ = parameters.getParameter<double>("JV_deltaZ"); + threshold = parameters.getParameter<double>("JV_alpha_threshold"); + cone_size = parameters.getParameter<double>("JV_cone_size"); + Algo = parameters.getParameter<int>("JV_type_Algo"); + +} + + +pair<double,bool> JetVertexMain::Main(const reco::CaloJet& jet, edm::Handle<TrackCollection> tracks, double signal_vert_Z){ + + pair<double, bool> parameter; + + double jet_et = jet.et(); + double jet_phi = jet.phi(); + double jet_eta = jet.eta(); + + // cout<<"JET: "<<jet_et<<endl; + double Pt_jets_X = 0. ; + double Pt_jets_Y = 0. ; + double Pt_jets_X_tot = 0. ; + double Pt_jets_Y_tot = 0. ; + + TrackCollection::const_iterator track = tracks->begin (); + + if (tracks->size() > 0 ) { + for (; track != tracks->end (); track++) { + double Vertex_Z = track->vz(); + double track_eta = track->eta(); + double track_phi = track->phi(); + + if (DeltaR(track_eta,jet_eta, track_phi, jet_phi) < cone_size) { + + Pt_jets_X_tot += track->px(); + Pt_jets_Y_tot += track->py(); + if (fabs(Vertex_Z-signal_vert_Z) < deltaZ) { + + Pt_jets_X += track->px(); + Pt_jets_Y += track->py(); + + } + } + + + } + } + + double Var = -1; + + if (Algo == 1) Var = Track_Pt(Pt_jets_X, Pt_jets_Y)/jet_et; + else if (Algo == 2) { + if (Track_Pt(Pt_jets_X_tot, Pt_jets_Y_tot)!=0) Var = Track_Pt(Pt_jets_X, Pt_jets_Y)/Track_Pt(Pt_jets_X_tot, Pt_jets_Y_tot); + else cout << "[Jets] JetVertexAssociation: Warning! problems for Algo = 2: possible division by zero .." << endl; + } + else { + + Var = Track_Pt(Pt_jets_X, Pt_jets_Y)/jet_et; + cout << "[Jets] JetVertexAssociation: Warning! Algo = " << Algo << " not found; using Algo = 1" << endl; + } + + // cout<<"Var = "<<Var<<endl; + + if (Var >= threshold) parameter = pair<double, bool>(Var, true); + else parameter = pair<double, bool>(Var, false); + + return parameter; + +} + +double JetVertexMain::DeltaR(double eta1, double eta2, double phi1, double phi2){ + + double dphi = fabs(phi1-phi2); + if(dphi > 3.1415) dphi = 6.283 - dphi; + double deta = fabs(eta1-eta2); + return sqrt(dphi*dphi + deta*deta); + +} + +double JetVertexMain::Track_Pt(double px, double py){ + + return sqrt(px*px+py*py); + +} diff --git a/JetMETCorrections/JetVertexAssociation/src/SealModule.cc b/JetMETCorrections/JetVertexAssociation/src/SealModule.cc new file mode 100644 index 00000000000..7068120315d --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/src/SealModule.cc @@ -0,0 +1,6 @@ +#include "PluginManager/ModuleDef.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "JetMETCorrections/JetVertexAssociation/interface/JetVertexAssociation.h" +using cms::JetVertexAssociation; +DEFINE_SEAL_MODULE(); +DEFINE_ANOTHER_FWK_MODULE(JetVertexAssociation); diff --git a/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.cc b/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.cc new file mode 100644 index 00000000000..dd8f56f5363 --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.cc @@ -0,0 +1,103 @@ + +#include <memory> +#include <iostream> +#include <iomanip> +#include <string> +#include <cmath> +#include <vector> + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "DataFormats/Common/interface/Ref.h" +#include "DataFormats/JetReco/interface/Jet.h" +#include "DataFormats/JetReco/interface/CaloJetCollection.h" +#include "DataFormats/JetReco/interface/GenJet.h" +#include "DataFormats/JetReco/interface/GenJetfwd.h" +#include "DataFormats/JetReco/interface/BasicJet.h" +#include "DataFormats/JetReco/interface/BasicJetfwd.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/Handle.h" +#include "FWCore/Framework/interface/EDAnalyzer.h" +#include "FWCore/Framework/interface/MakerMacros.h" + +#include "JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h" + +using namespace edm; +using namespace std; +using namespace reco; + +#include "TFile.h" +#include "TH1.h" + +class TFile; +class TH1D; + + +AnalysisJV::AnalysisJV(const edm::ParameterSet& pset) : + fOutputFileName( pset.getUntrackedParameter<string>("HistOutFile",std::string("jv_analysis.root"))){ + + +} + + +AnalysisJV::~AnalysisJV() +{ + +} + + +void AnalysisJV::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) +{ + + cout <<"----------------------------"<<endl; + using namespace edm; + typedef std::vector<double> ResultCollection1; + typedef std::vector<bool> ResultCollection2; + + Handle<ResultCollection1> JV_alpha; + iEvent.getByLabel("jetvertex","Var",JV_alpha); + + Handle<ResultCollection2> JV_jet_type; + iEvent.getByLabel("jetvertex","JetType",JV_jet_type); + + Handle<CaloJetCollection> CaloIconeJetsHandle; + iEvent.getByLabel( "iterativeCone5CaloJets", CaloIconeJetsHandle); + + if(CaloIconeJetsHandle->size()){ + ResultCollection1::const_iterator it_jv1 = JV_alpha->begin(); + ResultCollection2::const_iterator it_jv2 = JV_jet_type->begin(); + for(CaloJetCollection::const_iterator it=CaloIconeJetsHandle->begin();it!=CaloIconeJetsHandle->end();it++){ + + if(*it_jv2) cout<<"Jet: Et = "<<it->pt()<<" - true jet"<<endl; + else cout<<"Jet: Et = "<<it->pt()<<" - 'fake' jet"<<endl; + + fHistAlpha->Fill(*it_jv1); + it_jv1++; + it_jv2++; + + } + } + +} + + + +void AnalysisJV::beginJob(const edm::EventSetup&){ + + fOutputFile = new TFile( fOutputFileName.c_str(), "RECREATE" ) ; + fHistAlpha = new TH1D( "HistAlpha" , "", 30, 0., 1.5 ) ; + +} + +void AnalysisJV::endJob() { + + fOutputFile->Write() ; + fOutputFile->Close() ; + + return ; +} + +//define this as a plug-in +DEFINE_FWK_MODULE(AnalysisJV); diff --git a/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h b/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h new file mode 100644 index 00000000000..468751b15d3 --- /dev/null +++ b/JetMETCorrections/JetVertexAssociation/test/AnalysisJV.h @@ -0,0 +1,44 @@ +#ifndef AnalysisJV_H +#define AnalysisJV_H + +// system include files +#include <memory> +#include <iostream> +#include <iomanip> +#include <string> +#include <cmath> +#include <vector> +#include "FWCore/Framework/interface/EDAnalyzer.h" + +using namespace edm; +using namespace std; +using namespace reco; + +#include "TFile.h" +#include "TH1.h" + +class TFile; +class TH1D; + +// +// class decleration +// + +class AnalysisJV : public edm::EDAnalyzer { + public: + explicit AnalysisJV(const edm::ParameterSet&); + ~AnalysisJV(); + + + private: + virtual void beginJob(const edm::EventSetup&) ; + virtual void analyze(const edm::Event&, const edm::EventSetup&); + virtual void endJob() ; + std::string fOutputFileName ; + + TFile* fOutputFile ; + TH1D* fHistAlpha ; + + +}; +#endif diff --git a/JetMETCorrections/Modules/doc/html/index.html b/JetMETCorrections/Modules/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETCorrections/Modules/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETCorrections/Modules/doc/html/overview.html b/JetMETCorrections/Modules/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETCorrections/Modules/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETCorrections/Objects/doc/html/index.html b/JetMETCorrections/Objects/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/JetMETCorrections/Objects/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/JetMETCorrections/Objects/doc/html/overview.html b/JetMETCorrections/Objects/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/JetMETCorrections/Objects/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/JetMETCorrections/Type1MET/interface/Type1METAlgo.h b/JetMETCorrections/Type1MET/interface/Type1METAlgo.h index 782da0b4130..d2850350023 100644 --- a/JetMETCorrections/Type1MET/interface/Type1METAlgo.h +++ b/JetMETCorrections/Type1MET/interface/Type1METAlgo.h @@ -31,12 +31,10 @@ class Type1METAlgo virtual ~Type1METAlgo(); virtual void run(const METCollection*, const CaloJetCollection*, - const CaloJetCollection*, double, double, - METCollection &); + const CaloJetCollection*, double, METCollection &); virtual void run(const CaloMETCollection*, const CaloJetCollection*, - const CaloJetCollection*, double, double, - CaloMETCollection &); + const CaloJetCollection*, double, CaloMETCollection &); }; #endif // Type1METAlgo_h diff --git a/JetMETCorrections/Type1MET/src/Type1MET.cc b/JetMETCorrections/Type1MET/src/Type1MET.cc index f98dfb7977d..a693821f04b 100644 --- a/JetMETCorrections/Type1MET/src/Type1MET.cc +++ b/JetMETCorrections/Type1MET/src/Type1MET.cc @@ -13,7 +13,7 @@ // // Original Author: Oct 12 08:23 // Created: Wed Oct 12 12:16:04 CDT 2005 -// $Id: Type1MET.cc,v 1.8 2006/10/24 22:39:30 cavana Exp $ +// $Id: Type1MET.cc,v 1.7 2006/10/20 17:50:49 cavana Exp $ // // @@ -54,7 +54,6 @@ namespace cms std::string inputUncorJetsLabel; std::string inputCorJetsLabel; double jetPTthreshold; - double jetEMfracLimit; }; // PRODUCER CONSTRUCTORS ------------------------------------------ @@ -66,7 +65,6 @@ namespace cms inputUncorJetsLabel = iConfig.getParameter<std::string>("inputUncorJetsLabel"); inputCorJetsLabel = iConfig.getParameter<std::string>("inputCorJetsLabel"); jetPTthreshold = iConfig.getParameter<double>("jetPTthreshold"); - jetEMfracLimit = iConfig.getParameter<double>("jetEMfracLimit"); if( metType == "CaloMET" ) produces<CaloMETCollection>(); else @@ -90,8 +88,7 @@ namespace cms iEvent.getByLabel( inputUncorMetLabel, inputUncorMet ); //Get Inputs std::auto_ptr<CaloMETCollection> output( new CaloMETCollection() ); //Create empty output alg_.run( inputUncorMet.product(), inputUncorJets.product(), - inputCorJets.product(), jetPTthreshold, jetEMfracLimit, - *output ); //Invoke the algorithm + inputCorJets.product(), jetPTthreshold, *output ); //Invoke the algorithm iEvent.put( output ); //Put output into Event } else @@ -100,8 +97,7 @@ namespace cms iEvent.getByLabel( inputUncorMetLabel, inputUncorMet ); //Get Inputs std::auto_ptr<METCollection> output( new METCollection() ); //Create empty output alg_.run( inputUncorMet.product(), inputUncorJets.product(), - inputCorJets.product(), jetPTthreshold, jetEMfracLimit, - *output ); //Invoke the algorithm + inputCorJets.product(), jetPTthreshold, *output ); //Invoke the algorithm iEvent.put( output ); //Put output into Event } } diff --git a/JetMETCorrections/Type1MET/src/Type1METAlgo.cc b/JetMETCorrections/Type1MET/src/Type1METAlgo.cc index 7ba92e9cc10..640d8d217af 100644 --- a/JetMETCorrections/Type1MET/src/Type1METAlgo.cc +++ b/JetMETCorrections/Type1MET/src/Type1METAlgo.cc @@ -35,7 +35,7 @@ Type1METAlgo::~Type1METAlgo() {} void Type1METAlgo::run(const CaloMETCollection *uncorMET, const CaloJetCollection *uncorJet, const CaloJetCollection *corJet, double jetPTthreshold, - double jetEMfracLimit, CaloMETCollection &corMET) + CaloMETCollection &corMET) { //Jet j = uncorJet->front(); std::cout << j.px() << std::endl; double DeltaPx = 0.0; @@ -47,7 +47,7 @@ void Type1METAlgo::run(const CaloMETCollection *uncorMET, // ---------------- which are above the given threshold. This requires that the // ---------------- uncorrected jets be matched with the corrected jets. for( jet = uncorJet->begin(); jet != uncorJet->end(); jet++) - if( jet->pt() > jetPTthreshold && jet->emEnergyFraction() < jetEMfracLimit ) + if( jet->pt() > jetPTthreshold ) for( JET = corJet->begin(); JET != corJet->end(); JET++) if( fabs( jet->eta() - JET->eta() ) < 0.001 && fabs( jet->phi() - JET->phi() ) < 0.001 ) { @@ -91,7 +91,7 @@ void Type1METAlgo::run(const CaloMETCollection *uncorMET, void Type1METAlgo::run(const METCollection *uncorMET, const CaloJetCollection *uncorJet, const CaloJetCollection *corJet, double jetPTthreshold, - double jetEMfracLimit, METCollection &corMET) + METCollection &corMET) { //Jet j = uncorJet->front(); std::cout << j.px() << std::endl; double DeltaPx = 0.0; @@ -103,7 +103,7 @@ void Type1METAlgo::run(const METCollection *uncorMET, // ---------------- which are above the given threshold. This requires that the // ---------------- uncorrected jets be matched with the corrected jets. for( jet = uncorJet->begin(); jet != uncorJet->end(); jet++) - if( jet->pt() > jetPTthreshold && jet->emEnergyFraction() < jetEMfracLimit ) + if( jet->pt() > jetPTthreshold ) for( JET = corJet->begin(); JET != corJet->end(); JET++) if( fabs( jet->eta() - JET->eta() ) < 0.001 && fabs( jet->phi() - JET->phi() ) < 0.001 ) { diff --git a/L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc b/L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc index 7ec733751b3..7e7b10a49ea 100644 --- a/L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc +++ b/L1Trigger/CSCTriggerPrimitives/src/CSCAnodeLCTProcessor.cc @@ -20,8 +20,8 @@ // Porting from ORCA by S. Valuev (Slava.Valuev@cern.ch), // May 2006. // -// $Date: 2006/11/13 10:56:16 $ -// $Revision: 1.10 $ +// $Date: 2006/10/26 12:54:37 $ +// $Revision: 1.9 $ // // Modifications: // @@ -744,7 +744,6 @@ std::vector<CSCALCTDigi> CSCAnodeLCTProcessor::bestTrackSelector( } // Skip ALCTs found too late relative to L1Accept. -#ifndef TB int late_tbins = l1a_window + early_tbins; if (plct->getBX() >= late_tbins) { if (infoV > 1) LogDebug("CSCAnodeLCTProcessor") @@ -753,7 +752,6 @@ std::vector<CSCALCTDigi> CSCAnodeLCTProcessor::bestTrackSelector( << "allowed bx is " << late_tbins; continue; } -#endif // Select two collision and two accelerator ALCTs with the highest // best quality. The search for best ALCTs is done in parallel diff --git a/L1Trigger/Configuration/doc/html/index.html b/L1Trigger/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/Configuration/doc/html/overview.html b/L1Trigger/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1Trigger/GlobalTriggerAnalyzer/doc/html/index.html b/L1Trigger/GlobalTriggerAnalyzer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/GlobalTriggerAnalyzer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/GlobalTriggerAnalyzer/doc/html/overview.html b/L1Trigger/GlobalTriggerAnalyzer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/GlobalTriggerAnalyzer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1Trigger/HardwareValidation/doc/html/index.html b/L1Trigger/HardwareValidation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/HardwareValidation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/HardwareValidation/doc/html/overview.html b/L1Trigger/HardwareValidation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/HardwareValidation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1Trigger/L1GctAnalyzer/BuildFile b/L1Trigger/L1GctAnalyzer/BuildFile deleted file mode 100644 index 2cec2b55630..00000000000 --- a/L1Trigger/L1GctAnalyzer/BuildFile +++ /dev/null @@ -1,21 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=root> - -<use name=DataFormats/L1GlobalCaloTrigger> -<use name=DataFormats/JetReco> -<use name=DataFormats/METReco> -<use name=DataFormats/EgammaReco> -<flags SEAL_PLUGIN_NAME="L1TriggerL1GctAnalyzer"> -<export> - <lib name=L1TriggerL1GctAnalyzer> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=root> - <use name=DataFormats/L1GlobalCaloTrigger> - <use name=DataFormats/JetReco> - <use name=DataFormats/METReco> - <use name=DataFormats/EgammaReco> -</export> diff --git a/L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h b/L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h deleted file mode 100644 index 5e9e9ea3ed4..00000000000 --- a/L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h +++ /dev/null @@ -1,63 +0,0 @@ -// -*- C++ -*- -// -// Package: L1GctAnalyzer -// Class: L1GctAnalyzer -// -/**\class L1GctAnalyzer L1GctAnalyzer.cc L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc - - Description: <one line class summary> - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Gregory Heath -// Created: Wed Aug 9 16:02:54 CEST 2006 -// $Id: L1GctAnalyzer.h,v 1.2 2006/08/15 14:36:59 heath Exp $ -// -// - - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h" -#include "L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h" -#include "L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h" -// -// class declaration -// - -class L1GctAnalyzer : public edm::EDAnalyzer { - public: - explicit L1GctAnalyzer(const edm::ParameterSet&); - ~L1GctAnalyzer(); - - private: - - virtual void beginJob(const edm::EventSetup&) ; - virtual void analyze(const edm::Event&, const edm::EventSetup&); - virtual void endJob() ; - - // ----------member data --------------------------- - std::string m_histFileName; - TFile* m_file; - bool doBasicHist; - bool doJetCheckHist; - bool doMETCheckHist; - L1GctBasicHistogrammer* basicHist; - std::vector<L1GctJetCheckHistogrammer*> jetCheckHist; - std::vector<std::string> jetCheckOptions; - std::vector<L1GctMETCheckHistogrammer*> mETCheckHist; - std::vector<std::string> mETCheckOptions; -}; - diff --git a/L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h b/L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h deleted file mode 100644 index f9bc8b0f262..00000000000 --- a/L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef L1GCTBASICHISTOGRAMMER_H -#define L1GCTBASICHISTOGRAMMER_H - -/** \class L1GctBasicHistogrammer - * - * Books and fills histograms to check GCT - * and calo trigger performance - * - * \author Greg Heath - * - * \date August 2006 - * - */ - -#include "L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h" - -#include "TH1.h" -#include "TH2.h" - -class L1GctBasicHistogrammer : public L1GctHistogrammer { - - public: - - ///constructor - L1GctBasicHistogrammer(TFile* tf=0, const std::string dir="default"); - - ///destructor - virtual ~L1GctBasicHistogrammer(); - - ///event processor - virtual void fillHistograms(const GctOutputData gct); - - private: - - TH1F allJetsRank; - TH1F allJetsEta; - TH1F allJetsPhi; - TH1F allJetsGctEta; - TH1F metValue; - TH1F metAngle; - -}; - -#endif diff --git a/L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h b/L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h deleted file mode 100644 index 2a272077e0d..00000000000 --- a/L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h +++ /dev/null @@ -1,97 +0,0 @@ -#ifndef L1GCTHISTOGRAMMER_H -#define L1GCTHISTOGRAMMER_H - -/** \class L1GctHistogrammer - * - * Books and fills histograms to check GCT - * and calo trigger performance - * - * \author Greg Heath - * - * \date August 2006 - * - */ - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/Handle.h" - -#include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h" -#include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEtSums.h" - -#include <vector> -#include <string> -#include "TFile.h" - -typedef struct { - std::vector<edm::Handle<L1GctEmCandCollection> > electrons; - std::vector<edm::Handle<L1GctJetCandCollection> > jets; - edm::Handle<L1GctEtTotal> etTotal; - edm::Handle<L1GctEtHad> etHad; - edm::Handle<L1GctEtMiss> etMiss; -} GctOutputData; - -class L1GctHistogrammer { - - public: - - ///constructor - L1GctHistogrammer(TFile* tf=0, const std::string dir="default"); - - ///destructor - virtual ~L1GctHistogrammer(); - - ///event processor - virtual void fillHistograms(const GctOutputData gct)=0; - - protected: - - static const int NRANK, NETA, NPHI, NGCTETA; - static const double MINRANK, MINETA, MINPHI, MINGCTETA; - static const double MAXRANK, MAXETA, MAXPHI, MAXGCTETA; - static const int NGCTMETVALUE, NGCTMETPHI; - static const double MINGCTMETVALUE, MINGCTMETPHI; - static const double MAXGCTMETVALUE, MAXGCTMETPHI; - - const char* HistogramDirectory() const { return m_dir.c_str(); } - bool setHistogramDirectory() { return ( resetHistogramDirectory() ? m_file->cd(HistogramDirectory()) : false ); } - bool resetHistogramDirectory() { return ( (m_file==0) ? false : m_file->cd() ); } - - L1GctJetCand topJet(const GctOutputData gct); - unsigned gctEta(L1GctJetCand jet); - - private: - - TFile* m_file; - const std::string m_dir; - -}; - - -template<class prodType> -class L1GctCorrelator : public L1GctHistogrammer { - - public: - - ///constructor - L1GctCorrelator(TFile* tf, const std::string dir="default") : L1GctHistogrammer(tf, dir) {} - - ///destructor - virtual ~L1GctCorrelator() {} - - ///event processor - virtual void fillHistograms(const GctOutputData gct) = 0; - - ///set the product to be correlated with gct output - void setInputProduct(const edm::Handle<prodType> prod) { m_prod = *prod; } - - protected: - - prodType prod() const { return m_prod; } - - private: - - prodType m_prod; - -}; - -#endif diff --git a/L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h b/L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h deleted file mode 100644 index 52b86857b25..00000000000 --- a/L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h +++ /dev/null @@ -1,50 +0,0 @@ -#ifndef L1GCTJETCHECKHISTOGRAMMER_H -#define L1GCTJETCHECKHISTOGRAMMER_H - -/** \class L1GctJetCheckHistogrammer - * - * Books and fills histograms to check GCT - * and calo trigger performance - * - * \author Greg Heath - * - * \date August 2006 - * - */ - -#include "L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h" - -#include "TH1.h" -#include "TH2.h" - -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/GenJet.h" - -class L1GctJetCheckHistogrammer : public L1GctCorrelator<reco::GenJetCollection> { - - public: - - ///constructor - L1GctJetCheckHistogrammer(TFile* tf=0, const std::string dir="default"); - - ///destructor - virtual ~L1GctJetCheckHistogrammer(); - - ///event processor - virtual void fillHistograms(const GctOutputData gct); - - private: - - static const int NJETET, NJETETA, NJETPHI; - static const double MINJETET, MINJETETA, MINJETPHI; - static const double MAXJETET, MAXJETETA, MAXJETPHI; - - TH2F topJetRankVsGenEt; - TH2F topJetEtaVsGen; - TH2F topJetPhiVsGen; - -}; - - - -#endif diff --git a/L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h b/L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h deleted file mode 100644 index 37d50bad6ab..00000000000 --- a/L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef L1GCTMETCHECKHISTOGRAMMER_H -#define L1GCTMETCHECKHISTOGRAMMER_H - -/** \class L1GctMETCheckHistogrammer - * - * Books and fills histograms to check GCT - * and calo trigger performance - * - * \author Greg Heath - * - * \date August 2006 - * - */ - -#include "L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h" - -#include "TH1.h" -#include "TH2.h" - -#include "DataFormats/METReco/interface/METCollection.h" - -class L1GctMETCheckHistogrammer : public L1GctCorrelator<reco::METCollection> { - - public: - - ///constructor - L1GctMETCheckHistogrammer(TFile* tf=0, const std::string dir="default"); - - ///destructor - virtual ~L1GctMETCheckHistogrammer(); - - ///event processor - virtual void fillHistograms(const GctOutputData gct); - - private: - - static const int NGENMETVALUE, NGENMETPHI; - static const double MINGENMETVALUE, MINGENMETPHI; - static const double MAXGENMETVALUE, MAXGENMETPHI; - - TH2F missingEtValueGCTVsGen; - TH2F missingEtPhiGCTVsGen; - TH2F missingEtRatioVsGCTJetEta; - -}; - -#endif diff --git a/L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc b/L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc deleted file mode 100644 index d371c6da3dd..00000000000 --- a/L1Trigger/L1GctAnalyzer/src/L1GctAnalyzer.cc +++ /dev/null @@ -1,208 +0,0 @@ - -#include <iostream> - -#include "DataFormats/L1GlobalCaloTrigger/interface/L1GctCollections.h" -#include "DataFormats/L1GlobalCaloTrigger/interface/L1GctEtSums.h" - -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/GenJet.h" - -#include "DataFormats/METReco/interface/CaloMETCollection.h" -#include "DataFormats/METReco/interface/METCollection.h" - -#include "DataFormats/EgammaReco/interface/SuperCluster.h" - -#include "L1Trigger/L1GctAnalyzer/interface/L1GctAnalyzer.h" - -// -// constants, enums and typedefs -// - -// -// static data member definitions -// - -// -// constructors and destructor -// -L1GctAnalyzer::L1GctAnalyzer(const edm::ParameterSet& iConfig) : - m_histFileName(iConfig.getUntrackedParameter<string>( "histogramFileName", "testHisto.root" )), - doBasicHist(false), - doJetCheckHist(false), - doMETCheckHist(false) - { - std::cout << "In L1GctAnalyzer ctor" << std::endl; - // Read the options from the configuration file into local strings - // These are then used in beginJob() to setup the histogramming - - // Get the list of histogram types - vector<string> histogramModules = iConfig.getUntrackedParameter< vector<string> >( "histogramModules" ); - for (vector<string>::const_iterator module=histogramModules.begin(); module != histogramModules.end(); ++module) { - if (*module == "basic") { - doBasicHist = true; - } else { - - // allow different types of histogrammer modules, each with its list of configuration parameters - vector<string> histogramOptions = iConfig.getUntrackedParameter< vector<string> >(*module); - if (*module == "jetCheck") { - doJetCheckHist = true; - jetCheckOptions = histogramOptions; - } else if (*module == "mETCheck") { - doMETCheckHist = true; - mETCheckOptions = histogramOptions; - } else { - throw cms::Exception("L1GctAnalyzer setup error") << " invalid histogramModule argument, " << *module - << " to L1GctAnalyzer in configuration file " << std::endl; - } - } - - } -} - -L1GctAnalyzer::~L1GctAnalyzer() -{ - - // Nothing to do, all tidying up done in endJob() - -} - - -// -// member functions -// - -// ------------ method called to for each event ------------ -void -L1GctAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - - // get some GCT digis - GctOutputData gctdata; - - gctdata.electrons.resize(2); - gctdata.jets.resize(3); - - iEvent.getByLabel("gct","isoEm", gctdata.electrons.at(0)); - iEvent.getByLabel("gct","nonIsoEm",gctdata.electrons.at(1)); - iEvent.getByLabel("gct","cenJets", gctdata.jets.at(0)); - iEvent.getByLabel("gct","forJets", gctdata.jets.at(1)); - iEvent.getByLabel("gct","tauJets", gctdata.jets.at(2)); - iEvent.getByLabel("gct",gctdata.etTotal); - iEvent.getByLabel("gct",gctdata.etHad); - iEvent.getByLabel("gct",gctdata.etMiss); - - if (doBasicHist) { - basicHist->fillHistograms(gctdata); - } - - // Get some reconstructed quantities and compare results - - if (doJetCheckHist) { - Handle<GenJetCollection> genJets; - for (unsigned i=0; i<jetCheckHist.size(); ++i) { - string label=jetCheckOptions.at(i) + "GenJets"; - iEvent.getByLabel(label,genJets); - jetCheckHist.at(i)->setInputProduct(genJets); - jetCheckHist.at(i)->fillHistograms(gctdata); - } - } - - if (doMETCheckHist) { - Handle<METCollection> genMET; - for (unsigned i=0; i<mETCheckHist.size(); ++i) { - string label=mETCheckOptions.at(i); - iEvent.getByLabel(label,genMET); - mETCheckHist.at(i)->setInputProduct(genMET); - mETCheckHist.at(i)->fillHistograms(gctdata); - } - } - - Handle<SuperClusterCollection> SuperClusters; - iEvent.getByLabel("correctedHybridSuperClusters","",SuperClusters); - std::cout << "Size of SuperClusters is " << SuperClusters->size() << std::endl; - if (SuperClusters->size() != 0) { - int i=0; - for (SuperClusterCollection::const_iterator sc=SuperClusters->begin(); sc != SuperClusters->end(); ++sc) { - std::cout << "SuperCluster " << i << " energy " << sc->energy() << " eta " << sc->eta() << " phi " << sc->phi() << std::endl; - ++i; - } - } - - iEvent.getByLabel("correctedIslandBarrelSuperClusters","",SuperClusters); - std::cout << "Size of SuperClusters is " << SuperClusters->size() << std::endl; - if (SuperClusters->size() != 0) { - int i=0; - for (SuperClusterCollection::const_iterator sc=SuperClusters->begin(); sc != SuperClusters->end(); ++sc) { - std::cout << "SuperCluster " << i << " energy " << sc->energy() << " eta " << sc->eta() << " phi " << sc->phi() << std::endl; - ++i; - } - } - - iEvent.getByLabel("correctedIslandEndcapSuperClusters","",SuperClusters); - std::cout << "Size of SuperClusters is " << SuperClusters->size() << std::endl; - if (SuperClusters->size() != 0) { - int i=0; - for (SuperClusterCollection::const_iterator sc=SuperClusters->begin(); sc != SuperClusters->end(); ++sc) { - std::cout << "SuperCluster " << i << " energy " << sc->energy() << " eta " << sc->eta() << " phi " << sc->phi() << std::endl; - ++i; - } - } - - for (unsigned i=0; i<gctdata.electrons.size(); ++i) { - for (unsigned j=0; j<gctdata.electrons.at(i)->size(); ++j) { - L1GctEmCand ele = gctdata.electrons.at(i)->at(j); - std::cout << "gct electron energy " << ele.rank() << " eta " << ele.etaIndex() << " phi " << ele.phiIndex() << std::endl; - } - } -} - - -// ------------ method called once each job just before starting event loop ------------ -void -L1GctAnalyzer::beginJob(const edm::EventSetup& iSetup) -{ - // Open rootfile for histograms - m_file = new TFile( m_histFileName.c_str(), "RECREATE" ); - - // Histogrammer for basic gct output quantities - if (doBasicHist) { - basicHist = new L1GctBasicHistogrammer(m_file, "basicHistograms"); - } - - // Histogrammers for comparison with jet reconstruction - if (doJetCheckHist) { - for (vector<string>::const_iterator option=jetCheckOptions.begin(); option != jetCheckOptions.end(); ++option) { - string directory = *option + "JetCheck"; - jetCheckHist.push_back(new L1GctJetCheckHistogrammer(m_file, directory)); - } - } - - // Histogrammers for comparison with missing Et reconstruction - if (doMETCheckHist) { - for (vector<string>::const_iterator option=mETCheckOptions.begin(); option != mETCheckOptions.end(); ++option) { - string directory = *option + "METCheck"; - mETCheckHist.push_back(new L1GctMETCheckHistogrammer(m_file, directory)); - } - } -} - -// ------------ method called once each job just after ending the event loop ------------ -void -L1GctAnalyzer::endJob() { - if (doBasicHist) { delete basicHist; } - if (doJetCheckHist) { - for (unsigned i=0; i<jetCheckHist.size(); ++i) { - delete jetCheckHist.at(i); - } - } - if (doMETCheckHist) { - for (unsigned i=0; i<mETCheckHist.size(); ++i) { - delete mETCheckHist.at(i); - } - } - delete m_file; -} - -//define this as a plug-in -DEFINE_FWK_MODULE(L1GctAnalyzer); diff --git a/L1Trigger/L1GctAnalyzer/src/L1GctBasicHistogrammer.cc b/L1Trigger/L1GctAnalyzer/src/L1GctBasicHistogrammer.cc deleted file mode 100644 index a99e88d42aa..00000000000 --- a/L1Trigger/L1GctAnalyzer/src/L1GctBasicHistogrammer.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include "L1Trigger/L1GctAnalyzer/interface/L1GctBasicHistogrammer.h" - - -//--------------Histogram basic gct quantities--------------------------- -// -///constructor -L1GctBasicHistogrammer::L1GctBasicHistogrammer(TFile* tf, const std::string dir) : - L1GctHistogrammer(tf, dir), - allJetsRank ( "allJetsRank", "Jet rank", NRANK, MINRANK, MAXRANK), - allJetsEta ( "allJetsEta", "Jet eta", NETA, MINETA, MAXETA ), - allJetsPhi ( "allJetsPhi", "Jet phi", NPHI, MINPHI, MAXPHI ), - allJetsGctEta( "allJetsGctEta", "Global jet eta", NGCTETA, MINGCTETA, MAXGCTETA ), - metValue ( "metValue", "Missing Et", NGCTMETVALUE, MINGCTMETVALUE, MAXGCTMETVALUE), - metAngle ( "metAngle", "Missing Et phi", NGCTMETPHI, MINGCTMETPHI, MAXGCTMETPHI ) -{ -} - -///destructor -L1GctBasicHistogrammer::~L1GctBasicHistogrammer() -{ - if (setHistogramDirectory()) { - allJetsRank.Write(); - allJetsEta.Write(); - allJetsPhi.Write(); - allJetsGctEta.Write(); - metValue.Write(); - metAngle.Write(); - } -} - -///event processor -void L1GctBasicHistogrammer::fillHistograms(const GctOutputData gct) -{ - L1GctJetCandCollection::const_iterator jet; - for (unsigned i=0; i<gct.jets.size(); ++i) { - for (jet=gct.jets.at(i)->begin(); jet!=gct.jets.at(i)->end(); ++jet) { - if (!jet->empty()) { - allJetsRank.Fill(jet->rank()); - allJetsEta.Fill (jet->etaIndex()); - allJetsPhi.Fill (jet->phiIndex()); - allJetsGctEta.Fill(gctEta(*jet)); - } - } - } - metValue.Fill(gct.etMiss->et()); - metAngle.Fill(gct.etMiss->phi()); -} - diff --git a/L1Trigger/L1GctAnalyzer/src/L1GctHistogrammer.cc b/L1Trigger/L1GctAnalyzer/src/L1GctHistogrammer.cc deleted file mode 100644 index f44760d99b2..00000000000 --- a/L1Trigger/L1GctAnalyzer/src/L1GctHistogrammer.cc +++ /dev/null @@ -1,60 +0,0 @@ -#include "L1Trigger/L1GctAnalyzer/interface/L1GctHistogrammer.h" - - -//--------------Histogrammer base class--------------------------- -// -///constructor -L1GctHistogrammer::L1GctHistogrammer(TFile* tf, const std::string dir) : - m_file(tf), - m_dir(dir) -{ - if (resetHistogramDirectory()) { - m_file->mkdir(HistogramDirectory(), HistogramDirectory()); - } -} - -///destructor -L1GctHistogrammer::~L1GctHistogrammer() -{ -} - -//------------------------------------------------------------- -// -// Protected member functions, for use by histogrammers - -///Find the top jet in the event -L1GctJetCand -L1GctHistogrammer::topJet(const GctOutputData gct) -{ - L1GctJetCand result; - for (unsigned i=0; i<gct.jets.size(); ++i) { - L1GctJetCandCollection::const_iterator jet=gct.jets.at(i)->begin(); - if (jet->rank()>result.rank()) { - result = *jet; - } - } - return result; -} - -//Find the global eta from the encoded hardware eta -unsigned -L1GctHistogrammer::gctEta(L1GctJetCand jet) -{ - unsigned rctEta = (jet.etaIndex() & 0x7) + (jet.isForward() ? 7 : 0); - return ((jet.etaSign()==0) ? (rctEta+11) : (10-rctEta)); -} - -//------------------------------------------------------------- -// -// Protected constants - -// Histogram bin numbers and ranges for GCT quantities -const int L1GctHistogrammer::NRANK=64; const double L1GctHistogrammer::MINRANK=0.; const double L1GctHistogrammer::MAXRANK=64.; -const int L1GctHistogrammer::NETA =14; const double L1GctHistogrammer::MINETA =0.; const double L1GctHistogrammer::MAXETA =14.; -const int L1GctHistogrammer::NPHI =18; const double L1GctHistogrammer::MINPHI =0.; const double L1GctHistogrammer::MAXPHI =18.; - -const int L1GctHistogrammer::NGCTETA=22; const double L1GctHistogrammer::MINGCTETA=0.; const double L1GctHistogrammer::MAXGCTETA=22.; - -const int L1GctHistogrammer::NGCTMETVALUE=64; const double L1GctHistogrammer::MINGCTMETVALUE=0.; const double L1GctHistogrammer::MAXGCTMETVALUE=256.; -const int L1GctHistogrammer::NGCTMETPHI =72; const double L1GctHistogrammer::MINGCTMETPHI =0.; const double L1GctHistogrammer::MAXGCTMETPHI =72.; - diff --git a/L1Trigger/L1GctAnalyzer/src/L1GctJetCheckHistogrammer.cc b/L1Trigger/L1GctAnalyzer/src/L1GctJetCheckHistogrammer.cc deleted file mode 100644 index c991a470f2f..00000000000 --- a/L1Trigger/L1GctAnalyzer/src/L1GctJetCheckHistogrammer.cc +++ /dev/null @@ -1,51 +0,0 @@ -#include "L1Trigger/L1GctAnalyzer/interface/L1GctJetCheckHistogrammer.h" - - -//--------------Histogram checks against reconstructed jets--------------------------- -// -using namespace reco; - -const int L1GctJetCheckHistogrammer::NJETET =50; -const double L1GctJetCheckHistogrammer::MINJETET = 0.; -const double L1GctJetCheckHistogrammer::MAXJETET = 100.; -const int L1GctJetCheckHistogrammer::NJETETA=50; -const double L1GctJetCheckHistogrammer::MINJETETA= -5.; -const double L1GctJetCheckHistogrammer::MAXJETETA= 5.; -const int L1GctJetCheckHistogrammer::NJETPHI=36; -const double L1GctJetCheckHistogrammer::MINJETPHI=-M_PI; -const double L1GctJetCheckHistogrammer::MAXJETPHI= M_PI; - -///constructor -L1GctJetCheckHistogrammer::L1GctJetCheckHistogrammer(TFile* tf, const std::string dir) : - L1GctCorrelator<reco::GenJetCollection>(tf, dir), - topJetRankVsGenEt( "topJetRankVsGenEt", "Gct top jet rank vs genJet et", - NRANK, MINRANK, MAXRANK, - NJETET, MINJETET, MAXJETET), - topJetEtaVsGen ( "topJetEtaVsGen", "Gct eta top jet vs genJet eta", - NGCTETA, MINGCTETA, MAXGCTETA, - NJETETA, MINJETETA, MAXJETETA), - topJetPhiVsGen ( "topJetPhiVsGen", "Gct phi top jet vs genJet phi", - NPHI, MINPHI, MAXPHI, - NJETPHI, MINJETPHI, MAXJETPHI) -{ -} - -///destructor -L1GctJetCheckHistogrammer::~L1GctJetCheckHistogrammer() -{ - if (setHistogramDirectory()) { - topJetRankVsGenEt.Write(); - topJetEtaVsGen.Write(); - topJetPhiVsGen.Write(); - } -} - -///event processor -void L1GctJetCheckHistogrammer::fillHistograms(const GctOutputData gct) -{ - GenJetCollection::const_iterator gJet=prod().begin(); - topJetRankVsGenEt.Fill(topJet(gct).rank(), gJet->et()); - topJetEtaVsGen.Fill (gctEta(topJet(gct)), gJet->eta()); - topJetPhiVsGen.Fill (topJet(gct).phiIndex(), gJet->phi()); -} - diff --git a/L1Trigger/L1GctAnalyzer/src/L1GctMETCheckHistogrammer.cc b/L1Trigger/L1GctAnalyzer/src/L1GctMETCheckHistogrammer.cc deleted file mode 100644 index 906a0fdf602..00000000000 --- a/L1Trigger/L1GctAnalyzer/src/L1GctMETCheckHistogrammer.cc +++ /dev/null @@ -1,47 +0,0 @@ -#include "L1Trigger/L1GctAnalyzer/interface/L1GctMETCheckHistogrammer.h" - - -//--------------Histogram checks against reconstructed missing Et--------------------------- -// -using namespace reco; - -const int L1GctMETCheckHistogrammer::NGENMETVALUE= L1GctHistogrammer::NGCTMETVALUE; -const double L1GctMETCheckHistogrammer::MINGENMETVALUE=L1GctHistogrammer::MINGCTMETVALUE; -const double L1GctMETCheckHistogrammer::MAXGENMETVALUE=L1GctHistogrammer::MAXGCTMETVALUE; -const int L1GctMETCheckHistogrammer::NGENMETPHI= L1GctHistogrammer::NGCTMETPHI; -const double L1GctMETCheckHistogrammer::MINGENMETPHI=-M_PI; -const double L1GctMETCheckHistogrammer::MAXGENMETPHI= M_PI; - -///constructor -L1GctMETCheckHistogrammer::L1GctMETCheckHistogrammer(TFile* tf, const std::string dir) : - L1GctCorrelator<reco::METCollection>(tf, dir), - missingEtValueGCTVsGen( "missingEtValueGCTVsGen", "Gct missing et value vs generated MET", - NGCTMETVALUE, MINGCTMETVALUE, MAXGCTMETVALUE, - NGENMETVALUE, MINGENMETVALUE, MAXGENMETVALUE), - missingEtPhiGCTVsGen ( "missingEtPhiGCTVsGen", "Gct missing et phi vs generated MET phi", - NGCTMETPHI, MINGCTMETPHI, MAXGCTMETPHI, - NGENMETPHI, MINGENMETPHI, MAXGENMETPHI), - missingEtRatioVsGCTJetEta ( "missingEtRatioVsGCTJetEta", "Ratio GCT MET/gen vs GCT jet eta", - NGCTETA, MINGCTETA, MAXGCTETA, - 50, 0., 5.) -{ -} - -///destructor -L1GctMETCheckHistogrammer::~L1GctMETCheckHistogrammer() -{ - if (setHistogramDirectory()) { - missingEtValueGCTVsGen.Write(); - missingEtPhiGCTVsGen.Write(); - missingEtRatioVsGCTJetEta.Write(); - } -} - -///event processor -void L1GctMETCheckHistogrammer::fillHistograms(const GctOutputData gct) -{ - METCollection::const_iterator gMET=prod().begin(); - missingEtValueGCTVsGen.Fill(gct.etMiss->et(), gMET->sumEt()); - missingEtPhiGCTVsGen.Fill (gct.etMiss->phi(), gMET->phi()); - missingEtRatioVsGCTJetEta.Fill (gctEta(topJet(gct)), (gct.etMiss->et()/gMET->sumEt())); -} diff --git a/L1Trigger/RPCTechnicalTrigger/doc/html/index.html b/L1Trigger/RPCTechnicalTrigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/RPCTechnicalTrigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/RPCTechnicalTrigger/doc/html/overview.html b/L1Trigger/RPCTechnicalTrigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/RPCTechnicalTrigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1Trigger/Skimmer/doc/html/index.html b/L1Trigger/Skimmer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/Skimmer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/Skimmer/doc/html/overview.html b/L1Trigger/Skimmer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/Skimmer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1Trigger/TextToDigi/doc/html/index.html b/L1Trigger/TextToDigi/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1Trigger/TextToDigi/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1Trigger/TextToDigi/doc/html/overview.html b/L1Trigger/TextToDigi/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1Trigger/TextToDigi/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/CSCTFConfigProducers/doc/html/index.html b/L1TriggerConfig/CSCTFConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/CSCTFConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/CSCTFConfigProducers/doc/html/overview.html b/L1TriggerConfig/CSCTFConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/CSCTFConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/DTTPGConfig/doc/html/index.html b/L1TriggerConfig/DTTPGConfig/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/DTTPGConfig/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/DTTPGConfig/doc/html/overview.html b/L1TriggerConfig/DTTPGConfig/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/DTTPGConfig/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/DTTPGConfigProducers/doc/html/index.html b/L1TriggerConfig/DTTPGConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/DTTPGConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/DTTPGConfigProducers/doc/html/overview.html b/L1TriggerConfig/DTTPGConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/DTTPGConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/DTTrackFinder/doc/html/index.html b/L1TriggerConfig/DTTrackFinder/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/DTTrackFinder/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/DTTrackFinder/doc/html/overview.html b/L1TriggerConfig/DTTrackFinder/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/DTTrackFinder/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/GMTConfigProducers/doc/html/index.html b/L1TriggerConfig/GMTConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/GMTConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/GMTConfigProducers/doc/html/overview.html b/L1TriggerConfig/GMTConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/GMTConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/GctConfigProducers/doc/html/index.html b/L1TriggerConfig/GctConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/GctConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/GctConfigProducers/doc/html/overview.html b/L1TriggerConfig/GctConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/GctConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/index.html b/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/overview.html b/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/L1CSCTPConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/L1GeometryProducers/doc/html/index.html b/L1TriggerConfig/L1GeometryProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/L1GeometryProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/L1GeometryProducers/doc/html/overview.html b/L1TriggerConfig/L1GeometryProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/L1GeometryProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/L1GtConfigProducers/doc/html/index.html b/L1TriggerConfig/L1GtConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/L1GtConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/L1GtConfigProducers/doc/html/overview.html b/L1TriggerConfig/L1GtConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/L1GtConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/L1ScalesProducers/doc/html/index.html b/L1TriggerConfig/L1ScalesProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/L1ScalesProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/L1ScalesProducers/doc/html/overview.html b/L1TriggerConfig/L1ScalesProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/L1ScalesProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/RCTConfigProducers/doc/html/index.html b/L1TriggerConfig/RCTConfigProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/RCTConfigProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/RCTConfigProducers/doc/html/overview.html b/L1TriggerConfig/RCTConfigProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/RCTConfigProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerConfig/RPCTriggerConfig/doc/html/index.html b/L1TriggerConfig/RPCTriggerConfig/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerConfig/RPCTriggerConfig/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerConfig/RPCTriggerConfig/doc/html/overview.html b/L1TriggerConfig/RPCTriggerConfig/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerConfig/RPCTriggerConfig/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerOffline/Configuration/doc/html/index.html b/L1TriggerOffline/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerOffline/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerOffline/Configuration/doc/html/overview.html b/L1TriggerOffline/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerOffline/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/L1TriggerOffline/L1Analyzer/doc/html/index.html b/L1TriggerOffline/L1Analyzer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/L1TriggerOffline/L1Analyzer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/L1TriggerOffline/L1Analyzer/doc/html/overview.html b/L1TriggerOffline/L1Analyzer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/L1TriggerOffline/L1Analyzer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/MagneticField/Interpolation/TagLog b/MagneticField/Interpolation/TagLog new file mode 100644 index 00000000000..6a94d328c80 --- /dev/null +++ b/MagneticField/Interpolation/TagLog @@ -0,0 +1,3 @@ +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/MagneticField/Interpolation/interface/Grid1D.h b/MagneticField/Interpolation/interface/Grid1D.h index 1dcf413f50f..2f53b311074 100644 --- a/MagneticField/Interpolation/interface/Grid1D.h +++ b/MagneticField/Interpolation/interface/Grid1D.h @@ -26,15 +26,12 @@ public: Scalar closestNode( Scalar a) const { Scalar b = (a-lower())/step(); Scalar c = floor(b); - Scalar tmp = (b-c < 0.5) ? std::max(c,0.) : std::min(c+1.,static_cast<Scalar>(nodes()-1)); + Scalar tmp = (b-c < 0.5) ? max(c,0.) : min(c+1.,static_cast<Scalar>(nodes()-1)); return tmp*step()+lower(); } - /// returns valid index, or -1 if the value is outside range +/- one cell. int index( Scalar a) const { - int ind = static_cast<int>((a-lower())/step()); - if (ind < -1 || ind > cells()) return -1; - return std::max(0, std::min( cells()-1, ind)); + return max(0, min( cells()-1, static_cast<int>((a-lower())/step()))); } private: diff --git a/MagneticField/Interpolation/interface/LinearGridInterpolator3D.h b/MagneticField/Interpolation/interface/LinearGridInterpolator3D.h index 6f32cc5fe63..9d902cd8ee4 100644 --- a/MagneticField/Interpolation/interface/LinearGridInterpolator3D.h +++ b/MagneticField/Interpolation/interface/LinearGridInterpolator3D.h @@ -3,8 +3,6 @@ #ifndef LinearGridInterpolator3D_H #define LinearGridInterpolator3D_H -#include "MagneticField/VolumeGeometry/interface/MagExceptions.h" - #ifdef DEBUG_LinearGridInterpolator3D #include <iostream> #endif @@ -23,12 +21,6 @@ public: int j = gridb.index(b); int k = gridc.index(c); - if (i==-1 || j==-1 || k==-1) { - // point outside of grid validity! - throw GridInterpolator3DException( grida.lower(),gridb.lower(),gridc.lower(), - grida.upper(),gridb.upper(),gridc.upper()); - } - Scalar s = (a - grida.node(i)) / grida.step(); Scalar t = (b - gridb.node(j)) / gridb.step(); Scalar u = (c - gridc.node(k)) / gridc.step(); diff --git a/MagneticField/Interpolation/interface/MFGrid3D.h b/MagneticField/Interpolation/interface/MFGrid3D.h index 73b9eb0c4f9..4db9440c48e 100644 --- a/MagneticField/Interpolation/interface/MFGrid3D.h +++ b/MagneticField/Interpolation/interface/MFGrid3D.h @@ -41,9 +41,6 @@ public: return result; } - virtual LocalVector valueInTesla( const LocalPoint& p) const; - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const = 0; - protected: typedef Basic3DVector<float> BVector; diff --git a/MagneticField/Interpolation/interface/RectangularCartesianMFGrid.h b/MagneticField/Interpolation/interface/RectangularCartesianMFGrid.h index 0e5f9c3e438..0f89ea0b4c9 100644 --- a/MagneticField/Interpolation/interface/RectangularCartesianMFGrid.h +++ b/MagneticField/Interpolation/interface/RectangularCartesianMFGrid.h @@ -11,7 +11,7 @@ public: RectangularCartesianMFGrid( binary_ifstream& istr, const GloballyPositioned<float>& vol); - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; + virtual LocalVector valueInTesla( const LocalPoint& p) const; virtual void dump() const; diff --git a/MagneticField/Interpolation/interface/RectangularCylindricalMFGrid.h b/MagneticField/Interpolation/interface/RectangularCylindricalMFGrid.h index 62402f35468..f70ea07f1dd 100644 --- a/MagneticField/Interpolation/interface/RectangularCylindricalMFGrid.h +++ b/MagneticField/Interpolation/interface/RectangularCylindricalMFGrid.h @@ -11,7 +11,7 @@ public: RectangularCylindricalMFGrid( binary_ifstream& istr, const GloballyPositioned<float>& vol ); - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; + virtual LocalVector valueInTesla( const LocalPoint& p) const; virtual void dump() const; diff --git a/MagneticField/Interpolation/interface/SpecialCylindricalMFGrid.h b/MagneticField/Interpolation/interface/SpecialCylindricalMFGrid.h index a8cacb927dc..47da31eb947 100644 --- a/MagneticField/Interpolation/interface/SpecialCylindricalMFGrid.h +++ b/MagneticField/Interpolation/interface/SpecialCylindricalMFGrid.h @@ -11,7 +11,7 @@ public: SpecialCylindricalMFGrid( binary_ifstream& istr, const GloballyPositioned<float>& vol ); - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; + virtual LocalVector valueInTesla( const LocalPoint& p) const; virtual void dump() const; diff --git a/MagneticField/Interpolation/interface/TrapezoidalCartesianMFGrid.h b/MagneticField/Interpolation/interface/TrapezoidalCartesianMFGrid.h index 9aef6d92562..ec52299d759 100644 --- a/MagneticField/Interpolation/interface/TrapezoidalCartesianMFGrid.h +++ b/MagneticField/Interpolation/interface/TrapezoidalCartesianMFGrid.h @@ -12,7 +12,7 @@ public: TrapezoidalCartesianMFGrid( binary_ifstream& istr, const GloballyPositioned<float>& vol); - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; + virtual LocalVector valueInTesla( const LocalPoint& p) const; void dump() const; diff --git a/MagneticField/Interpolation/interface/TrapezoidalCylindricalMFGrid.h b/MagneticField/Interpolation/interface/TrapezoidalCylindricalMFGrid.h index 92b61441dbd..588444d9b15 100644 --- a/MagneticField/Interpolation/interface/TrapezoidalCylindricalMFGrid.h +++ b/MagneticField/Interpolation/interface/TrapezoidalCylindricalMFGrid.h @@ -12,7 +12,7 @@ public: TrapezoidalCylindricalMFGrid( binary_ifstream& istr, const GloballyPositioned<float>& vol); - virtual LocalVector uncheckedValueInTesla( const LocalPoint& p) const; + virtual LocalVector valueInTesla( const LocalPoint& p) const; void dump() const; diff --git a/MagneticField/Interpolation/src/MFGrid3D.cc b/MagneticField/Interpolation/src/MFGrid3D.cc deleted file mode 100644 index 2f63806693d..00000000000 --- a/MagneticField/Interpolation/src/MFGrid3D.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include "MagneticField/Interpolation/interface/MFGrid3D.h" -#include "MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h" -#include "MagneticField/VolumeGeometry/interface/MagExceptions.h" - -MFGrid::LocalVector MFGrid3D::valueInTesla( const LocalPoint& p) const -{ - try { - return uncheckedValueInTesla( p); - } - catch ( GridInterpolator3DException& outside) { - LocalPoint lower = fromGridFrame( outside.a1_, outside.b1_, outside.c1_); - LocalPoint upper = fromGridFrame( outside.a2_, outside.b2_, outside.c2_); - throw MagVolumeOutsideValidity( lower, upper); - } - -} diff --git a/MagneticField/Interpolation/src/RectangularCartesianMFGrid.cc b/MagneticField/Interpolation/src/RectangularCartesianMFGrid.cc index 5a76fba9d48..d274357fd47 100644 --- a/MagneticField/Interpolation/src/RectangularCartesianMFGrid.cc +++ b/MagneticField/Interpolation/src/RectangularCartesianMFGrid.cc @@ -71,8 +71,7 @@ void RectangularCartesianMFGrid::dump() const // grid_.dump(); } -MFGrid::LocalVector -RectangularCartesianMFGrid::uncheckedValueInTesla( const LocalPoint& p) const +MFGrid::LocalVector RectangularCartesianMFGrid::valueInTesla( const LocalPoint& p) const { // static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::valueInTesla(RectangularCartesianMFGrid)"]; // TimeMe t(timer,false); diff --git a/MagneticField/Interpolation/src/RectangularCylindricalMFGrid.cc b/MagneticField/Interpolation/src/RectangularCylindricalMFGrid.cc index 73e99436ebd..2263c257a39 100644 --- a/MagneticField/Interpolation/src/RectangularCylindricalMFGrid.cc +++ b/MagneticField/Interpolation/src/RectangularCylindricalMFGrid.cc @@ -53,7 +53,7 @@ RectangularCylindricalMFGrid::RectangularCylindricalMFGrid( binary_ifstream& inF // Activate/deactivate timers // static SimpleConfigurable<bool> timerOn(false,"MFGrid:timing"); -// (*TimingReport::current()).switchOn("MagneticFieldProvider::uncheckedValueInTesla(RectangularCylindricalMFGrid)",timerOn); +// (*TimingReport::current()).switchOn("MagneticFieldProvider::valueInTesla(RectangularCylindricalMFGrid)",timerOn); } void RectangularCylindricalMFGrid::dump() const @@ -73,23 +73,13 @@ void RectangularCylindricalMFGrid::dump() const // grid_.dump(); } -MFGrid::LocalVector RectangularCylindricalMFGrid::uncheckedValueInTesla( const LocalPoint& p) const +MFGrid::LocalVector RectangularCylindricalMFGrid::valueInTesla( const LocalPoint& p) const { -// static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::uncheckedValueInTesla(RectangularCylindricalMFGrid)"]; +// static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::valueInTesla(RectangularCylindricalMFGrid)"]; // TimeMe t(timer,false); - const float minimalSignificantR = 1e-6; // [cm], points below this radius are treated as zero radius LinearGridInterpolator3D<GridType::ValueType, GridType::Scalar> interpol( grid_); - float R = p.perp(); - if (R < minimalSignificantR) { - if (grid_.grida().lower() < minimalSignificantR) { - int k = grid_.gridc().index(p.z()); - double u = (p.z() - grid_.gridc().node(k)) / grid_.gridc().step(); - LocalVector result((1-u)*grid_(0, 0, k) + u*grid_(0, 0, k+1)); - return result; - } - } - GridType::ValueType value = interpol( R, Geom::pi() - p.phi(), p.z()); + GridType::ValueType value = interpol( p.perp(), Geom::pi() - p.phi(), p.z()); return LocalVector(value); } diff --git a/MagneticField/Interpolation/src/SpecialCylindricalMFGrid.cc b/MagneticField/Interpolation/src/SpecialCylindricalMFGrid.cc index b21ba3a9689..c6ef98e18d6 100644 --- a/MagneticField/Interpolation/src/SpecialCylindricalMFGrid.cc +++ b/MagneticField/Interpolation/src/SpecialCylindricalMFGrid.cc @@ -69,7 +69,7 @@ SpecialCylindricalMFGrid::SpecialCylindricalMFGrid( binary_ifstream& inFile, } -MFGrid::LocalVector SpecialCylindricalMFGrid::uncheckedValueInTesla( const LocalPoint& p) const +MFGrid::LocalVector SpecialCylindricalMFGrid::valueInTesla( const LocalPoint& p) const { // static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::valueInTesla(SpecialCylindricalMFGrid)"]; // TimeMe t(timer,false); diff --git a/MagneticField/Interpolation/src/TrapezoidalCartesianMFGrid.cc b/MagneticField/Interpolation/src/TrapezoidalCartesianMFGrid.cc index b35fdf0095e..41861c5dfe8 100644 --- a/MagneticField/Interpolation/src/TrapezoidalCartesianMFGrid.cc +++ b/MagneticField/Interpolation/src/TrapezoidalCartesianMFGrid.cc @@ -125,7 +125,7 @@ void TrapezoidalCartesianMFGrid::dump() const } -MFGrid::LocalVector TrapezoidalCartesianMFGrid::uncheckedValueInTesla( const LocalPoint& p) const +MFGrid::LocalVector TrapezoidalCartesianMFGrid::valueInTesla( const LocalPoint& p) const { // static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::valueInTesla(TrapezoidalCartesianMFGrid)"]; // TimeMe t(timer,false); diff --git a/MagneticField/Interpolation/src/TrapezoidalCylindricalMFGrid.cc b/MagneticField/Interpolation/src/TrapezoidalCylindricalMFGrid.cc index 346da528927..ce1ae751994 100644 --- a/MagneticField/Interpolation/src/TrapezoidalCylindricalMFGrid.cc +++ b/MagneticField/Interpolation/src/TrapezoidalCylindricalMFGrid.cc @@ -118,7 +118,7 @@ void TrapezoidalCylindricalMFGrid::dump() const {} MFGrid::LocalVector -TrapezoidalCylindricalMFGrid::uncheckedValueInTesla( const LocalPoint& p) const +TrapezoidalCylindricalMFGrid::valueInTesla( const LocalPoint& p) const { // static TimingReport::Item & timer= (*TimingReport::current())["MagneticFieldProvider::valueInTesla(TrapezoidalCylindricalMFGrid)"]; // TimeMe t(timer,false); diff --git a/MagneticField/ParametrizedEngine/doc/html/index.html b/MagneticField/ParametrizedEngine/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/MagneticField/ParametrizedEngine/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/MagneticField/ParametrizedEngine/doc/html/overview.html b/MagneticField/ParametrizedEngine/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/MagneticField/ParametrizedEngine/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/MagneticField/Records/TagLog b/MagneticField/Records/TagLog new file mode 100644 index 00000000000..6a94d328c80 --- /dev/null +++ b/MagneticField/Records/TagLog @@ -0,0 +1,3 @@ +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/MagneticField/VolumeGeometry/interface/MagExceptions.h b/MagneticField/VolumeGeometry/interface/MagExceptions.h index 8f1abb133b5..c7c3579cc19 100644 --- a/MagneticField/VolumeGeometry/interface/MagExceptions.h +++ b/MagneticField/VolumeGeometry/interface/MagExceptions.h @@ -26,21 +26,4 @@ public: MagLogicError( const std::string& message) : MagException(message) {} virtual ~MagLogicError() throw() {} }; - -class GridInterpolator3DException : public std::exception { -public: - - GridInterpolator3DException( double a1, double b1, double c1, - double a2, double b2, double c2) throw() : - a1_(a1), b1_(b1), c1_(c1), a2_(a2), b2_(b2), c2_(c2) {} - - virtual ~GridInterpolator3DException() throw() {} - - virtual const char* what() const throw() { return "LinearGridInterpolator3D: field requested outside of grid validity";} - - double a1_, b1_, c1_, a2_, b2_, c2_; -}; - - - #endif diff --git a/MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h b/MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h deleted file mode 100644 index e5c0052b9e0..00000000000 --- a/MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef MagVolumeOutsideValidity_H -#define MagVolumeOutsideValidity_H - -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" -#include <exception> - -class MagVolumeOutsideValidity : public std::exception { -public: - - MagVolumeOutsideValidity( MagVolume::LocalPoint l, - MagVolume::LocalPoint u) throw() : - lower_(l), upper_(u) {} - - MagVolume::LocalPoint lower() const throw() {return lower_;} - MagVolume::LocalPoint upper() const throw() {return upper_;} - - virtual ~MagVolumeOutsideValidity() throw() {} - - virtual const char* what() const throw() { return "Magnetic field requested outside of validity of the MagVolume";} - -private: - - MagVolume::LocalPoint lower_; - MagVolume::LocalPoint upper_; -}; -#endif diff --git a/MuonAnalysis/Configuration/doc/html/index.html b/MuonAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/MuonAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/MuonAnalysis/Configuration/doc/html/overview.html b/MuonAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/MuonAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/MuonAnalysis/MomentumScaleCalibration/doc/html/index.html b/MuonAnalysis/MomentumScaleCalibration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/MuonAnalysis/MomentumScaleCalibration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/MuonAnalysis/MomentumScaleCalibration/doc/html/overview.html b/MuonAnalysis/MomentumScaleCalibration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/MuonAnalysis/MomentumScaleCalibration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/MuonAnalysis/MuonAssociators/doc/html/index.html b/MuonAnalysis/MuonAssociators/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/MuonAnalysis/MuonAssociators/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/MuonAnalysis/MuonAssociators/doc/html/overview.html b/MuonAnalysis/MuonAssociators/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/MuonAnalysis/MuonAssociators/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/MuonAnalysis/Skims/doc/html/index.html b/MuonAnalysis/Skims/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/MuonAnalysis/Skims/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/MuonAnalysis/Skims/doc/html/overview.html b/MuonAnalysis/Skims/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/MuonAnalysis/Skims/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/OnlineDB/CSCCondDB/BuildFile b/OnlineDB/CSCCondDB/BuildFile deleted file mode 100644 index 93f51733baa..00000000000 --- a/OnlineDB/CSCCondDB/BuildFile +++ /dev/null @@ -1,32 +0,0 @@ -<Flags CXXFLAGS=-g> - -<use name=FWCore/Framework> -<use name=FWCore/MessageLogger> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> - -<use name=DataFormats/CSCDigi> -<use name=EventFilter/CSCRawToDigi> -<use name=CondFormats/CSCObjects> - -<use name=clhep> -<use name=root> -<use name=oracle> -<lib name=occi> -<lib name=Minuit2> -<flags SEAL_PLUGIN_NAME="OnlineDBCSCCondDB"> -<export> - <lib name=OnlineDBCSCCondDB> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=FWCore/MessageLogger> - <use name=DataFormats/CSCDigi> - <use name=EventFilter/CSCRawToDigi> - <use name=CondFormats/CSCObjects> - <use name=clhep> - <use name=root> - <lib name=occi> - <lib name=Minuit2> -</export> - diff --git a/OnlineDB/CSCCondDB/interface/AutoCorrMat.h b/OnlineDB/CSCCondDB/interface/AutoCorrMat.h deleted file mode 100644 index 90d06a5e862..00000000000 --- a/OnlineDB/CSCCondDB/interface/AutoCorrMat.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - Author: Stan Durkin - -*/ - -#include <stdio.h> -#include <math.h> -#define LAYERS_ma 6 -#define STRIPS_ma 80 - -class AutoCorrMat{ - - public: - - AutoCorrMat(){ - for(int i=0;i<12;i++){ - Mat[i]=0.0; - N[i]=0.0; - } - } - - ~AutoCorrMat(){} - - void zero(){ - for(int i=0;i<12;i++){ - Mat[i]=0.0; - N[i]=0.0; - } - for (int i=3;i<7;i++){ - variance[i]=0.0; - } - evt=0; - } - - void add(int *adc){ - int pairs[12][2]={{3,3},{3,4},{4,4},{3,5},{4,5},{5,5},{4,6},{5,6},{6,6},{5,7},{6,7},{7,7}}; - double ped=(adc[0]+adc[1])/2.; - evt++; - - for(int i=3;i<7;i++){ - mymean[i] += adc[i]-ped; - variance[i] += (adc[i]-ped)*(adc[i]-ped); - } - - for(int i=0;i<12;i++){ - - //Add values within 3 sigma of mean only - float threeSigma0 = 3. * sqrt(variance[pairs[i][0]]/evt); - float threeSigma1 = 3. * sqrt(variance[pairs[i][1]]/evt); - if (adc[pairs[i][0]]-ped<threeSigma0 && adc[pairs[i][1]]-ped<threeSigma1){ - N[i]=N[i]+1; - Mat[i]=Mat[i]+(adc[pairs[i][0]]-ped)*(adc[pairs[i][1]]-ped); - } - //end 3 sigma - } - } - - float *mat(){ - float *tmp; - for(int i=0;i<12;i++)tMat[i]=Mat[i]/N[i]; - tmp=tMat; - return tmp; - } - - private: - - float Mat[12]; - float N[12]; - float tMat[12]; - float mymean[12]; - float variance[4]; - int evt; -}; - -class Chamber_AutoCorrMat{ - public: - - Chamber_AutoCorrMat(){} - ~Chamber_AutoCorrMat(){} - - void zero(){ - for(int lay=0;lay<6;lay++){ - for(int strip=0;strip<STRIPS_ma;strip++){ - CMat[lay][strip].zero(); - } - } - } - - void add(int lay,int strip,int *adc){ - CMat[lay][strip].add(adc); - } - - float *autocorrmat(int lay,int strip){ - float *tmp; - tmp=m; - tmp=CMat[lay][strip].mat(); - return tmp; - } - - private: - - AutoCorrMat CMat[LAYERS_ma][STRIPS_ma]; - float m[12]; - -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h deleted file mode 100644 index 33d35f271a7..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h +++ /dev/null @@ -1,26 +0,0 @@ -#include <iostream> -#include <vector> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h" -#include "OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h" - -class CSCAFEBAnalyzer : public edm::EDAnalyzer { -public: - explicit CSCAFEBAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - virtual void endJob(); -private: - /// variables persistent across events should be declared here. - std::string testname; - CSCAFEBThrAnalysis analysisthr_; - CSCAFEBConnectAnalysis analysiscnt_; - - edm::InputTag CSCSrc_; -}; - diff --git a/OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h b/OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h deleted file mode 100644 index 28d73d04ac4..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef CSCAFEBCONNECTANALYSIS_H -#define CSCAFEBCONNECTANALYSIS_H - -#include "TH1.h" -#include "TH2.h" -#include "TFile.h" -#include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" -#include "OnlineDB/CSCCondDB/interface/CSCToAFEB.h" -#include <map> -#include <string> -#include <sstream> -#include <stdio.h> - -/** \class CSCAFEBConnectAnalysis - * - * $Date: 2006/06/09 13:15:39 $ - * $Revision: 1.1 $ - * \author - */ -class CSCAFEBConnectAnalysis { -public: - CSCAFEBConnectAnalysis(); - void setup(const std::string& histoFileName); - void analyze(const CSCWireDigiCollection& wirecltn); - void done(); - -private: - void bookForId(int flag, const int& idint,const std::string& ids); - void hf1ForId(std::map<int, TH1*>& mp, int flag, const int& id, - float& x, float w); - void hf2ForId(std::map<int, TH2*>& mp, int flag, const int& id, - float& x, float& y, float w); - /// Statistics - int nmbev; - int nmbev_no_wire; - int npulses; - int nmblayers; - int pulsed_layer; - std::vector<int> nmbpulses; - - /// Maps - - std::map<int, int> m_csc_list; - std::map<int, std::vector<int> > m_wire_ev; - std::map<int, std::vector<std::vector<float> > > m_res_for_db; - - /// Layer, wire to AFEB, channel conversion - const CSCToAFEB csctoafeb; - - /// ROOT hist file - TFile* hist_file; - - /// Histogram maps - std::map<int, TH1*> mh_LayerNmbPulses; - std::map<int, TH1*> mh_WireEff; - std::map<int, TH1*> mh_Eff; - std::map<int, TH1*> mh_WirePairCrosstalk; - std::map<int, TH1*> mh_PairCrosstalk; - std::map<int, TH1*> mh_WireNonPairCrosstalk; - std::map<int, TH1*> mh_NonPairCrosstalk; - std::map<int, TH2*> mh_FirstTime; -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h b/OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h deleted file mode 100644 index 6cfe06a1299..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef CSCAFEBTHRANALYSIS_H -#define CSCAFEBTHRANALYSIS_H - -#include "TH1.h" -#include "TH2.h" -#include "TFile.h" -#include "DataFormats/CSCDigi/interface/CSCWireDigiCollection.h" -#include "OnlineDB/CSCCondDB/interface/CSCToAFEB.h" -#include <map> -#include <string> -#include <sstream> -#include <stdio.h> - -/** \class CSCAFEBThrAnalysis - * - * $Date: 2006/06/09 13:15:39 $ - * $Revision: 1.1 $ - * \author - */ -class CSCAFEBThrAnalysis { -public: - CSCAFEBThrAnalysis(); - void setup(const std::string& histoFileName); - void analyze(const CSCWireDigiCollection& wirecltn); - void done(); - -private: - void bookForId(int flag, const int& idint,const std::string& ids); - void hf1ForId(std::map<int, TH1*>& mp, int flag, const int& id, - float& x, float w); - void hf2ForId(std::map<int, TH2*>& mp, int flag, const int& id, - float& x, float& y, float w); - /// Statistics - int nmbev; - int nmbev_no_wire; - - /// DAC info - int npulses; - int unsigned indDac; - int BegDac; - int EndDac; - int EvDac; - int StepDac; - std::vector<float> vecDac; - std::vector<int> vecDacOccup; - - /// Maps - per event, threshold curve, fit results - std::map<int, std::vector<int> > m_wire_ev; - std::map<int, std::vector<std::vector<int> > > m_wire_dac; - std::map<int, std::vector<std::vector<float> > > m_res_for_db; - - /// Layer, wire to AFEB, channel conversion - const CSCToAFEB csctoafeb; - - /// ROOT hist file - TFile* hist_file; - - /// Histogram maps - std::map<int, TH1*> mh_ChanEff; - - std::map<int, TH2*> mh_FirstTime; - std::map<int, TH2*> mh_AfebDac; - std::map<int, TH2*> mh_AfebThrPar; - std::map<int, TH2*> mh_AfebNoisePar; - std::map<int, TH2*> mh_AfebNDF; - std::map<int, TH2*> mh_AfebChi2perNDF; -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h deleted file mode 100644 index 1e53dcdc21c..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h +++ /dev/null @@ -1,76 +0,0 @@ -/** - * Analyzer for calculating CFEB ADC counts for connectivity. - * author S.Durkin, O.Boeriu - * runs over multiple DDUs - * takes variable size chambers & layers - * produces histograms & ntuple - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TCanvas.h" - -class TCalibCFEBConnectEvt { - public: - Int_t strip; - Int_t layer; - Int_t cham; - Int_t ddu; - Float_t adcMax; - Float_t adcMin; - Float_t diff; - Float_t RMS; -}; - -class CSCCFEBConnectivityAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCCFEBConnectivityAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_con 18 -#define LAYERS_con 6 -#define STRIPS_con 80 -#define TIMEBINS_con 8 -#define DDU_con 2 -#define TOTALSTRIPS_con 480 -#define TOTALEVENTS_con 320 - - ~CSCCFEBConnectivityAnalyzer(); - - private: - int eventNumber,evt,strip,misMatch,fff,ret_code,length,Nddu,myevt; - int chamber,layer,reportedChambers,chamber_num,sector,record,NChambers ; - int dmbID[CHAMBERS_con],crateID[CHAMBERS_con],size[CHAMBERS_con]; - float adcMin[DDU_con][CHAMBERS_con][LAYERS_con][STRIPS_con]; - float adcMax[DDU_con][CHAMBERS_con][LAYERS_con][STRIPS_con]; - float adcMean_max[DDU_con][CHAMBERS_con][LAYERS_con][STRIPS_con]; - float adcMean_min[DDU_con][CHAMBERS_con][LAYERS_con][STRIPS_con]; - float diff[DDU_con][CHAMBERS_con][LAYERS_con][STRIPS_con]; - std::vector<int> adc; - std::string chamber_id; - int lines; - float my_diff,my_diffSquare,theRMS; - std::ifstream filein; - std::string PSet,name; - bool debug; - int flag; - - //root ntuple - TCalibCFEBConnectEvt calib_evt; - TBranch *calibevt; - TTree *calibtree; - TFile *calibfile; -}; - - diff --git a/OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h deleted file mode 100644 index 2cfa8a68600..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Analyzer for reading CFEB comparator information - * author O.Boeriu - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" - -class CSCCompThreshAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCCompThreshAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ct 9 -#define LAYERS_ct 6 -#define STRIPS_ct 80 -#define TOTALSTRIPS_ct 480 -#define DDU_ct 9 -#define NUMMOD_ct 875 -#define NUMBERPLOTTED_ct 25 - - ~CSCCompThreshAnalyzer(); - - private: - - std::string chamber_id; - int eventNumber,evt,event,pedSum, strip, misMatch,fff,ret_code,NChambers,Nddu; - int length,i_chamber,i_layer,reportedChambers,chamber_num,sector; - int timebin,mycompstrip,comparator,compstrip; - int dmbID[CHAMBERS_ct],crateID[CHAMBERS_ct],size[CHAMBERS_ct]; - float theMeanThresh[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float arrayMeanThresh[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float mean[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float meanTot[CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - float meanmod[NUMMOD_ct][CHAMBERS_ct][LAYERS_ct][STRIPS_ct]; - int lines; - std::ifstream filein; - std::string PSet,name; - bool debug; -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h deleted file mode 100644 index ddf8b752081..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Analyzer for calculating CFEB cross-talk & pedestal. - * author S.Durkin, O.Boeriu, A. Roe - * runs over multiple DDUs - * takes variable size chambers & layers - * produces histograms & ntuple - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TCanvas.h" - -class TCalibCrossTalkEvt { - public: - Float_t xtalk_slope_left; - Float_t xtalk_slope_right; - Float_t xtalk_int_left; - Float_t xtalk_int_right; - Float_t xtalk_chi2_left; - Float_t xtalk_chi2_right; - Float_t peakTime; - Int_t strip; - Int_t layer; - Int_t cham; - Int_t ddu; - Float_t pedMean; - Float_t pedRMS; - Float_t peakRMS; - Float_t maxADC; - Float_t sum; - Int_t id; - Int_t flagRMS; - Int_t flagNoise; - Float_t MaxPed[9]; - Float_t MaxRMS[9]; - Float_t MaxPeakTime[9]; - Float_t MinPeakTime[9]; - Float_t MaxPeakADC[9]; - Float_t MinPeakADC[9]; -}; - -class CSCCrossTalkAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCCrossTalkAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - ~CSCCrossTalkAnalyzer(); - -#define CHAMBERS_xt 9 -#define LAYERS_xt 6 -#define STRIPS_xt 80 -#define TIMEBINS_xt 8 -#define DDU_xt 9 -#define TOTALSTRIPS_xt 480 -#define TOTALEVENTS_xt 320 - //TH2F *g1=new TH2F("g1","Baseline RMS",100,0,80,100,0,200); - private: - int eventNumber,evt,strip,misMatch,fff,ret_code,length,Nddu,myevt; - int chamber,layer,reportedChambers,chamber_num,sector,record,NChambers ; - int dmbID[CHAMBERS_xt],crateID[CHAMBERS_xt],size[CHAMBERS_xt]; - std::vector<int> adc; - std::string chamber_id; - int thebins[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsc[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsl[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - int theadccountsr[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - float pedMean,pedMean1,time,max1,max2,min1, aPeak,sumFive,maxRMS,maxPed; - float maxPeakTime, minPeakTime, maxPeakADC, minPeakADC; - float meanPedestal,meanPeak,meanPeakSquare,meanPedestalSquare,theRMS; - float thePeak,thePeakMin, thePeakRMS,theSumFive,thePedestal,theRSquare; - float thetime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt][TIMEBINS_xt*20]; - float xtalk_intercept_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_intercept_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_slope_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_slope_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_chi2_left[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float xtalk_chi2_right[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myMeanPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float array_meanPeakTime[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPed[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPedSquare[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayPed[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayPeak[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayPeakMin[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPeak[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arrayOfPeakSquare[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float arraySumFive[DDU_xt][CHAMBERS_xt][LAYERS_xt][STRIPS_xt]; - float myTime[TIMEBINS_xt]; - float myADC[TIMEBINS_xt]; - int myTbin[TIMEBINS_xt]; - float newPed[TOTALSTRIPS_xt]; - float newRMS[TOTALSTRIPS_xt]; - float newPeakRMS[TOTALSTRIPS_xt]; - float newPeak[TOTALSTRIPS_xt]; - float newPeakMin[TOTALSTRIPS_xt]; - float newSumFive[TOTALSTRIPS_xt]; - float new_xtalk_intercept_right[TOTALSTRIPS_xt]; - float new_xtalk_intercept_left[TOTALSTRIPS_xt]; - float new_xtalk_slope_right[TOTALSTRIPS_xt]; - float new_xtalk_slope_left[TOTALSTRIPS_xt]; - float new_rchi2[TOTALSTRIPS_xt]; - float new_lchi2[TOTALSTRIPS_xt]; - float newPeakTime[TOTALSTRIPS_xt]; - float newMeanPeakTime[TOTALSTRIPS_xt]; - int lines; - std::ifstream filein; - std::string PSet,name; - bool debug; - int flagRMS,flagNoise; - - //root ntuple - TCalibCrossTalkEvt calib_evt; - TBranch *calibevt; - TTree *calibtree; - TFile *calibfile; - ofstream* outfile; - TH1F xtime; - TH1F ped_mean_all; - TH1F ped_RMS_all; - TH1F maxADC; - TH2F pulseshape_ch1_cfeb1; - TH2F pulseshape_ch1_cfeb2; - TH2F pulseshape_ch1_cfeb3; - TH2F pulseshape_ch1_cfeb4; - TH2F pulseshape_ch1_cfeb5; - TH2F pulseshape_ch2_cfeb1; - TH2F pulseshape_ch2_cfeb2; - TH2F pulseshape_ch2_cfeb3; - TH2F pulseshape_ch2_cfeb4; - TH2F pulseshape_ch2_cfeb5; - TH2F pulseshape_ch3_cfeb1; - TH2F pulseshape_ch3_cfeb2; - TH2F pulseshape_ch3_cfeb3; - TH2F pulseshape_ch3_cfeb4; - TH2F pulseshape_ch3_cfeb5; - TH2F pulseshape_ch4_cfeb1; - TH2F pulseshape_ch4_cfeb2; - TH2F pulseshape_ch4_cfeb3; - TH2F pulseshape_ch4_cfeb4; - TH2F pulseshape_ch4_cfeb5; - TH2F pulseshape_ch5_cfeb1; - TH2F pulseshape_ch5_cfeb2; - TH2F pulseshape_ch5_cfeb3; - TH2F pulseshape_ch5_cfeb4; - TH2F pulseshape_ch5_cfeb5; - TH2F pulseshape_ch6_cfeb1; - TH2F pulseshape_ch6_cfeb2; - TH2F pulseshape_ch6_cfeb3; - TH2F pulseshape_ch6_cfeb4; - TH2F pulseshape_ch6_cfeb5; - TH2F pulseshape_ch7_cfeb1; - TH2F pulseshape_ch7_cfeb2; - TH2F pulseshape_ch7_cfeb3; - TH2F pulseshape_ch7_cfeb4; - TH2F pulseshape_ch7_cfeb5; - TH2F pulseshape_ch8_cfeb1; - TH2F pulseshape_ch8_cfeb2; - TH2F pulseshape_ch8_cfeb3; - TH2F pulseshape_ch8_cfeb4; - TH2F pulseshape_ch8_cfeb5; - TH2F pulseshape_ch9_cfeb1; - TH2F pulseshape_ch9_cfeb2; - TH2F pulseshape_ch9_cfeb3; - TH2F pulseshape_ch9_cfeb4; - TH2F pulseshape_ch9_cfeb5; -}; - diff --git a/OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h b/OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h deleted file mode 100644 index e7eb12aa537..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef CSCFitAFEBThr_h -#define CSCFitAFEBThr_h - -/** \class CSCFitAFEBThr - * - * Concrete algorithmic class used to identify threshold and noise in - * AFEB channel threshold scan in the endcap muon CSCs. - * Based on CSCFitSCAPulse as an example - */ - -#include <Minuit2/VariableMetricMinimizer.h> - -using namespace ROOT::Minuit2; - -class CSCThrTurnOnFcn; - -class CSCFitAFEBThr { - -public: - CSCFitAFEBThr(); - virtual ~CSCFitAFEBThr(); - -/// Find the threshold and noise from the threshold turn-on curve. -/// The returned bool is success/fail status. - virtual bool ThresholdNoise(const std::vector<float> & inputx, - const std::vector<float> & inputy, - const int & npulses, - std::vector<int> & dacoccup, - std::vector<float> & mypar, - std::vector<float> & ermypar, - float & ercorr, - float & chisq, - int & ndf, - int & niter, - float & edm - ) const; -private: - ModularFunctionMinimizer* theFitter; - CSCThrTurnOnFcn* theOBJfun; -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h deleted file mode 100644 index 13b06cbebd1..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Analyzer for reading gains information - * author S. Durkin, O.Boeriu - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCGains.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TFile.h" -#include "TTree.h" -#include "TH2F.h" - -class TCalibGainEvt { - public: - Float_t slope; - Float_t intercept; - Float_t chi2; - Int_t strip; - Int_t layer; - Int_t cham; - Int_t id; - Int_t flagGain; - Int_t flagIntercept; -}; - -class CSCGainAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCGainAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ga 468 -#define LAYERS_ga 6 -#define STRIPS_ga 80 -#define NUMBERPLOTTED_ga 10 -#define NUMMODTEN_ga 200 -#define DDU_ga 36 - - ~CSCGainAnalyzer(); - - private: - std::vector<int> newadc; - std::string chamber_id; - int eventNumber,evt,chamber_num,sector,i_chamber,i_layer,reportedChambers; - int fff,ret_code,length,strip,misMatch,NChambers,Nddu,record; - time_t rawtime; - int dmbID[CHAMBERS_ga],crateID[CHAMBERS_ga],size[CHAMBERS_ga]; - float gainSlope,gainIntercept; - float adcMax[DDU_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float adcMean_max[DDU_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float maxmodten[NUMMODTEN_ga][CHAMBERS_ga][LAYERS_ga][STRIPS_ga]; - float newGain[480]; - float newIntercept[480]; - float newChi2[480]; - float myCharge[10]; - int lines,flagGain,flagIntercept; - std::ifstream filein; - std::string PSet,name; - bool debug; - TH2F adcCharge; -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCMap.h b/OnlineDB/CSCCondDB/interface/CSCMap.h deleted file mode 100644 index 51a47f21ee3..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCMap.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef GUARD_cscmap_H -#define GUARD_cscmap_H - -#include <iostream> -#include <occi.h> -#include <string> - -class cscmap -{ - private: - - oracle::occi::Environment *env; - oracle::occi::Connection *con; - - public : - /** - * Constructor for cscmap - */ - cscmap () throw (oracle::occi::SQLException); - /** - * Destructor for cscmap - */ - ~cscmap () throw (oracle::occi::SQLException); - -/* Method 'crate0_chamber' returns for a given logical crate -| number 'crate0' (values 0-59) and DMB number 'dmb' -| (1-5,7-10; for station 4 (no ring 2) DMB No 1-3) -| chamber identifiers: 'chamber_id' is a string like 'ME+2/2/27' -| and 'chamber_num' - a corresponding numeric identifier: -| 'ME+2/2/27' => 220122270. Digits from left to right mean: -| 2 - Muon system, 2 - CSC (1=DT,3=RPC), 0 - to separate from further -| digits, 1 - +Endcap (2 - -Endcap), 2 - station number, 2 - ring number, -| 27 - chamber number, 0 - digit reserved for layer number (=0 for -| the whole chamber). 'sector' - returns trigger sector number. -| If 'chamber_num' and 'sector' return -100, it means that 'crate0' -| is outside the permitted range; -10 means that 'dmb' is outside -| the permitted range. -*/ - void crate0_chamber (int crate0, int dmb, std::string *chamber_id, - int *chamber_num, int *sector); -/* Method 'crate_chamber' returns similar to previous information, -| but for physical (installed) 'crate' number. By now (2005/11/16) -| only 2 crates are installed (0 and 1). -| -1 returned means that infor mation for non-installed crate is requested. -*/ - void crate_chamber (int crate, int dmb, std::string *chamber_id, - int *chamber_num, int *sector); -/* Method 'chamber_crate' returns information for a given chamber, -| 'chamber_id', (like 'ME+2/2/27'). 'crate' - physical (installed) -| crate number (-1 means that crate for the given chamber is not -| installed), 'dmb' - DMB number (1-5,7-10), 'sector' - trigger sector -| number, 'chamber_num' - numeric chamber identifier (see above), -| 'crate0' - logical crate number. -| -100 returned means that 'chamber_id' format is incorrect. -*/ - void chamber_crate (std::string chamber_id, int *crate, int *dmb, - int *sector, int *chamber_num, int *crate0); - -}; // end of class cscmap -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h deleted file mode 100644 index 6c4ad75ffc5..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h +++ /dev/null @@ -1,74 +0,0 @@ -/** - * Analyzer for reading bin by bin ADC information - * author S.Durkin, O.Boeriu - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/AutoCorrMat.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCNoiseMatrix.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TDirectory.h" -#include "TCanvas.h" - -class TCalibNoiseMatrixEvt { - public: - Float_t elem[12]; - Int_t strip; - Int_t layer; - Int_t cham; - Int_t id; - Int_t flagMatrix; -}; - -class CSCNoiseMatrixAnalyzer : public edm::EDAnalyzer { - - public: - explicit CSCNoiseMatrixAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_ma 468 -#define LAYERS_ma 6 -#define STRIPS_ma 80 -#define DDU_ma 36 - - ~CSCNoiseMatrixAnalyzer(); - - private: - // variables persistent across events should be declared here. - std::vector<int> adc; - std::string chamber_id; - int eventNumber,evt,strip,misMatch,NChambers,Nddu; - int i_chamber,i_layer,reportedChambers,fff,ret_code,length,chamber_num,sector,record; - int dmbID[CHAMBERS_ma],crateID[CHAMBERS_ma],size[CHAMBERS_ma]; - int lines,flagMatrix; - std::ifstream filein; - std::string PSet,name; - bool debug; - float *tmp, corrmat[12]; - float newMatrix1[480]; - float newMatrix2[480]; - float newMatrix3[480]; - float newMatrix4[480]; - float newMatrix5[480]; - float newMatrix6[480]; - float newMatrix7[480]; - float newMatrix8[480]; - float newMatrix9[480]; - float newMatrix10[480]; - float newMatrix11[480]; - float newMatrix12[480]; - - Chamber_AutoCorrMat cam[CHAMBERS_ma]; -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCOnlineDB.h b/OnlineDB/CSCCondDB/interface/CSCOnlineDB.h deleted file mode 100644 index 6fc3ab094ce..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCOnlineDB.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef GUARD_condbon_H -#define GUARD_condbon_H - -#include <cstdlib> -#include <iostream> -#include <sstream> -#include <occi.h> -#include <string> -#include <time.h> -#include <stdlib.h> -#include <stdio.h> -#include "CondFormats/CSCObjects/interface/CSCobject.h" - -#include <vector> -#include <map> - -class condbon -{ - private: - - oracle::occi::Environment *env; - oracle::occi::Connection *con; - oracle::occi::Statement *stmt, *stmt1; - - public : - /** - * Constructor for condbon - */ - condbon () throw (oracle::occi::SQLException); - /** - * Destructor for condbon - */ - ~condbon () throw (oracle::occi::SQLException); -/* time should be given in format like "Fri May 26 16:55:51 2006" */ - void cdbon_write (CSCobject *obj, std::string obj_name, int record, - std::string time); - void cdbon_last_record (std::string obj_name, int *record); - void cdbon_read_rec (std::string obj_name, int record, CSCobject *obj); - - }; // end of class condbon -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h deleted file mode 100644 index 1ec28b15cbb..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h +++ /dev/null @@ -1,109 +0,0 @@ -/** - * Analyzer for reading gains saturation information - * author S. Durkin, O.Boeriu 18/03/06 - * - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TFile.h" -#include "TTree.h" -#include "TH2F.h" - -class TCalibSaturationEvt { - public: - Int_t strip; - Int_t layer; - Int_t cham; - Int_t id; - Float_t N; - Float_t a; - Float_t b; - Float_t c; -}; - -class CSCSaturationAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCSaturationAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_sat 9 -#define LAYERS_sat 6 -#define STRIPS_sat 80 -#define NUMBERPLOTTED_sat 24 -#define NUMMODTEN_sat 480 -#define DDU_sat 2 - - ~CSCSaturationAnalyzer(); - float (*charge_ptr)[NUMBERPLOTTED_sat]; - float (*adc_ptr)[NUMMODTEN_sat]; - - private: - std::vector<int> newadc; - std::string chamber_id; - int eventNumber,evt,chamber_num,sector,i_chamber,i_layer,reportedChambers; - int fff,ret_code,length,strip,misMatch,NChambers,Nddu,record; - time_t rawtime; - int dmbID[CHAMBERS_sat],crateID[CHAMBERS_sat],size[CHAMBERS_sat]; - float adcMax[DDU_sat][CHAMBERS_sat][LAYERS_sat][STRIPS_sat]; - float adcMean_max[DDU_sat][CHAMBERS_sat][LAYERS_sat][STRIPS_sat]; - float maxmodten[NUMMODTEN_sat][CHAMBERS_sat][LAYERS_sat][STRIPS_sat]; - int lines; - std::ifstream filein; - std::string PSet,name; - bool debug; - float myCharge[24],mySatADC[24],aVar,bVar; - TH2F adc_vs_charge; - TH2F adc01_vs_charge; - TH2F adc02_vs_charge; - TH2F adc03_vs_charge; - TH2F adc04_vs_charge; - TH2F adc05_vs_charge; - TH2F adc11_vs_charge; - TH2F adc12_vs_charge; - TH2F adc13_vs_charge; - TH2F adc14_vs_charge; - TH2F adc15_vs_charge; - TH2F adc21_vs_charge; - TH2F adc22_vs_charge; - TH2F adc23_vs_charge; - TH2F adc24_vs_charge; - TH2F adc25_vs_charge; - TH2F adc31_vs_charge; - TH2F adc32_vs_charge; - TH2F adc33_vs_charge; - TH2F adc34_vs_charge; - TH2F adc35_vs_charge; - TH2F adc41_vs_charge; - TH2F adc42_vs_charge; - TH2F adc43_vs_charge; - TH2F adc44_vs_charge; - TH2F adc45_vs_charge; - TH2F adc51_vs_charge; - TH2F adc52_vs_charge; - TH2F adc53_vs_charge; - TH2F adc54_vs_charge; - TH2F adc55_vs_charge; - TH2F adc61_vs_charge; - TH2F adc62_vs_charge; - TH2F adc63_vs_charge; - TH2F adc64_vs_charge; - TH2F adc65_vs_charge; - TH2F adc71_vs_charge; - TH2F adc72_vs_charge; - TH2F adc73_vs_charge; - TH2F adc74_vs_charge; - TH2F adc75_vs_charge; - TH2F adc81_vs_charge; - TH2F adc82_vs_charge; - TH2F adc83_vs_charge; - TH2F adc84_vs_charge; - TH2F adc85_vs_charge; - -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h b/OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h deleted file mode 100644 index 7f44057ab2b..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef CSCCalibration_CSCThrTurnOnFcn_h -#define CSCCalibration_CSCThrTurnOnFcn_h - - -/** \class CSCThrTurnOnFcn - * - * Model functional form for fitting AFEB turn-on threshold - * information from Muon Endcap CSC's. This version - * is for ROOT Minuit2. Based on CSCPulseHeightFcn as an example. - * - */ - -#include "Minuit2/FCNBase.h" -#include <vector> - -using namespace ROOT::Minuit2; -using std::vector; - - -class CSCThrTurnOnFcn : public FCNBase { - -private: - /// data - std::vector<float> xdata; - std::vector<float> ydata; - std::vector<float> ery; - float norm; - -public: - ///Cache the current data, x and y - void setData(const std::vector<float> & x, const std::vector<float> & y) { - for(unsigned int i=0;i<x.size();i++) { - xdata.push_back(x[i]); ydata.push_back(y[i]); - } -}; - - /// Set the errors - void setErrors(const std::vector<float> & er) { - for(unsigned int i=0;i<er.size();i++) ery.push_back(er[i]); - }; - - /// Set the norm (if needed) - void setNorm(float n) {norm=n;}; - - /// Provide the chi-squared function for the given data - virtual double operator() (const std::vector<double>&) const; - - ///@@ What? - virtual double Up() const {return 1.;} - -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCToAFEB.h b/OnlineDB/CSCCondDB/interface/CSCToAFEB.h deleted file mode 100644 index 25146c9dfc7..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCToAFEB.h +++ /dev/null @@ -1,135 +0,0 @@ -#ifndef CSCToAFEB_h -#define CSCToAFEB_h - -/**\class CSCToAFEB - * - * CSC layer, wire vs AFEB channel map. - * - * \author N. Terentiev, CMU - */ - -class CSCToAFEB{ - -private: - int layer_wire_to_channel_[6][8]; - int layer_wire_to_board_[6][8]; - int station_ring_to_nmxafeb_[4][3]; - int station_ring_to_nmxwire_[4][3]; -public: - - /// Constructor - -CSCToAFEB (){ - - for(int i=1; i<=6; i++) for(int j=1;j<=8;j++) { - if(i==1 || i==3 || i==5) { - if(j<5) layer_wire_to_channel_[i-1][j-1] =j+4; - if(j>4) layer_wire_to_channel_[i-1][j-1] =j+8; - } - if(i==2 || i==4 || i==6) { - if(j<5) layer_wire_to_channel_[i-1][j-1] =j; - if(j>4) layer_wire_to_channel_[i-1][j-1] =j+4; - } - } - - for(int i=1; i<=6; i++) for(int j=1;j<=8;j++) - layer_wire_to_board_[i-1][j-1]=(i-1)/2+1; - - for(int i=1; i<=4; i++) for(int j=1;j<=3;j++) { - if(i==1) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=18; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=12; - } - if(i==2) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=42; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - if(i==3) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=36; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - if(i==4) { - if(j==1) station_ring_to_nmxafeb_[i-1][j-1]=36; - if(j==2) station_ring_to_nmxafeb_[i-1][j-1]=24; - if(j==3) station_ring_to_nmxafeb_[i-1][j-1]=0; - } - } - - for(int i=1; i<=4; i++) for(int j=1;j<=3;j++) { - if(i==1) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=48; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=32; - } - if(i==2) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=112; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - if(i==3) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=96; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - if(i==4) { - if(j==1) station_ring_to_nmxwire_[i-1][j-1]=96; - if(j==2) station_ring_to_nmxwire_[i-1][j-1]=64; - if(j==3) station_ring_to_nmxwire_[i-1][j-1]=0; - } - } - - - /* - layer_wire_to_channel_[6][8] = {{ 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }, - { 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }, - { 5,6,7,8,13,14,15,16 }, - { 1,2,3,4, 9,10,11,12 }}; - gives AFEB channel number for given layer and wire numbers. - - layer_wire_to_board_[6][8] = {{ 1,1,1,1,1,1,1,1 }, - { 1,1,1,1,1,1,1,1 }, - { 2,2,2,2,2,2,2,2 }, - { 2,2,2,2,2,2,2,2 }, - { 3,3,3,3,3,3,3,3 }, - { 3,3,3,3,3,3,3,3 }}; - gives position of AFEB in column for given layer and wire numbers. - - station_ring_to_nmxafeb_[4][3]= {{18?,24,12}, - {42, 24,0 }, - {36, 24,0 ], - {36, 24,0 }}; - gives max. # of AFEBs in CSC of different types for given station and ring. - - station_ring_to_nmxwire_[4][3]= {{48?,64,32}, - {112,64,0 }, - {96, 64,0 ], - {96, 64,0 }}; - gives max. # of wiregroups in one layer of CSC of different types - for given station and ring. - */ - } - - /// return AFEB channel number - int getAfebCh(int layer, int wiregroup) const; - /// return AFEB position number - int getAfebPos(int layer, int wiregroup) const; - /// return layer number - int getLayer(int afeb, int channel) const; - /// return wiregroup number - int getWireGroup(int afeb, int channel) const; - /// return max. number of AFEBs - int getMaxAfeb(int station, int ring) const; - /// return max. number of wiregroups per layer - int getMaxWire(int station, int ring) const; - - /// Print content - void print() const; - -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h b/OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h deleted file mode 100644 index 318d8ea0fcf..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * Analyzer for calculating CFEB SCA pedestal. - * author O.Boeriu - * runs over multiple DDUs - * takes variable size chambers & layers - * produces histograms & ntuple - */ - -#include <iostream> -#include <time.h> -#include <sys/stat.h> -#include <unistd.h> -#include <fstream> - -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TFile.h" -#include "TTree.h" -#include "TH1F.h" -#include "TH2F.h" -#include "TCanvas.h" - -class TCalibSCAEvt { - public: - Int_t strip; - Int_t layer; - Int_t cham; - Int_t ddu; - Float_t scaMeanVal; -}; - -class CSCscaAnalyzer : public edm::EDAnalyzer { - public: - explicit CSCscaAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - -#define CHAMBERS_sca 18 -#define LAYERS_sca 6 -#define STRIPS_sca 80 -#define TIMEBINS_sca 8 -#define DDU_sca 2 -#define Number_sca 96 -#define TOTALSTRIPS_sca 480 -#define TOTALEVENTS_sca 320 - - ~CSCscaAnalyzer(); - - - private: - - int eventNumber,evt,strip,misMatch,fff,ret_code,length,Nddu,myevt; - int chamber,layer,reportedChambers,chamber_num,sector,run,NChambers ; - int dmbID[CHAMBERS_sca],crateID[CHAMBERS_sca],size[CHAMBERS_sca]; - int value_adc[DDU_sca][CHAMBERS_sca][LAYERS_sca][STRIPS_sca][Number_sca]; - float value_adc_mean[DDU_sca][CHAMBERS_sca][LAYERS_sca][STRIPS_sca][Number_sca]; - std::vector<int> adc; - std::string chamber_id; - int lines; - std::ifstream filein; - std::string PSet,name; - bool debug; - int flag,my_scaValue; - float pedMean,my_scaValueMean; - int scaBlock,trigTime,lctPhase,power,cap,scaNumber; - - //root ntuple - TCalibSCAEvt calib_evt; - TBranch *calibevt; - TTree *calibtree; - TFile *calibfile; -}; diff --git a/OnlineDB/CSCCondDB/interface/CSCxTalk.h b/OnlineDB/CSCCondDB/interface/CSCxTalk.h deleted file mode 100644 index 6dd28997c7b..00000000000 --- a/OnlineDB/CSCCondDB/interface/CSCxTalk.h +++ /dev/null @@ -1,162 +0,0 @@ -#include <stdio.h> -#include <math.h> - - -class Conv{ - - public: - - Conv(){} - - //square wave fcn convoluted with 1/(t+2.5) - float elec(float t,float vs){ - float f; - if (t<=vs){ - f=log(t+2.5)-log(2.5); - } - else{ - f=log(t+2.5)-log(t-50+2.5); - } - return f; - }//end elec - - - //calculate single electron distribution in 6.25 ns steps - void mkbins(float vs){ - int i,k; - float t; - for(i=0;i<120;i++) conve[i]=0.0; - for(i=0;i<120;i++){ - for(k=0;k<16;k++){ - t=(6.25*i)+(k*0.625); - conve[i]=conve[i]+elec(t,vs); - } - } - } //end mkbins - - - //convolution function - void convolution(float *xleft_a, float *xleft_b, float *min_left, float *xright_a, float *xright_b, float *min_right, float *pTime){ - //void(convolution){ - - float max, cross0,cross2,min_l,min_r,sum_x=0.0,sumx2=0.; - float sum_y_left=0.0,sum_y_right=0.0,sum_xy_left=0.0,sum_xy_right=0.0; - float a_left=0.0,a_right=0.0,b_left=0.0,b_right=0.0,chi2_left=0.0,chi2_right=0.0,chi_left=0.0,chi_right=0.0; - float aleft=0.0,aright=0.0,bleft=0.0,bright=0.0; - int i,j,k,l,imax=0; - - for(l=0;l<3;l++){ - for(i=0;i<119;i++)conv[l][i]=0.0; - for(j=0;j<119;j++){ - for(k=0;k<119;k++){ - if(j+k<119)conv[l][j+k]=conv[l][j+k]+convd[l][j]*conve[k]; - } - } - } - max=0; - min_l=9999999999999999.0; - min_r=9999999999999999.0; - for(i=0;i<119;i++){ - if(conv[1][i]>max){ - max=conv[1][i]; - imax=i; - } - } - - //find the max peak time from 3 timebins when line intersects x axis a+b*x=0 -> x=-a/b - float time1=-999.0, time2=-999.0, time3=-999.0; - float data1=-999.0, data2=-999.0, data3=-999.0; - float peakTime=0.0; - - time1=imax-1; - time2=imax; - time3=imax+1; - - data1=conv[1][imax-1]; - data2=conv[1][imax]; - data3=conv[1][imax+1]; - - peakTime=(0.5)*((time1*time1*(data3-data2)+time2*time2*(data1-data3)+time3*time3*(data2-data1))/(time1*(data3-data2)+time2*(data1-data3)+time3*(data2-data1)))*6.25; - - for(l=0;l<3;l++){ - for(i=0;i<119;i++)conv[l][i]=conv[l][i]/max; - } - - int nobs = 0; - for (int j=0; j<119; j++){ - if (conv[1][j]>0.6) nobs++; - } - - for(i=0;i<119;i++){ - cross0=0.0; - cross2=0.0; - - if(conv[1][i]>0.6){ - cross0=conv[0][i]/(conv[0][i]+conv[1][i]+conv[2][i]); - cross2=conv[2][i]/(conv[0][i]+conv[1][i]+conv[2][i]); - - sum_x += i; - sum_y_left += cross0; - sum_y_right += cross2; - sumx2 += i*i; - sum_xy_left += i*cross0; - sum_xy_right += i*cross2; - } - } - - //LMS fitting straight line y=a+b*x - - bleft = ((nobs*sum_xy_left) - (sum_x * sum_y_left))/((nobs*sumx2) - (sum_x*sum_x)); - bright = ((nobs*sum_xy_right) - (sum_x * sum_y_right))/((nobs*sumx2) - (sum_x*sum_x)); - - aleft = ((sum_y_left*sumx2)-(sum_x*sum_xy_left))/((nobs*sumx2)-(sum_x*sum_x)); - aright = ((sum_y_right*sumx2)-(sum_x*sum_xy_right))/((nobs*sumx2)-(sum_x*sum_x)); - - for(i=0;i<119;i++ ){ - chi2_left += (cross0 -(aleft+(bleft*i)))*(cross0 -(aleft+(bleft*i))); - chi2_right += (cross2 -(aright+(bright*i)))*(cross2 -(aright+(bright*i))); - } - - if(chi_left<min_l){ - min_l=chi_left; - bleft=bleft; - aleft=aleft; - } - if(chi_right<min_r){ - min_r=chi_right; - bright=bright; - aright=aright; - } - - - //Now calculating parameters in ns to compensate for drift in peak time - b_left = bleft/6.25; - b_right = bright/6.25; - - a_left = aleft + (bleft*peakTime/6.25); - a_right = aright + (bright*peakTime/6.25); - - *xleft_a = a_left; - *xleft_b = b_left; - *min_left = chi2_left; - *xright_a = a_right; - *xright_b = b_right; - *min_right = chi2_right; - *pTime = peakTime; - - } //end CONVOLUTION - - ~Conv(){} - - - float convd[3][120]; - float nconvd[3][120]; - float conve[120]; - float conv[3][120]; - -private: - - - -} ; - diff --git a/OnlineDB/CSCCondDB/interface/SaturationFcn.h b/OnlineDB/CSCCondDB/interface/SaturationFcn.h deleted file mode 100644 index 0e8b903b28f..00000000000 --- a/OnlineDB/CSCCondDB/interface/SaturationFcn.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef SaturationFcn_h -#define SaturationFcn_h - -#include "Minuit2/FCNBase.h" -#include <vector> - -using namespace ROOT::Minuit2; - -class SaturationFcn : public FCNBase{ - - public: - - SaturationFcn(){} - - ~SaturationFcn(){} - - - void set_data(int N,float *charge_ptr,float *adc_ptr){ - - float x[24],y[24]; - - for(int i=0;i<N;i++){ - x[i]=charge_ptr[i]; - y[i]=adc_ptr[i]; - datx[i]=x[i]; - daty[i]=y[i]; - //printf("%d datx daty %f %f \n",i,datx[i],daty[i]); - } - x3start=(y[4]*x[1]-y[1]*x[4])/(x[1]-x[4]); - x0start=daty[13]-x3start; - x1start=(y[4]-y[1])/(x[4]-x[1])/x0start; - x2start=20.; - //printf(" x0-2start %f %f %f %f\n",x0start,x1start,x2start,x3start); - } - - virtual double Up() const {return 1.;} - - virtual double operator()(const std::vector<double>& x) const { - double chisq = 0.0; - int N=24; - for(int i=0;i<N;i++){ - double val=1.0+pow(x[1]*datx[i],x[2]); - double val2=1.0/x[2]; - val=x[0]*x[1]*datx[i]/pow(val,val2); - double tmp=(daty[i]-x[3]-val); - //printf(" dat: %d %f %f %f %f \n",i,datx[i],daty[i]-x[3],val,tmp); - chisq=chisq+tmp*tmp; - } - //printf("x0-3 %f %f %f %f chisq %f \n",x[0],x[1],x[2],x[3],chisq); - return chisq; - } - - double x0start; - double x1start; - double x2start; - double x3start; - - private: - - double datx[24],daty[24]; -}; - -#endif diff --git a/OnlineDB/CSCCondDB/interface/SaturationFit.h b/OnlineDB/CSCCondDB/interface/SaturationFit.h deleted file mode 100644 index 46734210a4b..00000000000 --- a/OnlineDB/CSCCondDB/interface/SaturationFit.h +++ /dev/null @@ -1,59 +0,0 @@ -#include "Minuit2/VariableMetricMinimizer.h" -#include "Minuit2/FunctionMinimum.h" -#include "Minuit2/MnPrint.h" - -#include <vector> -#include <cmath> -#include "OnlineDB/CSCCondDB/interface/SaturationFcn.h" - -using namespace ROOT::Minuit2; - -class SaturationFit{ - - public: - - SaturationFit(int N,float *charge_ptr,float *adc_ptr, float *u0_ptr, float *u1_ptr, float *u2_ptr, float*u3_ptr){ - double u[3],sigma[3],chisq; - VariableMetricMinimizer* pMinimizer=new VariableMetricMinimizer() ; - SaturationFcn* pFcn=new SaturationFcn(); - pFcn->set_data(N,charge_ptr,adc_ptr); - std::vector<double> par(4,0); - std::vector<double> err(4,0); - //printf(" about to fill pars \n"); - par[0]=pFcn->x0start; - par[1]=pFcn->x1start; - par[2]=pFcn->x2start; - par[3]=pFcn->x3start; - //printf(" pars: %f %f %f %f \n",par[0],par[1],par[2],par[3]); - err[0]=20.0; - err[1]=0.0001; - err[2]=1.0; - err[3]=20.0; - FunctionMinimum fmin = pMinimizer->Minimize(*pFcn, par, err, 1, 5000, 0.01); - if( !fmin.IsValid()){ - printf(" minuit did not converge \n"); - } else { - //std::cout<<"fit succeeded... results: "<<fmin<<std::endl; - chisq = fmin.Fval(); - u[0] = fmin.UserParameters().Value( static_cast<unsigned int>(0) ); - *u0_ptr=u[0]; - sigma[0] = fmin.UserParameters().Error( static_cast<unsigned int>(0) ); - u[1] = fmin.UserParameters().Value( static_cast<unsigned int>(1) ); - *u1_ptr=u[1]; - sigma[1] = fmin.UserParameters().Error( static_cast<unsigned int>(1) ); - u[2] = fmin.UserParameters().Value( static_cast<unsigned int>(2) ); - *u2_ptr=u[2]; - sigma[2] = fmin.UserParameters().Error( static_cast<unsigned int>(2) ); - u[3] = fmin.UserParameters().Value( static_cast<unsigned int>(3) ); - *u3_ptr=u[3]; - sigma[3] = fmin.UserParameters().Error( static_cast<unsigned int>(3) ); - //std::cout<<"fitresults: "<<u[0]<<" "<<u[1]<<" "<<u[2]<<" "<<u[3]<<std::endl; - - } - } - - ~SaturationFit(){} - - private: - -}; diff --git a/OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc deleted file mode 100644 index cdd07725681..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCAFEBAnalyzer.cc +++ /dev/null @@ -1,48 +0,0 @@ -#include <iostream> -#include <vector> -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h" - -CSCAFEBAnalyzer::CSCAFEBAnalyzer(edm::ParameterSet const& conf) { - - /// If your module takes parameters, here is where you would define - /// their names and types, and access them to initialize internal - /// variables. Example as follows: - - testname=conf.getParameter<std::string>("TestName"); - -if(testname=="AFEBThresholdScan") - analysisthr_.setup(conf.getParameter<std::string>("HistogramFile")); -if(testname=="AFEBConnectivity") - analysiscnt_.setup(conf.getParameter<std::string>("HistogramFile")); - - /// get labels for input tags - -CSCSrc_ = conf.getParameter<edm::InputTag>("CSCSrc"); - -} - -void CSCAFEBAnalyzer::analyze(edm::Event const& e,edm::EventSetup const& iSetup) { - - edm::Handle<CSCWireDigiCollection> wire_digis; - - /// For CSC unpacker - -// const char* modtag="cscunpacker"; -// e.getByLabel(modtag,"MuonCSCWireDigi",wire_digis); - e.getByLabel(CSCSrc_,wire_digis); - -if(testname=="AFEBThresholdScan") analysisthr_.analyze(*wire_digis); -if(testname=="AFEBConnectivity") analysiscnt_.analyze(*wire_digis); -} - -void CSCAFEBAnalyzer::endJob() { -if(testname=="AFEBThresholdScan") analysisthr_.done(); -if(testname=="AFEBConnectivity") analysiscnt_.done(); -} diff --git a/OnlineDB/CSCCondDB/src/CSCAFEBConnectAnalysis.cc b/OnlineDB/CSCCondDB/src/CSCAFEBConnectAnalysis.cc deleted file mode 100644 index ca2e2f68ae2..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCAFEBConnectAnalysis.cc +++ /dev/null @@ -1,356 +0,0 @@ -#include "OnlineDB/CSCCondDB/interface/CSCAFEBConnectAnalysis.h" -#include "OnlineDB/CSCCondDB/interface/CSCToAFEB.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TMath.h" - -CSCAFEBConnectAnalysis::CSCAFEBConnectAnalysis() { - -hist_file=0; // set to null - -nmbev=0; -nmbev_no_wire=0; -npulses=0; -nmblayers=6; -nmbpulses.resize(6,0); -pulsed_layer=0; - -m_csc_list.clear(); -m_res_for_db.clear(); - -mh_LayerNmbPulses.clear(); -mh_WireEff.clear(); -mh_WirePairCrosstalk.clear(); -mh_WireNonPairCrosstalk.clear(); -mh_Eff.clear(); -mh_PairCrosstalk.clear(); -mh_NonPairCrosstalk.clear(); - -mh_FirstTime.clear(); - -} - -void CSCAFEBConnectAnalysis::setup(const std::string& histoFileName) { - /// open the histogram file - hist_file=new TFile(histoFileName.c_str(),"RECREATE"); - hist_file->cd(); -} - -void CSCAFEBConnectAnalysis::bookForId(int flag, const int& idint, - const std::string& idstring ) { - hist_file->cd(); - - std::ostringstream ss; - - if(flag==1) { - ss <<idint<<"_Anode_First_Time"; - mh_FirstTime[idint]=new TH2F(ss.str().c_str(),"",675,0.0,675.0,50,0.0,10.0); - mh_FirstTime[idint]->GetXaxis()->SetTitle("(Layer-1)*Nwires+Wire"); - mh_FirstTime[idint]->GetYaxis()->SetTitle("Anode First Time Bin"); - mh_FirstTime[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==10) { - ss <<"Layer_Nmb_Pulses"; - mh_LayerNmbPulses[idint]=new TH1F(ss.str().c_str(),"",7,0.0,7.0); - mh_LayerNmbPulses[idint]->GetXaxis()->SetTitle("Layer"); - mh_LayerNmbPulses[idint]->GetYaxis()->SetTitle("Number of pulses"); - ss.str(""); // clear - } - - if(flag==101) { - ss <<idint<<"_Anode_Wire_Eff"; - mh_WireEff[idint]=new TH1F(ss.str().c_str(),"",675,0.0,675.0); - mh_WireEff[idint]->GetXaxis()->SetTitle("(Layer-1)*Nwires+Wire"); - mh_WireEff[idint]->GetYaxis()->SetTitle("Efficiency"); - ss.str(""); // clear - } - - if(flag==102) { - ss <<idint<<"_Anode_Eff"; - mh_Eff[idint]=new TH1F(ss.str().c_str(),"",110,-0.05,1.05); - mh_Eff[idint]->GetXaxis()->SetTitle("Efficiency"); - mh_Eff[idint]->GetYaxis()->SetTitle("Entries"); - ss.str(""); // clear - } - - if(flag==201) { - ss <<idint<<"_Anode_Wire_Pair_Layer_Crosstalk"; - mh_WirePairCrosstalk[idint]=new TH1F(ss.str().c_str(),"",675,0.0,675.0); - mh_WirePairCrosstalk[idint]->GetXaxis()->SetTitle("(Layer-1)*Nwires+Wire"); - mh_WirePairCrosstalk[idint]->GetYaxis()->SetTitle("Probability"); - ss.str(""); // clear - } - - if(flag==202) { - ss <<idint<<"_Anode_Pair_Layer_Crosstalk"; - mh_PairCrosstalk[idint]=new TH1F(ss.str().c_str(),"",70,-0.05,0.3); - mh_PairCrosstalk[idint]->GetXaxis()->SetTitle("Probability"); - mh_PairCrosstalk[idint]->GetYaxis()->SetTitle("Entries"); - ss.str(""); // clear - } - - if(flag==301) { - ss <<idint<<"_Anode_Wire_NonPair_Layer_Crosstalk"; - mh_WireNonPairCrosstalk[idint]=new TH1F(ss.str().c_str(),"",675,0.0,675.0); - mh_WireNonPairCrosstalk[idint]->GetXaxis()->SetTitle("(Layer-1)*Nwires+Wire"); - mh_WireNonPairCrosstalk[idint]->GetYaxis()->SetTitle("Probability"); - ss.str(""); // clear - } - - if(flag==302) { - ss <<idint<<"_Anode_NonPair_Layer_Crosstalk"; - mh_NonPairCrosstalk[idint]=new TH1F(ss.str().c_str(),"",70,-0.05,0.3); - mh_NonPairCrosstalk[idint]->GetXaxis()->SetTitle("Probability"); - mh_NonPairCrosstalk[idint]->GetYaxis()->SetTitle("Entries"); - ss.str(""); // clear - } - -} - -void CSCAFEBConnectAnalysis::hf1ForId(std::map<int, TH1*>& mp, int flag, -const int& id, float& x, float w) { - - std::map<int,TH1*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,w); -} - -void CSCAFEBConnectAnalysis::hf2ForId(std::map<int, TH2*>& mp, int flag, -const int& id, float& x, float& y, float w) { - - std::map<int,TH2*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,y,w); -} - - -/* Analyze the hits */ -void CSCAFEBConnectAnalysis::analyze(const CSCWireDigiCollection& wirecltn) { - -std::ostringstream ss; -std::map<int,std::vector<int> >::iterator viIt; -std::map<int, std::vector<std::vector<float> > >::iterator vvfIt; - -int current_layer; -float x,y; -m_wire_ev.clear(); - -/// Store pulses per plane - -nmbev++; -pulsed_layer++; -if(pulsed_layer==7) pulsed_layer=1; -nmbpulses[pulsed_layer-1]=nmbpulses[pulsed_layer-1]+1; - -//Anode wires - - CSCWireDigiCollection::DigiRangeIterator wiredetUnitIt; - if(wirecltn.begin() == wirecltn.end()) nmbev_no_wire++; - - if(wirecltn.begin() != wirecltn.end()) { - - for (wiredetUnitIt=wirecltn.begin(); - wiredetUnitIt!=wirecltn.end(); - ++wiredetUnitIt){ - - const CSCDetId& id = (*wiredetUnitIt).first; - const int idchamber=id.endcap()*10000 +id.station()*1000+ - id.ring()*100 +id.chamber(); - const int idlayer =id.endcap()*100000+id.station()*10000+ - id.ring()*1000+id.chamber()*10+id.layer(); - - const int maxwire=csctoafeb.getMaxWire(id.station(),id.ring()); - std::vector<int> wireplane(maxwire,0); - - const CSCWireDigiCollection::Range& range = (*wiredetUnitIt).second; - for (CSCWireDigiCollection::const_iterator digiIt = - range.first; digiIt!=range.second; ++digiIt){ - - int iwire=(*digiIt).getWireGroup(); - if(iwire<=maxwire) { - if(wireplane[iwire-1]==0) { - wireplane[iwire-1]=(*digiIt).getBeamCrossingTag()+1; - - /// Plot time bin of the first hit vs wires in layers - x=(id.layer()-1)*maxwire + iwire; - y=wireplane[iwire-1]; - hf2ForId(mh_FirstTime, 1, idchamber,x, y, 1.0); - - /// Mark given wire as wire having one hit - wireplane[iwire-1]=1; - - } // end if wireplane[iwire-1]==0 - } // end if iwire<=csctoafeb.getMaxWire(id.station(),id.ring() - } // end of for digis in layer - - if(m_wire_ev.count(idlayer)==0) m_wire_ev[idlayer]=wireplane; - - } // end of cycle on detUnit - - /// Fill maps - - for(viIt=m_wire_ev.begin(); viIt!=m_wire_ev.end(); ++viIt) { - const int idwirev=(*viIt).first; - const std::vector<int> wiretemp=(*viIt).second; - int nsize=4; - std::vector<float> zer(nsize,0); - vvfIt=m_res_for_db.find(idwirev); - if(vvfIt==m_res_for_db.end()) { - for(unsigned int j=0;j<wiretemp.size();j++) - m_res_for_db[idwirev].push_back(zer); - vvfIt=m_res_for_db.find(idwirev); - } - for(unsigned int i=0;i<(*viIt).second.size();i++) { - current_layer=(*viIt).first/10; - current_layer=(*viIt).first - current_layer*10; - /// Fill efficiency map - if(pulsed_layer==current_layer) { - vvfIt->second[i][1]=vvfIt->second[i][1]+ - (*viIt).second[i]; - } - /// Fill pair crosstalk map - if(pulsed_layer==1 || pulsed_layer==3 || pulsed_layer==5) - if(current_layer == (pulsed_layer+1)) - vvfIt->second[i][2]=vvfIt->second[i][2]+ - (*viIt).second[i]; - if(pulsed_layer==2 || pulsed_layer==4 || pulsed_layer==6) - if(current_layer == (pulsed_layer-1)) - vvfIt->second[i][2]=vvfIt->second[i][2]+ - (*viIt).second[i]; - /// Fill non-pair crosstalk map - if((pulsed_layer>2 && current_layer<3) || - (pulsed_layer!=3 && pulsed_layer!=4 && - current_layer>2 && current_layer<5) || - (pulsed_layer<5 && current_layer>4)) - vvfIt->second[i][3]=vvfIt->second[i][3]+ - (*viIt).second[i]; - } - } // end of adding hits to the maps - } // end of if(wirecltn.begin() != wirecltn.end()) -} // end of void CSCAFEBConnectAnalysis - - -void CSCAFEBConnectAnalysis::done() { - - float x,y; - - //This is for DB transfer -// CSCobject *cn = new CSCobject(); -// condbon *dbon = new condbon(); - - std::map<int, int>::iterator intIt; - std::map<int, std::vector<std::vector<float> > >::iterator vvfIt; - std::cout<<"Events analyzed "<<nmbev<<std::endl; - std::cout<<"Events no anodes "<<nmbev_no_wire<<std::endl<<std::endl; - - std::cout<<"Number of pulses per layer"<<std::endl; - for(int i=0;i<nmblayers;i++) std::cout <<" "<<nmbpulses[i]; - std::cout<<"\n"<<std::endl; - -// std::vector<float> inputx; -// std::vector<float> inputy; - - /// Fill number of pulses per layer, normalize the non-pair crosstalk, - /// make overal normalization, fill the plots - - for(int i=0;i<nmblayers;i++) { - x=i+1; - y=nmbpulses[i]; - hf1ForId(mh_LayerNmbPulses, 10, 1,x, y); - } - for(vvfIt=m_res_for_db.begin(); vvfIt!=m_res_for_db.end(); - ++vvfIt) { - int idlayer=(*vvfIt).first; - int idchmb=idlayer/10; - int layer=idlayer-idchmb*10; - for (unsigned int i=0;i<(*vvfIt).second.size();i++) { - (*vvfIt).second[i][0]=nmbpulses[layer-1]; - (*vvfIt).second[i][3]=(*vvfIt).second[i][3]/4.0; - (*vvfIt).second[i][1]=(*vvfIt).second[i][1]/(*vvfIt).second[i][0]; - (*vvfIt).second[i][2]=(*vvfIt).second[i][2]/(*vvfIt).second[i][0]; - (*vvfIt).second[i][3]=(*vvfIt).second[i][3]/(*vvfIt).second[i][0]; - - x=(layer-1)*(*vvfIt).second.size() + (i+1); - - /// Fill efficiency plot - y=(*vvfIt).second[i][1]; - hf1ForId(mh_WireEff, 101, idchmb,x, y); - hf1ForId(mh_Eff, 102, idchmb,y,1.0); - - /// Fill pair crosstalk - y=(*vvfIt).second[i][2]; - hf1ForId(mh_WirePairCrosstalk, 201, idchmb,x, y); - hf1ForId(mh_PairCrosstalk, 202, idchmb,y,1.0); - - /// Fill nonpair crosstalk - y=(*vvfIt).second[i][3]; - hf1ForId(mh_WireNonPairCrosstalk, 301, idchmb,x, y); - hf1ForId(mh_NonPairCrosstalk, 302, idchmb,y,1.0); - - } - } - std::cout<<"Size of map for DB "<<m_res_for_db.size()<<std::endl; - - std::cout<<"The following CSCs will go to DB"<<std::endl<<std::endl; - for(vvfIt=m_res_for_db.begin(); vvfIt!=m_res_for_db.end(); - ++vvfIt) { - int idchmb=(*vvfIt).first/10; - if(m_csc_list.count(idchmb)==0) m_csc_list[idchmb]=0; - if(m_csc_list.count(idchmb)>0) - m_csc_list[idchmb]=m_csc_list[idchmb]+(*vvfIt).second.size(); - } - int count=0; - for(intIt=m_csc_list.begin(); intIt!=m_csc_list.end(); - ++intIt) { - count++; - std::cout<<count<<" "<<" CSC "<<(*intIt).first<<" " - <<(*intIt).second<<std::endl; - } - std::cout<<std::endl; - -/* - /// Prepare for DB upload - - for(vvfIt=m_res_for_db.begin(); vvfIt!=m_res_for_db.end(); - ++vvfIt) { - int idlayer=(*vvfIt).first; - int size = (*vvfIt).second.size(); - cn->obj[idlayer].resize(size); - for (unsigned int i=0;i<(*vvfIt).second.size();i++) { - std::cout<<idlayer<<" "<<i+1<<" "; - for(int j=0;j<4;j++) std::cout<< (*vvfIt).second[i][j]<<" "; - std::cout<<std::endl; - - cn->obj[idlayer][i].resize(4); - cn->obj[idlayer][i][0] = (*vvfIt).second[i][0]; - cn->obj[idlayer][i][1] = (*vvfIt).second[i][1]; - cn->obj[idlayer][i][2] = (*vvfIt).second[i][2]; - cn->obj[idlayer][i][3] = (*vvfIt).second[i][3]; - } - } - - /// Send data to DB - - dbon->cdbon_last_run("afeb_thresholds",&run); - std::cout<<"Last AFEB thresholds run "<<run<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn,"afeb_thresholds",run+1,myTime); -*/ - - if(hist_file!=0) { // if there was a histogram file... - hist_file->Write(); // write out the histrograms - delete hist_file; // close and delete the file - hist_file=0; // set to zero to clean up - std::cout << "Hist. file was closed\n"; - } - std::cout<<" End of CSCAFEBConnectAnalysis"<<std::endl; -} diff --git a/OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc b/OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc deleted file mode 100644 index 23a0b441fc5..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCAFEBThrAnalysis.cc +++ /dev/null @@ -1,420 +0,0 @@ -#include "OnlineDB/CSCCondDB/interface/CSCAFEBThrAnalysis.h" -#include "OnlineDB/CSCCondDB/interface/CSCToAFEB.h" -#include <OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h> -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "TMath.h" - -class CSCFitAFEBThr; - -CSCAFEBThrAnalysis::CSCAFEBThrAnalysis() { - -hist_file=0; // set to null - -nmbev=0; -nmbev_no_wire=0; - -npulses=100; -vecDac.clear(); -BegDac=1; -EndDac=29; -EvDac=1; -StepDac=1; -indDac=0; - -vecDacOccup.assign(150,0); -m_wire_dac.clear(); -m_res_for_db.clear(); -mh_ChanEff.clear(); -mh_FirstTime.clear(); -mh_AfebDac.clear(); - -} - -void CSCAFEBThrAnalysis::setup(const std::string& histoFileName) { - /// open the histogram file - hist_file=new TFile(histoFileName.c_str(),"RECREATE"); - hist_file->cd(); -} - -void CSCAFEBThrAnalysis::bookForId(int flag, const int& idint, - const std::string& idstring ) { - hist_file->cd(); - - std::ostringstream ss; - - if(flag==100) { - ss <<idint<<"_Anode_First_Time"; - mh_FirstTime[idint]=new TH2F(ss.str().c_str(),"",675,0.0,675.0,50,0.0,10.0); - mh_FirstTime[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_FirstTime[idint]->GetYaxis()->SetTitle("Anode First Time Bin"); - mh_FirstTime[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==101) { - ss <<idint<<"_Anode_Chan_Eff"; - mh_ChanEff[idint]=new TH1F(ss.str().c_str(),"",675,0.0,675.0); - mh_ChanEff[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_ChanEff[idint]->GetYaxis()->SetTitle("Entries"); - ss.str(""); // clear - } - - if(flag==200) { - ss <<idint<<"_Anode_AfebDac"; - mh_AfebDac[idint]=new TH2F(ss.str().c_str(),"",75,0.0,75.0, 50,0.0,50.0); - mh_AfebDac[idint]->GetXaxis()->SetTitle("Threshold DAC"); - mh_AfebDac[idint]->GetYaxis()->SetTitle("AFEB Channel Occupancy"); - mh_AfebDac[idint]->SetOption("COL"); - ss.str(""); // clear - } - - if(flag==300) { - ss <<idint<<"_Anode_AfebThrPar"; - mh_AfebThrPar[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,50.0); - mh_AfebThrPar[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebThrPar[idint]->GetYaxis()->SetTitle("AFEB Channel Threshold (DAC)"); - mh_AfebThrPar[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==400) { - ss <<idint<<"_Anode_AfebNoisePar"; - mh_AfebNoisePar[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,5.0); - mh_AfebNoisePar[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebNoisePar[idint]->GetYaxis()->SetTitle("AFEB Channel Noise (DAC)"); - mh_AfebNoisePar[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==500) { - ss <<idint<<"_Anode_AfebNDF"; - mh_AfebNDF[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 25,-5.0,20.0); - mh_AfebNDF[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebNDF[idint]->GetYaxis()->SetTitle("AFEB Channel Fit NDF"); - mh_AfebNDF[idint]->SetOption("BOX"); - ss.str(""); // clear - } - - if(flag==600) { - ss <<idint<<"_Anode_AfebChi2perNDF"; - mh_AfebChi2perNDF[idint]=new TH2F(ss.str().c_str(),"",700,0.0,700.0, 50,0.0,10.0); - mh_AfebChi2perNDF[idint]->GetXaxis()->SetTitle("(AFEB-1)*16+ch"); - mh_AfebChi2perNDF[idint]->GetYaxis()->SetTitle("AFEB Channel Fit Chi2/NDF"); - mh_AfebChi2perNDF[idint]->SetOption("BOX"); - ss.str(""); // clear - } -} - -void CSCAFEBThrAnalysis::hf1ForId(std::map<int, TH1*>& mp, int flag, -const int& id, float& x, float w) { - - std::map<int,TH1*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,w); -} - -void CSCAFEBThrAnalysis::hf2ForId(std::map<int, TH2*>& mp, int flag, -const int& id, float& x, float& y, float w) { - - std::map<int,TH2*>::iterator h; - h=mp.find(id); - if (h==mp.end()) { - bookForId(flag,id,""); - h=mp.find(id); - } - h->second->Fill(x,y,w); -} - - -/* Analyze the hits */ -void CSCAFEBThrAnalysis::analyze(const CSCWireDigiCollection& wirecltn) { - -std::ostringstream ss; -std::map<int,std::vector<int> >::iterator intIt; -std::map<int, std::vector<std::vector<int> > >::iterator wiredacIt; - -std::vector<int> vec; -int afeb,ch; -float x,y; - -m_wire_ev.clear(); - -/// Store DAC - -nmbev++; -//indDac=(nmbev-1)/EvDac; -float dac=BegDac+StepDac*indDac; -if(vecDac.size() <= indDac) vecDac.push_back(dac); - -//std::cout<<" Event "<<nmbev; -//std::cout<<" "<<indDac<<" "<<vecDac[indDac]<<std::endl; - -//Anode wires - - CSCWireDigiCollection::DigiRangeIterator wiredetUnitIt; - if(wirecltn.begin() == wirecltn.end()) nmbev_no_wire++; - - if(wirecltn.begin() != wirecltn.end()) { - - vecDacOccup[indDac]=vecDacOccup[indDac]+1; - - for (wiredetUnitIt=wirecltn.begin(); - wiredetUnitIt!=wirecltn.end(); - ++wiredetUnitIt){ - - const CSCDetId& id = (*wiredetUnitIt).first; - - const int idchamber=id.endcap()*10000 +id.station()*1000+ - id.ring()*100 +id.chamber(); - const int idlayer =id.endcap()*100000+id.station()*10000+ - id.ring()*1000+id.chamber()*10+id.layer(); - - // std::cout<<idchamber<<" "<<idlayer<<std::endl; - - const int maxwire=csctoafeb.getMaxWire(id.station(),id.ring()); - std::vector<int> wireplane(maxwire,0); - - const CSCWireDigiCollection::Range& range = (*wiredetUnitIt).second; - for (CSCWireDigiCollection::const_iterator digiIt = - range.first; digiIt!=range.second; ++digiIt){ - - int iwire=(*digiIt).getWireGroup(); - if(iwire<=maxwire) { - if(wireplane[iwire-1]==0) { - wireplane[iwire-1]=(*digiIt).getBeamCrossingTag()+1; - ch=csctoafeb.getAfebCh(id.layer(),(*digiIt).getWireGroup()); - afeb=csctoafeb.getAfebPos(id.layer(),(*digiIt).getWireGroup()); - - /// Plot time bin of the first hit vs AFEB channels - - x=(afeb-1)*16+ch; - y=wireplane[iwire-1]; - hf2ForId(mh_FirstTime, 100, idchamber,x, y, 1.0); - - } // end if wireplane[iwire-1]==0 - } // end if iwire<=csctoafeb.getMaxWire(id.station(),id.ring() - } // end of for digis in layer - - /// Store time bin of the first hit into map - - if(m_wire_ev.find(idlayer) == m_wire_ev.end()) - m_wire_ev[idlayer]=wireplane; - - } // end of cycle on detUnit - - - /// Accumulate hits into map of wires vs DAC - - for(intIt=m_wire_ev.begin(); intIt!=m_wire_ev.end(); ++intIt) { - const int idwirev=(*intIt).first; - const std::vector<int> wiretemp=(*intIt).second; // What for? - int nsize=EndDac-BegDac+1; - std::vector<int> zer(nsize,0); - - wiredacIt=m_wire_dac.find(idwirev); - if(wiredacIt==m_wire_dac.end()) { - for(unsigned int j=0;j<wiretemp.size();j++) - m_wire_dac[idwirev].push_back(zer); - wiredacIt=m_wire_dac.find(idwirev); -// std::cout<<idwirev<<" "<<wiredacIt->second.size()<<" "<< -// wiredacIt->second[0].size()<<std::endl; - } - for(unsigned int i=0;i<(*intIt).second.size();i++) - if((*intIt).second[i]>0) wiredacIt->second[i][indDac]= - wiredacIt->second[i][indDac]+1; - } // end of adding hits to the map of wire/DAC - } // end of if wire collection not empty - indDac++; - if(dac==(float)EndDac) indDac=0; -} // end of void CSCAFEBThrAnalysis - - -void CSCAFEBThrAnalysis::done() { - - float x,y; - - //This is for DB transfer - CSCobject *cn = new CSCobject(); - condbon *dbon = new condbon(); - - std::map<int, std::vector<std::vector<int> > >::iterator mwiredacIt; - std::map<int, std::vector<std::vector<float> > >::iterator mresfordbIt; - std::vector<int>::iterator vecIt; - - std::cout<<"Events analyzed "<<nmbev<<std::endl; - std::cout<<"Events no anodes "<<nmbev_no_wire<<std::endl<<std::endl; - - std::cout<<"DAC occupancy"<<std::endl; - int ndacsize=EndDac-BegDac+1; - for(int i=0;i<ndacsize;i++) std::cout - <<" "<<vecDacOccup[i]; - std::cout<<"\n\n"<<std::endl; - - std::vector<float> inputx; - std::vector<float> inputy; - - std::vector<float> mypar(2, 0.0); - std::vector<float> ermypar(2, 0.0); - float ercorr, chisq, edm; - int ndf,niter; - - int ch, afeb, idchmb; - - CSCFitAFEBThr * fitAnodeThr; - - std::vector<float> fitres(4,0); - -// std::cout<<"Threshold curves:\n"<<std::endl; - - for(mwiredacIt=m_wire_dac.begin();mwiredacIt!=m_wire_dac.end();++mwiredacIt){ - int idwiredac=(*mwiredacIt).first; - - int layer=idwiredac-(idwiredac/10)*10; - idchmb=idwiredac/10; - - for(int unsigned iwire=0; iwire<mwiredacIt->second.size();iwire++) { - - afeb=csctoafeb.getAfebPos(layer,iwire+1); - ch=csctoafeb.getAfebCh(layer,iwire+1); - int afebid=(idwiredac/10)*100+csctoafeb.getAfebPos(layer,iwire+1); - - indDac=0; - for(vecIt=mwiredacIt->second[iwire].begin(); - vecIt!=mwiredacIt->second[iwire].end(); ++vecIt) { - - x=vecDac[indDac]; y=*vecIt; - hf2ForId(mh_AfebDac, 200, afebid,x, y,1.0); - - /// Plot "efficiency" vs AFEB channels - if(indDac==0) { - x=(afeb-1)*16+ch; - y=*vecIt; - hf1ForId(mh_ChanEff, 101, idchmb, x, y); - } - - inputx.push_back(x); - inputy.push_back(y); - - indDac++; - } - // end of DAC cycle to form vectors of input data (inputx,inputy)for fit - -// std::cout<<afebid<<" "<<ch<<std::endl; -// for(unsigned int i=0;i<inputx.size();i++) -// std::cout<<" "<<inputy[i]; -// std::cout<<std::endl; - - - for(unsigned int i=0;i<2;i++) {mypar[i]=0.0; ermypar[i]=0.0;} - ercorr=0.0; - chisq=0.0; - ndf=0; - niter=0; - edm=0.0; - - /// Fitting threshold curve - fitAnodeThr=new CSCFitAFEBThr(); - -fitAnodeThr->ThresholdNoise(inputx,inputy,npulses,vecDacOccup,mypar,ermypar,ercorr,chisq,ndf,niter,edm); - delete fitAnodeThr; - -// std::cout<<"Fit "<<mypar[0]<<" "<<mypar[1]<<" "<<ndf<<" "<<chisq -// <<std::endl<<std::endl; - - /// Histogram fit results for given CSC vs wire defined as x=(afeb-1)*16+ch - - x=(afeb-1)*16+ch; - - /// Threshold - y=mypar[0]; - hf2ForId(mh_AfebThrPar, 300, idchmb,x, y, 1.0); - - /// Noise - y=mypar[1]; - hf2ForId(mh_AfebNoisePar, 400, idchmb,x, y, 1.0); - - /// NDF - y=ndf; - hf2ForId(mh_AfebNDF, 500, idchmb,x, y, 1.0); - - /// Chi2/NDF - y=0.0; - if(ndf>0) y=chisq/(float)ndf; - hf2ForId(mh_AfebChi2perNDF, 600, idchmb,x, y, 1.0); - - /// Prepare vector of fit results - fitres[0]=mypar[0]; - fitres[1]=mypar[1]; - fitres[2]=ndf; - fitres[3]=0.0; - if(ndf>0) fitres[3]=chisq/(float)ndf; - - /// Store fit results to map of wire vectors of vectors of results - - mresfordbIt=m_res_for_db.find(idwiredac); - if(mresfordbIt==m_res_for_db.end()) - m_res_for_db[idwiredac].push_back(fitres); - else m_res_for_db[idwiredac].push_back(fitres); - - inputx.clear(); - inputy.clear(); - -} // end for(int iwire=0) -} // end of iteration thru m_wire_dac map - - std::cout<<"Size of map for DB "<<m_res_for_db.size()<<std::endl; - - std::cout<<"The following CSCs will go to DB"<<std::endl<<std::endl; - - for(mresfordbIt=m_res_for_db.begin(); mresfordbIt!=m_res_for_db.end(); - ++mresfordbIt) { - int idlayer=(*mresfordbIt).first; - idchmb=idlayer/10; - int layer=idlayer-idchmb*10; - std::cout<<"CSC "<<idchmb<<" Layer "<<layer<<" " - <<(*mresfordbIt).second.size()<<std::endl; - } - - for(mresfordbIt=m_res_for_db.begin(); mresfordbIt!=m_res_for_db.end(); - ++mresfordbIt) { - int idlayer=(*mresfordbIt).first; - - //This is for DB transfer - int size = (*mresfordbIt).second.size(); - cn->obj[idlayer].resize(size); - - for (unsigned int i=0;i<(*mresfordbIt).second.size();i++) { - std::cout<<idlayer<<" "<<i+1<<" "; - - for(int j=0;j<4;j++) - std::cout<< (*mresfordbIt).second[i][j]<<" "; - std::cout<<std::endl; - - //This is for DB transfer - cn->obj[idlayer][i].resize(4); - cn->obj[idlayer][i][0] = (*mresfordbIt).second[i][0]; - cn->obj[idlayer][i][1] = (*mresfordbIt).second[i][1]; - cn->obj[idlayer][i][2] = (*mresfordbIt).second[i][2]; - cn->obj[idlayer][i][3] = (*mresfordbIt).second[i][3]; - } - } - - //send data to DB - //dbon->cdbon_last_run("afeb_thresholds",&run); - //std::cout<<"Last AFEB thresholds run "<<run<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - //if(debug) dbon->cdbon_write(cn,"afeb_thresholds",run+1,myTime); - - if(hist_file!=0) { // if there was a histogram file... - hist_file->Write(); // write out the histrograms - delete hist_file; // close and delete the file - hist_file=0; // set to zero to clean up - std::cout << "Hist. file was closed\n"; - } - - std::cout<<" End of CSCAFEBThrAnalysis"<<std::endl; -} diff --git a/OnlineDB/CSCCondDB/src/CSCCFEBConnectivityAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCCFEBConnectivityAnalyzer.cc deleted file mode 100644 index 4df66abf56f..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCCFEBConnectivityAnalyzer.cc +++ /dev/null @@ -1,233 +0,0 @@ -/** - * Analyzer for reading mean ADC from CFEB connectivity . - * author O.Boeriu 14/07/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h" - -CSCCFEBConnectivityAnalyzer::CSCCFEBConnectivityAnalyzer(edm::ParameterSet const& conf) { - - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber = 0,strip=0; - evt = 0,Nddu=0,misMatch=0; - chamber=0,layer=0,reportedChambers =0; - length = 1, NChambers=0; - - //initialize arrays - for (int ii=0;ii<DDU_con;ii++){ - for (int i=0; i<CHAMBERS_con; i++){ - for (int j=0; j<LAYERS_con; j++){ - for (int k=0; k<STRIPS_con;k++){ - adcMin[ii][i][j][k] = 9999999.0; - adcMax[ii][i][j][k] = -9999999.0; - adcMean_max[ii][i][j][k]=0.0; - adcMean_min[ii][i][j][k]=0.0; - diff[ii][i][j][k] = 0.0; - } - } - } - } -} - -void CSCCFEBConnectivityAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCStripDigiCollection> strips; - - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); - //event =e.id().event(); - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - evt++; - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) {std::cout<< "misMatched size!!!" << std::endl; misMatch++;continue;} - - for (chamber=0; chamber<NChambers; chamber++) {//loop over all DMBs - - for(layer = 1; layer <= 6; ++layer) {//loop over all layers in chambers - - std::vector<CSCStripDigi> digis = cscData[chamber].stripDigis(layer) ; - const CSCDMBHeader &thisDMBheader = cscData[chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){//check that CFEB data exists - - dmbID[chamber] = cscData[chamber].dmbHeader().dmbID(); //get DMB ID - crateID[chamber] = cscData[chamber].dmbHeader().crateID(); //get crate ID - if(crateID[chamber] == 255) continue; //255 doesn't exist - - for (unsigned int i=0; i<digis.size(); i++){ - size[chamber] = digis.size(); - strip = digis[i].getStrip(); - std::vector<int> adc = digis[i].getADCCounts(); - - for(unsigned int k=0; k<adc.size(); k++){ - - if(adc[k] > adcMax[iDDU][chamber][layer-1][strip-1]) { - adcMax[iDDU][chamber][layer-1][strip-1]= adc[k]; - } - - if(adc[k] < adcMin[iDDU][chamber][layer-1][strip-1]){ - adcMin[iDDU][chamber][layer-1][strip-1]= adc[k]; - } - - }//end timebins loop - - adcMean_max[iDDU][chamber][layer-1][strip-1] += adcMax[iDDU][chamber][layer-1][strip-1]/20.; - adcMean_min[iDDU][chamber][layer-1][strip-1] += adcMin[iDDU][chamber][layer-1][strip-1]/20.; - - }//end digis size - }//end if cfeb.available - }//end loop over layers - }//end loop over chambers - - if((evt-1)%20==0){ - for(int iii=0;iii<DDU_con;iii++){ - for(int ii=0; ii<CHAMBERS_con; ii++){ - for(int jj=0; jj<LAYERS_con; jj++){ - for(int kk=0; kk<STRIPS_con; kk++){ - adcMean_max[iii][ii][jj][kk]=0.0; - adcMean_min[iii][ii][jj][kk]=0.0; - } - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCCFEBConnectivityAnalyzer") << "end of event number " << eventNumber; - - } - } - } -} - -CSCCFEBConnectivityAnalyzer::~CSCCFEBConnectivityAnalyzer(){ - - //get time of Run file for DB transfer - filein.open("../test/CSCCFEBconnect.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - } - } - - //get name of run file from .cfg and name root output after that - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("bin",0); - string::size_type rootStart = name.find("Crosstalk",0); - int nameSize = runNameEnd+2-runNameStart; - int myRootSize = rootStart-runNameStart+8; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = "_conn.root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - //CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - //condbon *dbon = new condbon(); - - - //root ntuple - TCalibCFEBConnectEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","Connectivity"); - calibtree.Branch("EVENT", &calib_evt, "strip/I:layer/I:cham/I:ddu/I:adcMax/F:adcMin/F:diff/F:RMS/F"); - - for (int iii=0; iii<Nddu; iii++){ - for (int i=0; i<NChambers; i++){ - theRMS =0.0; - my_diffSquare=0.0; - - //get chamber ID from DB mapping - int new_crateID = crateID[i]; - int new_dmbID = dmbID[i]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - for (int j=0; j<LAYERS_con; j++){ - for (int k=0; k<size[i]; k++){ - - my_diff = adcMean_max[iii][i][j][k]- adcMean_min[iii][i][j][k]; - my_diffSquare = my_diff*my_diff; - std::cout<<"Chamber "<<i<<" Layer "<<j<<" Strip "<<k<<" diff "<<my_diff<<" RMS "<<theRMS<<std::endl; - theRMS = sqrt(abs(my_diffSquare - my_diff*my_diff)); - calib_evt.strip=k; - calib_evt.layer=j; - calib_evt.cham=i; - calib_evt.ddu=iii; - calib_evt.adcMin = adcMean_min[iii][i][j][k]; - calib_evt.adcMax = adcMean_max[iii][i][j][k]; - calib_evt.diff=my_diff; - calib_evt.RMS=theRMS; - - calibtree.Fill(); - } - } - } - } - calibfile.Write(); - calibfile.Close(); -} diff --git a/OnlineDB/CSCCondDB/src/CSCCompThreshAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCCompThreshAnalyzer.cc deleted file mode 100644 index f5a93d10f21..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCCompThreshAnalyzer.cc +++ /dev/null @@ -1,219 +0,0 @@ -/** - * Analyzer for reading CSC comapartor thresholds. - * author O.Boeriu 9/05/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h" - -CSCCompThreshAnalyzer::CSCCompThreshAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber = 0; - evt = 0,Nddu=0,misMatch=0,event=0; - i_chamber=0,i_layer=0,reportedChambers =0; - length = 1, NChambers=0; - timebin=-999,mycompstrip=-999,comparator=0,compstrip=0; - - for(int i=0;i<CHAMBERS_ct;i++){ - for(int j=0; j<LAYERS_ct; j++){ - for(int k=0; k<STRIPS_ct; k++){ - theMeanThresh[i][j][k] = 0.; - arrayMeanThresh[i][j][k] = 0.; - mean[i][j][k]=0.; - meanTot[i][j][k]=0.; - } - } - } - - for (int i=0; i<CHAMBERS_ct; i++){ - size[i] = 0; - } - -} - -void CSCCompThreshAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCStripDigiCollection> strips; - - // Pass the handle to the method "getByType", which is used to retrieve - // one and only one instance of the type in question out of event "e". If - // zero or more than one instance exists in the event an exception is thrown. - // - - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); - event =e.id().event(); - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - evt++; - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) {std::cout<< "misMatched size!!!" << std::endl; misMatch++;continue;} - - for (i_chamber=0; i_chamber<NChambers; i_chamber++) {//loop over all DMBs - if (cscData[i_chamber].nclct()) { - CSCCLCTData & clctData = cscData[i_chamber].clctData(); - }else { - std::cout<<" No CLCT!" <<std::endl; - continue; - } - CSCCLCTData & clctData = cscData[i_chamber].clctData(); - for(i_layer = 1; i_layer <= 6; ++i_layer) {//loop over all layers in chambers - //std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - std::vector<CSCComparatorDigi> comp = clctData.comparatorDigis(i_layer); - - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){//check that CFEB data exists - - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID(); //get DMB ID - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID(); //get crate ID - if(crateID[i_chamber] == 255) continue; //255 is reserved for old crate, present only 0 and 1 - - for (unsigned int i=0; i<comp.size(); i++){//loop over CFEB comparator digis - size[i_chamber] = comp.size(); - comparator = comp[i].getComparator(); - timebin = comp[i].getTimeBin() ; - compstrip = comp[i].getStrip(); - int this_comparator[4] = {4, 5, 6, 7}; - - for (int iii=0; iii<40; iii++){ - if ((compstrip == iii) && (comparator == this_comparator[0] || comparator == this_comparator[1])) { - mycompstrip = 0 + iii*2; - } else if ((compstrip == iii) && (comparator == this_comparator[2] || comparator == this_comparator[3])) { - mycompstrip = 1 + iii*2; - } - } - - mean[i_chamber][i_layer-1][mycompstrip] = comparator/5; - - }//end comp loop - - meanTot[i_chamber][i_layer-1][mycompstrip] +=mean[i_chamber][i_layer-1][mycompstrip]/25.; - - // On the 25th event - if (evt%25 == 0&&(mycompstrip)%16==(evt-1)/875){ - int tmp = int((evt-1)/25)%35 ; - meanmod[tmp][i_chamber][i_layer-1][mycompstrip] = meanTot[i_chamber][i_layer-1][mycompstrip]; - } - }//end if cfeb.available loop - }//end layer loop - }//end chamber loop - - if((evt-1)%25==0){ - for(int ii=0;ii<CHAMBERS_ct;ii++){ - for(int jj=0;jj<LAYERS_ct;jj++){ - for(int kk=0;kk<STRIPS_ct;kk++){ - mean[ii][jj][kk]=0.0; - meanTot[ii][jj][kk]=0.0; - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCCompThreshAnalyzer") << "end of event number " << eventNumber; - - }//end DDU loop - } - } -} - - -CSCCompThreshAnalyzer::~CSCCompThreshAnalyzer(){ - //get time of Run file for DB transfer - filein.open("../test/CSCcomp.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("bin",0); - string::size_type rootStart = name.find("CFEBComparator",0); - int nameSize = runNameEnd+3-runNameStart; - int myRootSize = rootStart-runNameStart+8; - std::string myname= name.substr(runNameStart,nameSize); - std::string myRootName= name.substr(runNameStart,myRootSize); - std::string myRootEnd = ".root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - for(int myChamber=0; myChamber<NChambers; myChamber++){ - - for (int i=0; i<NChambers; i++){ - if (myChamber !=i) continue; - - for (int j=0; j<LAYERS_ct; j++){ - for (int k=0; k<size[i]; k++){ - float meanThresh= meanTot[i][j][k]; - std::cout<<"Ch "<<i<<" Layer "<<j<<" strip "<<k<<" comparator threshold "<<meanThresh<<std::endl; - } - } - } - } -} diff --git a/OnlineDB/CSCCondDB/src/CSCCrossTalkAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCCrossTalkAnalyzer.cc deleted file mode 100644 index 2822e2da97c..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCCrossTalkAnalyzer.cc +++ /dev/null @@ -1,725 +0,0 @@ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" -#include "OnlineDB/CSCCondDB/interface/CSCxTalk.h" -#include "CondFormats/CSCObjects/interface/CSCcrosstalk.h" -#include "CondFormats/CSCObjects/interface/CSCPedestals.h" -#include "CondFormats/CSCObjects/interface/CSCobject.h" -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" - -CSCCrossTalkAnalyzer::CSCCrossTalkAnalyzer(edm::ParameterSet const& conf) { - - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0, Nddu=0,chamber=0; - strip=0,misMatch=0,max1 =-9999999.,max2=-9999999., min1=9999999.; - layer=0,reportedChambers=0; - length=1,myevt=0,flagRMS=-9,flagNoise=-9; - aPeak=0.0,sumFive=0.0,maxPed=-99999.0,maxRMS=-99999.0; - maxPeakTime=-9999.0, maxPeakADC=-999.0; - minPeakTime=9999.0, minPeakADC=999.0; - pedMean=0.0,evt=0,NChambers=0; - - //definition of histograms - xtime = TH1F("time", "time", 50, 0, 500 ); - pulseshape_ch1_cfeb1 = TH2F("pulse01","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch1_cfeb2 = TH2F("pulse02","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch1_cfeb3 = TH2F("pulse03","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch1_cfeb4 = TH2F("pulse04","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch1_cfeb5 = TH2F("pulse05","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch2_cfeb1 = TH2F("pulse11","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch2_cfeb2 = TH2F("pulse12","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch2_cfeb3 = TH2F("pulse13","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch2_cfeb4 = TH2F("pulse14","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch2_cfeb5 = TH2F("pulse15","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch3_cfeb1 = TH2F("pulse21","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch3_cfeb2 = TH2F("pulse22","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch3_cfeb3 = TH2F("pulse23","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch3_cfeb4 = TH2F("pulse24","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch3_cfeb5 = TH2F("pulse25","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch4_cfeb1 = TH2F("pulse31","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch4_cfeb2 = TH2F("pulse32","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch4_cfeb3 = TH2F("pulse33","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch4_cfeb4 = TH2F("pulse34","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch4_cfeb5 = TH2F("pulse35","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch5_cfeb1 = TH2F("pulse41","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch5_cfeb2 = TH2F("pulse42","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch5_cfeb3 = TH2F("pulse43","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch5_cfeb4 = TH2F("pulse44","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch5_cfeb5 = TH2F("pulse45","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch6_cfeb1 = TH2F("pulse51","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch6_cfeb2 = TH2F("pulse52","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch6_cfeb3 = TH2F("pulse53","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch6_cfeb4 = TH2F("pulse54","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch6_cfeb5 = TH2F("pulse55","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch7_cfeb1 = TH2F("pulse61","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch7_cfeb2 = TH2F("pulse62","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch7_cfeb3 = TH2F("pulse63","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch7_cfeb4 = TH2F("pulse64","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch7_cfeb5 = TH2F("pulse65","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch8_cfeb1 = TH2F("pulse71","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch8_cfeb2 = TH2F("pulse72","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch8_cfeb3 = TH2F("pulse73","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch8_cfeb4 = TH2F("pulse74","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch8_cfeb5 = TH2F("pulse75","strip72", 96,-100,500,100,-100,1100); - pulseshape_ch9_cfeb1 = TH2F("pulse81","strip8", 96,-100,500,100,-100,1100); - pulseshape_ch9_cfeb2 = TH2F("pulse82","strip24", 96,-100,500,100,-100,1100); - pulseshape_ch9_cfeb3 = TH2F("pulse83","strip40", 96,-100,500,100,-100,1100); - pulseshape_ch9_cfeb4 = TH2F("pulse84","strip56", 96,-100,500,100,-100,1100); - pulseshape_ch9_cfeb5 = TH2F("pulse85","strip72", 96,-100,500,100,-100,1100); - - ped_mean_all = TH1F("pedMean","Mean baseline noise", 100,300,900); - maxADC = TH1F("maxADC","Peak ADC", 100,800,1300); - - - for (int i=0;i<480;i++){ - new_xtalk_intercept_right[i] = -999.; - new_xtalk_intercept_left[i] = -999.; - new_xtalk_slope_right[i] = -999.; - new_xtalk_slope_left[i] = -999.; - new_rchi2[i] = -999.; - new_lchi2[i] = -999.; - newPeakTime[i] = -999.; - newMeanPeakTime[i] = -999.; - newPed[i] = 0 ; - newRMS[i] = 0.0; - newPeakRMS[i] = 0.0; - newPeak[i] = 0.0; - newPeakMin[i] = 0.0; - newSumFive[i] = 0.0; - } - - for (int l=0; l<TIMEBINS_xt; l++){ - myTime[l] = 0.0; - myADC[l] = 0.0; - myTbin[l] = 0; - } - - for (int i=0;i<CHAMBERS_xt;i++){ - size[i] = 0; - } - - for (int iii=0;iii<DDU_xt;iii++){ - for (int i=0; i<CHAMBERS_xt; i++){ - for (int j=0; j<LAYERS_xt; j++){ - for (int k=0; k<STRIPS_xt; k++){ - for (int l=0; l<TIMEBINS_xt*20; l++){ - thetime[iii][i][j][k][l] = 0.0; - thebins[iii][i][j][k][l] = 0 ; - theadccountsc[iii][i][j][k][l] = 0 ; - theadccountsl[iii][i][j][k][l] = 0 ; - theadccountsr[iii][i][j][k][l] = 0 ; - arrayOfPed[iii][i][j][k] = 0.; - arrayOfPedSquare[iii][i][j][k] = 0.; - arrayPed[iii][i][j][k] = 0.; - arrayPeak[iii][i][j][k] = 0.; - arrayPeakMin[iii][i][j][k] = 0.; - arrayOfPeak[iii][i][j][k] = 0.; - arrayOfPeakSquare[iii][i][j][k]= 0.; - arraySumFive[iii][i][j][k] = 0.; - - } - } - } - } - } - - - for (int iii=0;iii<DDU_xt;iii++){ - for (int i=0; i<CHAMBERS_xt; i++){ - for (int j=0; j<LAYERS_xt; j++){ - for (int k=0; k<STRIPS_xt; k++){ - xtalk_intercept_left[iii][i][j][k] = -999.; - xtalk_intercept_right[iii][i][j][k] = -999.; - xtalk_slope_left[iii][i][j][k] = -999.; - xtalk_slope_right[iii][i][j][k] = -999.; - xtalk_chi2_left[iii][i][j][k] = -999.; - xtalk_chi2_right[iii][i][j][k] = -999.; - myPeakTime[iii][i][j][k] = 0.0 ; - myMeanPeakTime[iii][i][j][k] = 0.0 ; - array_meanPeakTime[iii][i][j][k] = -999.; - } - } - } - } -} - -void CSCCrossTalkAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); //before 0_7_0_pre4 use getByLabel("DaqSource", rawdata) - myevt=e.id().event(); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++; continue;} - - for (int chamber = 0; chamber < NChambers; chamber++){ - - for (int layer = 1; layer <= 6; layer++){ - - std::vector<CSCStripDigi> digis = cscData[chamber].stripDigis(layer) ; - const CSCDMBHeader &thisDMBheader = cscData[chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[chamber] = cscData[chamber].dmbHeader().dmbID(); - crateID[chamber] = cscData[chamber].dmbHeader().crateID(); - if(crateID[chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[chamber] = digis.size(); - int strip = digis[i].getStrip(); - std::vector<int> adc = digis[i].getADCCounts(); - pedMean1 =(adc[0]+adc[1])/2; - int offset = (evt-1) / 20; - int smain[5],splus[5],sminus[5]; //5 for CFEBs - for(int s=0;s<5;s++) smain[s] = s*16+offset; - for(int s=0;s<5;s++) splus[s] = s*16+offset+1; - for(int s=0;s<5;s++) sminus[s] = s*16+offset-1; - int iuse=-99; - for(int s=0; s<5; s++) {if(strip-1==smain[s]) iuse=smain[s];} - for(int s=0; s<5; s++) {if(strip-1==splus[s]) iuse=smain[s];} - for(int s=0; s<5; s++) {if(strip-1==sminus[s]) iuse=smain[s];} - - if(iuse!=-99){ - - for(unsigned int k=0;k<adc.size();k++){ - time = (50. * k)-(((evt-1)%20)* 6.25)+116.5; - pedMean =(adc[0]+adc[1])/2; - ped_mean_all.Fill(pedMean); - xtime.Fill(time); - if(chamber==0 && strip==8) pulseshape_ch1_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==0 && strip==24) pulseshape_ch1_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==0 && strip==40) pulseshape_ch1_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==0 && strip==56) pulseshape_ch1_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==0 && strip==72) pulseshape_ch1_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==1 && strip==8) pulseshape_ch2_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==1 && strip==24) pulseshape_ch2_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==1 && strip==40) pulseshape_ch2_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==1 && strip==56) pulseshape_ch2_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==1 && strip==72) pulseshape_ch2_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==2 && strip==8) pulseshape_ch3_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==2 && strip==24) pulseshape_ch3_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==2 && strip==40) pulseshape_ch3_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==2 && strip==56) pulseshape_ch3_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==2 && strip==72) pulseshape_ch3_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==3 && strip==8) pulseshape_ch4_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==3 && strip==24) pulseshape_ch4_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==3 && strip==40) pulseshape_ch4_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==3 && strip==56) pulseshape_ch4_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==3 && strip==72) pulseshape_ch4_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==4 && strip==8) pulseshape_ch5_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==4 && strip==24) pulseshape_ch5_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==4 && strip==40) pulseshape_ch5_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==4 && strip==56) pulseshape_ch5_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==4 && strip==72) pulseshape_ch5_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==5 && strip==8) pulseshape_ch6_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==5 && strip==24) pulseshape_ch6_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==5 && strip==40) pulseshape_ch6_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==5 && strip==56) pulseshape_ch6_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==5 && strip==72) pulseshape_ch6_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==6 && strip==8) pulseshape_ch7_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==6 && strip==24) pulseshape_ch7_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==6 && strip==40) pulseshape_ch7_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==6 && strip==56) pulseshape_ch7_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==6 && strip==72) pulseshape_ch7_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==7 && strip==8) pulseshape_ch8_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==7 && strip==24) pulseshape_ch8_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==7 && strip==40) pulseshape_ch8_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==7 && strip==56) pulseshape_ch8_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==7 && strip==72) pulseshape_ch8_cfeb5.Fill(time,adc[k]-pedMean); - if(chamber==8 && strip==8) pulseshape_ch9_cfeb1.Fill(time,adc[k]-pedMean); - if(chamber==8 && strip==24) pulseshape_ch9_cfeb2.Fill(time,adc[k]-pedMean); - if(chamber==8 && strip==40) pulseshape_ch9_cfeb3.Fill(time,adc[k]-pedMean); - if(chamber==8 && strip==56) pulseshape_ch9_cfeb4.Fill(time,adc[k]-pedMean); - if(chamber==8 && strip==72) pulseshape_ch9_cfeb5.Fill(time,adc[k]-pedMean); - - myTime[k]=time; - myADC[k]=adc[k]; - myTbin[k]=k; - - aPeak = adc[3]; - if (max1 < aPeak) { - max1 = aPeak; - } - sumFive = adc[2]+adc[3]+adc[4]; - - if (max2<sumFive){ - max2=sumFive; - } - - if (min1 > aPeak){ - min1=aPeak; - } - - maxADC.Fill(max1-pedMean1); - - int kk=8*k-(evt-1)%20+19;//19 to zero everything, for binning 120 - - thebins[iDDU][chamber][layer-1][strip-1][kk] = 8*k-(evt-1)%20+19; - thetime[iDDU][chamber][layer-1][strip-1][kk] = time; - - if(iuse==strip-1) theadccountsc[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - if(iuse==strip) theadccountsr[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - if(iuse==strip-2) theadccountsl[iDDU][chamber][layer-1][iuse][kk] = adc[k]; - }//adc.size() - }//end iuse!=99 - - arrayPed[iDDU][chamber][layer-1][strip-1] = pedMean1; - arrayOfPed[iDDU][chamber][layer-1][strip-1] += pedMean1; - arrayOfPedSquare[iDDU][chamber][layer-1][strip-1] += pedMean1*pedMean1 ; - arrayPeak[iDDU][chamber][layer-1][strip-1] = max1-pedMean1; - arrayPeakMin[iDDU][chamber][layer-1][strip-1] = min1; - arrayOfPeak[iDDU][chamber][layer-1][strip-1] += max1-pedMean1; - arrayOfPeakSquare[iDDU][chamber][layer-1][strip-1] += (max1-pedMean1)*(max1-pedMean1); - arraySumFive[iDDU][chamber][layer-1][strip-1] = (max2-pedMean1)/(max1-pedMean1); - - }//end loop over digis - }//end cfeb.available loop - }//end loop over layers - }//end loop over chambers - - eventNumber++; - edm::LogInfo ("CSCCrossTalkAnalyzer") << "end of event number " << eventNumber; - - } - } - } -} - -CSCCrossTalkAnalyzer::~CSCCrossTalkAnalyzer(){ - std::cout << "entering destructor " << std::endl; - - Conv binsConv; - //get time of Run file for DB transfer - filein.open("../test/CSCxtalk.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - } - } - - std::cout << "getting file name " << std::endl; - - //get name of run file from .cfg and name root output after that - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("raw",0); - string::size_type rootStart = name.find("Crosstalk",0); - int nameSize = runNameEnd+2-runNameStart; - int myRootSize = rootStart-runNameStart+8; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = ".root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - CSCobject *cn1 = new CSCobject(); - //cscmap *map = new cscmap(); - //condbon *dbon = new condbon(); - - //root ntuple - TCalibCrossTalkEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","Crosstalk"); - calibtree.Branch("EVENT", &calib_evt, "xtalk_slope_left/F:xtalk_slope_right/F:xtalk_int_left/F:xtalk_int_right/F:xtalk_chi2_left/F:xtalk_chi2_right/F:peakTime/F:strip/I:layer/I:cham/I:ddu/I:pedMean/F:pedRMS/F:peakRMS/F:maxADC/F:sum/F:id/I:flagRMS/I:flagNoise/I:MaxPed[9]/F:MaxRMS[9]/F:MaxPeakTime[9]/F:MinPeakTime[9]/F:MaxPeakADC[9]/F:MinPeakADC[9]/F"); - xtime.Write(); - ped_mean_all.Write(); - maxADC.Write(); - - pulseshape_ch1_cfeb1.Write(); - pulseshape_ch1_cfeb2.Write(); - pulseshape_ch1_cfeb3.Write(); - pulseshape_ch1_cfeb4.Write(); - pulseshape_ch1_cfeb5.Write(); - pulseshape_ch2_cfeb1.Write(); - pulseshape_ch2_cfeb2.Write(); - pulseshape_ch2_cfeb3.Write(); - pulseshape_ch2_cfeb4.Write(); - pulseshape_ch2_cfeb5.Write(); - pulseshape_ch3_cfeb1.Write(); - pulseshape_ch3_cfeb2.Write(); - pulseshape_ch3_cfeb3.Write(); - pulseshape_ch3_cfeb4.Write(); - pulseshape_ch3_cfeb5.Write(); - pulseshape_ch4_cfeb1.Write(); - pulseshape_ch4_cfeb2.Write(); - pulseshape_ch4_cfeb3.Write(); - pulseshape_ch4_cfeb4.Write(); - pulseshape_ch4_cfeb5.Write(); - pulseshape_ch5_cfeb1.Write(); - pulseshape_ch5_cfeb2.Write(); - pulseshape_ch5_cfeb3.Write(); - pulseshape_ch5_cfeb4.Write(); - pulseshape_ch5_cfeb5.Write(); - pulseshape_ch6_cfeb1.Write(); - pulseshape_ch6_cfeb2.Write(); - pulseshape_ch6_cfeb3.Write(); - pulseshape_ch6_cfeb4.Write(); - pulseshape_ch6_cfeb5.Write(); - pulseshape_ch7_cfeb1.Write(); - pulseshape_ch7_cfeb2.Write(); - pulseshape_ch7_cfeb3.Write(); - pulseshape_ch7_cfeb4.Write(); - pulseshape_ch7_cfeb5.Write(); - pulseshape_ch8_cfeb1.Write(); - pulseshape_ch8_cfeb2.Write(); - pulseshape_ch8_cfeb3.Write(); - pulseshape_ch8_cfeb4.Write(); - pulseshape_ch8_cfeb5.Write(); - pulseshape_ch9_cfeb1.Write(); - pulseshape_ch9_cfeb2.Write(); - pulseshape_ch9_cfeb3.Write(); - pulseshape_ch9_cfeb4.Write(); - pulseshape_ch9_cfeb5.Write(); - - ////////////////////////////////////////////////////////////////////iuse==strip-1 - // Now that we have filled our array, extract convd and nconvd - float adc_ped_sub_left = -999.; - float adc_ped_sub = -999.; - float adc_ped_sub_right = -999.; - int thebin; - float sum=0.0; - float mean=0; - - for (int iii=0; iii<Nddu; iii++){ - - for (int i=0; i<NChambers; i++){ - - //get chamber ID from DB mapping - int new_crateID = crateID[i]; - int new_dmbID = dmbID[i]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - //map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - //std::cout<<"Data is for chamber:: "<< chamber_num<<" in sector: "<<sector<<std::endl; - - calib_evt.id = chamber_num; - - meanPedestal = 0.0; - meanPeak = 0.0; - meanPeakSquare=0.0; - meanPedestalSquare = 0.; - theRMS =0.0; - thePedestal =0.0; - theRSquare =0.0; - thePeak =0.0; - thePeakMin =0.0;//minimum of the high's - thePeakRMS =0.0; - theSumFive =0.0; - - for (int j=0; j<LAYERS_xt; j++){ - mean=0.,sum=0.; - for (int s=0; s<size[i]; s++) { - //re-zero convd and nconvd - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - binsConv.convd[m][n] = 0.; - binsConv.nconvd[m][n] = 0.; - } - } - - for (int l=0; l < TIMEBINS_xt*20; l++){ - adc_ped_sub_left = theadccountsl[iii][i][j][s][l] - (theadccountsl[iii][i][j][s][0] + theadccountsl[iii][i][j][s][1])/2.; - adc_ped_sub = theadccountsc[iii][i][j][s][l] - (theadccountsc[iii][i][j][s][0] + theadccountsc[iii][i][j][s][1])/2.; - adc_ped_sub_right = theadccountsr[iii][i][j][s][l] - (theadccountsr[iii][i][j][s][0] + theadccountsr[iii][i][j][s][1])/2.; - - thebin=thebins[iii][i][j][s][l]; - - if (thebin >= 0 && thebin < 120){ - binsConv.convd[0][thebin] += adc_ped_sub_left; - binsConv.nconvd[0][thebin] += 1.0; - - binsConv.convd[1][thebin] += adc_ped_sub; - binsConv.nconvd[1][thebin] += 1.0; - - binsConv.convd[2][thebin] += adc_ped_sub_right; - binsConv.nconvd[2][thebin] += 1.0; - - } - } //loop over timebins - - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - if(binsConv.nconvd[m][n]>1.0 && binsConv.nconvd[m][n] !=0.){ - binsConv.convd[m][n] = binsConv.convd[m][n]/binsConv.nconvd[m][n]; - } - } - } - - // Call our functions first time to calculate mean pf peak time over a layer - float xl_temp_a = 0.0; - float xl_temp_b = 0.0; - float minl_temp = 0.0; - float xr_temp_a = 0.0; - float xr_temp_b = 0.0; - float minr_temp = 0.0; - float pTime = 0.0; - - binsConv.mkbins(50.); - binsConv.convolution(&xl_temp_a, &xl_temp_b, &minl_temp, &xr_temp_a, &xr_temp_b, &minr_temp, &pTime); - myPeakTime[iii][i][j][s] = pTime; - sum=sum+myPeakTime[iii][i][j][s]; - mean = sum/size[i]; - } - - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[i]); - cn1->obj[layer_id].resize(size[i]); - for (int k=0; k<size[i]; k++){ - // re-zero convd and nconvd - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - binsConv.convd[m][n] = 0.; - binsConv.nconvd[m][n] = 0.; - } - } - - for (int l=0; l < TIMEBINS_xt*20; l++){ - adc_ped_sub_left = theadccountsl[iii][i][j][k][l] - (theadccountsl[iii][i][j][k][0] + theadccountsl[iii][i][j][k][1])/2.; - adc_ped_sub = theadccountsc[iii][i][j][k][l] - (theadccountsc[iii][i][j][k][0] + theadccountsc[iii][i][j][k][1])/2.; - adc_ped_sub_right = theadccountsr[iii][i][j][k][l] - (theadccountsr[iii][i][j][k][0] + theadccountsr[iii][i][j][k][1])/2.; - - thebin=thebins[iii][i][j][k][l]; - - if (thebin >= 0 && thebin < 120){ - binsConv.convd[0][thebin] += adc_ped_sub_left; - binsConv.nconvd[0][thebin] += 1.0; - - binsConv.convd[1][thebin] += adc_ped_sub; - binsConv.nconvd[1][thebin] += 1.0; - - binsConv.convd[2][thebin] += adc_ped_sub_right; - binsConv.nconvd[2][thebin] += 1.0; - - } - } //loop over timebins - - for (int m=0; m<3; m++){ - for (int n=0; n<120; n++){ - if(binsConv.nconvd[m][n]>1.0 && binsConv.nconvd[m][n] !=0.){ - binsConv.convd[m][n] = binsConv.convd[m][n]/binsConv.nconvd[m][n]; - } - } - } - ////////////////////////////////////////////////////////////////// - // Call our functions a second time to calculate the cross-talk // - ////////////////////////////////////////////////////////////////// - float xl_temp_a = 0.; - float xl_temp_b = 0.; - float minl_temp = 0.; - float xr_temp_a = 0.; - float xr_temp_b = 0.; - float minr_temp = 0.; - float pTime = 0.; - - binsConv.mkbins(50.); - binsConv.convolution(&xl_temp_a, &xl_temp_b, &minl_temp, &xr_temp_a, &xr_temp_b, &minr_temp, &pTime); - - if (k==0){ - xtalk_intercept_left[iii][i][j][k] = 0.0; - xtalk_slope_left[iii][i][j][k] = 0.0; - xtalk_chi2_left[iii][i][j][k] = 0.0; - //right side is calculated - xtalk_slope_right[iii][i][j][k] = xl_temp_b; - xtalk_intercept_right[iii][i][j][k] = xl_temp_a; - xtalk_chi2_right[iii][i][j][k] = minl_temp; - myPeakTime[iii][i][j][k] = pTime; - }else if(k==size[i]-1){ - xtalk_intercept_right[iii][i][j][k] = 0.0; - xtalk_slope_right[iii][i][j][k] = 0.0; - xtalk_chi2_right[iii][i][j][k] = 0.0; - //left side is calculated - xtalk_intercept_left[iii][i][j][k] = xr_temp_a; - xtalk_slope_left[iii][i][j][k] = xr_temp_b; - xtalk_chi2_left[iii][i][j][k] = minr_temp; - myPeakTime[iii][i][j][k] = pTime; - }else{ - xtalk_intercept_left[iii][i][j][k] = xl_temp_a; - xtalk_intercept_right[iii][i][j][k] = xr_temp_a; - xtalk_slope_left[iii][i][j][k] = xl_temp_b; - xtalk_slope_right[iii][i][j][k] = xr_temp_b; - xtalk_chi2_left[iii][i][j][k] = minl_temp; - xtalk_chi2_right[iii][i][j][k] = minr_temp; - myPeakTime[iii][i][j][k] = pTime; - } - - fff = (j*size[i])+k; - float the_xtalk_left_a = xtalk_intercept_left[iii][i][j][k]; - float the_xtalk_right_a = xtalk_intercept_right[iii][i][j][k]; - float the_xtalk_left_b = xtalk_slope_left[iii][i][j][k]; - float the_xtalk_right_b = xtalk_slope_right[iii][i][j][k]; - float the_chi2_right = xtalk_chi2_right[iii][i][j][k]; - float the_chi2_left = xtalk_chi2_left[iii][i][j][k]; - float the_peakTime = myPeakTime[iii][i][j][k]; - - new_xtalk_intercept_right[fff] = the_xtalk_right_a ; - new_xtalk_intercept_left[fff] = the_xtalk_left_a ; - new_xtalk_slope_right[fff] = the_xtalk_right_b ; - new_xtalk_slope_left[fff] = the_xtalk_left_b ; - new_rchi2[fff] = the_chi2_right; - new_lchi2[fff] = the_chi2_left; - newPeakTime[fff] = the_peakTime; - newMeanPeakTime[fff] = the_peakTime-mean; - - //pedestal info - thePedestal = arrayPed[iii][i][j][k]; - meanPedestal = arrayOfPed[iii][i][j][k]/evt; - newPed[fff] = meanPedestal; - meanPedestalSquare = arrayOfPedSquare[iii][i][j][k] / evt; - theRMS = sqrt(abs(meanPedestalSquare - meanPedestal*meanPedestal)); - - newRMS[fff] = theRMS; - theRSquare = (thePedestal-meanPedestal)*(thePedestal-meanPedestal)/(theRMS*theRMS*theRMS*theRMS); - thePeak = arrayPeak[iii][i][j][k]; - thePeakMin = arrayPeakMin[iii][i][j][k]; - meanPeak = arrayOfPeak[iii][i][j][k] / evt; - meanPeakSquare = arrayOfPeakSquare[iii][i][j][k] / evt; - thePeakRMS = sqrt(abs(meanPeakSquare - meanPeak*meanPeak)); - newPeakRMS[fff] = thePeakRMS; - newPeak[fff] = thePeak; - newPeakMin[fff] = thePeakMin; - - theSumFive = arraySumFive[iii][i][j][k]; - newSumFive[fff]=theSumFive; - - if(maxPed<thePedestal){ - maxPed=thePedestal; - } - - if(maxRMS<theRMS){ - maxRMS=theRMS; - } - - if(maxPeakTime<the_peakTime){ - maxPeakTime=the_peakTime; - } - if(minPeakTime>the_peakTime){ - minPeakTime=the_peakTime; - } - - //introducing flags for RMS and baseline - if (theRMS >1.5 && theRMS <6.0) flagRMS = 1; // ok - if (theRMS>6.0 && theRMS<20.0) flagRMS = 2; // warning high CFEB noise - if (theRMS<1.5) flagRMS = 3; // warning/failure too low noise - if (theRMS>=20.0) flagRMS = 4; // warning/failure too high noise - - if (meanPedestal <50.) flagNoise = 2; // warning/failure too low pedestal - if (meanPedestal>50. && meanPedestal<200.) flagNoise = 3; // warning low pedestal - if (meanPedestal >1000. && meanPedestal<3000.) flagNoise = 4; // warning high pedstal - if (meanPedestal>3000.) flagNoise = 5; // warning/failure too high pedestal - if (meanPedestal>200. && meanPedestal<1000.) flagNoise = 1; // ok - - std::cout <<"Ch "<<i<<" L "<<j<<" S "<<k<<" ped "<<meanPedestal<<" RMS "<<theRMS<<" maxADC "<<thePeak<< "minADC of Max" << thePeakMin <<" IntL "<<the_xtalk_left_a<<" SL "<<the_xtalk_left_b<<" IntR "<<the_xtalk_right_a<<" SR "<<the_xtalk_right_b<<" flagRMS "<<flagRMS<<std::endl; - calib_evt.xtalk_slope_left = xtalk_slope_left[iii][i][j][k]; - calib_evt.xtalk_slope_right = xtalk_slope_right[iii][i][j][k]; - calib_evt.xtalk_int_left = xtalk_intercept_left[iii][i][j][k]; - calib_evt.xtalk_int_right = xtalk_intercept_right[iii][i][j][k]; - calib_evt.xtalk_chi2_left = xtalk_chi2_left[iii][i][j][k]; - calib_evt.xtalk_chi2_right = xtalk_chi2_right[iii][i][j][k]; - calib_evt.peakTime = myPeakTime[iii][i][j][k]; - calib_evt.cham = i; - calib_evt.ddu = iii; - calib_evt.layer = j; - calib_evt.strip = k; - calib_evt.flagRMS = flagRMS; - calib_evt.flagNoise = flagNoise; - calib_evt.pedMean = newPed[fff]; - calib_evt.pedRMS = newRMS[fff]; - calib_evt.peakRMS = newPeakRMS[fff]; - calib_evt.maxADC = newPeak[fff]; - calib_evt.sum = newSumFive[fff]; - calib_evt.MaxPed[i] = maxPed; - calib_evt.MaxRMS[i] = maxRMS; - calib_evt.MaxPeakTime[i] = maxPeakTime; - calib_evt.MinPeakTime[i] = minPeakTime; - calib_evt.MaxPeakADC[i] = newPeak[fff]; - calib_evt.MinPeakADC[i] = newPeakMin[fff]; - - calibtree.Fill(); - cn->obj[layer_id][k].resize(2); - cn->obj[layer_id][k][0] = meanPedestal; - cn->obj[layer_id][k][1] = theRMS; - cn1->obj[layer_id][k].resize(6); - cn1->obj[layer_id][k][0] = the_xtalk_right_b ; - cn1->obj[layer_id][k][1] = the_xtalk_right_a ; - cn1->obj[layer_id][k][2] = the_chi2_right; - cn1->obj[layer_id][k][3] = the_xtalk_left_b ; - cn1->obj[layer_id][k][4] = the_xtalk_left_a ; - cn1->obj[layer_id][k][5] = the_chi2_left; - - }//loop over strips - }//loop over layers - }//chambers - }//Nddu - - - //dbon->cdbon_last_record("pedestals",&record); - //std::cout<<"Last pedestal record "<<record<<std::endl; - //if(debug) dbon->cdbon_write(cn,"pedestals",11,myTime); - //dbon->cdbon_last_record("crosstalk",&record); - //if(debug) dbon->cdbon_write(cn1,"crosstalk",11,myTime); - //std::cout << "Last crosstalk record " << record << " for run file " << myname <<" saved "<< myTime << std::endl; - calibfile.Write(); - calibfile.Close(); - -} diff --git a/OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc b/OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc deleted file mode 100644 index fa0c69fb964..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCFitAFEBThr.cc +++ /dev/null @@ -1,142 +0,0 @@ -#include "Minuit2/VariableMetricMinimizer.h" -#include "Minuit2/FunctionMinimum.h" - -#include <OnlineDB/CSCCondDB/interface/CSCFitAFEBThr.h> -#include <OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h> - -#include <cmath> -#include <vector> -#include <iostream> - -using namespace ROOT::Minuit2; -using namespace std; - -CSCFitAFEBThr::CSCFitAFEBThr() { - theOBJfun = new CSCThrTurnOnFcn(); - theFitter = new VariableMetricMinimizer(); -} - -CSCFitAFEBThr::~CSCFitAFEBThr() { - delete theFitter; - delete theOBJfun; -} - -bool CSCFitAFEBThr::ThresholdNoise(const std::vector<float> & inputx, - const std::vector<float> & inputy, - const int & npulses, - std::vector<int> & dacoccup, - std::vector<float> & mypar, - std::vector<float> & ermypar, - float & ercorr, - float & chisq, - int & ndf, - int & niter, - float & edm - ) const { - bool status = false; - - std::vector<double> parinit(2,0); - std::vector<double> erparinit(2,0); - - /// initial parameters, parinit[0]-threshold, parinit[1]-noise - parinit[0] = 30.0; - parinit[1] = 2.0; - - erparinit[0] = 20; - erparinit[1] = 0.5; - - /// do not fit input[y]==max and input[y]==0.0; calculate binom. error; - std::vector<float> x; - std::vector<float> y; - std::vector<float> ynorm; - std::vector<float> ery; - x.clear(); - y.clear(); - ynorm.clear(); - ery.clear(); - - /// ndf > 0 if there is input data,number of points to fit > 2 and - /// fit did not fail. - /// ndf = 0 if number of points to fit = 2 - /// ndf =-1 .......................... = 1 - /// ndf =-2 .......................... = 0 - /// ndf =-3 fit failed (number of points to fit was > 2) - /// ndf =-4 no input data - - int sum=0; - float r; - for(unsigned int i=0;i<inputx.size();i++) { - if(inputy[i]>0.0) sum++; - r=inputy[i]/(float)dacoccup[i]; - ynorm.push_back(r); -// std::cout<<" "<<ynorm[i]; - } -// std::cout<<std::endl; - if(sum==0) { - ndf=-4; - return status; - } - - - int nbeg=inputx.size(); - for(unsigned int i=inputx.size()-1;i>=0;i--) { - if(ynorm[i]<1.0) nbeg--; - if(ynorm[i]==1.0) break; - } - - for(unsigned int i=nbeg;i<inputx.size();i++) { - if(ynorm[i]>0.0) { - x.push_back(inputx[i]); - y.push_back(ynorm[i]); - - float p=inputy[i]/(float)dacoccup[i]; - float s=(float)dacoccup[i] * p * (1.0-p); - s=sqrt(s)/(float)dacoccup[i]; - ery.push_back(s); - } - } - - /// do not fit data with less than 3 points - ndf=x.size()-2; - if(ndf <=0) return status; - - /// Calculate approximate initial threshold par[0] - float half=0.5; - float dmin=999999.0; - float diff; - for(unsigned int i=0;i<x.size();i++) { - diff=y[i]-half; if(diff<0.0) diff=-diff; - if(diff<dmin) {dmin=diff; parinit[0]=x[i];} // par[0] from data - //cout<<i+1<<" "<<x[i]<<" "<<y[i]<<" "<<ery[i]<<endl; - } - - /// store data, errors and npulses for fit - theOBJfun->setData(x,y); - theOBJfun->setErrors(ery); - theOBJfun->setNorm(1.0); - - // for(unsigned int i=0;i<x.size();i++) std::cout<<" "<<x[i]<<" "<<y[i] - // <<" "<<ery[i]<<std::endl; - - /// Fit as 1D, <=500 iterations, edm=10**-5 (->0.1) - FunctionMinimum fmin=theFitter->Minimize(*theOBJfun,parinit,erparinit,1,500,0.1); - - status = fmin.IsValid(); - - if(status) { - mypar[0]=(float)fmin.Parameters().Vec()(0); - mypar[1]=(float)fmin.Parameters().Vec()(1); - ermypar[0]=(float)sqrt( fmin.Error().Matrix()(0,0) ); - ermypar[1]=(float)sqrt( fmin.Error().Matrix()(1,1) ); - ercorr=0; - if(ermypar[0] !=0.0 && ermypar[1]!=0.0) - ercorr=(float)fmin.Error().Matrix()(0,1)/(ermypar[0]*ermypar[1]); - - chisq = fmin.Fval(); - ndf=y.size()-mypar.size(); - niter=fmin.NFcn(); - edm=fmin.Edm(); - } - else ndf=-3; - return status; -} diff --git a/OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc deleted file mode 100644 index 62cca628f7f..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCGainAnalyzer.cc +++ /dev/null @@ -1,302 +0,0 @@ -/** - * Analyzer for reading CSC pedestals. - * author S. Durkin, O.Boeriu 18/03/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h" - -CSCGainAnalyzer::CSCGainAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0,Nddu=0,flagGain=-9,flagIntercept=-9; - strip=0,misMatch=0,NChambers=0; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1,gainSlope=-999.0,gainIntercept=-999.0; - - adcCharge = TH2F("adcCharge","adcCharge", 100,0,300,100,0,2000); - - for (int i=0; i<NUMMODTEN_ga; i++){ - for (int j=0; j<CHAMBERS_ga; j++){ - for (int k=0; k<LAYERS_ga; k++){ - for (int l=0; l<STRIPS_ga; l++){ - maxmodten[i][j][k][l] = 0.0; - } - } - } - } - - - for (int i=0; i<CHAMBERS_ga; i++){ - size[i] = 0; - } - - for (int iii=0;iii<DDU_ga;iii++){ - for (int i=0; i<CHAMBERS_ga; i++){ - for (int j=0; j<LAYERS_ga; j++){ - for (int k=0; k<STRIPS_ga; k++){ - adcMax[iii][i][j][k] = -999.0; - adcMean_max[iii][i][j][k] = -999.0; - } - } - } - } - - for (int i=0; i<480; i++){ - newGain[i] =0.0; - newIntercept[i]=0.0; - newChi2[i] =0.0; - } -} - -void CSCGainAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;} - - for (int i_chamber=0; i_chamber<NChambers; i_chamber++) { - - for (int i_layer = 1; i_layer <=6; ++i_layer) { - - std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID();//get DMB ID - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID();//get crate ID - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[i_chamber] = digis.size(); - std::vector<int> adc = digis[i].getADCCounts(); - strip = digis[i].getStrip(); - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=-99.0; - for(unsigned int k=0; k<adc.size(); k++){ - float ped=(adc[0]+adc[1])/2.; - if(adc[k]-ped > adcMax[iDDU][i_chamber][i_layer-1][strip-1]) { - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=adc[k]-ped; - } - } - adcMean_max[iDDU][i_chamber][i_layer-1][strip-1] += adcMax[iDDU][i_chamber][i_layer-1][strip-1]/20.; - - //On the 20th event save - if (evt%20 == 0 && (strip-1)%16 == (evt-1)/NUMMODTEN_ga){ - int ten = int((evt-1)/20)%NUMBERPLOTTED_ga ; - maxmodten[ten][i_chamber][i_layer-1][strip-1] = adcMean_max[iDDU][i_chamber][i_layer-1][strip-1]; - } - }//end digis loop - }//end cfeb.available loop - }//end layer loop - }//end chamber loop - - if((evt-1)%20==0){ - for(int iii=0;iii<DDU_ga;iii++){ - for(int ii=0; ii<CHAMBERS_ga; ii++){ - for(int jj=0; jj<LAYERS_ga; jj++){ - for(int kk=0; kk<STRIPS_ga; kk++){ - adcMean_max[iii][ii][jj][kk]=0.0; - } - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCGainAnalyzer") << "end of event number " << eventNumber; - } - } - } -} - - -CSCGainAnalyzer::~CSCGainAnalyzer(){ - //get time of Run file for DB transfer - filein.open("../test/CSCgain.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("raw",0); - string::size_type rootStart = name.find("Gains",0); - int nameSize = runNameEnd+2-runNameStart; - int myRootSize = rootStart-runNameStart+8; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = ".root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - //root ntuple information - TCalibGainEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","Gains"); - calibtree.Branch("EVENT", &calib_evt, "slope/F:intercept/F:chi2/F:strip/I:layer/I:cham/I:id/I:flagGain/I:flagIntercept/I"); - - - for (int dduiter=0;dduiter<Nddu;dduiter++){ - for(int chamberiter=0; chamberiter<NChambers; chamberiter++){ - for (int cham=0;cham<NChambers;cham++){ - if (cham !=chamberiter) continue; - - //get chamber ID from DB mapping - int new_crateID = crateID[cham]; - int new_dmbID = dmbID[cham]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - calib_evt.id=chamber_num; - - for (int layeriter=0; layeriter<LAYERS_ga; layeriter++){ - for (int stripiter=0; stripiter<STRIPS_ga; stripiter++){ - - for (int j=0; j<LAYERS_ga; j++){//layer - if (j != layeriter) continue; - - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[cham]); - for (int k=0; k<size[cham]; k++){//strip - if (k != stripiter) continue; - float sumOfX = 0.0; - float sumOfY = 0.0; - float sumOfXY = 0.0; - float sumx2 = 0.0; - float gainSlope = 0.0; - float gainIntercept = 0.0; - float chi2 = 0.0; - - float charge[NUMBERPLOTTED_ga]={22.4, 44.8, 67.2, 89.6, 112, 134.4, 156.8, 179.2, 201.6, 224.0}; - - - for(int ii=0; ii<NUMBERPLOTTED_ga; ii++){//numbers - sumOfX += charge[ii]; - sumOfY += maxmodten[ii][cham][j][k]; - sumOfXY += (charge[ii]*maxmodten[ii][cham][j][k]); - sumx2 += (charge[ii]*charge[ii]); - myCharge[ii] = 22.4 +(22.4*ii); - adcCharge.Fill(myCharge[ii],maxmodten[ii][cham][j][k]); - } - - - //Fit parameters for straight line - gainSlope = ((NUMBERPLOTTED_ga*sumOfXY) - (sumOfX * sumOfY))/((NUMBERPLOTTED_ga*sumx2) - (sumOfX*sumOfX));//k - gainIntercept = ((sumOfY*sumx2)-(sumOfX*sumOfXY))/((NUMBERPLOTTED_ga*sumx2)-(sumOfX*sumOfX));//m - - for(int ii=0; ii<NUMBERPLOTTED_ga; ii++){ - chi2 += (maxmodten[ii][cham][j][k]-(gainIntercept+(gainSlope*charge[ii])))*(maxmodten[ii][cham][j][k]-(gainIntercept+(gainSlope*charge[ii])))/(NUMBERPLOTTED_ga*NUMBERPLOTTED_ga); - } - - std::cout <<"Chamber: "<<cham<<" Layer: "<<j<<" Strip: "<<k<<" Slope: "<<gainSlope <<" Intercept: "<<gainIntercept <<" chi2 "<<chi2<<std::endl; - - - if (gainSlope>5.0 && gainSlope<10.0) flagGain=1; // ok - if (gainSlope<5.0) flagGain=2; // warning fit fails - if (gainSlope>10.0) flagGain=3; // warning fit fails - - if (gainIntercept> -40. && gainIntercept<15.) flagIntercept = 1 ; - if (gainIntercept< -40.) flagIntercept = 2 ; - if (gainIntercept> 15.) flagIntercept = 3 ; - - calib_evt.slope = gainSlope; - calib_evt.intercept = gainIntercept; - calib_evt.chi2 = chi2; - calib_evt.strip = k; - calib_evt.layer = j; - calib_evt.cham = cham; - calib_evt.flagGain = flagGain; - calib_evt.flagIntercept = flagIntercept; - - calibtree.Fill(); - - cn->obj[layer_id][k].resize(3); - cn->obj[layer_id][k][0] = gainSlope; - cn->obj[layer_id][k][1] = gainIntercept; - cn->obj[layer_id][k][2] = chi2; - }//k loop - }//j loop - }//stripiter loop - }//layiter loop - }//cham - }//chamberiter - }//dduiter - - //send data to DB - dbon->cdbon_last_record("gains",&record); - std::cout<<"Last gains record "<<record<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn,"gains",11,myTime); - adcCharge.Write(); - calibfile.Write(); - calibfile.Close(); - -} diff --git a/OnlineDB/CSCCondDB/src/CSCMap.cc b/OnlineDB/CSCCondDB/src/CSCMap.cc deleted file mode 100644 index d5739d32ae4..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCMap.cc +++ /dev/null @@ -1,91 +0,0 @@ -#include "OnlineDB/CSCCondDB/interface/CSCMap.h" - - /** - * Constructor for cscmap - */ - cscmap::cscmap () throw (oracle::occi::SQLException) - { - std::string db_user; - std::string db_pass; - env = oracle::occi::Environment::createEnvironment (oracle::occi::Environment::DEFAULT); - char* c_user = ::getenv("CSCMAP_AUTH_USER"); - char* c_pass = ::getenv("CSCMAP_AUTH_PASSWORD"); - db_user=std::string(c_user); - db_pass=std::string(c_pass); - con = env->createConnection (db_user,db_pass,"devdb"); - std::cout << "Connection to mapping DB is done." << std::endl; - }// end of constructor cscmap () - /** - * Destructor for cscmap. - */ - cscmap::~cscmap () throw (oracle::occi::SQLException) - { - env->terminateConnection (con); - oracle::occi::Environment::terminateEnvironment (env); - } // end of ~cscmap () - - void cscmap::crate0_chamber (int crate0, int dmb, std::string *chamber_id, - int *chamber_num, int *sector) - { - oracle::occi::Statement *stmt = con->createStatement(); - stmt->setSQL("begin cscmap.chamber0(:1, :2, :3, :4, :5); end;"); - - stmt->setInt (1, crate0); - stmt->setInt (2, dmb); - stmt->registerOutParam(3, oracle::occi::OCCISTRING, 10); - stmt->registerOutParam (4, oracle::occi::OCCIINT); - stmt->registerOutParam (5, oracle::occi::OCCIINT); - - stmt->execute(); //execute procedure - - *chamber_id = stmt->getString(3); - *chamber_num = stmt->getInt(4); - *sector = stmt->getInt(5); - - con->terminateStatement (stmt); - } //end of crate0_chamber - - void cscmap::crate_chamber (int crate, int dmb, std::string *chamber_id, - int *chamber_num, int *sector) - { - oracle::occi::Statement *stmt = con->createStatement(); - stmt->setSQL("begin cscmap.chamber(:1, :2, :3, :4, :5); end;"); - - stmt->setInt (1, crate); - stmt->setInt (2, dmb); - stmt->registerOutParam(3, oracle::occi::OCCISTRING, 10); - stmt->registerOutParam (4, oracle::occi::OCCIINT); - stmt->registerOutParam (5, oracle::occi::OCCIINT); - - stmt->execute(); //execute procedure - - *chamber_id = stmt->getString(3); - *chamber_num = stmt->getInt(4); - *sector = stmt->getInt(5); - - con->terminateStatement (stmt); - } //end of crate_chamber - - void cscmap::chamber_crate (std::string chamber_id, int *crate, int *dmb, - int *sector, int *chamber_num, int *crate0) - { - oracle::occi::Statement *stmt = con->createStatement(); - stmt->setSQL("begin cscmap.crate0_proc(:1, :2, :3, :4, :5, :6); end;"); - - stmt->setString (1, chamber_id); - stmt->registerOutParam (2, oracle::occi::OCCIINT); - stmt->registerOutParam (3, oracle::occi::OCCIINT); - stmt->registerOutParam (4, oracle::occi::OCCIINT); - stmt->registerOutParam (5, oracle::occi::OCCIINT); - stmt->registerOutParam (6, oracle::occi::OCCIINT); - - stmt->execute(); //execute procedure - - *crate0 = stmt->getInt(2); - *crate = stmt->getInt(3); - *dmb = stmt->getInt(4); - *sector = stmt->getInt(5); - *chamber_num = stmt->getInt(6); - - con->terminateStatement (stmt); - } //end of crate_chamber diff --git a/OnlineDB/CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc deleted file mode 100644 index f3527051299..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCNoiseMatrixAnalyzer.cc +++ /dev/null @@ -1,250 +0,0 @@ -/** - * Analyzer for reading CSC bin by bin ADC information. - * author S. Durkin, O.Boeriu 26/04/06 - * ripped from Jeremy's and Rick's analyzers - * - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h" - -CSCNoiseMatrixAnalyzer::CSCNoiseMatrixAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0,NChambers=0,Nddu=0; - strip=0,misMatch=0; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1,flagMatrix=-9; - for(int k=0;k<CHAMBERS_ma;k++) cam[k].zero(); - - for (int i=0;i<480;i++){ - newMatrix1[i] = 0.0; - newMatrix2[i] = 0.0; - newMatrix3[i] = 0.0; - newMatrix4[i] = 0.0; - newMatrix5[i] = 0.0; - newMatrix6[i] = 0.0; - newMatrix7[i] = 0.0; - newMatrix8[i] = 0.0; - newMatrix9[i] = 0.0; - newMatrix10[i]= 0.0; - newMatrix11[i]= 0.0; - newMatrix12[i]= 0.0; - - } - - for (int i=0; i< CHAMBERS_ma; i++){ - size[i]=0; - } -} - -void CSCNoiseMatrixAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - // These declarations create handles to the types of records that you want - // to retrieve from event "e". - // - edm::Handle<CSCStripDigiCollection> strips; - - // Pass the handle to the method "getByType", which is used to retrieve - // one and only one instance of the type in question out of event "e". If - // zero or more than one instance exists in the event an exception is thrown. - // - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - evt++; - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu=dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;} - - for (int i_chamber=0; i_chamber<NChambers; i_chamber++) { - - for(int i_layer = 1; i_layer <= LAYERS_ma; ++i_layer) { - std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID(); - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID(); - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[i_chamber]=digis.size(); - int strip = digis[i].getStrip(); - adc = digis[i].getADCCounts(); - int tadc[8]; - for(unsigned int j=0;j<adc.size();j++)tadc[j]=adc[j]; - cam[i_chamber].add(i_layer-1,strip-1,tadc); - } - } - } - } - tmp=corrmat; - - eventNumber++; - edm::LogInfo ("CSCNoiseMatrixAnalyzer") << "end of event number " << eventNumber; - } - } - } -} - - -CSCNoiseMatrixAnalyzer::~CSCNoiseMatrixAnalyzer(){ - //get time of Run file for DB transfer - filein.open("../test/CSCmatrix.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("raw",0); - string::size_type rootStart = name.find("PulseDAC",0); - int nameSize = runNameEnd+2-runNameStart; - int myRootSize = rootStart-runNameStart+11; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = ".root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - cscmap *map = new cscmap(); - condbon *dbon = new condbon(); - - //root ntuple - TCalibNoiseMatrixEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","NoiseMatrix"); - calibtree.Branch("EVENT", &calib_evt, "elem[12]/F:strip/I:layer/I:cham/I:id/I:flagMatrix/I"); - - //for (int myDDU; myDDU<Nddu; myDDU++){ - for (int i=0; i<NChambers; i++){ - - //get chamber ID from DB mapping - int new_crateID = crateID[i]; - int new_dmbID = dmbID[i]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - calib_evt.id=chamber_num; - for (int j=0; j<LAYERS_ma; j++){ - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[i]); - - for (int k=0; k<size[i]; k++){ - for (int max=0; max<12;max++){ - tmp=cam[i].autocorrmat(j,k); - - if (tmp[max]>3.0 && tmp[max]<100.0) flagMatrix = 1; // ok - if (tmp[max]>50.0) flagMatrix = 2; // warning too high - if (tmp[max]<3.0) flagMatrix = 3; // warning too low - - calib_evt.elem[0] = tmp[0]; - calib_evt.elem[1] = tmp[1]; - calib_evt.elem[2] = tmp[2]; - calib_evt.elem[3] = tmp[3]; - calib_evt.elem[4] = tmp[4]; - calib_evt.elem[5] = tmp[5]; - calib_evt.elem[6] = tmp[6]; - calib_evt.elem[7] = tmp[7]; - calib_evt.elem[8] = tmp[8]; - calib_evt.elem[9] = tmp[9]; - calib_evt.elem[10] = tmp[10]; - calib_evt.elem[11] = tmp[11]; - calib_evt.strip = k; - calib_evt.layer = j; - calib_evt.cham = i; - calib_evt.flagMatrix = flagMatrix; - - calibtree.Fill(); - - std::cout<<"Chamber "<<i<<" Layer "<<j<<" strip "<<k<<" Matrix elements "<<tmp[max]<<std::endl; - - cn->obj[layer_id][k].resize(12); - - cn->obj[layer_id][k][0] = tmp[0]; - cn->obj[layer_id][k][1] = tmp[1]; - cn->obj[layer_id][k][2] = tmp[3]; - cn->obj[layer_id][k][3] = tmp[2]; - cn->obj[layer_id][k][4] = tmp[4]; - cn->obj[layer_id][k][5] = tmp[6]; - cn->obj[layer_id][k][6] = tmp[5]; - cn->obj[layer_id][k][7] = tmp[7]; - cn->obj[layer_id][k][8] = tmp[9]; - cn->obj[layer_id][k][9] = tmp[8]; - cn->obj[layer_id][k][10] = tmp[10]; - cn->obj[layer_id][k][11] = tmp[11]; - - } - } - } - } - //}//myDDU - - //send data to DB - dbon->cdbon_last_record("noisematrix",&record); - std::cout<<"record "<<record<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - if(debug) dbon->cdbon_write(cn,"noisematrix",11,myTime); - - calibfile.Write(); - calibfile.Close(); -} diff --git a/OnlineDB/CSCCondDB/src/CSCOnlineDB.cc b/OnlineDB/CSCCondDB/src/CSCOnlineDB.cc deleted file mode 100644 index 8ea572d8877..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCOnlineDB.cc +++ /dev/null @@ -1,327 +0,0 @@ -#include "OnlineDB/CSCCondDB/interface/CSCOnlineDB.h" - - /** - * Constructor for condbon - */ - condbon::condbon () throw (oracle::occi::SQLException) - { - std::string db_user; - std::string db_pass; - env = oracle::occi::Environment::createEnvironment (oracle::occi::Environment::OBJECT); - char* c_user = ::getenv("CONDBON_AUTH_USER"); - char* c_pass = ::getenv("CONDBON_AUTH_PASSWORD"); - db_user=std::string(c_user); - db_pass=std::string(c_pass); - con = env->createConnection (db_user,db_pass,"omds"); - std::cout << "Connection to Online DB is done." << std::endl; - }// end of constructor condbon () - /** - * Destructor for condbon. - */ - condbon::~condbon () throw (oracle::occi::SQLException) - { - env->terminateConnection (con); - oracle::occi::Environment::terminateEnvironment (env); - } // end of ~condbon () - - void condbon::cdbon_write (CSCobject *obj, std::string obj_name, int record, - std::string data_time) -{ - int i,j,k; - std::string tab, tab_map, tab_data; - std::string sqlStmt, sqlStmt1; - int rec_id, map_id, map_index; - tm curtime; - time_t now; - - tab=obj_name; - tab_map=obj_name+"_map"; - tab_data=obj_name+"_data"; - if(obj_name=="test"){ - tab="gains"; - tab_map="gains_map"; - tab_data="gains_data"; - } - stmt = con->createStatement (); - - oracle::occi::ResultSet *rset; - - sqlStmt = "SELECT max(record_id) from "+tab; - stmt->setSQL(sqlStmt); - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {rec_id= rset->getInt (1);} - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - stmt->closeResultSet (rset); - - if(record>rec_id){ - sqlStmt = "INSERT INTO "+tab+" VALUES (:1, :2, :3, :4, :5)"; - stmt->setSQL(sqlStmt); - time(&now); - curtime=*localtime(&now); - try{ - stmt->setInt (1, record); - stmt->setInt (2, 1); - stmt->setInt (5, 0); -/* For time as "05/17/2006 16:30:07" - std::string st=data_time.substr(0,2); - int mon=atoi(st.c_str()); - st=data_time.substr(3,2); - int mday=atoi(st.c_str()); - st=data_time.substr(6,4); - int year=atoi(st.c_str()); - st=data_time.substr(11,2); - int hour=atoi(st.c_str()); - st=data_time.substr(14,2); - int min=atoi(st.c_str()); - st=data_time.substr(17,2); - int sec=atoi(st.c_str()); -*/ -/* For time of format "Mon May 29 10:28:58 2006" */ - std::map <std::string, int> month; - month["Jan"]=1; month["Feb"]=2; month["Mar"]=3; month["Apr"]=4; - month["May"]=5; month["Jun"]=6; month["Jul"]=7; month["Aug"]=8; - month["Sep"]=9; month["Oct"]=10; month["Nov"]=11; month["Dec"]=12; - std::string st=data_time.substr(4,3); - int mon=month[st]; - st=data_time.substr(8,2); - int mday=atoi(st.c_str()); - st=data_time.substr(20,4); - int year=atoi(st.c_str()); - st=data_time.substr(11,2); - int hour=atoi(st.c_str()); - st=data_time.substr(14,2); - int min=atoi(st.c_str()); - st=data_time.substr(17,2); - int sec=atoi(st.c_str()); - oracle::occi::Date edate(env, year, mon, mday, hour, min, sec); - stmt->setDate(3, edate); - oracle::occi::Date edate_c(env, curtime.tm_year+1900, curtime.tm_mon+1, curtime.tm_mday, - curtime.tm_hour, curtime.tm_min, curtime.tm_sec); - stmt->setDate(4, edate_c); - if(obj_name!="test") stmt->executeUpdate (); - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown for insertBind"<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - } - - sqlStmt = "SELECT max(map_id) from "+tab_map; - stmt->setSQL(sqlStmt); - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {map_id= rset->getInt (1);} - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - stmt->closeResultSet (rset); - - std::ostringstream ss; - ss<<record; - - sqlStmt = "SELECT max(map_index) from "+tab_map+" where record_id="+ss.str(); - ss.str(""); // clear - stmt->setSQL(sqlStmt); - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {map_index= rset->getInt (1);} - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - stmt->closeResultSet (rset); - - sqlStmt = "INSERT INTO "+tab_map+" VALUES (:1, :2, :3, :4)"; - stmt->setSQL(sqlStmt); - - std::map<int,std::vector<std::vector<float> > >::const_iterator itm; - itm=obj->obj.begin(); - int sizeint=itm->second[0].size(); - sqlStmt1 = "INSERT INTO "+tab_data+" VALUES (:1, :2"; - for(i=1;i<sizeint+1;++i){ - ss<<i+2; - sqlStmt1=sqlStmt1+", :"+ss.str(); - ss.str(""); // clear - } - sqlStmt1=sqlStmt1+")"; - - sb4 si=sizeof(int); - sb4 sf=sizeof(float); - ub2 elensi[200]; - ub2 elensf[200]; - int c1[200],c2[200]; - float c[100][200]; - for(i=0;i<200;++i){ - elensi[i]=si; - elensf[i]=sf; - } - - stmt1 = con->createStatement (); - stmt1->setSQL(sqlStmt1); - - for(itm=obj->obj.begin();itm!=obj->obj.end(); ++itm){ - int id_det=itm->first; - int sizev=obj->obj[id_det].size(); - - map_id=map_id+1; - map_index=map_index+1; - try{ - stmt->setInt (1, map_id); - stmt->setInt (2, record); - stmt->setInt (3, map_index); - stmt->setInt (4, id_det); - if(obj_name!="test") stmt->executeUpdate (); - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown for insertBind"<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - - k=0; - for(i=0;i<sizev;++i){ - int sizei=obj->obj[id_det][i].size(); - if(sizei!=sizeint){ - std::cout<<"Inconsistent object - dimention of internal vector is not " - <<sizeint<<std::endl; - exit(1); - } - c1[i]=map_id; - k=k+1; - c2[i]=k; - for(j=0;j<sizei;++j){ - c[j][i]=obj->obj[id_det][i][j]; - } - } - try{ - stmt1->setDataBuffer(1, c1, oracle::occi::OCCIINT, si , &elensi[0]); - stmt1->setDataBuffer(2, c2, oracle::occi::OCCIINT, si , &elensi[0]); - for(j=0;j<sizeint;++j){ - stmt1->setDataBuffer(j+3, c[j], oracle::occi::OCCIFLOAT, sf, &elensf[0]); - } - if(obj_name!="test") stmt1->executeArrayUpdate(sizev); - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - } - con->commit(); - con->terminateStatement (stmt); - con->terminateStatement (stmt1); -}; //end of cdbon_write - -void condbon::cdbon_last_record (std::string obj_name, int *record) -{ - std::string sqlStmt; - sqlStmt = "SELECT max(record_id) from "+obj_name; - stmt=con->createStatement (); - stmt->setSQL(sqlStmt); - oracle::occi::ResultSet *rset; - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {*record = rset->getInt (1);} - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - con->terminateStatement (stmt); -}; // end of cdbon_last_record - - void condbon::cdbon_read_rec (std::string obj_name, int record, - CSCobject *obj) -{ - int i,len; - int map_id=0, map_index=0, layer_id=0; - std::string tab, tab_map, tab_data; - tab=obj_name; - tab_map=obj_name+"_map"; - tab_data=obj_name+"_data"; - int num_var; - int vec_index; - - std::string sqlStmt,sqlStmt1; - stmt=con->createStatement (); - stmt1=con->createStatement (); - oracle::occi::ResultSet *rset, *rset1; - std::ostringstream ss; - - char d; - const char* p=tab_data.c_str(); - len=tab_data.length(); - for(i=0;i<len;++i){ - d=toupper(*(p+i)); - ss<<d; - } - sqlStmt = "SELECT count(column_name) from user_tab_columns where table_name='"+ss.str()+"'"; - ss.str(""); // clear - stmt->setSQL(sqlStmt); - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {num_var= rset->getInt(1) - 2;} - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - stmt->closeResultSet (rset); - - ss<<record; - -sqlStmt = "SELECT map_id,map_index,layer_id from "+tab_map+" where record_id="+ss.str()+" order by map_index"; - ss.str(""); // clear - stmt->setSQL(sqlStmt); - rset = stmt->executeQuery (); - try{ - while (rset->next ()) - {map_id = rset->getInt (1); - map_index = rset->getInt (2); - layer_id = rset->getInt (3); - ss<<map_id; - sqlStmt1 = "SELECT * from "+tab_data+" where map_id="+ss.str()+" order by vec_index"; - ss.str(""); // clear - stmt1->setSQL(sqlStmt1); - rset1 = stmt1->executeQuery (); - try{ - while (rset1->next ()) - {vec_index = rset1->getInt (2); - obj->obj[layer_id].resize(vec_index); - for(i=0;i<num_var;++i){ - obj->obj[layer_id][vec_index-1].push_back(rset1->getFloat(3+i)); - } - } - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } - } - }catch(oracle::occi::SQLException ex) - { - std::cout<<"Exception thrown: "<<std::endl; - std::cout<<"Error number: "<< ex.getErrorCode() << std::endl; - std::cout<<ex.getMessage() << std::endl; - } -}; // end of cdbon_read_rec diff --git a/OnlineDB/CSCCondDB/src/CSCSaturationAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCSaturationAnalyzer.cc deleted file mode 100644 index 538f887dd12..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCSaturationAnalyzer.cc +++ /dev/null @@ -1,416 +0,0 @@ -/** - * Analyzer for reading CSC ADC and injected charge for saturation. - * author S. Durkin, O.Boeriu 16/11/06 - */ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/SaturationFit.h" - -CSCSaturationAnalyzer::CSCSaturationAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0,Nddu=0; - strip=0,misMatch=0,NChambers=0; - i_chamber=0,i_layer=0,reportedChambers=0; - length=1; - aVar=0.0,bVar=0.0; - - adc_vs_charge = TH2F("Saturation" ,"ADC_vs_charge", 100,0,700,100,0,4000); - adc01_vs_charge = TH2F("Saturation01","ADC_vs_charge", 100,0,700,100,0,4000); - adc02_vs_charge = TH2F("Saturation02","ADC_vs_charge", 100,0,700,100,0,4000); - adc03_vs_charge = TH2F("Saturation03","ADC_vs_charge", 100,0,700,100,0,4000); - adc04_vs_charge = TH2F("Saturation04","ADC_vs_charge", 100,0,700,100,0,4000); - adc05_vs_charge = TH2F("Saturation05","ADC_vs_charge", 100,0,700,100,0,4000); - adc11_vs_charge = TH2F("Saturation11","ADC_vs_charge", 100,0,700,100,0,4000); - adc12_vs_charge = TH2F("Saturation12","ADC_vs_charge", 100,0,700,100,0,4000); - adc13_vs_charge = TH2F("Saturation13","ADC_vs_charge", 100,0,700,100,0,4000); - adc14_vs_charge = TH2F("Saturation14","ADC_vs_charge", 100,0,700,100,0,4000); - adc15_vs_charge = TH2F("Saturation15","ADC_vs_charge", 100,0,700,100,0,4000); - adc21_vs_charge = TH2F("Saturation21","ADC_vs_charge", 100,0,700,100,0,4000); - adc22_vs_charge = TH2F("Saturation22","ADC_vs_charge", 100,0,700,100,0,4000); - adc23_vs_charge = TH2F("Saturation23","ADC_vs_charge", 100,0,700,100,0,4000); - adc24_vs_charge = TH2F("Saturation24","ADC_vs_charge", 100,0,700,100,0,4000); - adc25_vs_charge = TH2F("Saturation25","ADC_vs_charge", 100,0,700,100,0,4000); - adc31_vs_charge = TH2F("Saturation31","ADC_vs_charge", 100,0,700,100,0,4000); - adc32_vs_charge = TH2F("Saturation32","ADC_vs_charge", 100,0,700,100,0,4000); - adc33_vs_charge = TH2F("Saturation33","ADC_vs_charge", 100,0,700,100,0,4000); - adc34_vs_charge = TH2F("Saturation34","ADC_vs_charge", 100,0,700,100,0,4000); - adc35_vs_charge = TH2F("Saturation35","ADC_vs_charge", 100,0,700,100,0,4000); - adc41_vs_charge = TH2F("Saturation41","ADC_vs_charge", 100,0,700,100,0,4000); - adc42_vs_charge = TH2F("Saturation42","ADC_vs_charge", 100,0,700,100,0,4000); - adc43_vs_charge = TH2F("Saturation43","ADC_vs_charge", 100,0,700,100,0,4000); - adc44_vs_charge = TH2F("Saturation44","ADC_vs_charge", 100,0,700,100,0,4000); - adc45_vs_charge = TH2F("Saturation45","ADC_vs_charge", 100,0,700,100,0,4000); - adc51_vs_charge = TH2F("Saturation51","ADC_vs_charge", 100,0,700,100,0,4000); - adc52_vs_charge = TH2F("Saturation52","ADC_vs_charge", 100,0,700,100,0,4000); - adc53_vs_charge = TH2F("Saturation53","ADC_vs_charge", 100,0,700,100,0,4000); - adc54_vs_charge = TH2F("Saturation54","ADC_vs_charge", 100,0,700,100,0,4000); - adc55_vs_charge = TH2F("Saturation55","ADC_vs_charge", 100,0,700,100,0,4000); - adc61_vs_charge = TH2F("Saturation61","ADC_vs_charge", 100,0,700,100,0,4000); - adc62_vs_charge = TH2F("Saturation62","ADC_vs_charge", 100,0,700,100,0,4000); - adc63_vs_charge = TH2F("Saturation63","ADC_vs_charge", 100,0,700,100,0,4000); - adc64_vs_charge = TH2F("Saturation64","ADC_vs_charge", 100,0,700,100,0,4000); - adc65_vs_charge = TH2F("Saturation65","ADC_vs_charge", 100,0,700,100,0,4000); - adc71_vs_charge = TH2F("Saturation71","ADC_vs_charge", 100,0,700,100,0,4000); - adc72_vs_charge = TH2F("Saturation72","ADC_vs_charge", 100,0,700,100,0,4000); - adc73_vs_charge = TH2F("Saturation73","ADC_vs_charge", 100,0,700,100,0,4000); - adc74_vs_charge = TH2F("Saturation74","ADC_vs_charge", 100,0,700,100,0,4000); - adc75_vs_charge = TH2F("Saturation75","ADC_vs_charge", 100,0,700,100,0,4000); - adc81_vs_charge = TH2F("Saturation81","ADC_vs_charge", 100,0,700,100,0,4000); - adc82_vs_charge = TH2F("Saturation82","ADC_vs_charge", 100,0,700,100,0,4000); - adc83_vs_charge = TH2F("Saturation83","ADC_vs_charge", 100,0,700,100,0,4000); - adc84_vs_charge = TH2F("Saturation84","ADC_vs_charge", 100,0,700,100,0,4000); - adc85_vs_charge = TH2F("Saturation85","ADC_vs_charge", 100,0,700,100,0,4000); - - for (int i=0; i<NUMMODTEN_sat; i++){ - for (int j=0; j<CHAMBERS_sat; j++){ - for (int k=0; k<LAYERS_sat; k++){ - for (int l=0; l<STRIPS_sat; l++){ - maxmodten[i][j][k][l] = 0.0; - } - } - } - } - - - for (int i=0; i<CHAMBERS_sat; i++){ - size[i] = 0; - } - - for (int iii=0;iii<DDU_sat;iii++){ - for (int i=0; i<CHAMBERS_sat; i++){ - for (int j=0; j<LAYERS_sat; j++){ - for (int k=0; k<STRIPS_sat; k++){ - adcMax[iii][i][j][k] = -999.0; - adcMean_max[iii][i][j][k] = -999.0; - } - } - } - } -} - -void CSCSaturationAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { ///loop over DDUs - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - //std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++;} - - for (int i_chamber=0; i_chamber<NChambers; i_chamber++) { - - for (int i_layer = 1; i_layer <=6; ++i_layer) { - - std::vector<CSCStripDigi> digis = cscData[i_chamber].stripDigis(i_layer) ; - const CSCDMBHeader &thisDMBheader = cscData[i_chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[i_chamber] = cscData[i_chamber].dmbHeader().dmbID();//get DMB ID - crateID[i_chamber] = cscData[i_chamber].dmbHeader().crateID();//get crate ID - if(crateID[i_chamber] == 255) continue; - - for (unsigned int i=0; i<digis.size(); i++){ - size[i_chamber] = digis.size(); - std::vector<int> adc = digis[i].getADCCounts(); - strip = digis[i].getStrip(); - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=-99.0; - for(unsigned int k=0; k<adc.size(); k++){ - float ped=(adc[0]+adc[1])/2.; - if(adc[k]-ped > adcMax[iDDU][i_chamber][i_layer-1][strip-1]) { - adcMax[iDDU][i_chamber][i_layer-1][strip-1]=adc[k]-ped; - } - } - adcMean_max[iDDU][i_chamber][i_layer-1][strip-1] += adcMax[iDDU][i_chamber][i_layer-1][strip-1]/20.; - - //On the 20th event save one value - if (evt%20 == 0 && (strip-1)%16 == (evt-1)/NUMMODTEN_sat){ - //save 24 values from 24 settings - int twentyfour = int((evt-1)/20)%NUMBERPLOTTED_sat ; - maxmodten[twentyfour][i_chamber][i_layer-1][strip-1] = adcMean_max[iDDU][i_chamber][i_layer-1][strip-1]; - } - }//end digis loop - }//end cfeb.available loop - }//end layer loop - }//end chamber loop - - if((evt-1)%20==0){ - for(int iii=0;iii<DDU_sat;iii++){ - for(int ii=0; ii<CHAMBERS_sat; ii++){ - for(int jj=0; jj<LAYERS_sat; jj++){ - for(int kk=0; kk<STRIPS_sat; kk++){ - adcMean_max[iii][ii][jj][kk]=0.0; - } - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCSaturationAnalyzer") << "end of event number " << eventNumber; - } - } - } -} - -CSCSaturationAnalyzer::~CSCSaturationAnalyzer(){ - // delete theOBJfun; - - //get time of Run file for DB transfer - filein.open("../test/CSCsaturation.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - cout<<name<<endl; - } - } - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("raw",0); - string::size_type rootStart = name.find("Saturation",0); - int nameSize = runNameEnd+2-runNameStart; - int myRootSize = rootStart-runNameStart+9; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = ".root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //DB object and map - CSCobject *cn = new CSCobject(); - //cscmap *map = new cscmap(); - //condbon *dbon = new condbon(); - - //root ntuple information - TCalibSaturationEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","Saturation"); - calibtree.Branch("EVENT", &calib_evt, "strip/I:layer/I:cham/I:id/I:N/F:a/F:b/F:c/F"); - - for (int dduiter=0;dduiter<Nddu;dduiter++){ - for(int chamberiter=0; chamberiter<NChambers; chamberiter++){ - for (int cham=0;cham<NChambers;cham++){ - if (cham !=chamberiter) continue; - - //get chamber ID from DB mapping - int new_crateID = crateID[cham]; - int new_dmbID = dmbID[cham]; - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - //map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - //std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - calib_evt.id=chamber_num; - - for (int layeriter=0; layeriter<LAYERS_sat; layeriter++){ - for (int stripiter=0; stripiter<STRIPS_sat; stripiter++){ - - for (int j=0; j<LAYERS_sat; j++){//layer - if (j != layeriter) continue; - - int layer_id=chamber_num+j+1; - if(sector==-100)continue; - cn->obj[layer_id].resize(size[cham]); - - for (int k=0; k<size[cham]; k++){//strip - if (k != stripiter) continue; - - for (int st=0;st<NUMBERPLOTTED_sat;st++){ - myCharge[st]=0.0; - mySatADC[st]=0.0; - } - - for(int ii=0; ii<NUMBERPLOTTED_sat; ii++){//numbers - myCharge[ii] = 22.4 +(22.4*ii);//224(3V) to 560(5V) fC - mySatADC[ii] = maxmodten[ii][cham][j][k]; - //fill one histogram with all values for all chambers - adc_vs_charge.Fill(myCharge[ii],maxmodten[ii][cham][j][k]); - //for the rest look for one strip in the middle of each CFEBs - if(cham==0 && k==8) adc01_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==0 && k==24) adc02_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==0 && k==40) adc03_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==0 && k==56) adc04_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==0 && k==72) adc05_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==1 && k==8) adc11_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==1 && k==24) adc12_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==1 && k==40) adc13_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==1 && k==56) adc14_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==1 && k==72) adc15_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==2 && k==8) adc21_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==2 && k==24) adc22_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==2 && k==40) adc23_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==2 && k==56) adc24_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==2 && k==72) adc25_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==3 && k==8) adc31_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==3 && k==24) adc32_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==3 && k==40) adc33_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==3 && k==56) adc34_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==3 && k==72) adc35_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==4 && k==8) adc41_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==4 && k==24) adc42_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==4 && k==40) adc43_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==4 && k==56) adc44_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==4 && k==72) adc45_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==5 && k==8) adc51_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==5 && k==24) adc52_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==5 && k==40) adc53_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==5 && k==56) adc54_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==5 && k==72) adc55_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==6 && k==8) adc61_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==6 && k==24) adc62_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==6 && k==40) adc63_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==6 && k==56) adc64_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==6 && k==72) adc65_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==7 && k==8) adc71_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==7 && k==24) adc72_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==7 && k==40) adc73_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==7 && k==56) adc74_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==7 && k==72) adc75_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==8 && k==8) adc81_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==8 && k==24) adc82_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==8 && k==40) adc83_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==8 && k==56) adc84_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - if(cham==8 && k==72) adc85_vs_charge.Fill(myCharge[ii] ,maxmodten[ii][cham][j][k]); - }//number_plotted - - //Use Minuit to do the fit - float u0_ptr=0.0, u1_ptr=0.0, u2_ptr=0.0,u3_ptr=0.0; - SaturationFit s(NUMBERPLOTTED_sat,myCharge,mySatADC,&u0_ptr, &u1_ptr, &u2_ptr, &u3_ptr); - //u0_ptr=N,u1_ptr=a,u2_ptr=b,u3_ptr=c - std::cout<<"Fitresults: " <<cham<<" lay "<<j<<" strip " <<k<<" param0-3 "<< u0_ptr<<" "<<u1_ptr<<" "<<u2_ptr<<" "<<u3_ptr<<std::endl; - - calib_evt.strip = k; - calib_evt.layer = j; - calib_evt.cham = cham; - calib_evt.N = u0_ptr; - calib_evt.a = u1_ptr; - calib_evt.b = u2_ptr; - calib_evt.c = u3_ptr; - - calibtree.Fill(); - - //send constants to DB - cn->obj[layer_id][k].resize(4); - cn->obj[layer_id][k][0] = u0_ptr; - cn->obj[layer_id][k][1] = u1_ptr; - cn->obj[layer_id][k][2] = u2_ptr; - cn->obj[layer_id][k][3] = u3_ptr; - }//strip - }//j loop - }//stripiter loop - }//layiter loop - }//cham - }//chamberiter - }//dduiter - - //send data to DB - //dbon->cdbon_last_record("saturation",&record); - //std::cout<<"Last saturation record "<<record<<" for run file "<<myname<<" saved "<<myTime<<std::endl; - //if(debug) dbon->cdbon_write(cn,"saturation",11,myTime); - - //write histograms - adc_vs_charge.Write(); - adc01_vs_charge.Write(); - adc02_vs_charge.Write(); - adc03_vs_charge.Write(); - adc04_vs_charge.Write(); - adc05_vs_charge.Write(); - adc11_vs_charge.Write(); - adc12_vs_charge.Write(); - adc13_vs_charge.Write(); - adc14_vs_charge.Write(); - adc15_vs_charge.Write(); - adc21_vs_charge.Write(); - adc22_vs_charge.Write(); - adc23_vs_charge.Write(); - adc24_vs_charge.Write(); - adc25_vs_charge.Write(); - adc31_vs_charge.Write(); - adc32_vs_charge.Write(); - adc33_vs_charge.Write(); - adc34_vs_charge.Write(); - adc35_vs_charge.Write(); - adc41_vs_charge.Write(); - adc42_vs_charge.Write(); - adc43_vs_charge.Write(); - adc44_vs_charge.Write(); - adc45_vs_charge.Write(); - adc51_vs_charge.Write(); - adc52_vs_charge.Write(); - adc53_vs_charge.Write(); - adc54_vs_charge.Write(); - adc55_vs_charge.Write(); - adc61_vs_charge.Write(); - adc62_vs_charge.Write(); - adc63_vs_charge.Write(); - adc64_vs_charge.Write(); - adc65_vs_charge.Write(); - adc71_vs_charge.Write(); - adc72_vs_charge.Write(); - adc73_vs_charge.Write(); - adc74_vs_charge.Write(); - adc75_vs_charge.Write(); - adc81_vs_charge.Write(); - adc82_vs_charge.Write(); - adc83_vs_charge.Write(); - adc84_vs_charge.Write(); - adc85_vs_charge.Write(); - - calibfile.Write(); - calibfile.Close(); -} diff --git a/OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc b/OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc deleted file mode 100644 index a864acfa204..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCThrTurnOnFcn.cc +++ /dev/null @@ -1,37 +0,0 @@ -#include <OnlineDB/CSCCondDB/interface/CSCThrTurnOnFcn.h> -#include <FWCore/MessageLogger/interface/MessageLogger.h> -#include <cmath> -#include <iostream> -#include <vector> -#include "TMath.h" - -double CSCThrTurnOnFcn::operator() -(const std::vector<double>& par) const { - - double x,y,er,fn; - double N=norm; - double chi2 = 0.; - - int size=xdata.size(); - for(int i = 0; i < size; ++i) { - x=xdata[i]; - y=ydata[i]; - er=ery[i]; - - fn=(x-par[0])/(par[1]*1.4142); - fn=N * (1.- TMath::Erf(fn))/2.; - - double diff = y-fn; - chi2 += diff*diff / (er*er); - - // std::cout<<"CSC AFEB threshold fit "<<i+1<<" "<<x<<" "<<y<<" " - // <<er<<" "<<fn<<" "<<chi2<<" " - // <<par[0]<<" "<<par[1]<<"\n"; - - LogDebug("CSC")<<" AFEB threshold fit "<<i+1<<" "<<x<<" "<<y<<" " - <<er<<" "<<fn<<" "<<chi2<<" " - <<par[0]<<" "<<par[1]<<"\n"; - } - // std::cout<<"Chi2 "<<chi2<<std::endl; - return chi2; -} diff --git a/OnlineDB/CSCCondDB/src/CSCToAFEB.cc b/OnlineDB/CSCCondDB/src/CSCToAFEB.cc deleted file mode 100644 index 71840bf5669..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCToAFEB.cc +++ /dev/null @@ -1,52 +0,0 @@ -/**\class CSCToAFEB - * - * CSC layer, wire vs AFEB channel map. - * - * \author N. Terentiev, CMU - */ - -#include <OnlineDB/CSCCondDB/interface/CSCToAFEB.h> -#include <iostream> - -using namespace std; - - /// return AFEB channel number - int CSCToAFEB::getAfebCh(int layer, int wiregroup) const { - int wire=wiregroup-8*((wiregroup-1)/8); - int channel=layer_wire_to_channel_[layer - 1][wire - 1]; - return channel; - } - /// return AFEB position number - int CSCToAFEB::getAfebPos(int layer, int wiregroup) const { - int col=(wiregroup-1)/8+1; - int wire=wiregroup-8*((wiregroup-1)/8); - int afeb=(col-1)*3+layer_wire_to_board_[layer - 1][wire - 1]; - return afeb; - } - /// return layer number - int CSCToAFEB::getLayer(int afeb, int channel) const { - int col=(afeb-1)/3+1; - int pos_in_col=afeb-(col-1)*3; - int layer=pos_in_col*2-1; - if(channel < 5 || (channel >8 && channel < 13)) layer++; - return layer; - } - /// return wiregroup number - int CSCToAFEB::getWireGroup(int afeb, int channel) const { - int col=(afeb-1)/3+1; - int wire=(col-1)*8+1; - if(channel<5) wire=wire+(channel-1); - if(channel>4 && channel<9) wire=wire+(channel-5); - if(channel>8 && channel<13) wire=wire+(channel-5); - if(channel>12) wire=wire+(channel-9); - return wire; - } - /// return max. number of AFEBs - int CSCToAFEB::getMaxAfeb(int station, int ring) const { - return station_ring_to_nmxafeb_[station-1][ring-1]; - } - - /// return max. number of wiregroups per plane - int CSCToAFEB::getMaxWire(int station, int ring) const { - return station_ring_to_nmxwire_[station-1][ring-1]; - } diff --git a/OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc b/OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc deleted file mode 100644 index baeb867af47..00000000000 --- a/OnlineDB/CSCCondDB/src/CSCscaAnalyzer.cc +++ /dev/null @@ -1,229 +0,0 @@ -#include <iostream> -#include <fstream> -#include <vector> -#include "string" - -#include <FWCore/Framework/interface/Frameworkfwd.h> -#include <FWCore/Framework/interface/MakerMacros.h> -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigi.h" -#include "DataFormats/CSCDigi/interface/CSCStripDigiCollection.h" -#include "DataFormats/FEDRawData/interface/FEDRawData.h" -#include "DataFormats/FEDRawData/interface/FEDNumbering.h" -#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h" -#include "IORawData/CSCCommissioning/src/FileReaderDDU.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDDUEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDCCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCEventData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCDMBHeader.h" -#include "EventFilter/CSCRawToDigi/interface/CSCCFEBData.h" -#include "EventFilter/CSCRawToDigi/interface/CSCCFEBTimeSlice.h" -#include "OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h" - -CSCscaAnalyzer::CSCscaAnalyzer(edm::ParameterSet const& conf) { - debug = conf.getUntrackedParameter<bool>("debug",false); - eventNumber=0,evt=0, Nddu=0; - strip=0,misMatch=0; - chamber=0,layer=0,reportedChambers=0; - length=1,myevt=0,flag=-9; - pedMean=0.0,NChambers=0; - - for (int i=0;i<DDU_sca;i++){ - for (int j=0;j<CHAMBERS_sca;j++){ - for (int k=0;k<LAYERS_sca;k++){ - for (int l=0;l<STRIPS_sca;l++){ - for (int m=0;m<Number_sca;m++){ - value_adc[i][j][k][l][m]=0; - value_adc_mean[i][j][k][l][m]=0.0; - } - } - } - } - } - - //definition of histograms.... - - -} - -void CSCscaAnalyzer::analyze(edm::Event const& e, edm::EventSetup const& iSetup) { - - edm::Handle<CSCStripDigiCollection> strips; - e.getByLabel("cscunpacker","MuonCSCStripDigi",strips); - edm::Handle<FEDRawDataCollection> rawdata; - e.getByType(rawdata); //before 0_7_0_pre4 use getByLabel("DaqSource", rawdata) - //myevt=e.id().event(); - - for (int id=FEDNumbering::getCSCFEDIds().first; - id<=FEDNumbering::getCSCFEDIds().second; ++id){ //for each of our DCCs - - /// Take a reference to this FED's data - const FEDRawData& fedData = rawdata->FEDData(id); - if (fedData.size()){ ///unpack data - - ///get a pointer to data and pass it to constructor for unpacking - CSCDCCEventData dccData((short unsigned int *) fedData.data()); - - const std::vector<CSCDDUEventData> & dduData = dccData.dduData(); - - evt++; - for (unsigned int iDDU=0; iDDU<dduData.size(); ++iDDU) { - - ///get a reference to chamber data - const std::vector<CSCEventData> & cscData = dduData[iDDU].cscData(); - Nddu = dduData.size(); - reportedChambers += dduData[iDDU].header().ncsc(); - NChambers = cscData.size(); - int repChambers = dduData[iDDU].header().ncsc(); - std::cout << " Reported Chambers = " << repChambers <<" "<<NChambers<< std::endl; - if (NChambers!=repChambers) { std::cout<< "misMatched size!!!" << std::endl; misMatch++; continue;} - - - for (int chamber = 0; chamber < NChambers; chamber++){ - const CSCDMBHeader &thisDMBheader = cscData[chamber].dmbHeader(); - - if (thisDMBheader.cfebAvailable()){ - dmbID[chamber] = cscData[chamber].dmbHeader().dmbID(); - crateID[chamber] = cscData[chamber].dmbHeader().crateID(); - if(crateID[chamber] == 255) continue; - - for (int icfeb=0; icfeb<5;icfeb++) {//loop over cfebs in a given chamber - CSCCFEBData * mycfebData = cscData[chamber].cfebData(icfeb); - if (!mycfebData) continue; - - for (unsigned int layer = 1; layer <= 6; layer++){ - std::vector<CSCStripDigi> digis = cscData[chamber].stripDigis(layer) ; - - for (int itime=0;itime<8;itime++){ - CSCCFEBTimeSlice * mytimeSlice = mycfebData->timeSlice(itime); - if (!mytimeSlice)continue; - - scaBlock = mytimeSlice->scaControllerWord(layer).sca_blk; - trigTime = mytimeSlice->scaControllerWord(layer).trig_time; - lctPhase = mytimeSlice->scaControllerWord(layer).lct_phase; - int tmp=1; - for(power=0;power<8;power++){if(trigTime==tmp) lctPhase=power; tmp=tmp*2;} - cap = lctPhase+itime; - scaNumber=8*scaBlock+cap; - - for (unsigned int i=0; i<digis.size(); i++){ - int strip = digis[i].getStrip(); - adc = digis[i].getADCCounts(); - if(strip>=icfeb*16+1 && strip<=icfeb*16+16){ - value_adc[iDDU][chamber][layer][strip][scaNumber] = adc[itime]; - } - value_adc_mean[iDDU][chamber][layer][strip][scaNumber] += adc[itime]/20. ; - } - }//8 timeslice - }//layer - }//CFEBs - }//CFEB available - }//chamber - - if((evt-1)%20==0){ - for(int iii=0;iii<DDU_sca;iii++){ - for(int ii=0; ii<CHAMBERS_sca; ii++){ - for(int jj=0; jj<LAYERS_sca; jj++){ - for(int kk=0; kk<STRIPS_sca; kk++){ - for (int m=0;m<Number_sca;m++){ - value_adc_mean[iii][ii][jj][kk][m]=0.0; - } - } - } - } - } - } - - eventNumber++; - edm::LogInfo ("CSCscaAnalyzer") << "end of event number " << eventNumber; - - } - } - } -} - -CSCscaAnalyzer::~CSCscaAnalyzer(){ - - //get time of Run file for DB transfer - filein.open("../test/CSCsca.cfg"); - filein.ignore(1000,'\n'); - - while(filein != NULL){ - lines++; - getline(filein,PSet); - - if (lines==3){ - name=PSet; - } - } - - //get name of run file from .cfg and name root output after that - string::size_type runNameStart = name.find("\"",0); - string::size_type runNameEnd = name.find("bin",0); - string::size_type rootStart = name.find("Crosstalk",0); - int nameSize = runNameEnd+3-runNameStart; - int myRootSize = rootStart-runNameStart+8; - std::string myname= name.substr(runNameStart+1,nameSize); - std::string myRootName= name.substr(runNameStart+1,myRootSize); - std::string myRootEnd = "_sca.root"; - std::string runFile= myRootName; - std::string myRootFileName = runFile+myRootEnd; - const char *myNewName=myRootFileName.c_str(); - - struct tm* clock; - struct stat attrib; - stat(myname.c_str(), &attrib); - clock = localtime(&(attrib.st_mtime)); - std::string myTime=asctime(clock); - - //root ntuple - TCalibSCAEvt calib_evt; - TFile calibfile(myNewName, "RECREATE"); - TTree calibtree("Calibration","SCA"); - calibtree.Branch("EVENT", &calib_evt, "strip/I:layer/I:cham/I:ddu/I:scaMeanVal/F"); - - //DB object and map - //CSCobject *cn = new CSCobject(); - //CSCobject *cn1 = new CSCobject(); - cscmap *map = new cscmap(); - //condbon *dbon = new condbon(); - - for (int dduiter=0;dduiter<Nddu;dduiter++){ - for (int cham=0;cham<NChambers;cham++){ - - //get chamber ID from DB mapping - int new_crateID = crateID[cham]; - int new_dmbID = dmbID[cham]; - - std::cout<<" Crate: "<<new_crateID<<" and DMB: "<<new_dmbID<<std::endl; - map->crate_chamber(new_crateID,new_dmbID,&chamber_id,&chamber_num,§or); - std::cout<<"Data is for chamber:: "<< chamber_id<<" in sector: "<<sector<<std::endl; - - for (int layeriter=0; layeriter<LAYERS_sca; layeriter++){ - for (int stripiter=0; stripiter<STRIPS_sca; stripiter++){ - for (int k=0;k<Number_sca;k++){ - my_scaValue = value_adc[dduiter][cham][layeriter][stripiter][k]; - my_scaValueMean = value_adc_mean[dduiter][cham][layeriter][stripiter][k]; - - std::cout<<"Ch "<<cham<<" Layer "<<layeriter<<" strip "<<stripiter<<" sca_nr "<<k<<" Mean ADC "<<my_scaValueMean <<std::endl; - calib_evt.strip=stripiter; - calib_evt.layer=layeriter; - calib_evt.cham=cham; - calib_evt.ddu=dduiter; - calib_evt.scaMeanVal=my_scaValueMean; - - calibtree.Fill(); - } - } - } - } - } - calibfile.Write(); - calibfile.Close(); -} diff --git a/OnlineDB/CSCCondDB/src/SealModule.cc b/OnlineDB/CSCCondDB/src/SealModule.cc deleted file mode 100644 index 686c2ac8ee1..00000000000 --- a/OnlineDB/CSCCondDB/src/SealModule.cc +++ /dev/null @@ -1,20 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "OnlineDB/CSCCondDB/interface/CSCAFEBAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCCompThreshAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCCrossTalkAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCGainAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCNoiseMatrixAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCscaAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCCFEBConnectivityAnalyzer.h" -#include "OnlineDB/CSCCondDB/interface/CSCSaturationAnalyzer.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(CSCAFEBAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCCompThreshAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCCrossTalkAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCGainAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCNoiseMatrixAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCscaAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCCFEBConnectivityAnalyzer); -DEFINE_ANOTHER_FWK_MODULE(CSCSaturationAnalyzer); diff --git a/OnlineDB/CSCCondDB/test/Readme b/OnlineDB/CSCCondDB/test/Readme deleted file mode 100644 index a7eeceae2b4..00000000000 --- a/OnlineDB/CSCCondDB/test/Readme +++ /dev/null @@ -1,92 +0,0 @@ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -^^ ############ THIS IS A LIST OF CALIBRATION CODE FOR CSC CATHODE STRIPS and ANODE WIRES ############ ^^ -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -0. Set up an area for CMSSW (works currently in CMSSW_0_9_0_pre2) and check out: - OnlineDB/CSCCondDB - CondFormats/CSCObjects - -0.1 Source files are in /src and header files in /interface. - - Have to set up environmental variables now to connect to databases, use the authentication.xml file - (Ask Oana Boeriu for the file ! ) - - -0.3 COMPILE & LINK under OnlineDB/CSCCondDB !! - -**************************************** -** Analyzers and configuration files ** -**************************************** - -1.0 CSCGainAnalyzer.cc and .h, run: cmsRun CSCgain.cfg - -1.1 Using condbon.h - takes an object for transfer! - -2.0 CSCCrossTalkAnalyzer.cc and .h, run: cmsRun CSCxtalk.cfg - -3.0 CSCNoiseMatrixAnalyzer.cc and .h, eun: cmsRun CSCmatrix.cfg - -4.0 CSCCompThreshAnalyzer.cc and .h, run: cmsRun CSCcomp.cfg - -5.0 CSCAFEBAnalyzer.cc and .h, run: cmsRun CSCAFEBThr.cfg - -6.0 CSCscaAnalyzer.cc and .h, run: cmsRun CSCsca.cfg - -7.0 CSCSaturationAnalyzer.ccand .h, run: cmsRun CSCgain.cfg - -8.0 CSCCFEBConnectAnalysis.cc and .h, run: cmsRun CSCCFEBAnalysis.cfg - - -In the .cfg file you can chose if you want to send constants to DB, default is set to false for not sending. - -***************************************** -** List of calibration files in CASTOR ** -***************************************** - -RunNum1070Evs0to9999.bin for gains (ME2 chambers:2/1/14, 2/2/27, 2/2/29, 2/2/30, 2/2/28) -RunNum1071Evs0to9999.bin for matrix elements (ME2 chambers) -RunNum1072Evs0to9999.bin for cross-talk (ME2 chambers) -RunNum1073Evs0to9999.bin for cross-talk (ME3 chambers:3/1/14, 3/2/27, 3/2/28, 3/2/29) -RunNum1074Evs0to9999.bin for gains (ME3 chambers) -RunNum1075Evs0to9999.bin for matrix elements (ME3 chambers) -RunNum1076Evs0to9999.bin for cross-talk (ME1a chambers:1/1/27, 1/1/28, 1/1/29, 1/2/27, 1/2/28, 1/2/29) -RunNum1077Evs0to9999.bin for gains (ME1a chambers) -RunNum1078Evs0to9999.bin for matrix elements (ME1a chambers) -RunNum1079Evs0to9999.bin for cross-talk (ME1b chambers:1/1/30, 1/1/31, 1/1/32, 1/2/30, 1/2/31) -RunNum1080Evs0to9999.bin for gains (ME1b chambers) -RunNum1081Evs0to9999.bin for matrix elements (ME1b chambers) -RunNum1082Evs0to9999.bin for cros-stalk (ME1 chambers:1/1/27, 1/1/28, 1/1/29, 1/2/27, 1/2/28, 1/2/29, 1/3/27, 1/3/28, 1/3/29) -RunNum1083Evs0to9999.bin for gains (ME1 chambers) - -************************** -** New naming and runs ** -************************** - - -060703_090734_UTC_000200_000_EmuRUI01_CFEB_Crosstalk.bin -060703_100536_UTC_000203_000_EmuRUI02_CFEB_Crosstalk.bin - -060703_091838_UTC_000201_000_EmuRUI01_CFEB_PulseDAC.bin -060703_091838_UTC_000201_001_EmuRUI01_CFEB_PulseDAC.bin -060703_125101_UTC_000204_000_EmuRUI02_CFEB_PulseDAC.bin -060703_125101_UTC_000204_001_EmuRUI02_CFEB_PulseDAC.bin -060706_0908339_UTC_000210000_EmuRUI01_CFEB_PulseDAC.bin -060706_0908340_UTC_000211000_EmuRUI01_CFEB_PulseDAC.bin - -060703_094702_UTC_000202_000_EmuRUI01_CFEB_Gains.bin -060703_124305_UTC_000205_000_EmuRUI02_CFEB_Gains.bin -060706_090837_UTC_000206000_EmuRUI01_CFEB_Gains.bin -060706_090838_UTC_000209000_EmuRUI01_CFEB_Gains.bin - - - - - - - - ----------------------------------------- -**************************************** -* This is the status 2006.08.08 !!!!! * -**************************************** ----------------------------------------- \ No newline at end of file diff --git a/OnlineDB/CSCCondDB/test/csc_slice_test_map.txt b/OnlineDB/CSCCondDB/test/csc_slice_test_map.txt deleted file mode 100644 index 533b96096f9..00000000000 --- a/OnlineDB/CSCCondDB/test/csc_slice_test_map.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Mapping between hardware and software for CSC chambers in slice test -# Tim Cox 02-May-2006 after additions from Frank Geurts. -# -1 means no (or missing) information -# ========================================================================= -# endcap station ring chamber vme dmb tmb sector cscid -# ========================================================================= -#ME+1/1 - 1 1 1 27 3 1 -1 10 1 - 1 1 1 28 3 2 -1 10 2 - 1 1 1 29 3 3 -1 10 3 - 1 1 1 30 2 1 -1 11 1 - 1 1 1 31 2 2 -1 11 2 - 1 1 1 32 2 3 -1 11 3 -#ME+1/2 - 1 1 2 27 3 4 -1 10 4 - 1 1 2 28 3 5 -1 10 5 - 1 1 2 29 3 7 -1 10 6 - 1 1 2 30 2 4 -1 11 4 - 1 1 2 31 2 5 -1 11 5 - 1 1 2 32 2 7 -1 11 6 -#ME+1/3 - 1 1 3 27 3 8 -1 10 7 - 1 1 3 28 3 9 -1 10 8 - 1 1 3 29 3 10 -1 10 9 - 1 1 3 30 2 8 -1 11 7 - 1 1 3 31 2 9 -1 11 8 - 1 1 3 32 2 10 -1 11 9 -# ME+2/1 - 1 2 1 14 1 1 -1 5 1 - 1 2 1 15 1 2 -1 5 2 - 1 2 1 16 1 3 -1 5 3 -# ME+2/2 - 1 2 2 27 1 4 -1 5 4 - 1 2 2 28 1 5 -1 5 5 - 1 2 2 29 1 7 -1 5 6 - 1 2 2 30 1 8 -1 5 7 - 1 2 2 31 1 9 -1 5 8 - 1 2 2 32 1 10 -1 5 9 -# ME+3/1 - 1 3 1 14 0 1 -1 5 1 - 1 3 1 15 0 2 -1 5 2 - 1 3 1 16 0 3 -1 5 3 -# ME+3/2 - 1 3 2 27 0 4 -1 5 4 - 1 3 2 28 0 5 -1 5 5 - 1 3 2 29 0 7 -1 5 6 - 1 3 2 30 0 8 -1 5 7 - 1 3 2 31 0 9 -1 5 8 - 1 3 2 32 0 10 -1 5 9 -# ========================================================================= \ No newline at end of file diff --git a/OnlineDB/Oracle/doc/html/index.html b/OnlineDB/Oracle/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/OnlineDB/Oracle/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/OnlineDB/Oracle/doc/html/overview.html b/OnlineDB/Oracle/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/OnlineDB/Oracle/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/OnlineDB/SiStripO2O/doc/html/index.html b/OnlineDB/SiStripO2O/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/OnlineDB/SiStripO2O/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/OnlineDB/SiStripO2O/doc/html/overview.html b/OnlineDB/SiStripO2O/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/OnlineDB/SiStripO2O/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PerfTools/Callgrind/doc/html/index.html b/PerfTools/Callgrind/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PerfTools/Callgrind/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PerfTools/Callgrind/doc/html/overview.html b/PerfTools/Callgrind/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PerfTools/Callgrind/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PerfTools/EdmEvent/doc/html/index.html b/PerfTools/EdmEvent/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PerfTools/EdmEvent/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PerfTools/EdmEvent/doc/html/overview.html b/PerfTools/EdmEvent/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PerfTools/EdmEvent/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/CondLiteIO/doc/html/index.html b/PhysicsTools/CondLiteIO/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/CondLiteIO/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/CondLiteIO/doc/html/overview.html b/PhysicsTools/CondLiteIO/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/CondLiteIO/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.cc b/PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.cc index 5051560927c..453f4f8cd44 100755 --- a/PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.cc +++ b/PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.cc @@ -1,4 +1,4 @@ -// $Id: GenParticleCandidateProducer.cc,v 1.9 2006/11/07 16:28:38 llista Exp $ +// $Id: GenParticleCandidateProducer.cc,v 1.12 2006/11/13 14:44:40 llista Exp $ #include "PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.h" #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h" #include "DataFormats/HepMCCandidate/interface/GenParticleCandidate.h" @@ -170,35 +170,40 @@ void GenParticleCandidateProducer::produce( Event& evt, const EventSetup& es ) { // fill output collection and save association auto_ptr<CandidateCollection> cands( new CandidateCollection ); - CandidateRefProd ref = evt.getRefBeforePut<CandidateCollection>(); + const CandidateRefProd ref = evt.getRefBeforePut<CandidateCollection>(); cands->reserve( size ); vector<size_t> indices; - vector<GenParticleCandidate *> candidates; + vector<pair<GenParticleCandidate *, size_t> > candidates; for( size_t i = 0; i < size; ++ i ) { const GenParticle * part = particles[ i ]; GenParticleCandidate * cand = 0; + size_t index = 0; if ( ! skip[ i ] ) { GenParticleCandidate * c = new GenParticleCandidate( part ); cand = c; + index = indices.size(); cands->push_back( c ); indices.push_back( i ); } - candidates.push_back( cand ); + candidates.push_back( make_pair( cand, index ) ); } assert( candidates.size() == size ); assert( cands->size() == indices.size() ); + // fill references to daughters + GenParticleCandidate * null = 0; for( size_t i = 0; i < cands->size(); ++ i ) { int m = mothers[ indices[ i ] ]; - GenParticleCandidate * mother = 0; - while ( mother == 0 && m != -1 ) { - if ( ( mother = candidates[ m ] ) == 0 ) { + pair<GenParticleCandidate *, size_t> mother = make_pair( null, 0 ); + while ( mother.first == 0 && m != -1 ) + if ( ( mother = candidates[ m ] ).first == 0 ) m = ( m != -1 ) ? mothers[ m ] : -1; - } - } - if ( mother != 0 ) { - mother->addDaughter( CandidateRef( ref, i ) ); + if ( mother.first != 0 ) { + CandidateRef candRef( ref, i ); + mother.first->addDaughter( candRef ); + GenParticleCandidate & c = dynamic_cast<GenParticleCandidate &>( (*cands)[ i ] ); + c.setMother( CandidateRef( ref, mother.second ) ); } } diff --git a/PhysicsTools/HepMCCandAlgos/src/SealModule.cc b/PhysicsTools/HepMCCandAlgos/src/SealModule.cc index cb9796cc918..4c7f2a37fd6 100755 --- a/PhysicsTools/HepMCCandAlgos/src/SealModule.cc +++ b/PhysicsTools/HepMCCandAlgos/src/SealModule.cc @@ -4,7 +4,6 @@ #include "PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateProducer.h" #include "PhysicsTools/HepMCCandAlgos/src/GenParticleCandidateSelector.h" #include "PhysicsTools/HepMCCandAlgos/src/HepMCCandidateSelector.h" -#include "PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h" #include "PhysicsTools/HepMCCandAlgos/src/ParticleTreeDrawer.h" DEFINE_SEAL_MODULE(); @@ -12,5 +11,4 @@ DEFINE_ANOTHER_FWK_MODULE( HepMCCandidateProducer ); DEFINE_ANOTHER_FWK_MODULE( GenParticleCandidateProducer ); DEFINE_ANOTHER_FWK_MODULE( GenParticleCandidateSelector ); DEFINE_ANOTHER_FWK_MODULE( HepMCCandidateSelector ); -DEFINE_ANOTHER_FWK_MODULE( SetGenParticleMotherReference ); DEFINE_ANOTHER_FWK_MODULE( ParticleTreeDrawer ); diff --git a/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.cc b/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.cc deleted file mode 100644 index c5b17f2f8f1..00000000000 --- a/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.cc +++ /dev/null @@ -1,31 +0,0 @@ -#include "PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "DataFormats/HepMCCandidate/interface/GenParticleCandidate.h" -#include "FWCore/Utilities/interface/Exception.h" -using namespace edm; -using namespace reco; - -SetGenParticleMotherReference::SetGenParticleMotherReference( const ParameterSet & cfg ) : - src_( cfg.getParameter<InputTag>( "src" ) ) { -} - -void SetGenParticleMotherReference::analyze( const Event & event, const EventSetup & ) { - Handle<CandidateCollection> particles; - event.getByLabel( src_, particles ); - - for( CandidateCollection::const_iterator p = particles->begin(); - p != particles->end(); ++ p ) { - for( size_t i = 0; i < p->numberOfDaughters(); ++ i ) { - const Candidate & d = p->daughter( i ); - const GenParticleCandidate * dau = - dynamic_cast<const GenParticleCandidate *>( & d ); - if( dau == 0 ) - throw cms::Exception( "InvalidReference" ) - << "input collection contains candidates that" - << "are not of type GenParticleCandidate"; - dau->setMother( CandidateRef( particles, i ) ); - } - } -} diff --git a/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h b/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h deleted file mode 100644 index 2d38ef6e9f9..00000000000 --- a/PhysicsTools/HepMCCandAlgos/src/SetGenParticleMotherReference.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef HepMCCandAlgos_SetGenParticleMotherReference_h -#define HepMCCandAlgos_SetGenParticleMotherReference_h -/* class SetGenParticleMotherReference - * - * \author Luca Lista, INFN - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/ParameterSet/interface/InputTag.h" - -class SetGenParticleMotherReference : public edm::EDAnalyzer { -public: - SetGenParticleMotherReference( const edm::ParameterSet & ); -private: - void analyze( const edm::Event &, const edm::EventSetup & ); - edm::InputTag src_; -}; - -#endif diff --git a/PhysicsTools/IsolationAlgos/doc/html/index.html b/PhysicsTools/IsolationAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/IsolationAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/IsolationAlgos/doc/html/overview.html b/PhysicsTools/IsolationAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/IsolationAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/IsolationUtils/doc/html/index.html b/PhysicsTools/IsolationUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/IsolationUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/IsolationUtils/doc/html/overview.html b/PhysicsTools/IsolationUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/IsolationUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/JetCharge/doc/html/index.html b/PhysicsTools/JetCharge/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/JetCharge/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/JetCharge/doc/html/overview.html b/PhysicsTools/JetCharge/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/JetCharge/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/JetExamples/doc/html/index.html b/PhysicsTools/JetExamples/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/JetExamples/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/JetExamples/doc/html/overview.html b/PhysicsTools/JetExamples/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/JetExamples/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/JetMCAlgos/doc/html/index.html b/PhysicsTools/JetMCAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/JetMCAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/JetMCAlgos/doc/html/overview.html b/PhysicsTools/JetMCAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/JetMCAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/JetMCUtils/doc/html/index.html b/PhysicsTools/JetMCUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/JetMCUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/JetMCUtils/doc/html/overview.html b/PhysicsTools/JetMCUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/JetMCUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/KinFitter/doc/html/index.html b/PhysicsTools/KinFitter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/KinFitter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/KinFitter/doc/html/overview.html b/PhysicsTools/KinFitter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/KinFitter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/MVAComputer/doc/html/index.html b/PhysicsTools/MVAComputer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/MVAComputer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/MVAComputer/doc/html/overview.html b/PhysicsTools/MVAComputer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/MVAComputer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/MVATrainer/doc/html/index.html b/PhysicsTools/MVATrainer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/MVATrainer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/MVATrainer/doc/html/overview.html b/PhysicsTools/MVATrainer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/MVATrainer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/PFCandProducer/doc/html/index.html b/PhysicsTools/PFCandProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/PFCandProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/PFCandProducer/doc/html/overview.html b/PhysicsTools/PFCandProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/PFCandProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/ParallelAnalysis/doc/ParallelAnalysis.doc b/PhysicsTools/ParallelAnalysis/doc/ParallelAnalysis.doc index bffc7274f42..718742f106e 100755 --- a/PhysicsTools/ParallelAnalysis/doc/ParallelAnalysis.doc +++ b/PhysicsTools/ParallelAnalysis/doc/ParallelAnalysis.doc @@ -23,7 +23,7 @@ under <a href="http://cmsdoc.cern.ch/cms/cpt/Software/html/PhysicsTools/">Physic collection of tracks from a standard \ref DataFormats_RecoData "RECO" collection. \subsection modules Modules -- TSelectorAnalyzer: generic EDAnalyzer using an algorithm (e.g.: examples::TrackAnalysisAlgorithm) +- examples::TrackTSelectorAnalyzer: EDAnalyzer using examples::TrackAnalysisAlgorithm \subsection tests Unit tests and examples - <b>trackExample.cfg</b>: batch script running examples::TrackTSelectorAnalyzer diff --git a/PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h b/PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h index a1a4c36427d..24556fa8859 100755 --- a/PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h +++ b/PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h @@ -7,12 +7,11 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.1 $ + * \version $Revision$ */ class TH1F; class TList; -class TCanvas; namespace edm { class Event; } namespace examples { @@ -24,11 +23,6 @@ namespace examples { void process( const edm::Event& ); /// post process void postProcess( TList & ); - /// terminate processing - static void terminate( TList & ); - private: - /// draw an histogram - static void draw( const TList &, TCanvas &, const char * ); /// histograms TH1F * h_pt, * h_eta; /// histogram names diff --git a/PhysicsTools/ParallelAnalysis/interface/TrackTSelector.h b/PhysicsTools/ParallelAnalysis/interface/TrackTSelector.h index fe85873fb27..3403b048168 100755 --- a/PhysicsTools/ParallelAnalysis/interface/TrackTSelector.h +++ b/PhysicsTools/ParallelAnalysis/interface/TrackTSelector.h @@ -7,14 +7,15 @@ * * \author Luca Lista, INFN * - * $Id: TrackTSelector.h,v 1.2 2006/10/17 08:21:58 llista Exp $ + * $Id: TrackTSelector.h,v 1.1 2006/06/27 09:53:33 llista Exp $ */ #include "DataFormats/TrackReco/interface/Track.h" -// needed because missing in TFWLiteSelector.h #include <TFile.h> #include "FWCore/TFWLiteSelector/interface/TFWLiteSelector.h" #include "PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h" +class TCanvas; + namespace examples { class TrackTSelector : @@ -32,6 +33,10 @@ namespace examples { TrackTSelector( const TrackTSelector & ); /// avoid assignment operator TrackTSelector operator=( TrackTSelector const & ); + /// draw an histogram + void draw( const TList &, const char * ); + /// canvas used as temporaty drawing object + TCanvas * canvas_; }; } diff --git a/PhysicsTools/ParallelAnalysis/src/SealModule.cc b/PhysicsTools/ParallelAnalysis/src/SealModule.cc index a6a245c3353..8787b6146c8 100755 --- a/PhysicsTools/ParallelAnalysis/src/SealModule.cc +++ b/PhysicsTools/ParallelAnalysis/src/SealModule.cc @@ -1,9 +1,8 @@ #include "PluginManager/ModuleDef.h" #include "FWCore/Framework/interface/MakerMacros.h" -#include "PhysicsTools/ParallelAnalysis/src/TSelectorAnalyzer.h" -#include "PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h" - -typedef TSelectorAnalyzer<examples::TrackAnalysisAlgorithm> TrackTSelectorAnalyzer; +#include "PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h" +namespace examples { DEFINE_SEAL_MODULE(); DEFINE_ANOTHER_FWK_MODULE( TrackTSelectorAnalyzer ); +} diff --git a/PhysicsTools/ParallelAnalysis/src/TrackAnalysisAlgorithm.cc b/PhysicsTools/ParallelAnalysis/src/TrackAnalysisAlgorithm.cc index af19a12e2da..0a6441e95f0 100755 --- a/PhysicsTools/ParallelAnalysis/src/TrackAnalysisAlgorithm.cc +++ b/PhysicsTools/ParallelAnalysis/src/TrackAnalysisAlgorithm.cc @@ -2,7 +2,6 @@ #include "DataFormats/TrackReco/interface/Track.h" #include "FWCore/Framework/interface/Handle.h" #include "FWCore/Framework/interface/Event.h" -#include <TCanvas.h> #include <TH1.h> #include <iostream> using namespace examples; @@ -37,19 +36,4 @@ void TrackAnalysisAlgorithm::postProcess( TList & ) { cout << ">> nothing to be done in post-processing" << endl; } -void TrackAnalysisAlgorithm::terminate( TList & out ) { - cout << ">> terminating" << endl; - TCanvas canvas; - draw( out, canvas, kPt ); - draw( out, canvas, kEta ); -} -void TrackAnalysisAlgorithm::draw( const TList & out, TCanvas & canvas, const char * k ) { - TObject * hist = out.FindObject( k ); - if( 0 != hist ) { - hist->Draw(); - canvas.SaveAs( ( string( k ) + ".jpg" ).c_str() ); - } else { - cerr <<">> no '" << k << "' histogram" << endl; - } -} diff --git a/PhysicsTools/ParallelAnalysis/src/TrackTSelector.cc b/PhysicsTools/ParallelAnalysis/src/TrackTSelector.cc index 1bd1e407b4c..0658fcb8f1d 100755 --- a/PhysicsTools/ParallelAnalysis/src/TrackTSelector.cc +++ b/PhysicsTools/ParallelAnalysis/src/TrackTSelector.cc @@ -15,5 +15,18 @@ void TrackTSelector::begin( TList * & ) { void TrackTSelector::terminate( TList & out ) { cout << ">> terminating" << endl; - TrackAnalysisAlgorithm::terminate( out ); + canvas_ = new TCanvas( ); + draw( out, TrackAnalysisAlgorithm::kPt ); + draw( out, TrackAnalysisAlgorithm::kEta ); + delete canvas_; +} + +void TrackTSelector::draw( const TList & out, const char * k ) { + TObject * hist = out.FindObject( k ); + if( 0 != hist ) { + hist->Draw(); + canvas_->SaveAs( ( string( k ) + ".jpg" ).c_str() ); + } else { + cout <<">> no '" << k << "' histogram" << endl; + } } diff --git a/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.cc b/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.cc new file mode 100755 index 00000000000..71ecdd608c8 --- /dev/null +++ b/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.cc @@ -0,0 +1,26 @@ +#include "PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h" +#include <TCanvas.h> +#include <TROOT.h> +#include <TH1.h> +using namespace examples; + +TrackTSelectorAnalyzer::TrackTSelectorAnalyzer( const edm::ParameterSet & ) : + histograms_(), algo_( 0, histograms_ ) { +} + +void TrackTSelectorAnalyzer::analyze( const edm::Event & event, const edm::EventSetup & ) { + algo_.process( event ); +} + +void TrackTSelectorAnalyzer::endJob() { + algo_.postProcess( histograms_ ); + gROOT->SetBatch(); + gROOT->SetStyle("Plain"); + TCanvas canvas; + algo_.h_pt->Draw(); + canvas.SaveAs( "pt-batch.jpg" ); + algo_.h_eta->Draw(); + canvas.SaveAs( "eta-batch.jpg" ); +} + + diff --git a/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h b/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h new file mode 100755 index 00000000000..7398b5a499b --- /dev/null +++ b/PhysicsTools/ParallelAnalysis/src/TrackTSelectorAnalyzer.h @@ -0,0 +1,34 @@ +#ifndef ParallelAnalysis_TrackTSelectorAnalyzer_h +#define ParallelAnalysis_TrackTSelectorAnalyzer_h +/* class examples::TrackTSelectorAnalyzer + * + * Sample module that reuses algorithm class developed for a TSelector + * + * \author Luca Lista, INFN + * + * \version $Revision$ + */ +#include "FWCore/Framework/interface/EDAnalyzer.h" +#include "PhysicsTools/ParallelAnalysis/interface/TrackAnalysisAlgorithm.h" +#include <TList.h> + +namespace examples { + + class TrackTSelectorAnalyzer : public edm::EDAnalyzer { + public: + /// constructor + TrackTSelectorAnalyzer( const edm::ParameterSet & ); + private: + /// analyze an event + void analyze( const edm::Event &, const edm::EventSetup & ); + /// end job + void endJob(); + /// histogram list + TList histograms_; + /// algorithm + TrackAnalysisAlgorithm algo_; + }; + +} + +#endif diff --git a/PhysicsTools/PatAlgos/doc/html/index.html b/PhysicsTools/PatAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/PatAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/PatAlgos/doc/html/overview.html b/PhysicsTools/PatAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/PatAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/PatExamples/doc/html/index.html b/PhysicsTools/PatExamples/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/PatExamples/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/PatExamples/doc/html/overview.html b/PhysicsTools/PatExamples/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/PatExamples/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/PatUtils/doc/html/index.html b/PhysicsTools/PatUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/PatUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/PatUtils/doc/html/overview.html b/PhysicsTools/PatUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/PatUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/PythonAnalysis/doc/PythonAnalysis.doc b/PhysicsTools/PythonAnalysis/doc/PythonAnalysis.doc index 46b0faf2102..28d06365efc 100644 --- a/PhysicsTools/PythonAnalysis/doc/PythonAnalysis.doc +++ b/PhysicsTools/PythonAnalysis/doc/PythonAnalysis.doc @@ -44,8 +44,7 @@ from ROOT import * </pre> \endhtmlonly That's it. -- <b>MCTruth.py</b>: Reads gen event information and prints event number (root version) -- <b>MCTruth2.py</b>: Reads gen event information and prints event number (using cmstools) + - <b>trackerHits.py</b>: Reads sim event information and creates the files <tt>histo.root</tt> and <tt>tofhits.jpg</tt>. \htmlonly diff --git a/PhysicsTools/PythonAnalysis/examples/MCTruth.py b/PhysicsTools/PythonAnalysis/examples/MCTruth.py deleted file mode 100644 index f8e63ded3c9..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/MCTruth.py +++ /dev/null @@ -1,34 +0,0 @@ -from cmstools import * -from ROOT import * -# prepare the FWLite autoloading mechanism -gSystem.Load("libFWCoreFWLite.so") -AutoLibraryLoader.enable() - -# load the file with the generator output -theFile = TFile("generatorOutput.root") - -events = theFile.Get("Events") - -# Needed for SetAddress to work right -events.GetEntry() - -# set the buffers for the branches you want to access -# 1) create a buffer -# 2) open the root branch -# 3) connect buffer and branch -# example: generator particles -source = edm.HepMCProduct() -sourceBranch = events.GetBranch(events.GetAlias("source")) -sourceBranch.SetAddress(source) - -# now loop over the events -for index in all(events): - - # update all branches - the buffers are filled automatically - # Hint: put all you branches in a list and loop over it - sourceBranch.GetEntry(index) - events.GetEntry(index,0) - - # do something with the data - genEvent = source.GetEvent(); - print genEvent.event_number() diff --git a/PhysicsTools/PythonAnalysis/examples/MCTruth2.py b/PhysicsTools/PythonAnalysis/examples/MCTruth2.py deleted file mode 100644 index 42588a5a7fb..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/MCTruth2.py +++ /dev/null @@ -1,21 +0,0 @@ -from cmstools import * -from ROOT import * - -# prepare the FWLite autoloading mechanism -gSystem.Load("libFWCoreFWLite.so") -AutoLibraryLoader.enable() - -# load the file with the generator output -theFile = TFile("generatorOutput.root") - -# access the event tree -events = EventTree(theFile.Get("Events")) - -# access the products inside the tree -# aliases can be used directly -sourceBranch = events.branch("source") - -# loop over the events -for event in events: - genEvent = sourceBranch().GetEvent() - print genEvent diff --git a/PhysicsTools/PythonAnalysis/examples/howto.txt b/PhysicsTools/PythonAnalysis/examples/howto.txt deleted file mode 100644 index 076b6701c1d..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/howto.txt +++ /dev/null @@ -1,15 +0,0 @@ -# How to use the python examples in CMSSW - -# You need to include cms helper classes in PYTHONPATH ("cmstools") -bash: export PYTHONPATH=$CMSSW_BASE/src/PhysicsTools/PythonAnalysis/python:$PYTHONPATH -csh: setenv PYTHONPATH $CMSSW_BASE/src/PhysicsTools/PythonAnalysis/python:$PYTHONPATH - -#execute examples via -python example.py - -# read generatorOutput.root and print the generated event number -python MCTruth.py # standard ROOT and FWLite -python MCTruth2.py # with cmstools - -# makes some tracker plots -python trackerHits.py diff --git a/PhysicsTools/PythonAnalysis/examples/interactiveExample.py b/PhysicsTools/PythonAnalysis/examples/interactiveExample.py deleted file mode 100644 index 4fc26deaa42..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/interactiveExample.py +++ /dev/null @@ -1,66 +0,0 @@ -# example used in november CSA06 tutorial -# has to be called with python -i interactiveExample.py - -from cmstools import * -from ROOT import * - -# prepare the FWLite autoloading mechanism -gSystem.Load("libFWCoreFWLite.so") -AutoLibraryLoader.enable() - -# enable support for files > 2 GB -gSystem.Load("libIOPoolTFileAdaptor") -ui = TFileAdaptorUI() - - -# load the example file from castor -theFile = TFile.Open("castor:/castor/cern.ch/cms/store/CSA06/CSA06-106-os-Jets-0/AOD/CMSSW_1_0_6-AODSIM-H15a59ba7b4c3d9e291172f60a399301f/1025/96C3197B-0264-DB11-9A9C-00304885AD72.root") - - -# access the event tree -print "==============================" -print "Loading event tree" -events = EventTree(theFile.Get("Events")) - -# access the products inside the tree -# aliases can be used directly -print "Registering photon branch" -photonBranch = events.branch("photons") - -# loop over 4 events -print "Start looping over four events" -for event in events: - photons = photonBranch() - print " Number of photons in event %i: %i" % (event, len(photons)) - if event > 2: break # workaround will become obsolete - - - -##################################################### -# all following commands have been used interactively -# -## accessing photons -# print photon[0] -# -## looping over the photons. what's there? -#for photon in photons: -# print photon.energy() -# -## selecting photons -#selectedPhotons = [p for p in photons if p.energy()> 3] -# -## looking at the results -#for photon in selectedPhotons: -# print photon.energy() -# -## how to find out about aliases -#for alias in events.getListOfAliases(): -# print alias -# -## how to learn about an object -#help(photon[0]) -# -## how to leave the session -# -# Ctrl-D - diff --git a/PhysicsTools/PythonAnalysis/examples/start.py b/PhysicsTools/PythonAnalysis/examples/start.py deleted file mode 100644 index 57c87432292..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/start.py +++ /dev/null @@ -1,8 +0,0 @@ -# startup commands for interactive use - -from ROOT import * -from cmstools import * - -gSystem.Load("libFWCoreFWLite.so") -AutoLibraryLoader.enable() - diff --git a/PhysicsTools/PythonAnalysis/examples/trackerHits.py b/PhysicsTools/PythonAnalysis/examples/trackerHits.py deleted file mode 100644 index ec186c851d8..00000000000 --- a/PhysicsTools/PythonAnalysis/examples/trackerHits.py +++ /dev/null @@ -1,30 +0,0 @@ -# first load cmstools and ROOT classes -from cmstools import * -from ROOT import * - -# opening file and accessing branches -print "Opening SimHit file" -file = TFile("simevent.root") -events = file.Get("Events") -branch = events.GetBranch("PSimHit_r_TrackerHitsTIBLowTof.obj") - -simHit = std.vector(PSimHit)() -branch.SetAddress(simHit) - -histo = TH1F("tofhits", "Tof of hits", 100, -0.5, 50) - -# loop over all events -for ev in all(events): - branch.GetEntry(ev) - for hit in all(simHit): - histo.Fill(hit.timeOfFlight()) - -hFile = TFile("histo.root", "RECREATE") -histo.Write() - -gROOT.SetBatch() -gROOT.SetStyle("Plain") - -c = TCanvas() -histo.Draw() -c.SaveAs("tofhits.jpg") diff --git a/PhysicsTools/PythonAnalysis/python/cmstools.py b/PhysicsTools/PythonAnalysis/python/cmstools.py index 00f5bd08a84..fb9a4505493 100644 --- a/PhysicsTools/PythonAnalysis/python/cmstools.py +++ b/PhysicsTools/PythonAnalysis/python/cmstools.py @@ -3,9 +3,7 @@ benedikt.hegner@cern.ch """ -import re -import ROOT -import exceptions + ### define tab completion try: import readline, cmscompleter @@ -35,85 +33,10 @@ def all(container): except: pass - # loop over containers with begin and end iterators -def loop(begin, end): - """Convert a pair of C++ iterators into a python generator""" - while (begin != end): - yield begin.__deref__() #*b - begin.__preinc__() #++b - -### auto branch types (Chris Jones) -def createBranchBuffer(branch): - reColons = re.compile(r'::') - reCloseTemplate =re.compile(r'>') - reOpenTemplate =re.compile(r'<') - branchType = ROOT.branchToClass(branch) - buffer = eval ('ROOT.'+reColons.sub(".",reOpenTemplate.sub("(ROOT.",reCloseTemplate.sub(")",branchType.GetName())))+'()') - if( branch.GetName()[-1] != '.'): - branch.SetAddress(buffer) - else: - branch.SetAddress(ROOT.AddressOf(buffer)) - return buffer - -class EventTree(object): - def __init__(self,ttree): - self._tree = ttree - self._usedBranches = dict() - self._index = -1 - self._aliases = ttree.GetListOfAliases() - def branch(self,name): - # support for aliases - alias = self._tree.GetAlias(name) - if alias != '': name = alias - # access the branch in ttree - if name in self._usedBranches: - return self._usedBranches[name] - self._usedBranches[name]=EventBranch(self,name) - return self._usedBranches[name] - def getListOfAliases(self): - return self._aliases - def tree(self): - return self._tree - def index(self): - return self._index - def __setBranchIndicies(self): - for branch in self._usedBranches.itervalues(): - branch.setIndex(self._index) - def __getitem__(self,key): - if key <0 or key > self._tree.GetEntries(): - raise IndexError - self._index = key - self.__setBranchIndicies() - def __iter__(self): - for entry in xrange(self._tree.GetEntries()): - self._index = entry - self.__setBranchIndicies() - yield entry - - -class EventBranch(object): - def __init__(self,parent,name): - self._branch = parent.tree().GetBranch(name) - if self._branch == None: - raise cmserror("Unknown branch "+name) - self._buffer = createBranchBuffer(self._branch) - self._index = parent.index() - self._readData = False - def setIndex(self,index): - self._index = index - self._readData = False - def __readData(self): - self._branch.GetEntry(self._index) - self._readData = True - - # replace this by __getattr__ to allow branch.attr instead of branch().attr - def __call__(self): - if not self._readData: - self.__readData() - return self._buffer -class cmserror(exceptions.StandardError): - def __init__(self, message): - print "========================================" - print "ERROR:", message - print "========================================" +### prepare the environment +### (will be changed for ROOT 5.10) +print 'Loading FWLite...' +from ROOT import * +gSystem.Load('libFWCoreFWLite') +AutoLibraryLoader.enable() diff --git a/PhysicsTools/RecoAlgos/interface/ElectronSelector.h b/PhysicsTools/RecoAlgos/interface/ElectronSelector.h index 57d0a86557e..2576160927c 100755 --- a/PhysicsTools/RecoAlgos/interface/ElectronSelector.h +++ b/PhysicsTools/RecoAlgos/interface/ElectronSelector.h @@ -1,4 +1,4 @@ -#ifndef RecoAlgos_ElectronSelector_h +#ifndef RecoAlgos_ElectonSelector_h #define RecoAlgos_ElectronSelector_h /** \class ElectronSelector * @@ -7,9 +7,9 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.4 $ + * \version $Revision: 1.5 $ * - * $Id: ElectronSelector.h,v 1.4 2006/09/22 11:29:27 meridian Exp $ + * $Id: ElectronSelector.h,v 1.5 2006/10/12 19:17:10 meridian Exp $ * */ @@ -80,7 +80,7 @@ namespace helper { class ElectronSelectorBase : public edm::EDFilter { public: ElectronSelectorBase( const edm::ParameterSet & cfg ) { - std::string alias( cfg.template getParameter<std::string>( "@module_label" ) ); + std::string alias( cfg.getParameter<std::string>( "@module_label" ) ); produces<reco::ElectronCollection>().setBranchAlias( alias + "Electrons" ); produces<reco::SuperClusterCollection>().setBranchAlias( alias + "SuperClusters" ); produces<reco::TrackCollection>().setBranchAlias( alias + "Tracks" ); diff --git a/PhysicsTools/RecoAlgos/interface/PhotonSelector.h b/PhysicsTools/RecoAlgos/interface/PhotonSelector.h index 8befca9a77b..4fac80bd27d 100755 --- a/PhysicsTools/RecoAlgos/interface/PhotonSelector.h +++ b/PhysicsTools/RecoAlgos/interface/PhotonSelector.h @@ -7,9 +7,9 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.1 $ + * \version $Revision: 1.2 $ * - * $Id: PhotonSelector.h,v 1.1 2006/09/22 10:06:29 llista Exp $ + * $Id: PhotonSelector.h,v 1.2 2006/09/22 10:46:43 llista Exp $ * */ @@ -49,7 +49,7 @@ namespace helper { class PhotonSelectorBase : public edm::EDFilter { public: PhotonSelectorBase( const edm::ParameterSet & cfg ) { - std::string alias( cfg.template getParameter<std::string>( "@module_label" ) ); + std::string alias( cfg.getParameter<std::string>( "@module_label" ) ); produces<reco::PhotonCollection>().setBranchAlias( alias + "Photons" ); produces<reco::SuperClusterCollection>().setBranchAlias( alias + "SuperClusters" ); } diff --git a/PhysicsTools/RecoAlgos/src/ObjectCountFilters.h b/PhysicsTools/RecoAlgos/src/ObjectCountFilters.h index e0523053c7f..a5d38a16c3b 100755 --- a/PhysicsTools/RecoAlgos/src/ObjectCountFilters.h +++ b/PhysicsTools/RecoAlgos/src/ObjectCountFilters.h @@ -12,72 +12,68 @@ #include "DataFormats/EgammaCandidates/interface/Photon.h" #include "DataFormats/JetReco/interface/CaloJet.h" -namespace reco { - namespace modules { - /// filter on track number - typedef ObjectCountFilter< - reco::TrackCollection - > TrackCountFilter; + /// filter on track number + typedef ObjectCountFilter< + reco::TrackCollection + > TrackCountFilter; - /// filter on electron number - typedef ObjectCountFilter< - reco::ElectronCollection - > ElectronCountFilter; + /// filter on electron number + typedef ObjectCountFilter< + reco::ElectronCollection + > ElectronCountFilter; - /// filter on photon number - typedef ObjectCountFilter< - reco::PhotonCollection - > PhotonCountFilter; + /// filter on photon number + typedef ObjectCountFilter< + reco::PhotonCollection + > PhotonCountFilter; - /// filter on muon number - typedef ObjectCountFilter< - reco::MuonCollection - > MuonCountFilter; + /// filter on muon number + typedef ObjectCountFilter< + reco::MuonCollection + > MuonCountFilter; - /// filter on calo jet number - typedef ObjectCountFilter< - reco::CaloJetCollection - > CaloJetCountFilter; + /// filter on calo jet number + typedef ObjectCountFilter< + reco::CaloJetCollection + > CaloJetCountFilter; - /// filter on track number - typedef ObjectCountFilter< - reco::TrackCollection, - PtMinSelector<reco::Track> - > PtMinTrackCountFilter; + /// filter on track number + typedef ObjectCountFilter< + reco::TrackCollection, + PtMinSelector<reco::Track> + > PtMinTrackCountFilter; - /// filter on electron number - typedef ObjectCountFilter< - reco::ElectronCollection, - PtMinSelector<reco::Electron> - > PtMinElectronCountFilter; + /// filter on electron number + typedef ObjectCountFilter< + reco::ElectronCollection, + PtMinSelector<reco::Electron> + > PtMinElectronCountFilter; - /// filter on photon number - typedef ObjectCountFilter< - reco::PhotonCollection, - PtMinSelector<reco::Photon> - > PtMinPhotonCountFilter; + /// filter on photon number + typedef ObjectCountFilter< + reco::PhotonCollection, + PtMinSelector<reco::Photon> + > PtMinPhotonCountFilter; - /// filter on muon number - typedef ObjectCountFilter< - reco::MuonCollection, - PtMinSelector<reco::Muon> - > PtMinMuonCountFilter; + /// filter on muon number + typedef ObjectCountFilter< + reco::MuonCollection, + PtMinSelector<reco::Muon> + > PtMinMuonCountFilter; - /// filter on calo jets - typedef ObjectCountFilter< - reco::CaloJetCollection, - EtMinSelector<reco::CaloJet> - > EtMinCaloJetCountFilter; + /// filter on calo jets + typedef ObjectCountFilter< + reco::CaloJetCollection, + EtMinSelector<reco::CaloJet> + > EtMinCaloJetCountFilter; - /// filter on calo jets - typedef ObjectCountFilter< - reco::CaloJetCollection, + /// filter on calo jets + typedef ObjectCountFilter< + reco::CaloJetCollection, AndSelector< - EtMinSelector<reco::CaloJet>, + EtMinSelector<reco::CaloJet>, EtaRangeSelector<reco::CaloJet> - > - > EtaEtMinCaloJetCountFilter; + > + > EtaEtMinCaloJetCountFilter; - } -} #endif diff --git a/PhysicsTools/RecoAlgos/src/ObjectPairFilters.h b/PhysicsTools/RecoAlgos/src/ObjectPairFilters.h index d5fd07fbdb4..83d213f11fb 100755 --- a/PhysicsTools/RecoAlgos/src/ObjectPairFilters.h +++ b/PhysicsTools/RecoAlgos/src/ObjectPairFilters.h @@ -6,23 +6,20 @@ #include "DataFormats/MuonReco/interface/Muon.h" #include "DataFormats/EgammaCandidates/interface/Electron.h" -namespace reco { - namespace modules { - /// filter on electron pairs based on invariant mass - typedef ObjectPairFilter< - reco::ElectronCollection, - RangeObjectPairSelector< - reco::Electron, - MasslessInvariantMass<reco::Electron> > - > ElectronPairMassFilter; +/// filter on electron pairs based on invariant mass +typedef ObjectPairFilter< + reco::ElectronCollection, + RangeObjectPairSelector< + reco::Electron, + MasslessInvariantMass<reco::Electron> > + > ElectronPairMassFilter; + +/// filter on muon pairs based on invariant mass +typedef ObjectPairFilter< + reco::MuonCollection, + RangeObjectPairSelector< + reco::Muon, + MasslessInvariantMass<reco::Muon> > + > MuonPairMassFilter; - /// filter on muon pairs based on invariant mass - typedef ObjectPairFilter< - reco::MuonCollection, - RangeObjectPairSelector< - reco::Muon, - MasslessInvariantMass<reco::Muon> > - > MuonPairMassFilter; - } -} #endif diff --git a/PhysicsTools/RecoAlgos/src/ObjectSelectors.h b/PhysicsTools/RecoAlgos/src/ObjectSelectors.h index bcb06d0062d..3f6b629e7b9 100755 --- a/PhysicsTools/RecoAlgos/src/ObjectSelectors.h +++ b/PhysicsTools/RecoAlgos/src/ObjectSelectors.h @@ -21,117 +21,113 @@ #include "PhysicsTools/Utilities/interface/MinSelector.h" #include "PhysicsTools/CandAlgos/interface/ObjectShallowCloneSelector.h" -namespace reco { - namespace modules { + extern const std::string massParamPrefix( "mass" ); - extern const std::string massParamPrefix( "mass" ); + /// select all tracks (just for test) + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::TrackCollection, + AnySelector<reco::Track> + > + > AnyTrackSelector; - /// select all tracks (just for test) - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::TrackCollection, - AnySelector<reco::Track> - > - > AnyTrackSelector; + /// select tracks above a give pt + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::TrackCollection, + PtMinSelector<reco::Track> + > + > PtMinTrackSelector; - /// select tracks above a give pt - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::TrackCollection, - PtMinSelector<reco::Track> - > - > PtMinTrackSelector; + /// select electrons above a give pt + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::ElectronCollection, + PtMinSelector<reco::Electron> + > + > PtMinElectronSelector; - /// select electrons above a give pt - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::ElectronCollection, - PtMinSelector<reco::Electron> - > - > PtMinElectronSelector; + /// select photons above a give Et + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::PhotonCollection, + EtMinSelector<reco::Photon> + > + > EtMinPhotonSelector; - /// select photons above a give Et - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::PhotonCollection, - EtMinSelector<reco::Photon> - > - > EtMinPhotonSelector; + /// select calo jets above a give Et + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::CaloJetCollection, + EtMinSelector<reco::CaloJet> + > + > EtMinCaloJetSelector; - /// select calo jets above a give Et - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::CaloJetCollection, - EtMinSelector<reco::CaloJet> - > - > EtMinCaloJetSelector; + /// select calo jets above a give Et + /// storing a polymorphic collection of + /// shallow clone candidates + typedef ObjectShallowCloneSelector< + SingleElementCollectionSelector< + reco::CaloJetCollection, + EtMinSelector<reco::CaloJet>, + edm::RefVector<reco::CaloJetCollection> + > + > EtMinCaloJetShallowCloneSelector; - /// select calo jets above a give Et - /// storing a polymorphic collection of - /// shallow clone candidates - typedef ObjectShallowCloneSelector< - SingleElementCollectionSelector< - reco::CaloJetCollection, - EtMinSelector<reco::CaloJet>, - edm::RefVector<reco::CaloJetCollection> - > - > EtMinCaloJetShallowCloneSelector; - - /// select electrons above a give pt - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::ElectronCollection, + /// select electrons above a give pt + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::ElectronCollection, AndSelector< - EtaRangeSelector<reco::Electron>, - PtMinSelector<reco::Electron> - > - > - > EtaPtMinElectronSelector; + EtaRangeSelector<reco::Electron>, + PtMinSelector<reco::Electron> + > + > + > EtaPtMinElectronSelector; - /// configurable single track selector - typedef ObjectSelector< - SingleElementCollectionSelector< - reco::TrackCollection, - SingleObjectSelector<reco::Track> - > - > ConfigTrackSelector; + /// configurable single track selector + typedef ObjectSelector< + SingleElementCollectionSelector< + reco::TrackCollection, + SingleObjectSelector<reco::Track> + > + > ConfigTrackSelector; - /// select the N tracks with highest pt - typedef ObjectSelector< - SortCollectionSelector< - reco::TrackCollection, + /// select the N tracks with highest pt + typedef ObjectSelector< + SortCollectionSelector< + reco::TrackCollection, PtInverseComparator<reco::Track> - > - > LargestPtTrackSelector; + > + > LargestPtTrackSelector; - /// select the N calo jets with highest Et - typedef ObjectSelector< - SortCollectionSelector< - reco::CaloJetCollection, + /// select the N calo jets with highest Et + typedef ObjectSelector< + SortCollectionSelector< + reco::CaloJetCollection, EtInverseComparator<reco::CaloJet> - > - > LargestEtCaloJetSelector; + > + > LargestEtCaloJetSelector; + + /// select the N calo jets with highest Et + typedef ObjectShallowCloneSelector< + SortCollectionSelector< + reco::CaloJetCollection, + EtInverseComparator<reco::CaloJet>, + edm::RefVector<reco::CaloJetCollection> + > + > LargestEtCaloJetShallowCloneSelector; - /// select the N calo jets with highest Et - typedef ObjectShallowCloneSelector< - SortCollectionSelector< - reco::CaloJetCollection, - EtInverseComparator<reco::CaloJet>, - edm::RefVector<reco::CaloJetCollection> - > - > LargestEtCaloJetShallowCloneSelector; + /// select track pairs within a given mass window + typedef ObjectSelector< + ObjectPairCollectionSelector< + reco::TrackCollection, + RangeObjectPairSelector< + reco::Track, + MasslessInvariantMass<reco::Track>, + massParamPrefix + > + > + > MassWindowTrackSelector; - /// select track pairs within a given mass window - typedef ObjectSelector< - ObjectPairCollectionSelector< - reco::TrackCollection, - RangeObjectPairSelector< - reco::Track, - MasslessInvariantMass<reco::Track>, - massParamPrefix - > - > - > MassWindowTrackSelector; - } -} #endif diff --git a/PhysicsTools/RecoAlgos/src/ObjectUtilities.h b/PhysicsTools/RecoAlgos/src/ObjectUtilities.h index 2bc458f8b08..10680ac0f8e 100755 --- a/PhysicsTools/RecoAlgos/src/ObjectUtilities.h +++ b/PhysicsTools/RecoAlgos/src/ObjectUtilities.h @@ -8,28 +8,22 @@ #include "DataFormats/EgammaCandidates/interface/Photon.h" #include "DataFormats/JetReco/interface/CaloJet.h" -namespace reco { - namespace modules { - /// merge an arbitray number of reco::TrackCollection - typedef Merger<reco::TrackCollection> TrackMerger; +/// merge an arbitray number of reco::TrackCollection +typedef Merger<reco::TrackCollection> TrackMerger; - /// merge an arbitray number of reco::MuonCollection - typedef Merger<reco::MuonCollection> MuonMerger; +/// merge an arbitray number of reco::MuonCollection +typedef Merger<reco::MuonCollection> MuonMerger; - /// merge an arbitray number of reco::ElectronCollection - typedef Merger<reco::ElectronCollection> ElectronMerger; +/// merge an arbitray number of reco::ElectronCollection +typedef Merger<reco::ElectronCollection> ElectronMerger; - /// merge an arbitray number of reco::PhotonCollection - typedef Merger<reco::PhotonCollection> PhotonMerger; +/// merge an arbitray number of reco::PhotonCollection +typedef Merger<reco::PhotonCollection> PhotonMerger; - /// merge an arbitray number of reco::CaloJet - typedef Merger<reco::CaloJetCollection> CaloJetMerger; +/// merge an arbitray number of reco::CaloJet +typedef Merger<reco::CaloJetCollection> CaloJetMerger; - - - /// Recover a collection of reco::Track - typedef CollectionRecoverer<reco::TrackCollection> TrackRecoverer; - } -} +/// Recover a collection of reco::Track +typedef CollectionRecoverer<reco::TrackCollection> TrackRecoverer; #endif diff --git a/PhysicsTools/RecoAlgos/src/SealModule.cc b/PhysicsTools/RecoAlgos/src/SealModule.cc index 6789f6963f9..d69befae409 100755 --- a/PhysicsTools/RecoAlgos/src/SealModule.cc +++ b/PhysicsTools/RecoAlgos/src/SealModule.cc @@ -5,47 +5,41 @@ #include "PhysicsTools/RecoAlgos/src/ObjectSelectors.h" #include "PhysicsTools/RecoAlgos/src/ObjectUtilities.h" -namespace reco { - namespace modules { +DEFINE_SEAL_MODULE(); -DEFINE_SEAL_MODULE() - - // filters -DEFINE_ANOTHER_FWK_MODULE( TrackCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( ElectronCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( PhotonCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( MuonCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( CaloJetCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( PtMinTrackCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( PtMinElectronCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( PtMinPhotonCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( PtMinMuonCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( EtaEtMinCaloJetCountFilter ) -DEFINE_ANOTHER_FWK_MODULE( ElectronPairMassFilter ) -DEFINE_ANOTHER_FWK_MODULE( MuonPairMassFilter ) + // filters +DEFINE_ANOTHER_FWK_MODULE( TrackCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( ElectronCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( PhotonCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( MuonCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( CaloJetCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( PtMinTrackCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( PtMinElectronCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( PtMinPhotonCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( PtMinMuonCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( EtaEtMinCaloJetCountFilter ); +DEFINE_ANOTHER_FWK_MODULE( ElectronPairMassFilter ); +DEFINE_ANOTHER_FWK_MODULE( MuonPairMassFilter ); // selectors -DEFINE_ANOTHER_FWK_MODULE( AnyTrackSelector ) -DEFINE_ANOTHER_FWK_MODULE( PtMinTrackSelector ) -DEFINE_ANOTHER_FWK_MODULE( PtMinElectronSelector ) -DEFINE_ANOTHER_FWK_MODULE( EtMinPhotonSelector ) -DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetSelector ) -DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetShallowCloneSelector ) -DEFINE_ANOTHER_FWK_MODULE( EtaPtMinElectronSelector ) -DEFINE_ANOTHER_FWK_MODULE( LargestPtTrackSelector ) -DEFINE_ANOTHER_FWK_MODULE( LargestEtCaloJetSelector ) -DEFINE_ANOTHER_FWK_MODULE( LargestEtCaloJetShallowCloneSelector ) -DEFINE_ANOTHER_FWK_MODULE( MassWindowTrackSelector ) -DEFINE_ANOTHER_FWK_MODULE( ConfigTrackSelector ) - - // other utilities -DEFINE_ANOTHER_FWK_MODULE( TrackMerger ) -DEFINE_ANOTHER_FWK_MODULE( MuonMerger ) -DEFINE_ANOTHER_FWK_MODULE( ElectronMerger ) -DEFINE_ANOTHER_FWK_MODULE( PhotonMerger ) -DEFINE_ANOTHER_FWK_MODULE( CaloJetMerger ) -DEFINE_ANOTHER_FWK_MODULE( TrackRecoverer ) +DEFINE_ANOTHER_FWK_MODULE( AnyTrackSelector ); +DEFINE_ANOTHER_FWK_MODULE( PtMinTrackSelector ); +DEFINE_ANOTHER_FWK_MODULE( PtMinElectronSelector ); +DEFINE_ANOTHER_FWK_MODULE( EtMinPhotonSelector ); +DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetSelector ); +DEFINE_ANOTHER_FWK_MODULE( EtMinCaloJetShallowCloneSelector ); +DEFINE_ANOTHER_FWK_MODULE( EtaPtMinElectronSelector ); +DEFINE_ANOTHER_FWK_MODULE( LargestPtTrackSelector ); +DEFINE_ANOTHER_FWK_MODULE( LargestEtCaloJetSelector ); +DEFINE_ANOTHER_FWK_MODULE( LargestEtCaloJetShallowCloneSelector ); +DEFINE_ANOTHER_FWK_MODULE( MassWindowTrackSelector ); +DEFINE_ANOTHER_FWK_MODULE( ConfigTrackSelector ); - } -} + // other utilities +DEFINE_ANOTHER_FWK_MODULE( TrackMerger ); +DEFINE_ANOTHER_FWK_MODULE( MuonMerger ); +DEFINE_ANOTHER_FWK_MODULE( ElectronMerger ); +DEFINE_ANOTHER_FWK_MODULE( PhotonMerger ); +DEFINE_ANOTHER_FWK_MODULE( CaloJetMerger ); +DEFINE_ANOTHER_FWK_MODULE( TrackRecoverer ); diff --git a/PhysicsTools/RecoUtils/doc/html/index.html b/PhysicsTools/RecoUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/RecoUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/RecoUtils/doc/html/overview.html b/PhysicsTools/RecoUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/RecoUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/RooStatsCms/doc/html/index.html b/PhysicsTools/RooStatsCms/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/RooStatsCms/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/RooStatsCms/doc/html/overview.html b/PhysicsTools/RooStatsCms/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/RooStatsCms/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/SelectorUtils/doc/html/index.html b/PhysicsTools/SelectorUtils/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/SelectorUtils/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/SelectorUtils/doc/html/overview.html b/PhysicsTools/SelectorUtils/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/SelectorUtils/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/StarterKit/doc/html/index.html b/PhysicsTools/StarterKit/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/StarterKit/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/StarterKit/doc/html/overview.html b/PhysicsTools/StarterKit/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/StarterKit/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/StatPatternRecognition/doc/html/index.html b/PhysicsTools/StatPatternRecognition/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/PhysicsTools/StatPatternRecognition/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/PhysicsTools/StatPatternRecognition/doc/html/overview.html b/PhysicsTools/StatPatternRecognition/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/PhysicsTools/StatPatternRecognition/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/PhysicsTools/UtilAlgos/interface/ObjectCountFilter.h b/PhysicsTools/UtilAlgos/interface/ObjectCountFilter.h index 1f2f5c4b272..8794ff0a5c5 100644 --- a/PhysicsTools/UtilAlgos/interface/ObjectCountFilter.h +++ b/PhysicsTools/UtilAlgos/interface/ObjectCountFilter.h @@ -6,9 +6,9 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.3 $ + * \version $Revision: 1.4 $ * - * $Id: ObjectCountFilter.h,v 1.3 2006/10/02 10:15:03 llista Exp $ + * $Id: ObjectCountFilter.h,v 1.4 2006/10/03 09:02:10 llista Exp $ * */ @@ -53,14 +53,15 @@ public: } private: + typedef ObjectCountFilterBase<S> base; /// process one event bool filter( edm::Event& evt, const edm::EventSetup& ) { edm::Handle<C> source; - evt.getByLabel( src_, source ); + evt.getByLabel( base::src_, source ); size_t n = 0; for( typename C::const_iterator i = source->begin(); i != source->end(); ++ i ) { if ( select_( * i ) ) n ++; - if ( n >= minNumber_ ) return true; + if ( n >= base::minNumber_ ) return true; } return false; } @@ -79,11 +80,12 @@ public: } private: + typedef ObjectCountFilterBase<AnySelector<typename C::value_type> > base; /// process one event bool filter( edm::Event& evt, const edm::EventSetup& ) { edm::Handle<C> source; - evt.getByLabel( src_, source ); - return source->size() >= minNumber_; + evt.getByLabel( base::src_, source ); + return source->size() >= base::minNumber_; } }; diff --git a/PhysicsTools/UtilAlgos/interface/ObjectPairCollectionSelector.h b/PhysicsTools/UtilAlgos/interface/ObjectPairCollectionSelector.h index 79cba0814b1..fb4d3a8ce5d 100644 --- a/PhysicsTools/UtilAlgos/interface/ObjectPairCollectionSelector.h +++ b/PhysicsTools/UtilAlgos/interface/ObjectPairCollectionSelector.h @@ -7,9 +7,9 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.3 $ + * \version $Revision: 1.4 $ * - * $Id: ObjectPairCollectionSelector.h,v 1.3 2006/10/27 10:03:45 llista Exp $ + * $Id: ObjectPairCollectionSelector.h,v 1.4 2006/10/27 10:21:25 llista Exp $ * */ @@ -22,7 +22,9 @@ template<typename C, typename S, typename SC = std::vector<const typename C::value_type *>, typename A = typename helper::SelectionAdderTrait<SC>::type> class ObjectPairCollectionSelector { +public: typedef C collection; +private: typedef const typename C::value_type * reference; typedef SC container; typedef typename container::const_iterator const_iterator; diff --git a/PhysicsTools/UtilAlgos/interface/SortCollectionSelector.h b/PhysicsTools/UtilAlgos/interface/SortCollectionSelector.h index 1e8e3c4e47b..94b5cb12d10 100644 --- a/PhysicsTools/UtilAlgos/interface/SortCollectionSelector.h +++ b/PhysicsTools/UtilAlgos/interface/SortCollectionSelector.h @@ -6,9 +6,9 @@ * * \author Luca Lista, INFN * - * \version $Revision: 1.4 $ + * \version $Revision: 1.6 $ * - * $Id: SortCollectionSelector.h,v 1.4 2006/10/27 07:55:03 llista Exp $ + * $Id: SortCollectionSelector.h,v 1.6 2006/10/27 10:21:25 llista Exp $ * */ @@ -22,7 +22,9 @@ template<typename C, typename CMP, typename SC = std::vector<const typename C::value_type *>, typename A = typename helper::SelectionAdderTrait<SC>::type> class SortCollectionSelector { +public: typedef C collection; +private: typedef const typename C::value_type * reference; typedef std::pair<reference, size_t> pair; typedef SC container; diff --git a/QCDAnalysis/ChargedHadronSpectra/doc/html/index.html b/QCDAnalysis/ChargedHadronSpectra/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/QCDAnalysis/ChargedHadronSpectra/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/QCDAnalysis/ChargedHadronSpectra/doc/html/overview.html b/QCDAnalysis/ChargedHadronSpectra/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/QCDAnalysis/ChargedHadronSpectra/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/QCDAnalysis/Configuration/doc/html/index.html b/QCDAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/QCDAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/QCDAnalysis/Configuration/doc/html/overview.html b/QCDAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/QCDAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/QCDAnalysis/Skimming/doc/html/index.html b/QCDAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/QCDAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/QCDAnalysis/Skimming/doc/html/overview.html b/QCDAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/QCDAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/QCDAnalysis/UEAnalysis/doc/html/index.html b/QCDAnalysis/UEAnalysis/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/QCDAnalysis/UEAnalysis/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/QCDAnalysis/UEAnalysis/doc/html/overview.html b/QCDAnalysis/UEAnalysis/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/QCDAnalysis/UEAnalysis/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/ImpactParameter/doc/html/index.html b/RecoBTag/ImpactParameter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/ImpactParameter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/ImpactParameter/doc/html/overview.html b/RecoBTag/ImpactParameter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/ImpactParameter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/ImpactParameterLearning/doc/html/index.html b/RecoBTag/ImpactParameterLearning/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/ImpactParameterLearning/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/ImpactParameterLearning/doc/html/overview.html b/RecoBTag/ImpactParameterLearning/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/ImpactParameterLearning/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/PerformanceDB/doc/html/index.html b/RecoBTag/PerformanceDB/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/PerformanceDB/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/PerformanceDB/doc/html/overview.html b/RecoBTag/PerformanceDB/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/PerformanceDB/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/Records/doc/html/index.html b/RecoBTag/Records/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/Records/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/Records/doc/html/overview.html b/RecoBTag/Records/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/Records/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/SecondaryVertex/doc/html/index.html b/RecoBTag/SecondaryVertex/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/SecondaryVertex/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/SecondaryVertex/doc/html/overview.html b/RecoBTag/SecondaryVertex/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/SecondaryVertex/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/Skimming/doc/html/index.html b/RecoBTag/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/Skimming/doc/html/overview.html b/RecoBTag/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTag/TrackProbability/doc/html/index.html b/RecoBTag/TrackProbability/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTag/TrackProbability/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTag/TrackProbability/doc/html/overview.html b/RecoBTag/TrackProbability/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTag/TrackProbability/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTau/JetCrystalsAssociator/doc/html/index.html b/RecoBTau/JetCrystalsAssociator/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTau/JetCrystalsAssociator/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTau/JetCrystalsAssociator/doc/html/overview.html b/RecoBTau/JetCrystalsAssociator/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTau/JetCrystalsAssociator/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTau/JetTagComputer/doc/html/index.html b/RecoBTau/JetTagComputer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTau/JetTagComputer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTau/JetTagComputer/doc/html/overview.html b/RecoBTau/JetTagComputer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTau/JetTagComputer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoBTau/JetTagMVALearning/doc/html/index.html b/RecoBTau/JetTagMVALearning/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoBTau/JetTagMVALearning/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoBTau/JetTagMVALearning/doc/html/overview.html b/RecoBTau/JetTagMVALearning/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoBTau/JetTagMVALearning/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoCaloTools/EcalChannelKiller/doc/html/index.html b/RecoCaloTools/EcalChannelKiller/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoCaloTools/EcalChannelKiller/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoCaloTools/EcalChannelKiller/doc/html/overview.html b/RecoCaloTools/EcalChannelKiller/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoCaloTools/EcalChannelKiller/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h b/RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h deleted file mode 100644 index b63bda934a8..00000000000 --- a/RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef RecoECAL_ECALClusters_ClusteringAlgorithm_h -#define RecoECAL_ECALClusters_ClusteringAlgorithm_h - -#include "Geometry/CaloGeometry/interface/CaloGeometry.h" - -#include "DataFormats/Math/interface/Point3D.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" -#include "DataFormats/EcalDetId/interface/EBDetId.h" -#include "DataFormats/EgammaReco/interface/BasicCluster.h" - -#include "RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h" - -// C/C++ headers -#include <string> -#include <vector> - -// - -const double defaultSeedThreshold = 2; - -class ClusteringAlgorithm -{ - public: - - ClusteringAlgorithm() - { - ecalBarrelSeedThreshold = defaultSeedThreshold; - } - - ClusteringAlgorithm(double ebst, double ecst) : ecalBarrelSeedThreshold(ebst) - { - } - - virtual ~ClusteringAlgorithm() - { - } - - // this is the method that will start the clusterisation - std::vector<reco::BasicCluster> makeClusters(const EcalRecHitCollection & rechits, - const CaloSubdetectorGeometry *geometry); - /// point in the space - typedef math::XYZPoint Point; - - protected: - - // Energy required for a seed: - double ecalBarrelSeedThreshold; - - // Map of RecHits - std::map<EBDetId, PositionAwareHit> rechits_m; - - // The vector of seeds: - std::vector<PositionAwareHit> seeds; - - // The vector of clusters - std::vector<reco::BasicCluster> clusters; - - virtual void mainSearch(const CaloSubdetectorGeometry *geometry) = 0; //the real clustering algorithm - Point getECALposition(std::vector<reco::EcalRecHitData> recHits, const CaloSubdetectorGeometry *geometry);//Position determination - -}; - -#endif diff --git a/RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h b/RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h index 634abf9c535..88116c6dd65 100644 --- a/RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h +++ b/RecoEcal/EgammaClusterAlgos/interface/HybridClusterAlgo.h @@ -54,8 +54,11 @@ class HybridClusterAlgo // The vector of seeds: std::vector<EcalRecHit> seeds; + //The vector of seed clusters: + std::vector<reco::BasicCluster> seedClus_; + //Map of basicclusters and what supercluster they will belong to. - std::map<int, std::vector<reco::BasicCluster> > _clustered; + std::map<int, std::vector<reco::BasicCluster> > clustered_; //Control the verbosity. int debugLevel_; diff --git a/RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h b/RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h index 822be6dbc46..993de140592 100644 --- a/RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h +++ b/RecoEcal/EgammaClusterAlgos/interface/IslandClusterAlgo.h @@ -61,6 +61,7 @@ class IslandClusterAlgo std::vector<reco::BasicCluster> makeClusters(const EcalRecHitCollection* hits, const CaloSubdetectorGeometry *geometry, const CaloSubdetectorTopology *topology_p, + const CaloSubdetectorGeometry *geometryES_p, EcalPart ecalPart); /// point in the space @@ -97,6 +98,7 @@ class IslandClusterAlgo void mainSearch(const EcalRecHitCollection* hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorTopology *topology_p, + const CaloSubdetectorGeometry *geometryES_p, EcalPart ecalPart); void searchNorth(const CaloNavigator<DetId> &navigator); @@ -106,7 +108,7 @@ class IslandClusterAlgo bool shouldBeAdded(EcalRecHitCollection::const_iterator candidate_it, EcalRecHitCollection::const_iterator previous_it); - void makeCluster(const EcalRecHitCollection* hits,const CaloSubdetectorGeometry *geometry_p); + void makeCluster(const EcalRecHitCollection* hits,const CaloSubdetectorGeometry *geometry_p,const CaloSubdetectorGeometry *geometryES_p); }; diff --git a/RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h b/RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h deleted file mode 100644 index d839a2aa5ce..00000000000 --- a/RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef RecoECAL_ECALClusters_PositionAwareHit_h -#define RecoECAL_ECALClusters_PositionAwareHit_h - -#include "DataFormats/EcalDetId/interface/EBDetId.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" - -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" - - -class PositionAwareHit -{ - - private: - - // this position aware hit corresponds to a rec hit: - const EcalRecHit *rechit_p; - - // The position vector of the hit crystal:: - GlobalPoint position; - - bool used; - - public: - - PositionAwareHit(const EcalRecHit *theRechit_p, const CaloSubdetectorGeometry *the_geometry); - - int operator<(const PositionAwareHit &other_hit) const; - - void use() { used = true; } - bool isUsed() { return used; } - - double getEta() { return position.eta(); } - double getTheta() { return position.theta(); } - double getPhi() { return position.phi(); } - double getEnergy() const { return rechit_p->energy(); } - double getET() { double ET = getEnergy() * sin(getTheta()); return ET; } - - EBDetId getId() { return rechit_p->detid(); } - const EcalRecHit *getHit() { return rechit_p; } -}; - -#endif diff --git a/RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h b/RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h index 3c29d352541..afb82a4fdad 100644 --- a/RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h +++ b/RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h @@ -1,7 +1,7 @@ #ifndef RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h #define RecoEcal_EgammaClusterAlgos_PreshowerClusterAlgo_h // -// $Id: PreshowerClusterAlgo.h,v 1.8 2006/07/20 14:51:50 dbanduri Exp $ +// $Id: PreshowerClusterAlgo.h,v 1.10 2006/12/06 16:50:43 dbanduri Exp $ // //#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" @@ -23,6 +23,7 @@ class CaloSubdetectorTopology; class PreshowerClusterAlgo { + public: enum DebugLevel { pDEBUG = 0, pINFO = 1, pERROR = 2 }; @@ -30,7 +31,7 @@ class PreshowerClusterAlgo { typedef math::XYZPoint Point; typedef std::map<DetId, EcalRecHit> RecHitsMap; - + typedef std::set<DetId> HitsID; PreshowerClusterAlgo() : preshStripEnergyCut_(0.), preshClusterEnergyCut_(0.), preshSeededNstr_(15), debugLevel_(pINFO) @@ -42,9 +43,10 @@ class PreshowerClusterAlgo { ~PreshowerClusterAlgo() {}; - reco::PreshowerCluster makeOneCluster(ESDetId strip, + reco::PreshowerCluster makeOneCluster(ESDetId strip, + HitsID *used_strips, RecHitsMap *rechits_map, - reco::BasicClusterRefVector::iterator basicClust_ref, + reco::BasicClusterRefVector::iterator basicClust_ref, const CaloSubdetectorGeometry*& geometry_p, CaloSubdetectorTopology*& topology_p); @@ -63,8 +65,9 @@ class PreshowerClusterAlgo { // The map of hits RecHitsMap *rechits_map; + // The set of used DetID's - std::set<DetId> used_s; + HitsID *used_s; }; #endif diff --git a/RecoEcal/EgammaClusterAlgos/src/ClusteringAlgorithm.cc b/RecoEcal/EgammaClusterAlgos/src/ClusteringAlgorithm.cc deleted file mode 100644 index 93ab14ffb61..00000000000 --- a/RecoEcal/EgammaClusterAlgos/src/ClusteringAlgorithm.cc +++ /dev/null @@ -1,177 +0,0 @@ -#include "RecoEcal/EgammaClusterAlgos/interface/ClusteringAlgorithm.h" -#include "RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h" - -// Geometry -#include "Geometry/Records/interface/IdealGeometryRecord.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" - -// - -// Return a vector of clusters from a collection of EcalRecHits: -std::vector<reco::BasicCluster> ClusteringAlgorithm::makeClusters(const EcalRecHitCollection & rechits, - const CaloSubdetectorGeometry *geometry) -{ - rechits_m.clear(); - seeds.clear(); - clusters.clear(); - - std::cout << "Cleared vectors, starting clusterization..." << std::endl; - std::cout << "Number of RecHits in event = " << rechits.size() << std::endl; - - // build the pahits and seeds vectors: - EcalRecHitCollection::const_iterator it; - for (it = rechits.begin(); it != rechits.end(); it++) - { - // every hit should be position aware(?) - PositionAwareHit pah(&(*it), geometry); - - std::pair<EBDetId, PositionAwareHit> map_entry(pah.getId(), pah); - rechits_m.insert(map_entry); - - // and high ET hits are also seeds: - if (pah.getET() > ecalBarrelSeedThreshold) - { - seeds.push_back(pah); - } - } - - sort(seeds.begin(), seeds.end()); - - mainSearch(geometry); - - sort(clusters.begin(), clusters.end()); - - return clusters; -} - -math::XYZPoint ClusteringAlgorithm::getECALposition(std::vector<reco::EcalRecHitData> recHits, - const CaloSubdetectorGeometry * geometry) -{ - // Calculates position of cluster using the algorithm presented in - // Awes et al., NIM A311, p130-138. See also CMS Note 2001/034 p11 - - // Specify constants for log calculation - double w_zero = 4.2; - double w_min = 0.; - - // Specify constants for radius correction - double x_zero = 0.89; - - // Initialize position variables - double clusterPhi=0; - double clusterEta=0; - double eTot=0; - double wRadius=0; - double wSinPhi=0; - double wCosPhi=0; - double wTheta=0; - double weightSum = 0; - - // Sum cluster energy - for (int i=0;i<int(recHits.size());++i){ - eTot+= recHits[i].energy(); - } - - // Calculate log weighted positions - if(eTot>0.){ - for (int j=0; j<int(recHits.size()); ++j){ - - // Find out what the physical location of the cell is - DetId blerg = recHits[j].detId(); - const CaloCellGeometry *this_cell = geometry->getGeometry(blerg); - GlobalPoint posi = this_cell->getPosition(); - - // Get energy of the single hit - double e_j = recHits[j].energy(); - - if (e_j > 0.) { - // Put position of cell in spherical coordinates - double r=sqrt(posi.x()*posi.x()+posi.y()*posi.y()+posi.z()*posi.z()); - double pphi =posi.phi(); - double ttheta =posi.theta(); - - // Do the log weighting - double weight = std::max(w_min, w_zero + log(e_j/eTot)); - - // Increment the coordinates - wRadius+=weight*r; - wSinPhi+=weight*sin(pphi); - wCosPhi+=weight*cos(pphi); - wTheta+=weight*ttheta; - weightSum += weight; - } - } - - // Divide everything by the sum of the weights to calculate a position - if (weightSum > 0) { - wRadius /= weightSum; - wSinPhi /= weightSum; - wCosPhi /= weightSum; - wTheta /= weightSum; - } - - // Solving 2*PI problem and stay most linear - // double M_SQRT1_2 = 0.70710678118654752440084436210; /* sqrt(1/2) */ - if(wCosPhi>=M_SQRT1_2) - { - if(wSinPhi>0) - clusterPhi=asin(wSinPhi); - else - clusterPhi=2*M_PI+asin(wSinPhi); - } - else if(wCosPhi<-M_SQRT1_2) - clusterPhi=M_PI-asin(wSinPhi); - else if(wSinPhi>0) - clusterPhi=acos(wCosPhi); - else - clusterPhi=2*M_PI-acos(wCosPhi); - - clusterEta = -log(tan(wTheta*0.5)); - - - double t_zero = 0.; - - // Where the barrel ends - double barrelEta = 1.479; - - // Need to have a way of getting info about preshower - bool preshower = false; - - // t_zero values for various scenarios - double bar_t_zero = 5.7; - double end_t_zero = 4.0; - double pre_t_zero = 0.4; - - // Decide which t_zero to use - if (clusterEta <= barrelEta) { - t_zero = bar_t_zero; - } - else { - if (preshower) { - t_zero = pre_t_zero; - } - else { - t_zero = end_t_zero; - } - } - - // Correct the radius for shower depth - // See CMS Note 2001/034 p10 - wRadius += x_zero * (t_zero + log(eTot)); - - std::cout << "Log weighted position:" << std::endl; - std::cout << "Cluster eta, phi = " << clusterEta << ", " << clusterPhi << std::endl; - - // Calculate (x, y, z) and return it - double xpos = wRadius * cos(clusterPhi) * sin(wTheta); - double ypos = wRadius * sin(clusterPhi) * sin(wTheta); - double zpos = wRadius * cos(wTheta); - return Point(xpos, ypos, zpos); - } - - // If there was no energy in the cluster, return (0, 0, 0). - // This is arguably the wrong thing to do, but it should - // never happen. - return Point(0., 0., 0.); - -} diff --git a/RecoEcal/EgammaClusterAlgos/src/HybridClusterAlgo.cc b/RecoEcal/EgammaClusterAlgos/src/HybridClusterAlgo.cc index c59b785c8a9..45d553192d2 100644 --- a/RecoEcal/EgammaClusterAlgos/src/HybridClusterAlgo.cc +++ b/RecoEcal/EgammaClusterAlgos/src/HybridClusterAlgo.cc @@ -33,10 +33,11 @@ void HybridClusterAlgo::makeClusters(const EcalRecHitCollection*recColl, //clear vector of seeds seeds.clear(); //clear map of supercluster/basiccluster association - _clustered.clear(); + clustered_.clear(); //clear set of used detids useddetids.clear(); - + //clear vector of seed clusters + seedClus_.clear(); //Pass in a pointer to the collection. recHits_ = recColl; @@ -84,7 +85,7 @@ void HybridClusterAlgo::makeClusters(const EcalRecHitCollection*recColl, //Hand the basicclusters back to the producer. It has to //put them in the event. Then we can make superclusters. std::map<int, reco::BasicClusterCollection>::iterator bic; - for (bic= _clustered.begin();bic!=_clustered.end();bic++){ + for (bic= clustered_.begin();bic!=clustered_.end();bic++){ reco::BasicClusterCollection bl = bic->second; for (int j=0;j<int(bl.size());++j){ basicClusters.push_back(bl[j]); @@ -99,7 +100,6 @@ void HybridClusterAlgo::makeClusters(const EcalRecHitCollection*recColl, } - void HybridClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloSubdetectorGeometry*geometry) { @@ -122,7 +122,7 @@ void HybridClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloS if (seed_in_rechits_it != useddetids.end()) continue; //If this seed is already used, then don't use it again. - + // output some info on the hit: if ( debugLevel_ == pDEBUG ){ std::cout << "*****************************************************" << std::endl; @@ -276,6 +276,7 @@ void HybridClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloS //Make the basic clusters: for (int i=0;i<int(PeakIndex.size());++i){ + bool HasSeedCrystal = false; //One cluster for each peak. std::vector<EcalRecHit> recHits; std::vector<DetId> dets; @@ -285,6 +286,8 @@ void HybridClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloS std::vector <EcalRecHit> temp = dominoCells[j]; for (int k=0;k<int(temp.size());++k){ dets.push_back(temp[k].id()); + if (temp[k].id()==itID) + HasSeedCrystal = true; recHits.push_back(temp[k]); nhits++; } @@ -312,9 +315,11 @@ void HybridClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloS totChi2/=totE; thisseedClusters.push_back(reco::BasicCluster(LumpEnergy[i],pos,totChi2,usedHits)); + if (HasSeedCrystal) + seedClus_.push_back(reco::BasicCluster(LumpEnergy[i],pos,totChi2,usedHits)); } //Make association so that superclusters can be made later. - _clustered.insert(std::make_pair(clustercounter, thisseedClusters)); + clustered_.insert(std::make_pair(clustercounter, thisseedClusters)); clustercounter++; }//Seed loop delete topo; @@ -327,7 +332,7 @@ reco::SuperClusterCollection HybridClusterAlgo::makeSuperClusters(const reco::Ba //Here's our map iterator that gives us the appropriate association. std::map<int, reco::BasicClusterCollection>::iterator mapit; - for (mapit = _clustered.begin();mapit!=_clustered.end();mapit++){ + for (mapit = clustered_.begin();mapit!=clustered_.end();mapit++){ reco::BasicClusterRefVector thissc; reco::BasicClusterRef seed;//This is not really a seed, but I need to tell SuperCluster something. @@ -337,6 +342,10 @@ reco::SuperClusterCollection HybridClusterAlgo::makeSuperClusters(const reco::Ba //SuperCluster double ClusterE =0; //Sum of cluster energies for supercluster. + //Holders for position of this supercluster. + double posX=0; + double posY=0; + double posZ=0; //Loop over this set of basic clusters, find their references, and add them to the //supercluster. This could be somehow more efficient. @@ -347,12 +356,25 @@ reco::SuperClusterCollection HybridClusterAlgo::makeSuperClusters(const reco::Ba reco::BasicCluster cluster_p = *clustersCollection[j]; if (thisclus== cluster_p){ //Comparison based on energy right now. thissc.push_back(clustersCollection[j]); - if (i==0) seed = clustersCollection[j]; + bool isSeed = false; + for (int qu=0;qu<int(seedClus_.size());++qu){ + if (cluster_p == seedClus_[qu]) + isSeed = true; + } + if (isSeed) seed = clustersCollection[j]; + ClusterE += cluster_p.energy(); + posX += cluster_p.energy() * cluster_p.position().X(); + posY += cluster_p.energy() * cluster_p.position().Y(); + posZ += cluster_p.energy() * cluster_p.position().Z(); + } }//End loop over finding references. }//End loop over clusters. - reco::SuperCluster suCl(ClusterE, (*seed).position(), seed, thissc); + posX /= ClusterE; + posY /= ClusterE; + posZ /= ClusterE; + reco::SuperCluster suCl(ClusterE, math::XYZPoint(posX, posY, posZ), seed, thissc); SCcoll.push_back(suCl); if ( debugLevel_ == pDEBUG ){ diff --git a/RecoEcal/EgammaClusterAlgos/src/IslandClusterAlgo.cc b/RecoEcal/EgammaClusterAlgos/src/IslandClusterAlgo.cc index 62ba2fddf06..8f140b44e02 100644 --- a/RecoEcal/EgammaClusterAlgos/src/IslandClusterAlgo.cc +++ b/RecoEcal/EgammaClusterAlgos/src/IslandClusterAlgo.cc @@ -15,6 +15,7 @@ std::vector<reco::BasicCluster> IslandClusterAlgo::makeClusters(const EcalRecHitCollection* hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorTopology *topology_p, + const CaloSubdetectorGeometry *geometryES_p, EcalPart ecalPart) { seeds.clear(); @@ -62,7 +63,7 @@ std::vector<reco::BasicCluster> IslandClusterAlgo::makeClusters(const EcalRecHit std::cout << "Total number of seeds found in event = " << seeds.size() << std::endl; } - mainSearch(hits,geometry_p,topology_p,ecalPart); + mainSearch(hits,geometry_p,topology_p,geometryES_p,ecalPart); sort(clusters_v.begin(), clusters_v.end()); if (verbosity < pINFO) @@ -77,6 +78,7 @@ std::vector<reco::BasicCluster> IslandClusterAlgo::makeClusters(const EcalRecHit void IslandClusterAlgo::mainSearch(const EcalRecHitCollection* hits, const CaloSubdetectorGeometry *geometry_p, const CaloSubdetectorTopology *topology_p, + const CaloSubdetectorGeometry *geometryES_p, EcalPart ecalPart) { if (verbosity < pINFO) @@ -120,7 +122,7 @@ void IslandClusterAlgo::mainSearch(const EcalRecHitCollection* hits, navigator.home(); searchEast(navigator, topology_p); - makeCluster(hits,geometry_p); + makeCluster(hits,geometry_p,geometryES_p); } } @@ -231,13 +233,15 @@ bool IslandClusterAlgo::shouldBeAdded(EcalRecHitCollection::const_iterator candi } -void IslandClusterAlgo::makeCluster(const EcalRecHitCollection* hits,const CaloSubdetectorGeometry *geometry) +void IslandClusterAlgo::makeCluster(const EcalRecHitCollection* hits, + const CaloSubdetectorGeometry *geometry, + const CaloSubdetectorGeometry *geometryES) { double energy = 0; double chi2 = 0; Point position; - position = posCalculator_.Calculate_Location(current_v,hits,geometry); + position = posCalculator_.Calculate_Location(current_v,hits,geometry,geometryES); std::vector<DetId>::iterator it; for (it = current_v.begin(); it != current_v.end(); it++) diff --git a/RecoEcal/EgammaClusterAlgos/src/LogPositionCalc.cc b/RecoEcal/EgammaClusterAlgos/src/LogPositionCalc.cc deleted file mode 100644 index af0227f3278..00000000000 --- a/RecoEcal/EgammaClusterAlgos/src/LogPositionCalc.cc +++ /dev/null @@ -1,136 +0,0 @@ -#include "RecoEcal/EgammaClusterAlgos/interface/LogPositionCalc.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" - -math::XYZPoint getECALposition(std::vector<reco::EcalRecHitData> recHits, const CaloSubdetectorGeometry geometry) -{ - // Calculates position of cluster using the algorithm presented in - // Awes et al., NIM A311, p130-138. See also CMS Note 2001/034 p11 - - // Specify constants for log calculation - double w_zero = 4.2; - double w_min = 0.; - - // Specify constants for radius correction - double x_zero = 0.89; - - // Initialize position variables - double clusterPhi=0; - double clusterEta=0; - double eTot=0; - double wRadius=0; - double wSinPhi=0; - double wCosPhi=0; - double wTheta=0; - double weightSum = 0; - - // Sum cluster energy - for (int i=0;i<int(recHits.size());++i){ - eTot+= recHits[i].energy(); - } - - // Calculate log weighted positions - if(eTot>0.){ - for (int j=0; j<int(recHits.size()); ++j){ - - // Find out what the physical location of the cell is - DetId blerg = recHits[j].detId(); - const CaloCellGeometry *this_cell = geometry.getGeometry(blerg); - GlobalPoint posi = this_cell->getPosition(); - - // Get energy of the single hit - double e_j = recHits[j].energy(); - - if (e_j > 0.) { - // Put position of cell in spherical coordinates - double r=sqrt(posi.x()*posi.x()+posi.y()*posi.y()+posi.z()*posi.z()); - double pphi =posi.phi(); - double ttheta =posi.theta(); - - // Do the log weighting - double weight = std::max(w_min, w_zero + log(e_j/eTot)); - - // Increment the coordinates - wRadius+=weight*r; - wSinPhi+=weight*sin(pphi); - wCosPhi+=weight*cos(pphi); - wTheta+=weight*ttheta; - weightSum += weight; - } - } - - // Divide everything by the sum of the weights to calculate a position - if (weightSum > 0) { - wRadius /= weightSum; - wSinPhi /= weightSum; - wCosPhi /= weightSum; - wTheta /= weightSum; - } - - // Solving 2*PI problem and stay most linear - // double M_SQRT1_2 = 0.70710678118654752440084436210; /* sqrt(1/2) */ - if(wCosPhi>=M_SQRT1_2) - { - if(wSinPhi>0) - clusterPhi=asin(wSinPhi); - else - clusterPhi=2*M_PI+asin(wSinPhi); - } - else if(wCosPhi<-M_SQRT1_2) - clusterPhi=M_PI-asin(wSinPhi); - else if(wSinPhi>0) - clusterPhi=acos(wCosPhi); - else - clusterPhi=2*M_PI-acos(wCosPhi); - - clusterEta = -log(tan(wTheta*0.5)); - - - double t_zero = 0.; - - // Where the barrel ends - double barrelEta = 1.479; - - // Need to have a way of getting info about preshower - bool preshower = false; - - // t_zero values for various scenarios - double bar_t_zero = 5.7; - double end_t_zero = 4.0; - double pre_t_zero = 0.4; - - // Decide which t_zero to use - if (clusterEta <= barrelEta) { - t_zero = bar_t_zero; - } - else { - if (preshower) { - t_zero = pre_t_zero; - } - else { - t_zero = end_t_zero; - } - } - - // Correct the radius for shower depth - // See CMS Note 2001/034 p10 - wRadius += x_zero * (t_zero + log(eTot)); - - std::cout << "Log weighted position:" << std::endl; - std::cout << "Cluster eta, phi = " << clusterEta << ", " << clusterPhi << std::endl; - - // Calculate (x, y, z) and return it - double xpos = wRadius * cos(clusterPhi) * sin(wTheta); - double ypos = wRadius * sin(clusterPhi) * sin(wTheta); - double zpos = wRadius * cos(wTheta); - return Point(xpos, ypos, zpos); - } - - // If there was no energy in the cluster, return (0, 0, 0). - // This is arguably the wrong thing to do, but it should - // never happen. - return Point(0., 0., 0.); - -} diff --git a/RecoEcal/EgammaClusterAlgos/src/PositionAwareHit.cc b/RecoEcal/EgammaClusterAlgos/src/PositionAwareHit.cc deleted file mode 100644 index 9883b4b9f94..00000000000 --- a/RecoEcal/EgammaClusterAlgos/src/PositionAwareHit.cc +++ /dev/null @@ -1,20 +0,0 @@ -#include "RecoEcal/EgammaClusterAlgos/interface/PositionAwareHit.h" - -PositionAwareHit::PositionAwareHit(const EcalRecHit *theRechit_p, const CaloSubdetectorGeometry *the_geometry) -{ - rechit_p = theRechit_p; - - const CaloCellGeometry *this_cell = the_geometry->getGeometry(getId()); - position = this_cell->getPosition(); - - used = false; -} - -int PositionAwareHit::operator<(const PositionAwareHit &other_hit) const -{ - if(other_hit.getEnergy() > getEnergy()) - return 0; - else - return 1; -} - diff --git a/RecoEcal/EgammaClusterAlgos/src/PreshowerClusterAlgo.cc b/RecoEcal/EgammaClusterAlgos/src/PreshowerClusterAlgo.cc index d6a81922324..c28c20bb1de 100644 --- a/RecoEcal/EgammaClusterAlgos/src/PreshowerClusterAlgo.cc +++ b/RecoEcal/EgammaClusterAlgos/src/PreshowerClusterAlgo.cc @@ -6,18 +6,21 @@ #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" +#include "TH1.h" reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, + HitsID *used_strips, RecHitsMap *the_rechitsMap_p, - reco::BasicClusterRefVector::iterator basicClust_ref, + reco::BasicClusterRefVector::iterator basicClust_ref, const CaloSubdetectorGeometry*& geometry_p, CaloSubdetectorTopology*& topology_p) { - used_s.clear(); road_2d.clear(); rechits_map = the_rechitsMap_p; + used_s = used_strips; + int plane = strip.plane(); if ( debugLevel_ <= pINFO ) { @@ -27,8 +30,8 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, // create null-cluster EcalRecHitCollection dummy; - Point posi(0,0,0); - if ( debugLevel_ == pDEBUG ) std::cout << " Creating null-cluster" << std::endl; + Point posi(0,0,0); + if ( debugLevel_ <= pINFO ) std::cout << " Creating a null-cluster" << std::endl; reco::PreshowerCluster nullcluster=reco::PreshowerCluster(0.,posi,dummy,basicClust_ref,plane); if ( strip == ESDetId(0) ) return nullcluster; //works in case of no intersected strip found (e.g. in the Barrel) @@ -92,7 +95,7 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, // First, save the hottest strip clusterRecHits.push_back(max_it->second); recHits_pos.insert(std::make_pair(max_it->first, max_it->second)); - used_s.insert(max_it->first); + used_s->insert(max_it->first); if ( debugLevel_ <= pINFO ) { std::cout << " Central hottest strip " << max_it->first << " is saved " << std::endl; std::cout << " with energy E = " << E_max << std::endl; @@ -103,19 +106,20 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, navigator.setHome(max_it->first); ESDetId startES = max_it->first; - if (plane == 1) { + if (plane == 1) { // Save two neighbouring strips to the east int nadjacents_east = 0; while ( (next=navigator.east()) != ESDetId(0) && next != startES && nadjacents_east < 2 ) { ++nadjacents_east; if ( debugLevel_ == pDEBUG ) std::cout << " Adjacent east #" << nadjacents_east <<": "<< next << std::endl; RecHitsMap::iterator strip_it = rechits_map->find(next); + if(!goodStrip(strip_it)) continue; // Save strip for clustering if it exists, not already in use, and satisfies an energy threshold clusterRecHits.push_back(strip_it->second); // save strip for position calculation if ( nadjacents_east==1 ) strip_1 = next; - used_s.insert(strip_it->first); + used_s->insert(strip_it->first); if ( debugLevel_ == pDEBUG ) std::cout << " East adjacent strip # " << nadjacents_east << " is saved with energy E = " << strip_it->second.energy() << std::endl; } @@ -129,7 +133,7 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, if(!goodStrip(strip_it)) continue; clusterRecHits.push_back(strip_it->second); if ( nadjacents_west==1 ) strip_2 = next; - used_s.insert(strip_it->first); + used_s->insert(strip_it->first); if ( debugLevel_ == pDEBUG ) std::cout << " West adjacent strip # " << nadjacents_west << " is saved with energy E = " << strip_it->second.energy() << std::endl; } @@ -141,11 +145,11 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, while ( (next=navigator.north()) != ESDetId(0) && next != startES && nadjacents_north < 2 ) { ++nadjacents_north; if ( debugLevel_ == pDEBUG ) std::cout << " Adjacent north #" << nadjacents_north <<": "<< next << std::endl; - RecHitsMap::iterator strip_it = rechits_map->find(next); + RecHitsMap::iterator strip_it = rechits_map->find(next); if(!goodStrip(strip_it)) continue; clusterRecHits.push_back(strip_it->second); if ( nadjacents_north==1 ) strip_1 = next; - used_s.insert(strip_it->first); + used_s->insert(strip_it->first); if ( debugLevel_ == pDEBUG ) std::cout << " North adjacent strip # " << nadjacents_north << " is saved with energy E = " << strip_it->second.energy() << std::endl; } @@ -155,11 +159,11 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, while ( (next=navigator.south()) != ESDetId(0) && next != startES && nadjacents_south < 2 ) { ++nadjacents_south; if ( debugLevel_ == pDEBUG ) std::cout << " Adjacent south #" << nadjacents_south <<": "<< next << std::endl; - RecHitsMap::iterator strip_it = rechits_map->find(next); + RecHitsMap::iterator strip_it = rechits_map->find(next); if(!goodStrip(strip_it)) continue; clusterRecHits.push_back(strip_it->second); if ( nadjacents_south==1 ) strip_2 = next; - used_s.insert(strip_it->first); + used_s->insert(strip_it->first); if ( debugLevel_ == pDEBUG ) std::cout << " South adjacent strip # " << nadjacents_south << " is saved with energy E = " << strip_it->second.energy() << std::endl; } @@ -183,7 +187,6 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, recHits_pos.insert(std::make_pair(strip_it2->first, strip_it2->second)); } -// (see Dave Barney's email, consult Aris Kyriakis) RecHitsMap::iterator cp; double energy_pos = 0; double x_pos = 0; @@ -208,9 +211,14 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, EcalRecHitCollection::iterator it; double Eclust = 0; + + if ( debugLevel_ == pINFO ) std::cout << "The found ES cluster strips: " << std::endl; for (it=clusterRecHits.begin(); it != clusterRecHits.end(); it++) { Eclust += it->energy(); + if ( debugLevel_ == pINFO ) std::cout << it->id() <<", E = " << it->energy()<<"; "; } + if ( debugLevel_ == pINFO ) std::cout << std::endl; + // ES cluster is created from vector clusterRecHits reco::PreshowerCluster cluster=reco::PreshowerCluster(Eclust,pos,clusterRecHits,basicClust_ref,plane); @@ -221,12 +229,11 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, std::cout << " (eta,phi) = " << "("<<cluster.eta()<<", "<<cluster.phi()<<")"<< std::endl; std::cout << " nhits = " << cluster.nhits() << std::endl; std::cout << " radius = " << cluster.radius() << std::endl; - std::cout << " (x,y,z) = " << "(" << cluster.x() <<", "<< cluster.y() <<", "<< cluster.z()<<")"<< std::endl; - reco::BasicClusterRef bc_ref = cluster.basicCluster(); - std::cout << " and is caused by BasicCluster with energy = " << bc_ref->energy() <<" and (eta,phi) =(" - << bc_ref->eta()<<", "<< bc_ref->phi()<< ")" << std::endl; + std::cout << " (x,y,z) = " << "(" << cluster.x() <<", "<< cluster.y() <<", "<< cluster.z()<<")"<< std::endl; } + used_strips = used_s; + // return the cluster if its energy is greater a threshold if( cluster.energy() > preshClusterEnergyCut_ ) return cluster; @@ -239,7 +246,7 @@ reco::PreshowerCluster PreshowerClusterAlgo::makeOneCluster(ESDetId strip, bool PreshowerClusterAlgo::goodStrip(RecHitsMap::iterator candidate_it) { if ( debugLevel_ == pDEBUG ) { - if ( used_s.find(candidate_it->first) != used_s.end()) + if ( used_s->find(candidate_it->first) != used_s->end()) std::cout << " This strip is in use " << std::endl; if (candidate_it == rechits_map->end() ) std::cout << " No such a strip in rechits_map " << std::endl; @@ -247,7 +254,7 @@ bool PreshowerClusterAlgo::goodStrip(RecHitsMap::iterator candidate_it) std::cout << " Strip energy " << candidate_it->second.energy() <<" is below threshold " << std::endl; } // crystal should not be included... - if ( (used_s.find(candidate_it->first) != used_s.end()) || // ...if it already belongs to a cluster + if ( (used_s->find(candidate_it->first) != used_s->end()) || // ...if it already belongs to a cluster (candidate_it == rechits_map->end() ) || // ...if it corresponds to a hit (candidate_it->second.energy() <= preshStripEnergyCut_ ) ) // ...if it has a negative or zero energy { diff --git a/RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h b/RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h index 2428b9982c0..82f37154d50 100644 --- a/RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h +++ b/RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h @@ -8,7 +8,7 @@ \\\author: Shahram Rahatlou, May 2006 */ // -// $Id: EgammaSimpleAnalyzer.h,v 1.4 2006/06/16 10:16:43 rahatlou Exp $ +// $Id: EgammaSimpleAnalyzer.h,v 1.5 2006/06/18 18:21:12 rahatlou Exp $ // @@ -47,6 +47,7 @@ class EgammaSimpleAnalyzer : public edm::EDAnalyzer { std::string islandBarrelBasicClusterCollection_; std::string islandBarrelBasicClusterProducer_; + std::string islandBarrelBasicClusterShapes_; std::string islandBarrelSuperClusterCollection_; std::string islandBarrelSuperClusterProducer_; @@ -56,6 +57,7 @@ class EgammaSimpleAnalyzer : public edm::EDAnalyzer { std::string islandEndcapBasicClusterCollection_; std::string islandEndcapBasicClusterProducer_; + std::string islandEndcapBasicClusterShapes_; std::string islandEndcapSuperClusterCollection_; std::string islandEndcapSuperClusterProducer_; @@ -86,6 +88,8 @@ class EgammaSimpleAnalyzer : public edm::EDAnalyzer { TH1F* h1_nIslandEESC_; TH1F* h1_nHybridSC_; + TH1F* h1_islandEBBCe9over25_; + TH1F* h1_islandEBBCe5x5_; TH1F* h1_islandEBBCEnergy_; TH1F* h1_islandEBBCXtals_; @@ -93,6 +97,7 @@ class EgammaSimpleAnalyzer : public edm::EDAnalyzer { TH1F* h1_corrIslandEBSCEnergy_; TH1F* h1_islandEBSCClusters_; + TH1F* h1_islandEEBCe5x5_; TH1F* h1_islandEEBCEnergy_; TH1F* h1_islandEEBCXtals_; diff --git a/RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h b/RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h index 66794cedd24..5eae925eda9 100644 --- a/RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h +++ b/RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h @@ -8,7 +8,7 @@ \\\author: Shahram Rahatlou, May 2006 */ // -// $Id: PreshowerAnalyzer.h,v 1.1 2006/07/20 18:31:22 dbanduri Exp $ +// $Id: PreshowerAnalyzer.h,v 1.2 2006/07/21 00:15:59 dbanduri Exp $ // @@ -59,7 +59,8 @@ public: double calib_planeX_; double calib_planeY_; - double miptogev_; + double mip_; + double gamma_; // association parameters: std::string islandEndcapSuperClusterCollection1_; diff --git a/RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h b/RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h index 5f22c1a211d..28a804601fa 100644 --- a/RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h +++ b/RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h @@ -15,8 +15,6 @@ #include "DataFormats/EgammaReco/interface/PreshowerCluster.h" #include "RecoEcal/EgammaClusterAlgos/interface/PreshowerClusterAlgo.h" -#include "TH1.h" -class TFile; class PreshowerClusterProducer : public edm::EDProducer { @@ -44,16 +42,20 @@ class PreshowerClusterProducer : public edm::EDProducer { std::string endcapSClusterProducer_; int preshNclust_; + float preshClustECut; // association parameters: std::string assocSClusterCollection_; // name of super cluster output collection double calib_planeX_; double calib_planeY_; - double miptogev_; + double mip_; + double gamma_; PreshowerClusterAlgo * presh_algo; // algorithm doing the real work - + // The set of used DetID's + //std::set<DetId> used_strips; + PreshowerClusterAlgo::DebugLevel debugL; }; diff --git a/RecoEcal/EgammaClusterProducers/src/EgammaSimpleAnalyzer.cc b/RecoEcal/EgammaClusterProducers/src/EgammaSimpleAnalyzer.cc index 5e25d7ef0cc..1ce2311c33a 100644 --- a/RecoEcal/EgammaClusterProducers/src/EgammaSimpleAnalyzer.cc +++ b/RecoEcal/EgammaClusterProducers/src/EgammaSimpleAnalyzer.cc @@ -8,7 +8,7 @@ // // Original Author: Shahram Rahatlou // Created: 10 May 2006 -// $Id: EgammaSimpleAnalyzer.cc,v 1.5 2006/06/16 11:36:36 rahatlou Exp $ +// $Id: EgammaSimpleAnalyzer.cc,v 1.7 2006/11/27 12:48:13 rahatlou Exp $ // #include "RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h" @@ -20,6 +20,7 @@ #include "TFile.h" #include "DataFormats/EgammaReco/interface/BasicCluster.h" #include "DataFormats/EgammaReco/interface/SuperCluster.h" +#include "DataFormats/EgammaReco/interface/ClusterShape.h" //======================================================================== @@ -33,6 +34,7 @@ EgammaSimpleAnalyzer::EgammaSimpleAnalyzer( const edm::ParameterSet& ps ) islandBarrelBasicClusterCollection_ = ps.getParameter<std::string>("islandBarrelBasicClusterCollection"); islandBarrelBasicClusterProducer_ = ps.getParameter<std::string>("islandBarrelBasicClusterProducer"); + islandBarrelBasicClusterShapes_ = ps.getParameter<std::string>("islandBarrelBasicClusterShapes"); islandBarrelSuperClusterCollection_ = ps.getParameter<std::string>("islandBarrelSuperClusterCollection"); islandBarrelSuperClusterProducer_ = ps.getParameter<std::string>("islandBarrelSuperClusterProducer"); @@ -42,6 +44,7 @@ EgammaSimpleAnalyzer::EgammaSimpleAnalyzer( const edm::ParameterSet& ps ) islandEndcapBasicClusterCollection_ = ps.getParameter<std::string>("islandEndcapBasicClusterCollection"); islandEndcapBasicClusterProducer_ = ps.getParameter<std::string>("islandEndcapBasicClusterProducer"); + islandEndcapBasicClusterShapes_ = ps.getParameter<std::string>("islandEndcapBasicClusterShapes"); islandEndcapSuperClusterCollection_ = ps.getParameter<std::string>("islandEndcapSuperClusterCollection"); islandEndcapSuperClusterProducer_ = ps.getParameter<std::string>("islandEndcapSuperClusterProducer"); @@ -99,10 +102,13 @@ EgammaSimpleAnalyzer::beginJob(edm::EventSetup const&) { h1_islandEBBCEnergy_ = new TH1F("islandEBBCEnergy","Energy of basic clusters with island algo - barrel",nbinHist_,xMinHist_,xMaxHist_); h1_islandEBBCXtals_ = new TH1F("islandEBBCXtals","#xtals in basic cluster - island barrel",51,-0.5,50.5); + h1_islandEBBCe9over25_= new TH1F("islandEBBCe9over25","e3x3/e5x5 of basic clusters with island algo - barrel",35,0.5,1.2); + h1_islandEBBCe5x5_ = new TH1F("islandEBBCe5x5","e5x5 of basic clusters with island algo - barrel",nbinHist_,xMinHist_,xMaxHist_); h1_islandEBSCEnergy_ = new TH1F("islandEBSCEnergy","Energy of super clusters with island algo - barrel",nbinHist_,xMinHist_,xMaxHist_); h1_corrIslandEBSCEnergy_ = new TH1F("corrIslandEBSCEnergy","Corrected Energy of super clusters with island algo - barrel",nbinHist_,xMinHist_,xMaxHist_); h1_islandEBSCClusters_ = new TH1F("islandEBSCClusters","# basic clusters in super cluster - island barrel",11,-0.5,10.5); + h1_islandEEBCe5x5_ = new TH1F("islandEEBCe5x5","e5x5 of basic clusters with island algo - endcap",nbinHist_,xMinHist_,xMaxHist_); h1_islandEEBCEnergy_ = new TH1F("islandEEBCEnergy","Energy of basic clusters with island algo - endcap",nbinHist_,xMinHist_,xMaxHist_); h1_islandEEBCXtals_ = new TH1F("islandEEBCXtals","#xtals in basic cluster - island endcap",51,-0.5,50.5); @@ -136,30 +142,42 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get island basic clusters Handle<reco::BasicClusterCollection> pIslandBarrelBasicClusters; - try { - evt.getByLabel(islandBarrelBasicClusterProducer_, islandBarrelBasicClusterCollection_, pIslandBarrelBasicClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << islandBarrelBasicClusterCollection_.c_str() ; - } + evt.getByLabel(islandBarrelBasicClusterProducer_, islandBarrelBasicClusterCollection_, pIslandBarrelBasicClusters); const reco::BasicClusterCollection* islandBarrelBasicClusters = pIslandBarrelBasicClusters.product(); h1_nIslandEBBC_->Fill(islandBarrelBasicClusters->size()); + // fetch cluster shapes of island basic clusters in barrel + Handle<reco::ClusterShapeCollection> pIslandEBShapes; + evt.getByLabel(islandBarrelBasicClusterProducer_, islandBarrelBasicClusterShapes_, pIslandEBShapes); + const reco::ClusterShapeCollection* islandEBShapes = pIslandEBShapes.product(); + + std::ostringstream str; + str << "# island basic clusters in barrel: " << islandBarrelBasicClusters->size() + << "\t# associated cluster shapes: " << islandEBShapes->size() << "\n" + << "Loop over island basic clusters in barrel" << "\n"; + // loop over the Basic clusters and fill the histogram + int iClus=0; for(reco::BasicClusterCollection::const_iterator aClus = islandBarrelBasicClusters->begin(); aClus != islandBarrelBasicClusters->end(); aClus++) { h1_islandEBBCEnergy_->Fill( aClus->energy() ); h1_islandEBBCXtals_->Fill( aClus->getHitsByDetId().size() ); + str << "energy: " << aClus->energy() + << "\te5x5: " << (*islandEBShapes)[iClus].e5x5() + << "\te2x2: " << (*islandEBShapes)[iClus].e2x2() + << "\n"; + h1_islandEBBCe5x5_->Fill( (*islandEBShapes)[iClus].e5x5() ); + + iClus++; } + edm::LogInfo("EgammaSimpleAnalyzer") << str.str(); // Get island super clusters Handle<reco::SuperClusterCollection> pIslandBarrelSuperClusters; - try { - evt.getByLabel(islandBarrelSuperClusterProducer_, islandBarrelSuperClusterCollection_, pIslandBarrelSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << islandBarrelSuperClusterCollection_.c_str() ; - } + evt.getByLabel(islandBarrelSuperClusterProducer_, islandBarrelSuperClusterCollection_, pIslandBarrelSuperClusters); const reco::SuperClusterCollection* islandBarrelSuperClusters = pIslandBarrelSuperClusters.product(); + // loop over the super clusters and fill the histogram for(reco::SuperClusterCollection::const_iterator aClus = islandBarrelSuperClusters->begin(); aClus != islandBarrelSuperClusters->end(); aClus++) { @@ -169,11 +187,7 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get island super clusters after energy correction Handle<reco::SuperClusterCollection> pCorrectedIslandBarrelSuperClusters; - try { - evt.getByLabel(correctedIslandBarrelSuperClusterProducer_, correctedIslandBarrelSuperClusterCollection_, pCorrectedIslandBarrelSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << correctedIslandBarrelSuperClusterCollection_.c_str() ; - } + evt.getByLabel(correctedIslandBarrelSuperClusterProducer_, correctedIslandBarrelSuperClusterCollection_, pCorrectedIslandBarrelSuperClusters); const reco::SuperClusterCollection* correctedIslandBarrelSuperClusters = pCorrectedIslandBarrelSuperClusters.product(); h1_nIslandEBSC_->Fill(correctedIslandBarrelSuperClusters->size()); @@ -190,28 +204,30 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get island basic clusters Handle<reco::BasicClusterCollection> pIslandEndcapBasicClusters; - try { - evt.getByLabel(islandEndcapBasicClusterProducer_, islandEndcapBasicClusterCollection_, pIslandEndcapBasicClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << islandEndcapBasicClusterCollection_.c_str() ; - } + evt.getByLabel(islandEndcapBasicClusterProducer_, islandEndcapBasicClusterCollection_, pIslandEndcapBasicClusters); const reco::BasicClusterCollection* islandEndcapBasicClusters = pIslandEndcapBasicClusters.product(); h1_nIslandEEBC_->Fill(islandEndcapBasicClusters->size()); + // fetch cluster shapes of island basic clusters in endcap + Handle<reco::ClusterShapeCollection> pIslandEEShapes; + evt.getByLabel(islandEndcapBasicClusterProducer_, islandEndcapBasicClusterShapes_, pIslandEEShapes); + const reco::ClusterShapeCollection* islandEEShapes = pIslandEEShapes.product(); + // loop over the Basic clusters and fill the histogram + iClus=0; for(reco::BasicClusterCollection::const_iterator aClus = islandEndcapBasicClusters->begin(); aClus != islandEndcapBasicClusters->end(); aClus++) { h1_islandEEBCEnergy_->Fill( aClus->energy() ); h1_islandEEBCXtals_->Fill( aClus->getHitsByDetId().size() ); + h1_islandEEBCe5x5_->Fill( (*islandEEShapes)[iClus].e5x5() ); + h1_islandEBBCe9over25_->Fill( (*islandEEShapes)[iClus].e3x3()/(*islandEEShapes)[iClus].e5x5() ); + iClus++; } + edm::LogInfo("EgammaSimpleAnalyzer") << str.str(); // Get island super clusters Handle<reco::SuperClusterCollection> pIslandEndcapSuperClusters; - try { - evt.getByLabel(islandEndcapSuperClusterProducer_, islandEndcapSuperClusterCollection_, pIslandEndcapSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << islandEndcapSuperClusterCollection_.c_str() ; - } + evt.getByLabel(islandEndcapSuperClusterProducer_, islandEndcapSuperClusterCollection_, pIslandEndcapSuperClusters); const reco::SuperClusterCollection* islandEndcapSuperClusters = pIslandEndcapSuperClusters.product(); // loop over the super clusters and fill the histogram @@ -223,11 +239,7 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get island super clusters after energy correction Handle<reco::SuperClusterCollection> pCorrectedIslandEndcapSuperClusters; - try { - evt.getByLabel(correctedIslandEndcapSuperClusterProducer_, correctedIslandEndcapSuperClusterCollection_, pCorrectedIslandEndcapSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << correctedIslandEndcapSuperClusterCollection_.c_str() ; - } + evt.getByLabel(correctedIslandEndcapSuperClusterProducer_, correctedIslandEndcapSuperClusterCollection_, pCorrectedIslandEndcapSuperClusters); const reco::SuperClusterCollection* correctedIslandEndcapSuperClusters = pCorrectedIslandEndcapSuperClusters.product(); h1_nIslandEESC_->Fill(islandEndcapSuperClusters->size()); @@ -245,11 +257,7 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get hybrid super clusters Handle<reco::SuperClusterCollection> pHybridSuperClusters; - try { - evt.getByLabel(hybridSuperClusterProducer_, hybridSuperClusterCollection_, pHybridSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << hybridSuperClusterCollection_.c_str() ; - } + evt.getByLabel(hybridSuperClusterProducer_, hybridSuperClusterCollection_, pHybridSuperClusters); const reco::SuperClusterCollection* hybridSuperClusters = pHybridSuperClusters.product(); // loop over the super clusters and fill the histogram @@ -261,14 +269,11 @@ EgammaSimpleAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es // Get hybrid super clusters after energy correction Handle<reco::SuperClusterCollection> pCorrectedHybridSuperClusters; - try { - evt.getByLabel(correctedHybridSuperClusterProducer_, correctedHybridSuperClusterCollection_, pCorrectedHybridSuperClusters); - } catch ( cms::Exception& ex ) { - edm::LogError("EgammaSimpleAnalyzer") << "Error! can't get collection with label " << correctedHybridSuperClusterCollection_.c_str() ; - } + evt.getByLabel(correctedHybridSuperClusterProducer_, correctedHybridSuperClusterCollection_, pCorrectedHybridSuperClusters); const reco::SuperClusterCollection* correctedHybridSuperClusters = pCorrectedHybridSuperClusters.product(); h1_nHybridSC_->Fill(correctedHybridSuperClusters->size()); + // loop over the super clusters and fill the histogram for(reco::SuperClusterCollection::const_iterator aClus = correctedHybridSuperClusters->begin(); aClus != correctedHybridSuperClusters->end(); aClus++) { @@ -295,6 +300,8 @@ EgammaSimpleAnalyzer::endJob() { h1_nIslandEESC_->Write(); h1_nHybridSC_->Write(); + h1_islandEBBCe9over25_->Write(); + h1_islandEBBCe5x5_->Write(); h1_islandEBBCEnergy_->Write(); h1_islandEBBCXtals_->Write(); @@ -302,6 +309,7 @@ EgammaSimpleAnalyzer::endJob() { h1_corrIslandEBSCEnergy_->Write(); h1_islandEBSCClusters_->Write(); + h1_islandEEBCe5x5_->Write(); h1_islandEEBCEnergy_->Write(); h1_islandEEBCXtals_->Write(); diff --git a/RecoEcal/EgammaClusterProducers/src/HybridClusterProducer.cc b/RecoEcal/EgammaClusterProducers/src/HybridClusterProducer.cc index feb8aaa70c1..b2109e7433b 100644 --- a/RecoEcal/EgammaClusterProducers/src/HybridClusterProducer.cc +++ b/RecoEcal/EgammaClusterProducers/src/HybridClusterProducer.cc @@ -53,10 +53,10 @@ HybridClusterProducer::HybridClusterProducer(const edm::ParameterSet& ps) //Setup for core tools objects. std::map<std::string,double> providedParameters; - providedParameters.insert(std::make_pair("LogWeighted",ps.getParameter<bool>("coretools_logweight"))); - providedParameters.insert(std::make_pair("X0",ps.getParameter<double>("coretools_x0"))); - providedParameters.insert(std::make_pair("T0",ps.getParameter<double>("coretools_t0"))); - providedParameters.insert(std::make_pair("W0",ps.getParameter<double>("coretools_w0"))); + providedParameters.insert(std::make_pair("LogWeighted",ps.getParameter<bool>("posCalc_logweight"))); + providedParameters.insert(std::make_pair("T0_barl",ps.getParameter<double>("posCalc_t0"))); + providedParameters.insert(std::make_pair("W0",ps.getParameter<double>("posCalc_w0"))); + providedParameters.insert(std::make_pair("X0",ps.getParameter<double>("posCalc_x0"))); posCalculator_ = PositionCalc(providedParameters); shapeAlgo_ = ClusterShapeAlgo(posCalculator_); diff --git a/RecoEcal/EgammaClusterProducers/src/IslandClusterProducer.cc b/RecoEcal/EgammaClusterProducers/src/IslandClusterProducer.cc index 7f0b843d62a..b6ec07a849e 100644 --- a/RecoEcal/EgammaClusterProducers/src/IslandClusterProducer.cc +++ b/RecoEcal/EgammaClusterProducers/src/IslandClusterProducer.cc @@ -62,10 +62,12 @@ IslandClusterProducer::IslandClusterProducer(const edm::ParameterSet& ps) // Parameters for the position calculation: std::map<std::string,double> providedParameters; - providedParameters.insert(std::make_pair("LogWeighted",ps.getParameter<bool>("coretools_logweight"))); - providedParameters.insert(std::make_pair("X0",ps.getParameter<double>("coretools_x0"))); - providedParameters.insert(std::make_pair("T0",ps.getParameter<double>("coretools_t0"))); - providedParameters.insert(std::make_pair("W0",ps.getParameter<double>("coretools_w0"))); + providedParameters.insert(std::make_pair("LogWeighted",ps.getParameter<bool>("posCalc_logweight"))); + providedParameters.insert(std::make_pair("T0_barl",ps.getParameter<double>("posCalc_t0_barl"))); + providedParameters.insert(std::make_pair("T0_endc",ps.getParameter<double>("posCalc_t0_endc"))); + providedParameters.insert(std::make_pair("T0_endcPresh",ps.getParameter<double>("posCalc_t0_endcPresh"))); + providedParameters.insert(std::make_pair("W0",ps.getParameter<double>("posCalc_w0"))); + providedParameters.insert(std::make_pair("X0",ps.getParameter<double>("posCalc_x0"))); posCalculator_ = PositionCalc(providedParameters); shapeAlgo_ = ClusterShapeAlgo(posCalculator_); @@ -157,10 +159,12 @@ void IslandClusterProducer::clusterizeECALPart(edm::Event &evt, const edm::Event topology_p = new EcalEndcapTopology(geoHandle); } + const CaloSubdetectorGeometry *geometryES_p; + geometryES_p = geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalPreshower); // Run the clusterization algorithm: reco::BasicClusterCollection clusters; - clusters = island_p->makeClusters(hitCollection_p, geometry_p, topology_p, ecalPart); + clusters = island_p->makeClusters(hitCollection_p, geometry_p, topology_p, geometryES_p, ecalPart); //Create associated ClusterShape objects. std::vector <reco::ClusterShape> ClusVec; diff --git a/RecoEcal/EgammaClusterProducers/src/PreshowerAnalyzer.cc b/RecoEcal/EgammaClusterProducers/src/PreshowerAnalyzer.cc index 5d8083cabdc..0c1dd199c43 100644 --- a/RecoEcal/EgammaClusterProducers/src/PreshowerAnalyzer.cc +++ b/RecoEcal/EgammaClusterProducers/src/PreshowerAnalyzer.cc @@ -8,7 +8,7 @@ // // Original Author: Shahram Rahatlou // Created: 10 May 200 -// $Id: PreshowerAnalyzer.cc,v 1.1 2006/07/20 18:30:08 dbanduri Exp $ +// $Id: PreshowerAnalyzer.cc,v 1.2 2006/07/21 00:15:04 dbanduri Exp $ // #include "RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h" @@ -53,7 +53,8 @@ PreshowerAnalyzer::PreshowerAnalyzer( const edm::ParameterSet& ps ) // calibration parameters: calib_planeX_ = ps.getParameter<double>("preshCalibPlaneX"); calib_planeY_ = ps.getParameter<double>("preshCalibPlaneY"); - miptogev_ = ps.getParameter<double>("preshCalibMIPtoGeV"); + gamma_ = ps.getParameter<double>("preshCalibGamma"); + mip_ = ps.getParameter<double>("preshCalibMIP"); nEvt_ = 0; } @@ -157,9 +158,13 @@ PreshowerAnalyzer::analyze( const edm::Event& evt, const edm::EventSetup& es ) { h1_esNhits_y->Fill( esClus->nhits() ); } - float deltaE = 0; - if(e1+e2 > 1.0e-10) - deltaE = miptogev_*(calib_planeX_*e1+calib_planeY_*e2); + float deltaE = 0; + if(e1+e2 > 1.0e-10) { + // GeV to #MIPs + e1 = e1 / mip_; + e2 = e2 / mip_; + deltaE = gamma_*(calib_planeX_*e1+calib_planeY_*e2); + } h1_esDeltaE->Fill(deltaE); diff --git a/RecoEcal/EgammaClusterProducers/src/PreshowerClusterProducer.cc b/RecoEcal/EgammaClusterProducers/src/PreshowerClusterProducer.cc index b6e6ceff57c..452cc201ea9 100644 --- a/RecoEcal/EgammaClusterProducers/src/PreshowerClusterProducer.cc +++ b/RecoEcal/EgammaClusterProducers/src/PreshowerClusterProducer.cc @@ -37,9 +37,10 @@ #include "RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h" -#include "TFile.h" -///---- +using namespace edm; +using namespace std; + PreshowerClusterProducer::PreshowerClusterProducer(const edm::ParameterSet& ps) { @@ -59,7 +60,8 @@ PreshowerClusterProducer::PreshowerClusterProducer(const edm::ParameterSet& ps) // calibration parameters: calib_planeX_ = ps.getParameter<double>("preshCalibPlaneX"); calib_planeY_ = ps.getParameter<double>("preshCalibPlaneY"); - miptogev_ = ps.getParameter<double>("preshCalibMIPtoGeV"); + gamma_ = ps.getParameter<double>("preshCalibGamma"); + mip_ = ps.getParameter<double>("preshCalibMIP"); assocSClusterCollection_ = ps.getParameter<std::string>("assocSClusterCollection"); @@ -68,8 +70,8 @@ PreshowerClusterProducer::PreshowerClusterProducer(const edm::ParameterSet& ps) produces< reco::SuperClusterCollection >(assocSClusterCollection_); float preshStripECut = ps.getParameter<double>("preshStripEnergyCut"); - float preshClustECut = ps.getParameter<double>("preshClusterEnergyCut"); int preshSeededNst = ps.getParameter<int>("preshSeededNstrip"); + preshClustECut = ps.getParameter<double>("preshClusterEnergyCut"); // The debug level std::string debugString = ps.getParameter<std::string>("debugLevel"); @@ -91,9 +93,6 @@ PreshowerClusterProducer::~PreshowerClusterProducer() { void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& es) { - if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << "\n ....... Event # " << nEvt_+1 - << " is analyzing ....... " << std::endl << std::endl; - edm::Handle< EcalRecHitCollection > pRecHits; edm::Handle< reco::SuperClusterCollection > pSuperClusters; @@ -127,12 +126,15 @@ void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& e //Make the map of DetID, EcalRecHit pairs rechits_map.insert(std::make_pair(it->id(), *it)); } + // The set of used DetID's for a given event: + std::set<DetId> used_strips; + used_strips.clear(); + if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << "PreshowerClusterProducerInfo: ### rechits_map of size " << rechits_map.size() <<" was created!" << std::endl; reco::PreshowerClusterCollection clusters1, clusters2; // output collection of corrected PCs reco::SuperClusterCollection new_SC; // output collection of corrected SCs - reco::BasicClusterRefVector new_BC; // output collection of corrected SCs if ( debugL == PreshowerClusterAlgo::pDEBUG ) std::cout << " Making a cycle over Superclusters ..." << std::endl; //make cycle over super clusters @@ -142,18 +144,20 @@ void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& e float e1=0; float e2=0; float deltaE=0; + reco::BasicClusterRefVector new_BC; ++isc; if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << " superE = " << it_super->energy() << " superETA = " << it_super->eta() << " superPHI = " << it_super->phi() << std::endl; if ( debugL == PreshowerClusterAlgo::pINFO ) std::cout << " This SC contains " << it_super->clustersSize() << " BCs" << std::endl; - reco::BasicClusterRefVector::iterator b_iter = it_super->clustersBegin(); - for ( ; b_iter !=it_super->clustersEnd(); ++b_iter ) { + + reco::BasicClusterRefVector::iterator bc_iter = it_super->clustersBegin(); + for ( ; bc_iter !=it_super->clustersEnd(); ++bc_iter ) { // Get strip position at intersection point of the line EE - Vertex: - double X = (*b_iter)->x(); - double Y = (*b_iter)->y(); - double Z = (*b_iter)->z(); + double X = (*bc_iter)->x(); + double Y = (*bc_iter)->y(); + double Z = (*bc_iter)->z(); const GlobalPoint point(X,Y,Z); DetId tmp1 = (dynamic_cast<const EcalPreshowerGeometry*>(geometry_p))->getClosestCellInPlane(point, 1); @@ -171,21 +175,25 @@ void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& e std::cout << " No intersected strip in plane 1 " << std::endl; else if ( strip2 == ESDetId(0) ) std::cout << " No intersected strip in plane 2 " << std::endl; - } + } - // Get a vector of ES clusters (found by the PreshSeeded algorithm) associated with a given EE basic cluster. + // Get a vector of ES clusters (found by the PreshSeeded algorithm) associated with a given EE basic cluster. for (int i=0; i<preshNclust_; i++) { - reco::PreshowerCluster cl1 = presh_algo->makeOneCluster(strip1,&rechits_map,b_iter,geometry_p,topology_p); - clusters1.push_back(cl1); - reco::PreshowerCluster cl2 = presh_algo->makeOneCluster(strip2,&rechits_map,b_iter,geometry_p,topology_p); - clusters2.push_back(cl2); - - e1 += cl1.energy(); - e2 += cl2.energy(); + reco::PreshowerCluster cl1 = presh_algo->makeOneCluster(strip1,&used_strips,&rechits_map,bc_iter,geometry_p,topology_p); + if ( cl1.energy() > preshClustECut) { + clusters1.push_back(cl1); + e1 += cl1.energy(); + } + reco::PreshowerCluster cl2 = presh_algo->makeOneCluster(strip2,&used_strips,&rechits_map,bc_iter,geometry_p,topology_p); + + if ( cl2.energy() > preshClustECut) { + clusters2.push_back(cl2); + e2 += cl2.energy(); + } } // end of cycle over ES clusters - new_BC.push_back(*b_iter); + new_BC.push_back(*bc_iter); } // end of cycle over BCs @@ -195,18 +203,24 @@ void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& e << " in Y plane " << " preshower clusters " << std::endl; // update energy of the SuperCluster - if(e1+e2 > 1.0e-10) - deltaE = miptogev_*(calib_planeX_*e1+calib_planeY_*e2); - + if(e1+e2 > 1.0e-10) { + // GeV to #MIPs + e1 = e1 / mip_; + e2 = e2 / mip_; + deltaE = gamma_*(calib_planeX_*e1+calib_planeY_*e2); + } + + //corrected Energy float E = it_super->energy() + deltaE; if ( debugL == PreshowerClusterAlgo::pDEBUG ) std::cout << " Creating corrected SC " << std::endl; reco::SuperCluster sc( E, it_super->position(), it_super->seed(), new_BC); new_SC.push_back(sc); - if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << " SuperClusters energies: old E = " << sc.energy() - << " and new E =" << it_super->energy() << std::endl; + if ( debugL <= PreshowerClusterAlgo::pINFO ) std::cout << " SuperClusters energies: new E = " << sc.energy() + << " vs. old E =" << it_super->energy() << std::endl; } // end of cycle over SCs + // create an auto_ptr to a PreshowerClusterCollection, copy the preshower clusters into it and put in the Event: std::auto_ptr< reco::PreshowerClusterCollection > clusters_p1(new reco::PreshowerClusterCollection); @@ -228,3 +242,4 @@ void PreshowerClusterProducer::produce(edm::Event& evt, const edm::EventSetup& e } + diff --git a/RecoEcal/EgammaClusterProducers/src/SealModule.cc b/RecoEcal/EgammaClusterProducers/src/SealModule.cc index fa78b6aa654..53e3cfa15ac 100644 --- a/RecoEcal/EgammaClusterProducers/src/SealModule.cc +++ b/RecoEcal/EgammaClusterProducers/src/SealModule.cc @@ -7,6 +7,7 @@ #include "RecoEcal/EgammaClusterProducers/interface/EgammaSCCorrectionMaker.h" #include "RecoEcal/EgammaClusterProducers/interface/EgammaSimpleAnalyzer.h" #include "RecoEcal/EgammaClusterProducers/interface/PreshowerClusterProducer.h" +#include "RecoEcal/EgammaClusterProducers/interface/PreshowerAnalyzer.h" #include "RecoEcal/EgammaClusterProducers/interface/PiZeroDiscriminatorProducer.h" #include "RecoEcal/EgammaClusterProducers/interface/RecHitFilter.h" @@ -19,5 +20,6 @@ DEFINE_ANOTHER_FWK_MODULE(SuperClusterProducer); DEFINE_ANOTHER_FWK_MODULE(EgammaSCCorrectionMaker); DEFINE_ANOTHER_FWK_MODULE(EgammaSimpleAnalyzer); DEFINE_ANOTHER_FWK_MODULE(PreshowerClusterProducer); +DEFINE_ANOTHER_FWK_MODULE(PreshowerAnalyzer); DEFINE_ANOTHER_FWK_MODULE(PiZeroDiscriminatorProducer); DEFINE_ANOTHER_FWK_MODULE(RecHitFilter); diff --git a/RecoEcal/EgammaCoreTools/BuildFile b/RecoEcal/EgammaCoreTools/BuildFile index 678fa67d815..10cf7c74030 100644 --- a/RecoEcal/EgammaCoreTools/BuildFile +++ b/RecoEcal/EgammaCoreTools/BuildFile @@ -4,6 +4,7 @@ <use name=Geometry/CaloGeometry> <use name=Geometry/CaloTopology> <use name=Geometry/EcalBarrelAlgo> +<use name=Geometry/EcalPreshowerAlgo> <use name=clhep> <export> <lib name=RecoEcalEgammaCoreTools> @@ -13,5 +14,6 @@ <use name=Geometry/CaloGeometry> <use name=Geometry/CaloTopology> <use name=Geometry/EcalBarrelAlgo> + <use name=Geometry/EcalPreshowerAlgo> <use name=clhep> </export> diff --git a/RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h b/RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h deleted file mode 100644 index 7b9f02effd2..00000000000 --- a/RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef RecoEcal_EgammaCoreTools_LogPositionCalc_h -#define RecoEcal_EgammaCoreTools_LogPositionCalc_h - -#include "DataFormats/EcalRecHit/interface/EcalRecHit.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" -#include "DataFormats/EcalDetId/interface/EBDetId.h" -#include "DataFormats/EgammaReco/interface/BasicCluster.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloGeometry.h" -#include "DataFormats/Math/interface/Point3D.h" -// C/C++ headers -#include <string> -#include <vector> - -class LogPositionCalc - -{ - public: - LogPositionCalc(); - - virtual ~LogPositionCalc(); - - typedef math::XYZPoint Point; - - static Point getECALposition(std::vector<reco::EcalRecHitData> recHits, const CaloSubdetectorGeometry); - -}; - -#endif diff --git a/RecoEcal/EgammaCoreTools/interface/PositionCalc.h b/RecoEcal/EgammaCoreTools/interface/PositionCalc.h index f2c35c61aba..250ffcff858 100644 --- a/RecoEcal/EgammaCoreTools/interface/PositionCalc.h +++ b/RecoEcal/EgammaCoreTools/interface/PositionCalc.h @@ -8,7 +8,7 @@ * * \author Ted Kolberg, ND * - * \version $Id: PositionCalc.h,v 1.6 2006/09/19 19:48:55 mabalazs Exp $ + * \version $Id: PositionCalc.h,v 1.7 2006/10/29 10:34:52 rahatlou Exp $ * */ @@ -38,7 +38,8 @@ class PositionCalc math::XYZPoint Calculate_Location(std::vector<DetId> passedDetIds, const EcalRecHitCollection *passedRecHitsMap, - const CaloSubdetectorGeometry *passedGeometry); + const CaloSubdetectorGeometry *passedGeometry, + const CaloSubdetectorGeometry *passedGeometryES=0); // Calculate_Covariances calculates the variance in eta, variance in phi, // and covariance in eta and phi. It must be given a vector of DetIds @@ -50,9 +51,11 @@ class PositionCalc const CaloSubdetectorGeometry *passedGeometry); private: bool param_LogWeighted_; - Double32_t param_X0_; - Double32_t param_T0_; + Double32_t param_T0_barl_; + Double32_t param_T0_endc_; + Double32_t param_T0_endcPresh_; Double32_t param_W0_; + Double32_t param_X0_; //const EcalRecHitCollection *storedRecHitsMap_; //const CaloSubdetectorGeometry *storedSubdetectorGeometry_; diff --git a/RecoEcal/EgammaCoreTools/src/LogPositionCalc.cc b/RecoEcal/EgammaCoreTools/src/LogPositionCalc.cc deleted file mode 100644 index ec3a3907553..00000000000 --- a/RecoEcal/EgammaCoreTools/src/LogPositionCalc.cc +++ /dev/null @@ -1,136 +0,0 @@ -#include "RecoEcal/EgammaCoreTools/interface/LogPositionCalc.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" - -math::XYZPoint LogPositionCalc::getECALposition(std::vector<reco::EcalRecHitData> recHits, const CaloSubdetectorGeometry geometry) -{ - // Calculates position of cluster using the algorithm presented in - // Awes et al., NIM A311, p130-138. See also CMS Note 2001/034 p11 - - // Specify constants for log calculation - double w_zero = 4.2; - double w_min = 0.; - - // Specify constants for radius correction - double x_zero = 0.89; - - // Initialize position variables - double clusterPhi=0; - double clusterEta=0; - double eTot=0; - double wRadius=0; - double wSinPhi=0; - double wCosPhi=0; - double wTheta=0; - double weightSum = 0; - - // Sum cluster energy - for (int i=0;i<int(recHits.size());++i){ - eTot+= recHits[i].energy(); - } - - // Calculate log weighted positions - if(eTot>0.){ - for (int j=0; j<int(recHits.size()); ++j){ - - // Find out what the physical location of the cell is - DetId blerg = recHits[j].detId(); - const CaloCellGeometry *this_cell = geometry.getGeometry(blerg); - GlobalPoint posi = this_cell->getPosition(); - - // Get energy of the single hit - double e_j = recHits[j].energy(); - - if (e_j > 0.) { - // Put position of cell in spherical coordinates - double r=sqrt(posi.x()*posi.x()+posi.y()*posi.y()+posi.z()*posi.z()); - double pphi =posi.phi(); - double ttheta =posi.theta(); - - // Do the log weighting - double weight = std::max(w_min, w_zero + log(e_j/eTot)); - - // Increment the coordinates - wRadius+=weight*r; - wSinPhi+=weight*sin(pphi); - wCosPhi+=weight*cos(pphi); - wTheta+=weight*ttheta; - weightSum += weight; - } - } - - // Divide everything by the sum of the weights to calculate a position - if (weightSum > 0) { - wRadius /= weightSum; - wSinPhi /= weightSum; - wCosPhi /= weightSum; - wTheta /= weightSum; - } - - // Solving 2*PI problem and stay most linear - // double M_SQRT1_2 = 0.70710678118654752440084436210; /* sqrt(1/2) */ - if(wCosPhi>=M_SQRT1_2) - { - if(wSinPhi>0) - clusterPhi=asin(wSinPhi); - else - clusterPhi=2*M_PI+asin(wSinPhi); - } - else if(wCosPhi<-M_SQRT1_2) - clusterPhi=M_PI-asin(wSinPhi); - else if(wSinPhi>0) - clusterPhi=acos(wCosPhi); - else - clusterPhi=2*M_PI-acos(wCosPhi); - - clusterEta = -log(tan(wTheta*0.5)); - - - double t_zero = 0.; - - // Where the barrel ends - double barrelEta = 1.479; - - // Need to have a way of getting info about preshower - bool preshower = false; - - // t_zero values for various scenarios - double bar_t_zero = 5.7; - double end_t_zero = 4.0; - double pre_t_zero = 0.4; - - // Decide which t_zero to use - if (clusterEta <= barrelEta) { - t_zero = bar_t_zero; - } - else { - if (preshower) { - t_zero = pre_t_zero; - } - else { - t_zero = end_t_zero; - } - } - - // Correct the radius for shower depth - // See CMS Note 2001/034 p10 - wRadius += x_zero * (t_zero + log(eTot)); - - std::cout << "Log weighted position:" << std::endl; - std::cout << "Cluster eta, phi = " << clusterEta << ", " << clusterPhi << std::endl; - - // Calculate (x, y, z) and return it - double xpos = wRadius * cos(clusterPhi) * sin(wTheta); - double ypos = wRadius * sin(clusterPhi) * sin(wTheta); - double zpos = wRadius * cos(wTheta); - return Point(xpos, ypos, zpos); - } - - // If there was no energy in the cluster, return (0, 0, 0). - // This is arguably the wrong thing to do, but it should - // never happen. - return Point(0., 0., 0.); - -} diff --git a/RecoEcal/EgammaCoreTools/src/PositionCalc.cc b/RecoEcal/EgammaCoreTools/src/PositionCalc.cc index 8a25d9baf6f..e0fa70b1edf 100644 --- a/RecoEcal/EgammaCoreTools/src/PositionCalc.cc +++ b/RecoEcal/EgammaCoreTools/src/PositionCalc.cc @@ -2,13 +2,16 @@ #include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" #include "Geometry/CaloGeometry/interface/TruncatedPyramid.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "Geometry/EcalPreshowerAlgo/interface/EcalPreshowerGeometry.h" PositionCalc::PositionCalc(std::map<std::string,double> providedParameters) { param_LogWeighted_ = providedParameters.find("LogWeighted")->second; - param_X0_ = providedParameters.find("X0")->second; - param_T0_ = providedParameters.find("T0")->second; + param_T0_barl_ = providedParameters.find("T0_barl")->second; + param_T0_endc_ = providedParameters.find("T0_endc")->second; + param_T0_endcPresh_ = providedParameters.find("T0_endcPresh")->second; param_W0_ = providedParameters.find("W0")->second; + param_X0_ = providedParameters.find("X0")->second; //storedRecHitsMap_ = passedRecHitsMap; //storedSubdetectorGeometry_ = passedGeometry; @@ -16,15 +19,18 @@ PositionCalc::PositionCalc(std::map<std::string,double> providedParameters) const PositionCalc& PositionCalc::operator=(const PositionCalc& rhs) { param_LogWeighted_ = rhs.param_LogWeighted_; - param_X0_ = rhs.param_X0_; - param_T0_ = rhs.param_T0_; + param_T0_barl_ = rhs.param_T0_barl_; + param_T0_endc_ = rhs.param_T0_endc_; + param_T0_endcPresh_ = rhs.param_T0_endcPresh_; param_W0_ = rhs.param_W0_; + param_X0_ = rhs.param_X0_; return *this; } math::XYZPoint PositionCalc::Calculate_Location(std::vector<DetId> passedDetIds, EcalRecHitCollection const * storedRecHitsMap_, - const CaloSubdetectorGeometry * storedSubdetectorGeometry_) + const CaloSubdetectorGeometry * storedSubdetectorGeometry_, + const CaloSubdetectorGeometry * storedESGeometry_) { // Throw an error if the cluster was not initialized properly @@ -72,18 +78,37 @@ math::XYZPoint PositionCalc::Calculate_Location(std::vector<DetId> passedDetIds, eTot += e_i; } + //Select the correct value of the T0 parameter depending on subdetector + float T0; + const CaloCellGeometry* center_cell = storedSubdetectorGeometry_->getGeometry(maxId_); + GlobalPoint p = center_cell->getPosition(); + if (fabs(p.eta())<1.479) { + //barrel + T0 = param_T0_barl_; + } else { + DetId preshDet; + if (storedESGeometry_) { + preshDet = (dynamic_cast<const EcalPreshowerGeometry*>(storedESGeometry_))->getClosestCell(p); + } + if (preshDet.null()) { + //endcap, not behind preshower + T0 = param_T0_endc_; + } else { + //endcap, behind preshower + T0 = param_T0_endcPresh_; + } + } + // Calculate shower depth float depth = 0.; if(eTot<=0.) { edm::LogError("NegativeClusterEnergy") << "cluster with negative energy: " << eTot << " setting depth to 0."; } else { - depth = param_X0_ * (param_T0_ + log(eTot)); + depth = param_X0_ * (T0 + log(eTot)); } // Get position of center cell from shower depth - const CaloCellGeometry* center_cell = - storedSubdetectorGeometry_->getGeometry(maxId_); GlobalPoint center_pos = (dynamic_cast<const TruncatedPyramid*>(center_cell))->getPosition(depth); @@ -236,9 +261,10 @@ std::map<std::string,double> PositionCalc::Calculate_Covariances(math::XYZPoint } // Increment covariances - covEtaEta += (kEta - pEta)*(kEta - pEta); - covEtaPhi += (kEta - pEta)*(kPhi - pPhi); - covPhiPhi += (kPhi - pPhi)*(kPhi - pPhi); + // Corrected to use proper weighting -TK + covEtaEta += weight*(kEta - pEta)*(kEta - pEta); + covEtaPhi += weight*(kEta - pEta)*(kPhi - pPhi); + covPhiPhi += weight*(kPhi - pPhi)*(kPhi - pPhi); wTot += weight; diff --git a/RecoEgamma/Configuration/doc/RecoEgamma_AOD.doi b/RecoEgamma/Configuration/doc/RecoEgamma_AOD.doi new file mode 100644 index 00000000000..74fa2072f10 --- /dev/null +++ b/RecoEgamma/Configuration/doc/RecoEgamma_AOD.doi @@ -0,0 +1,39 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Electron/Photon collections</td> +</tr> + +<tr> + <td><a href="classreco_1_1Electron.html">reco::Electron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::ElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">pixelMatchElectrons</a></td> + <td class="description">Pixel-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Electron.html">reco::Electron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::ElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">siStripElectronToTrackAssociator</a></td> + <td class="description">Strip-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Electron.html">reco::SiStripElectron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::SiStripElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">siStripElectrons</a></td> + <td class="description">Strip-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Photon.html">reco::Photon</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::PhotonCollection</a></td> + <td><a href="RecoElectron_Configuration.html">photons</a></td> + <td class="description">Uncorrected photon</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Photon.html">reco::Photon</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::PhotonCollection</a></td> + <td><a href="RecoElectron_Configuration.html">correctedPhotons</a></td> + <td class="description">Corrected photon</td> + <td>S.Rahatlou</td> +</tr> diff --git a/RecoEgamma/Configuration/doc/RecoEgamma_RECO.doi b/RecoEgamma/Configuration/doc/RecoEgamma_RECO.doi new file mode 100644 index 00000000000..74fa2072f10 --- /dev/null +++ b/RecoEgamma/Configuration/doc/RecoEgamma_RECO.doi @@ -0,0 +1,39 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Electron/Photon collections</td> +</tr> + +<tr> + <td><a href="classreco_1_1Electron.html">reco::Electron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::ElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">pixelMatchElectrons</a></td> + <td class="description">Pixel-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Electron.html">reco::Electron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::ElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">siStripElectronToTrackAssociator</a></td> + <td class="description">Strip-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Electron.html">reco::SiStripElectron</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::SiStripElectronCollection</a></td> + <td><a href="RecoElectron_Configuration.html">siStripElectrons</a></td> + <td class="description">Strip-matched electrons</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Photon.html">reco::Photon</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::PhotonCollection</a></td> + <td><a href="RecoElectron_Configuration.html">photons</a></td> + <td class="description">Uncorrected photon</td> + <td>S.Rahatlou</td> +</tr> +<tr> + <td><a href="classreco_1_1Photon.html">reco::Photon</a></td> + <td><a href="DataFormats_EgammaCandidates.html">reco::PhotonCollection</a></td> + <td><a href="RecoElectron_Configuration.html">correctedPhotons</a></td> + <td class="description">Corrected photon</td> + <td>S.Rahatlou</td> +</tr> diff --git a/RecoEgamma/EgammaHFProducers/doc/html/index.html b/RecoEgamma/EgammaHFProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/EgammaHFProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/EgammaHFProducers/doc/html/overview.html b/RecoEgamma/EgammaHFProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/EgammaHFProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEgamma/EgammaHLTProducers/src/EgammaHLTRecoEcalCandidateProducers.cc b/RecoEgamma/EgammaHLTProducers/src/EgammaHLTRecoEcalCandidateProducers.cc index 8e876f80c1f..cf7b8803994 100644 --- a/RecoEgamma/EgammaHLTProducers/src/EgammaHLTRecoEcalCandidateProducers.cc +++ b/RecoEgamma/EgammaHLTProducers/src/EgammaHLTRecoEcalCandidateProducers.cc @@ -92,7 +92,8 @@ for(reco::SuperClusterCollection::const_iterator aClus = scEndcapHandle->begin() const reco::Particle::Point vtx( 0, 0, 0 ); - math::XYZVector momentum =aClus->position() - vtx; + math::XYZVector direction =aClus->position() - vtx; + math::XYZVector momentum = direction.unit() * aClus->energy(); const reco::Particle::LorentzVector p4(momentum.x(), momentum.y(), momentum.z(), aClus->energy() ); reco::RecoEcalCandidate newCandidate(0, p4, vtx); diff --git a/RecoEgamma/EgammaIsolationAlgos/doc/html/index.html b/RecoEgamma/EgammaIsolationAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/EgammaIsolationAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/EgammaIsolationAlgos/doc/html/overview.html b/RecoEgamma/EgammaIsolationAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/EgammaIsolationAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEgamma/EgammaMCTools/doc/html/index.html b/RecoEgamma/EgammaMCTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/EgammaMCTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/EgammaMCTools/doc/html/overview.html b/RecoEgamma/EgammaMCTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/EgammaMCTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEgamma/EgammaPhotonProducers/src/PhotonProducer.cc b/RecoEgamma/EgammaPhotonProducers/src/PhotonProducer.cc index 25f6c4b995e..5ec10b4b4a9 100644 --- a/RecoEgamma/EgammaPhotonProducers/src/PhotonProducer.cc +++ b/RecoEgamma/EgammaPhotonProducers/src/PhotonProducer.cc @@ -103,7 +103,8 @@ void PhotonProducer::produce(edm::Event& theEvent, const edm::EventSetup& theEve const reco::Particle::Point vtx( 0, 0, 0 ); - math::XYZVector momentum =aClus->position() - vtx; + math::XYZVector direction =aClus->position() - vtx; + math::XYZVector momentum = direction.unit() * aClus->energy(); const reco::Particle::LorentzVector p4(momentum.x(), momentum.y(), momentum.z(), aClus->energy() ); reco::Photon newCandidate(0, p4, vtx); diff --git a/RecoEgamma/ElectronIdentification/doc/html/index.html b/RecoEgamma/ElectronIdentification/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/ElectronIdentification/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/ElectronIdentification/doc/html/overview.html b/RecoEgamma/ElectronIdentification/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/ElectronIdentification/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEgamma/Examples/doc/html/index.html b/RecoEgamma/Examples/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/Examples/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/Examples/doc/html/overview.html b/RecoEgamma/Examples/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/Examples/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoEgamma/PhotonIdentification/doc/html/index.html b/RecoEgamma/PhotonIdentification/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoEgamma/PhotonIdentification/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoEgamma/PhotonIdentification/doc/html/overview.html b/RecoEgamma/PhotonIdentification/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoEgamma/PhotonIdentification/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/Configuration/doc/html/index.html b/RecoHI/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/Configuration/doc/html/overview.html b/RecoHI/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiCentralityAlgos/doc/html/index.html b/RecoHI/HiCentralityAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiCentralityAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiCentralityAlgos/doc/html/overview.html b/RecoHI/HiCentralityAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiCentralityAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiEgammaAlgos/doc/html/index.html b/RecoHI/HiEgammaAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiEgammaAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiEgammaAlgos/doc/html/overview.html b/RecoHI/HiEgammaAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiEgammaAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiEvtPlaneAlgos/doc/html/index.html b/RecoHI/HiEvtPlaneAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiEvtPlaneAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiEvtPlaneAlgos/doc/html/overview.html b/RecoHI/HiEvtPlaneAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiEvtPlaneAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiJetAlgos/doc/html/index.html b/RecoHI/HiJetAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiJetAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiJetAlgos/doc/html/overview.html b/RecoHI/HiJetAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiJetAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiMuonAlgos/doc/html/index.html b/RecoHI/HiMuonAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiMuonAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiMuonAlgos/doc/html/overview.html b/RecoHI/HiMuonAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiMuonAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHI/HiTracking/doc/html/index.html b/RecoHI/HiTracking/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHI/HiTracking/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHI/HiTracking/doc/html/overview.html b/RecoHI/HiTracking/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHI/HiTracking/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHIMuon/HiMuPropagator/doc/html/index.html b/RecoHIMuon/HiMuPropagator/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHIMuon/HiMuPropagator/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHIMuon/HiMuPropagator/doc/html/overview.html b/RecoHIMuon/HiMuPropagator/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHIMuon/HiMuPropagator/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHIMuon/HiMuSeed/doc/html/index.html b/RecoHIMuon/HiMuSeed/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHIMuon/HiMuSeed/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHIMuon/HiMuSeed/doc/html/overview.html b/RecoHIMuon/HiMuSeed/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHIMuon/HiMuSeed/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoHIMuon/HiMuTracking/doc/html/index.html b/RecoHIMuon/HiMuTracking/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoHIMuon/HiMuTracking/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoHIMuon/HiMuTracking/doc/html/overview.html b/RecoHIMuon/HiMuTracking/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoHIMuon/HiMuTracking/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoJets/Configuration/doc/RecoJets_AOD.doi b/RecoJets/Configuration/doc/RecoJets_AOD.doi new file mode 100644 index 00000000000..5c1ae3b4a0d --- /dev/null +++ b/RecoJets/Configuration/doc/RecoJets_AOD.doi @@ -0,0 +1,31 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Jet collections: CaloTowers based</td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">iterativeCone5CaloJets</a></td> + <td class="description">IterativeCone R=0.5 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">midPointCone5CaloJets</a></td> + <td class="description">MidpointCone R=0.5 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">midPointCone7CaloJets</a></td> + <td class="description">MidpointCone R=0.7 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">ktCaloJets</a></td> + <td class="description">Kt jets </td> + <td> F.Ratnikov </td> +</tr> diff --git a/RecoJets/Configuration/doc/RecoJets_RECO.doi b/RecoJets/Configuration/doc/RecoJets_RECO.doi new file mode 100644 index 00000000000..5c1ae3b4a0d --- /dev/null +++ b/RecoJets/Configuration/doc/RecoJets_RECO.doi @@ -0,0 +1,31 @@ +<tr class="colgroup"> + <td class="colgroup" colspan=5>Jet collections: CaloTowers based</td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">iterativeCone5CaloJets</a></td> + <td class="description">IterativeCone R=0.5 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">midPointCone5CaloJets</a></td> + <td class="description">MidpointCone R=0.5 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">midPointCone7CaloJets</a></td> + <td class="description">MidpointCone R=0.7 jets </td> + <td> F.Ratnikov </td> +</tr> +<tr> + <td><a href="classCaloJet.html">reco::CaloJet</a></rd> + <td><a href="DataFormats_JetReco.html">reco::CaloJetCollection</a></td> + <td><a href="#">ktCaloJets</a></td> + <td class="description">Kt jets </td> + <td> F.Ratnikov </td> +</tr> diff --git a/RecoJets/JetAnalyzers/BuildFile b/RecoJets/JetAnalyzers/BuildFile deleted file mode 100644 index 8810e62b102..00000000000 --- a/RecoJets/JetAnalyzers/BuildFile +++ /dev/null @@ -1,31 +0,0 @@ -<use name=root> -<use name=Geometry/CaloGeometry> -<use name=Geometry/CaloEventSetup> -<use name=Geometry/Records> -<use name=DataFormats/JetReco> -<use name=DataFormats/HepMCCandidate> -<use name=DataFormats/CaloTowers> -<use name=DataFormats/HcalRecHit> -<use name=DataFormats/HcalDigi> -<use name=DataFormats/HcalDetId> -<use name=TBDataFormats/HcalTBObjects> -<use name=SimDataFormats/HepMCProduct> -<use name=FWCore/Framework> -<use name=FWCore/ParameterSet> -<flags SEAL_PLUGIN_NAME="RecoJetsJetAnalyzers"> -<export> - <lib name=RecoJetsJetAnalyzers> - <use name=root> - <use name=FWCore/Framework> - <use name=FWCore/ParameterSet> - <use name=Geometry/CaloGeometry> - <use name=Geometry/Records> - <use name=Geometry/CaloEventSetup> - <use name=DataFormats/JetReco> - <use name=DataFormats/HepMCCandidate> - <use name=DataFormats/HcalRecHit> - <use name=DataFormats/HcalDigi> - <use name=DataFormats/HcalDetId> - <use name=TBDataFormats/HcalTBObjects> - <use name=SimDataFormats/HepMCProduct> -</export> diff --git a/RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h b/RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h deleted file mode 100644 index 7790a185aaa..00000000000 --- a/RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h +++ /dev/null @@ -1,139 +0,0 @@ -// File: CaloTowerBoundaries.h -// Description: The eta boundaries of the CaloTowers used by JetAnalysis.cc -// Author: Anwar Bhatti -// Date: August 31, 2006 -// -#ifndef CALOTOWERETABOUNDRIES_HH -#define CALOTOWERETABOUNDRIES_HH - -const int NETA=82; -const float CaloTowerEtaBoundriesPositiveOnly[42]={0.000, - 0.087, - 0.174, - 0.261, - 0.348, - 0.435, - 0.522, - 0.609, - 0.696, - 0.783, - 0.879, - 0.957, - 1.044, - 1.131, - 1.218, - 1.305, - 1.392, - 1.479, - 1.566, - 1.653, - 1.740, - 1.830, - 1.930, - 2.043, - 2.172, - 2.322, - 2.500, - 2.650, - 2.853, - 2.964, - 3.139, - 3.314, - 3.489, - 3.664, - 3.839, - 4.013, - 4.191, - 4.363, - 4.538, - 4.716, - 4.889, - 5.191}; - - - const float CaloTowerEtaBoundries[83]={ - -5.191, - -4.889, - -4.716, - -4.538, - -4.363, - -4.191, - -4.013, - -3.839, - -3.664, - -3.489, - -3.314, - -3.139, - -2.964, - -2.853, - -2.650, - -2.500, - -2.322, - -2.172, - -2.043, - -1.930, - -1.830, - -1.740, - -1.653, - -1.566, - -1.479, - -1.392, - -1.305, - -1.218, - -1.131, - -1.044, - -0.957, - -0.879, - -0.783, - -0.696, - -0.609, - -0.522, - -0.435, - -0.348, - -0.261, - -0.174, - -0.087, - 0.000, - 0.087, - 0.174, - 0.261, - 0.348, - 0.435, - 0.522, - 0.609, - 0.696, - 0.783, - 0.879, - 0.957, - 1.044, - 1.131, - 1.218, - 1.305, - 1.392, - 1.479, - 1.566, - 1.653, - 1.740, - 1.830, - 1.930, - 2.043, - 2.172, - 2.322, - 2.500, - 2.650, - 2.853, - 2.964, - 3.139, - 3.314, - 3.489, - 3.664, - 3.839, - 4.013, - 4.191, - 4.363, - 4.538, - 4.716, - 4.889, - 5.191}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/CaloTowersExample.h b/RecoJets/JetAnalyzers/interface/CaloTowersExample.h deleted file mode 100755 index d2f7b91cfdf..00000000000 --- a/RecoJets/JetAnalyzers/interface/CaloTowersExample.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef RecoExamples_CaloTowersExample_h -#define RecoExamples_CaloTowersExample_h -#include <TH1.h> -/* \class CaloTowersExample - * - * \author Robert Harris - * - * \version 1 - * - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" - -class CaloTowersExample : public edm::EDAnalyzer { -public: - CaloTowersExample( const edm::ParameterSet & ); - -private: - void beginJob( const edm::EventSetup & ); - void analyze( const edm::Event& , const edm::EventSetup& ); - void endJob(); - std::string CaloTowersAlgorithm; - TH1F h_et; - TFile* m_file; -}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/DijetMass.h b/RecoJets/JetAnalyzers/interface/DijetMass.h deleted file mode 100755 index b7d4b6a993f..00000000000 --- a/RecoJets/JetAnalyzers/interface/DijetMass.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef RecoExamples_DijetMass_h -#define RecoExamples_DijetMass_h -#include <TH1.h> -#include <TProfile.h> -#include <TH2.h> -/* \class DijetMass - * - * \author Robert Harris - * - * \version 1 - * - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" - -class DijetMass : public edm::EDAnalyzer { -public: - DijetMass( const edm::ParameterSet & ); - -private: - //Framwework stuff - void beginJob( const edm::EventSetup & ); - void analyze( const edm::Event& , const edm::EventSetup& ); - void endJob(); - - // Parameters passed via the config file - double PtHistMax; // Maximum edge of Pt histograms - std::string GenType; // Type of Generated Process on Input to analysis - - // Root objects - - //Simple Hists - TH1F ptMC5cal, etaMC5cal, phiMC5cal, m2jMC5cal; - TH1F ptMC5gen, etaMC5gen, phiMC5gen, m2jMC5gen; - TH1F ptMC5cor, etaMC5cor, phiMC5cor, m2jMC5cor; - TH1F ptIC5cal, etaIC5cal, phiIC5cal, m2jIC5cal; - TH1F ptIC5gen, etaIC5gen, phiIC5gen, m2jIC5gen; - TH1F ptIC5cor, etaIC5cor, phiIC5cor, m2jIC5cor; - TH1F ptKT10cal, etaKT10cal, phiKT10cal, m2jKT10cal; - TH1F ptKT10gen, etaKT10gen, phiKT10gen, m2jKT10gen; - - //Matched jets Analysis Histograms for MC5 CaloJets only - TH1F dR, dRcor; - TProfile respVsPt, corRespVsPt; - - //Histo File - TFile* m_file; - - //Internal parameters - int evtCount; - int numJets; - -}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/JetAnalysis.h b/RecoJets/JetAnalyzers/interface/JetAnalysis.h deleted file mode 100644 index 42deeef7b32..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetAnalysis.h +++ /dev/null @@ -1,145 +0,0 @@ -#ifndef ANALYSIS_JET_MYJET_H -#define ANALYSIS_JET_MYJET_H 1 - -#include "TH1.h" -#include "TH2.h" -#include "TFile.h" -#include "TNamed.h" -#include <vector> -#include <map> - -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/JetReco/interface/CaloJetfwd.h" -#include "DataFormats/JetReco/interface/GenJet.h" -#include "DataFormats/JetReco/interface/GenJetfwd.h" - -#include "DataFormats/METReco/interface/METCollection.h" -#include "DataFormats/METReco/interface/CaloMETCollection.h" -#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" -#include "DataFormats/EgammaReco/interface/BasicCluster.h" -#include "DataFormats/EgammaReco/interface/SuperCluster.h" -#include "Geometry/CaloGeometry/interface/CaloGeometry.h" -#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" -#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" -#include "TBDataFormats/HcalTBObjects/interface/HcalTBTriggerData.h" -#include "DataFormats/HcalDigi/interface/HcalQIESample.h" - -/** \class JetAnalysis - * - * $Date: 2006/08/31 15:08:26 $ - * $Revision: 1.1 $ - * \author L. Apanasevich - UIC and Anwar Bhatti - */ -class JetAnalysis { -public: - JetAnalysis(); - /** Setup the analysis to put the histograms into HistoFile and focus on - ieta,iphi for analysis. - */ - void setup(const edm::ParameterSet& pSet); - void fillHist(const TString& histName, const Double_t& x,const Double_t& wt=1.0); - void fillHist1D(const TString& histName, const Double_t& x,const Double_t& wt=1.0); - void fillHist2D(const TString& histName, const Double_t& x,const Double_t& y,const Double_t& wt=1.0); - - - /** Analyze the Data */ - void analyze(const CaloJetCollection& rjets, - const GenJetCollection& gjets, - const CaloMETCollection& rmets, - const METCollection& gmets, - const CaloTowerCollection& caloTowers, - const HepMC::GenEvent mctruth, - const HBHERecHitCollection& hbhe_hits, - const HBHEDigiCollection& hbhe_digis, - const HORecHitCollection& ho_hits, - const HODigiCollection& ho_digis, - const HFRecHitCollection& hf_hits, - const HFDigiCollection& hf_digis, - const HcalTBTriggerData& trigger, - const CaloGeometry& geom); - - void dummyAnalyze( - const CaloGeometry& geom); - /** Finalization (close files, etc) */ - void done(); - - - void bookHistograms(); - void bookGeneralHistograms(); - - void bookTBTriggerHists(); - void fillTBTriggerHists(const HcalTBTriggerData& trigger); - - void bookCaloTowerHists(); - void fillCaloTowerHists(const CaloTowerCollection& caloTowers); - - void bookForId(const HcalDetId& id); - void bookForId_TS(const HcalDetId& id); - - void bookMetHists(const TString& prefix); - template <typename T> void fillMetHists(const T& mets, const TString& prefx); - - void bookJetHistograms(const TString& prefix); - - template <typename T> void fillJetHists(const T& jets, const TString& prefx); - template <typename T> void fillRecHits(const T& hits); - template <typename T> void fillDigis(const T& digis); - - void bookCalculateEfficiency(); - void CalculateEfficiency(GenJetCollection& genjets,CaloJetCollection& calojets); - - void bookDiJetBalance(const TString& prefix); - template <typename T> void DiJetBalance(const T& jets, const TString& prefix); - - void bookMCParticles(); - void fillMCParticles(const HepMC::GenEvent mctruth); - void bookMCParticles(const TString& prefix ); - void fillMCParticlesInsideJet(const HepMC::GenEvent genEvent,const GenJetCollection& genjets); - - -private: - - // input variables - string _HistName; // Name of histogram file - bool _Monte,_PlotRecHits,_PlotDigis; - double _EtaMin,_EtaMax; - - int evtCounter; - bool doGenJets, doGenMets, doMCTruth, doTBTrigger; - - const float etaBarrel() {return 1.4;} - - TFile* m_file; // pointer to Histogram file - const TString EnergyDir() {return "Channel Energies";} - const TString PulseDir(){ return "Pulse Shapes";} - - // Trigger histogram labels - static const char* trigBeam(){return "Beam";} - static const char* trigIped(){return "In-Spill Ped";} - static const char* trigOped(){return "Out-Spill Ped";} - static const char* trigLED(){return "LED";} - static const char* trigLaser(){return "Laser";} - - // histogram declarations - TH1* m_Cntr; // Simple single histogram - - // use the map function to access the rest of the histograms - std::map<TString, TH1*> m_HistNames; - std::map<TString, TH1*>::iterator hid; - - std::map<TString, TH2*> m_HistNames2D; - std::map<TString, TH2*>::iterator hid2D; - - //create maps linking histogram pointers to HCAL Channel hits and digis - - std::map<HcalDetId, TH1*> channelmap1; - std::map<HcalDetId, TH1*> channelmap2; - std::map<HcalDetId, TH1*> digimap1; - std::map<HcalDetId, TH1*> digimap2; - - TString gjetpfx, rjetpfx,gmetpfx, rmetpfx,calopfx; -}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/JetAnalyzer.h b/RecoJets/JetAnalyzers/interface/JetAnalyzer.h deleted file mode 100644 index 2344ad65bf8..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetAnalyzer.h +++ /dev/null @@ -1,29 +0,0 @@ -// File: JetAnalyzer.h -// Description: Example of Jet Analysis driver originally from Jeremy Mans, -// developed by Lenny Apanesevich and Anwar Bhatti for various purposes. -// Date: 31-August-2006 - -#include <iostream> - -#include "RecoJets/JetAnalyzers/interface/JetAnalysis.h" - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "Geometry/Records/interface/IdealGeometryRecord.h" - -class JetAnalyzer : public edm::EDAnalyzer { -public: - explicit JetAnalyzer(edm::ParameterSet const& conf); - virtual void analyze(edm::Event const& e, edm::EventSetup const& iSetup); - virtual void endJob(); -private: - // variables persistent across events should be declared here. - // - JetAnalysis analysis_; - std::string recjets_,genjets_,recmet_,genmet_,calotowers_; - int errCnt; - const int errMax(){return 100;} -}; diff --git a/RecoJets/JetAnalyzers/interface/JetPlotsExample.h b/RecoJets/JetAnalyzers/interface/JetPlotsExample.h deleted file mode 100755 index c3d78bd60fe..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetPlotsExample.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef RecoExamples_JetPlotsExample_h -#define RecoExamples_JetPlotsExample_h -#include <TH1.h> -/* \class JetPlotsExample - * - * \author Robert Harris - * - * \version 1 - * - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" - -class JetPlotsExample : public edm::EDAnalyzer { -public: - JetPlotsExample( const edm::ParameterSet & ); - -private: - void beginJob( const edm::EventSetup & ); - void analyze( const edm::Event& , const edm::EventSetup& ); - void endJob(); - std::string CaloJetAlgorithm, GenJetAlgorithm; - TH1F h_ptCal, h_etaCal, h_phiCal; - TH1F h_ptGen, h_etaGen, h_phiGen; - TFile* m_file; -}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/JetToDigiDump.h b/RecoJets/JetAnalyzers/interface/JetToDigiDump.h deleted file mode 100755 index 88c7850ec06..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetToDigiDump.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RecoExamples_JetToDigiDump_h -#define RecoExamples_JetToDigiDump_h -#include <TH1.h> -#include <TProfile.h> -#include <TH2.h> -/* \class JetToDigiDump - * - * \author Robert Harris - * - * \version 1 - * - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" - -class JetToDigiDump : public edm::EDAnalyzer { -public: - JetToDigiDump( const edm::ParameterSet & ); - -private: - //Framwework stuff - void beginJob( const edm::EventSetup & ); - void analyze( const edm::Event& , const edm::EventSetup& ); - void endJob(); - - // Parameters passed via the config file - std::string DumpLevel; //How deep into calorimeter reco to dump - std::string CaloJetAlg; //Jet Algorithm to dump - - //Internal parameters - int Dump; - int evtCount; - -}; - -#endif diff --git a/RecoJets/JetAnalyzers/interface/JetUtil.h b/RecoJets/JetAnalyzers/interface/JetUtil.h deleted file mode 100644 index b1750213420..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetUtil.h +++ /dev/null @@ -1,54 +0,0 @@ -// File: JetUtil.h -// Description: Miscellaneous jet utilities used by JetAnalysis.cc -// Author: Anwar Bhatti -// Date: August 31, 2006 -// -#ifndef JET_JETUTIL_H -#define JET_JETUTIL_H - -#include <cmath> - -class PtGreater { - public: - template <typename T> bool operator () (const T& i, const T& j) { - return (i.pt() > j.pt()); - } -}; - -double Phi_0_2pi(double x) { - while (x >= 2*M_PI) x -= 2*M_PI; - while (x < 0.) x += 2*M_PI; - return x; -} - -double Phi_mpi_pi(double x) { - while (x >= M_PI) x -= 2*M_PI; - while (x < -M_PI) x += 2*M_PI; - return x; -} - -double dPhi(double phi1,double phi2){ - phi1=Phi_0_2pi(phi1); - phi2=Phi_0_2pi(phi2); - return Phi_mpi_pi(phi1-phi2); -} - -double radius(double eta1, double phi1,double eta2, double phi2){ - - const double TWOPI= 2.0*M_PI; - - phi1=Phi_0_2pi(phi1); - phi2=Phi_0_2pi(phi2); - - double dphi=Phi_0_2pi(phi1-phi2); - dphi = TMath::Min(dphi,TWOPI-dphi); - double deta = eta1-eta2; - - return sqrt(deta*deta+dphi*dphi); -} - -template <typename T1,typename T2> double radius(const T1& t1,const T2& t2){ - return radius(t1->eta(),t1->phi(),t2->eta(),t2->phi()); -} - -#endif diff --git a/RecoJets/JetAnalyzers/interface/JetValidation.h b/RecoJets/JetAnalyzers/interface/JetValidation.h deleted file mode 100755 index 2a91bae1c7b..00000000000 --- a/RecoJets/JetAnalyzers/interface/JetValidation.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef RecoExamples_JetValidation_h -#define RecoExamples_JetValidation_h -#include <TH1.h> -#include <TProfile.h> -#include <TH2.h> -/* \class JetValidation - * - * \author Robert Harris - * - * \version 1 - * - */ -#include "FWCore/Framework/interface/EDAnalyzer.h" - -class JetValidation : public edm::EDAnalyzer { -public: - JetValidation( const edm::ParameterSet & ); - -private: - //Framwework stuff - void beginJob( const edm::EventSetup & ); - void analyze( const edm::Event& , const edm::EventSetup& ); - void endJob(); - - // Parameters passed via the config file - double PtHistMax; // Maximum edge of Pt histograms - int diagPrintNum; // Number of events for diagnostic printout - std::string GenType; // Type of Generated Particle on Input to analysis - - // Root objects - - //Simple Hists - TH1F ptMC5cal, etaMC5cal, phiMC5cal, m2jMC5cal; - TH1F ptMC5gen, etaMC5gen, phiMC5gen, m2jMC5gen; - TH1F ptIC5cal, etaIC5cal, phiIC5cal, m2jIC5cal; - TH1F ptIC5gen, etaIC5gen, phiIC5gen, m2jIC5gen; - TH1F ptKT10cal, etaKT10cal, phiKT10cal, m2jKT10cal; - TH1F ptKT10gen, etaKT10gen, phiKT10gen, m2jKT10gen; - - //Calorimeter Sub-System Analysis Histograms for IC5 CaloJets only - TH1F emEnergyFraction, emEnergyInEB, emEnergyInEE, emEnergyInHF; - TH1F hadEnergyInHB, hadEnergyInHE, hadEnergyInHF, hadEnergyInHO; - TProfile EBfractionVsEta, EEfractionVsEta, HBfractionVsEta; - TProfile HOfractionVsEta, HEfractionVsEta, HFfractionVsEta; - TProfile CaloEnergyVsEta, GenEnergyVsEta, emEnergyVsEta, hadEnergyVsEta; - TProfile CaloErespVsEta, emErespVsEta, hadErespVsEta; - TProfile WindowEBfractionVsEta, WindowEEfractionVsEta, WindowHBfractionVsEta; - TProfile WindowHOfractionVsEta, WindowHEfractionVsEta, WindowHFfractionVsEta; - TProfile WindowCaloErespVsEta, WindowEmErespVsEta, WindowHadErespVsEta; - TProfile WindowCaloEnergyVsEta, WindowGenEnergyVsEta, WindowEmEnergyVsEta, WindowHadEnergyVsEta; - TProfile WindowMaxTowErespVsEta, WindowMaxEmErespVsEta, WindowMaxHadErespVsEta; - TH2F GenEnergyVsEta2D, AllGenEnergyVsEta2D; - - //Matched jets Analysis Histograms for MC5 CaloJets only - TH1F dR, dRcor; - TProfile respVsPt, corRespVsPt; - - //Histo File - TFile* m_file; - - //Internal parameters - int evtCount; - int numJets; - -}; - -#endif diff --git a/RecoJets/JetAnalyzers/src/CaloTowersExample.cc b/RecoJets/JetAnalyzers/src/CaloTowersExample.cc deleted file mode 100644 index f0e10b3c772..00000000000 --- a/RecoJets/JetAnalyzers/src/CaloTowersExample.cc +++ /dev/null @@ -1,51 +0,0 @@ -// CaloTowersExample.cc -// Description: Example of simple EDAnalyzer for CaloTowers. -// Author: Robert M. Harris -// Date: 8 - September - 2006 -// -#include "RecoJets/JetAnalyzers/interface/CaloTowersExample.h" -#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include <TROOT.h> -#include <TSystem.h> -#include <TFile.h> -#include <TCanvas.h> -#include <cmath> -using namespace edm; -using namespace std; - -// Get the algorithm of the jet collections we will read from the .cfg file -// which defines the value of the strings CaloJetAlgorithm and GenJetAlgorithm. -CaloTowersExample::CaloTowersExample( const ParameterSet & cfg ) : - CaloTowersAlgorithm( cfg.getParameter<string>( "CaloTowersAlgorithm" ) ) - { -} - -void CaloTowersExample::beginJob( const EventSetup & ) { - - // Open the histogram file and book some associated histograms - m_file=new TFile("histo.root","RECREATE"); - h_et = TH1F( "et", "E_{T} of leading CaloTowers", 50, 0, 25 ); -} - -void CaloTowersExample::analyze( const Event& evt, const EventSetup& es ) { - - //Get the CaloTower collection - Handle<CaloTowerCollection> caloTowers; - evt.getByLabel( CaloTowersAlgorithm, caloTowers ); - - //Loop over the two leading CaloJets and fill some histograms - for( CaloTowerCollection::const_iterator cal = caloTowers->begin(); cal != caloTowers->end(); ++ cal ) { - h_et.Fill( cal->et() ); - } - -} - -void CaloTowersExample::endJob() { - - //Write out the histogram file. - m_file->Write(); - -} diff --git a/RecoJets/JetAnalyzers/src/DijetMass.cc b/RecoJets/JetAnalyzers/src/DijetMass.cc deleted file mode 100644 index 89eb495061f..00000000000 --- a/RecoJets/JetAnalyzers/src/DijetMass.cc +++ /dev/null @@ -1,278 +0,0 @@ -// DijetMass.cc -// Description: Some Basic validation plots for jets. -// Author: Robert M. Harris -// Date: 30 - August - 2006 -// -#include "RecoJets/JetAnalyzers/interface/DijetMass.h" -#include "RecoJets/JetAlgorithms/interface/JetAlgoHelper.h" -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/JetReco/interface/GenJet.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include <TROOT.h> -#include <TSystem.h> -#include <TFile.h> -#include <TCanvas.h> -#include <cmath> -using namespace edm; -using namespace reco; -using namespace std; - -// Get the algorithm of the jet collections we will read from the .cfg file -// which defines the value of the strings CaloJetAlgorithm and GenJetAlgorithm. -DijetMass::DijetMass( const ParameterSet & cfg ) : - PtHistMax( cfg.getParameter<double>( "PtHistMax" ) ), - GenType( cfg.getParameter<string>( "GenType" ) ) - { -} - -void DijetMass::beginJob( const EventSetup & ) { - cout << "DijetMass: Maximum bin edge for Pt Hists = " << PtHistMax << endl; - numJets=2; - - //Initialize some stuff - evtCount = 0; - - // Open the histogram file and book some associated histograms - m_file=new TFile("DijetMassHistos.root","RECREATE"); - - //Simple histos - - //MC5 cal - ptMC5cal = TH1F("ptMC5cal","p_{T} of leading CaloJets (MC5)",50,0.0,PtHistMax); - etaMC5cal = TH1F("etaMC5cal","#eta of leading CaloJets (MC5)",23,-1.0,1.0); - phiMC5cal = TH1F("phiMC5cal","#phi of leading CaloJets (MC5)",72,-M_PI, M_PI); - m2jMC5cal = TH1F("m2jMC5cal","Dijet Mass of leading CaloJets (MC5)",100,0.0,2*PtHistMax); - - //MC5 gen - ptMC5gen = TH1F("ptMC5gen","p_{T} of leading genJets (MC5)",50,0.0,PtHistMax); - etaMC5gen = TH1F("etaMC5gen","#eta of leading genJets (MC5)",23,-1.0,1.0); - phiMC5gen = TH1F("phiMC5gen","#phi of leading genJets (MC5)",72,-M_PI, M_PI); - m2jMC5gen = TH1F("m2jMC5gen","Dijet Mass of leading genJets (MC5)",100,0.0,2*PtHistMax); - - //MC5 cor - ptMC5cor = TH1F("ptMC5cor","p_{T} of leading Corrected CaloJets (MC5)",50,0.0,PtHistMax); - etaMC5cor = TH1F("etaMC5cor","#eta of leading Corrected CaloJets (MC5)",23,-1.0,1.0); - phiMC5cor = TH1F("phiMC5cor","#phi of leading Corrected CaloJets (MC5)",72,-M_PI, M_PI); - m2jMC5cor = TH1F("m2jMC5cor","Dijet Mass of leading Corrected CaloJets (MC5)",100,0.0,2*PtHistMax); - - //IC5 cal - ptIC5cal = TH1F("ptIC5cal","p_{T} of leading CaloJets (IC5)",50,0.0,PtHistMax); - etaIC5cal = TH1F("etaIC5cal","#eta of leading CaloJets (IC5)",23,-1.0,1.0); - phiIC5cal = TH1F("phiIC5cal","#phi of leading CaloJets (IC5)",72,-M_PI, M_PI); - m2jIC5cal = TH1F("m2jIC5cal","Dijet Mass of leading CaloJets (IC5)",100,0.0,2*PtHistMax); - - //IC5 gen - ptIC5gen = TH1F("ptIC5gen","p_{T} of leading genJets (IC5)",50,0.0,PtHistMax); - etaIC5gen = TH1F("etaIC5gen","#eta of leading genJets (IC5)",23,-1.0,1.0); - phiIC5gen = TH1F("phiIC5gen","#phi of leading genJets (IC5)",72,-M_PI, M_PI); - m2jIC5gen = TH1F("m2jIC5gen","Dijet Mass of leading genJets (IC5)",100,0.0,2*PtHistMax); - - //IC5 cor - ptIC5cor = TH1F("ptIC5cor","p_{T} of leading Corrected CaloJets (IC5)",50,0.0,PtHistMax); - etaIC5cor = TH1F("etaIC5cor","#eta of leading Corrected CaloJets (IC5)",23,-1.0,1.0); - phiIC5cor = TH1F("phiIC5cor","#phi of leading Corrected CaloJets (IC5)",72,-M_PI, M_PI); - m2jIC5cor = TH1F("m2jIC5cor","Dijet Mass of leading Corrected CaloJets (IC5)",100,0.0,2*PtHistMax); - - //KT10 cal - ptKT10cal = TH1F("ptKT10cal","p_{T} of leading CaloJets (KT10)",50,0.0,PtHistMax); - etaKT10cal = TH1F("etaKT10cal","#eta of leading CaloJets (KT10)",23,-1.0,1.0); - phiKT10cal = TH1F("phiKT10cal","#phi of leading CaloJets (KT10)",72,-M_PI, M_PI); - m2jKT10cal = TH1F("m2jKT10cal","Dijet Mass of leading CaloJets (KT10)",100,0.0,2*PtHistMax); - - //KT10 gen - ptKT10gen = TH1F("ptKT10gen","p_{T} of leading genJets (KT10)",50,0.0,PtHistMax); - etaKT10gen = TH1F("etaKT10gen","#eta of leading genJets (KT10)",23,-1.0,1.0); - phiKT10gen = TH1F("phiKT10gen","#phi of leading genJets (KT10)",72,-M_PI, M_PI); - m2jKT10gen = TH1F("m2jKT10gen","Dijet Mass of leading genJets (KT10)",100,0.0,2*PtHistMax); - - - //Matched jets Analysis Histograms for MC5 CaloJets only - dR = TH1F("dR","Leading genJets dR with matched CaloJet",100,0,0.5); - respVsPt = TProfile("respVsPt","CaloJet Response of Leading genJets in Barrel",100,0.0,PtHistMax/2); - dRcor = TH1F("dRcor","CorJets dR with matched CaloJet",100,0.0,0.01); - corRespVsPt = TProfile("corRespVsPt","Corrected CaloJet Response of Leading genJets in Barrel",100,0.0,PtHistMax/2); -} - -void DijetMass::analyze( const Event& evt, const EventSetup& es ) { - - evtCount++; - math::XYZTLorentzVector p4jet[2], p4gen[2], p4cal[2], p4cor[2]; - int jetInd; - Handle<CaloJetCollection> caloJets; - Handle<GenJetCollection> genJets; - - //Fill Simple Histos - - //MC5 cal - evt.getByLabel( "midPointCone5CaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jMC5cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptMC5cal.Fill( p4jet[0].Pt() ); ptMC5cal.Fill( p4jet[1].Pt() ); - etaMC5cal.Fill( p4jet[0].eta() ); etaMC5cal.Fill( p4jet[1].eta() ); - phiMC5cal.Fill( p4jet[0].phi() ); phiMC5cal.Fill( p4jet[1].phi() ); - } - - //MC5 gen - evt.getByLabel( "midPointCone5GenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<2; ++ gen ) { - p4jet[jetInd] = gen->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jMC5gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptMC5gen.Fill( p4jet[0].Pt() ); ptMC5gen.Fill( p4jet[1].Pt() ); - etaMC5gen.Fill( p4jet[0].eta() ); etaMC5gen.Fill( p4jet[1].eta() ); - phiMC5gen.Fill( p4jet[0].phi() ); phiMC5gen.Fill( p4jet[1].phi() ); - } - - //MC5 cal - evt.getByLabel( "corJetMcone5", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jMC5cor.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptMC5cor.Fill( p4jet[0].Pt() ); ptMC5cor.Fill( p4jet[1].Pt() ); - etaMC5cor.Fill( p4jet[0].eta() ); etaMC5cor.Fill( p4jet[1].eta() ); - phiMC5cor.Fill( p4jet[0].phi() ); phiMC5cor.Fill( p4jet[1].phi() ); - } - - - //IC5 cal - evt.getByLabel( "iterativeCone5CaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jIC5cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptIC5cal.Fill( p4jet[0].Pt() ); ptIC5cal.Fill( p4jet[1].Pt() ); - etaIC5cal.Fill( p4jet[0].eta() ); etaIC5cal.Fill( p4jet[1].eta() ); - phiIC5cal.Fill( p4jet[0].phi() ); phiIC5cal.Fill( p4jet[1].phi() ); - } - - - //IC5 gen - evt.getByLabel( "iterativeCone5GenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<2; ++ gen ) { - p4jet[jetInd] = gen->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jIC5gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptIC5gen.Fill( p4jet[0].Pt() ); ptIC5gen.Fill( p4jet[1].Pt() ); - etaIC5gen.Fill( p4jet[0].eta() ); etaIC5gen.Fill( p4jet[1].eta() ); - phiIC5gen.Fill( p4jet[0].phi() ); phiIC5gen.Fill( p4jet[1].phi() ); - } - - //IC5 cor - evt.getByLabel( "corJetIcone5", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jIC5cor.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptIC5cor.Fill( p4jet[0].Pt() ); ptIC5cor.Fill( p4jet[1].Pt() ); - etaIC5cor.Fill( p4jet[0].eta() ); etaIC5cor.Fill( p4jet[1].eta() ); - phiIC5cor.Fill( p4jet[0].phi() ); phiIC5cor.Fill( p4jet[1].phi() ); - } - - //KT10 cal - evt.getByLabel( "ktCaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jKT10cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptKT10cal.Fill( p4jet[0].Pt() ); ptKT10cal.Fill( p4jet[1].Pt() ); - etaKT10cal.Fill( p4jet[0].eta() ); etaKT10cal.Fill( p4jet[1].eta() ); - phiKT10cal.Fill( p4jet[0].phi() ); phiKT10cal.Fill( p4jet[1].phi() ); - } - - //KT10 gen - evt.getByLabel( "ktGenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<2; ++ gen ) { - p4jet[jetInd] = gen->p4(); - jetInd++; - } - if(jetInd==2&&abs(p4jet[0].eta())<1.0&&abs(p4jet[1].eta())<1.0){ - m2jKT10gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - ptKT10gen.Fill( p4jet[0].Pt() ); ptKT10gen.Fill( p4jet[1].Pt() ); - etaKT10gen.Fill( p4jet[0].eta() ); etaKT10gen.Fill( p4jet[1].eta() ); - phiKT10gen.Fill( p4jet[0].phi() ); phiKT10gen.Fill( p4jet[1].phi() ); - } - - //Matching for MC5 Jets: leading genJets matched to any CaloJet - evt.getByLabel( "midPointCone5GenJets", genJets ); - evt.getByLabel( "midPointCone5CaloJets", caloJets ); - jetInd = 0; - double dRmin[2]; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { //leading genJets - p4gen[jetInd] = gen->p4(); //Gen 4-vector - dRmin[jetInd]=1000.0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) { //all CaloJets - double delR = deltaR( cal->eta(), cal->phi(), gen->eta(), gen->phi() ); - if(delR<dRmin[jetInd]){ - dRmin[jetInd]=delR; //delta R of match - p4cal[jetInd] = cal->p4(); //Matched Cal 4-vector - } - } - dR.Fill(dRmin[jetInd]); - if(dRmin[jetInd]>0.5)cout << "MC5 Match Warning: dR=" <<dRmin[jetInd]<<", GenPt="<<p4gen[jetInd].Pt()<<", CalPt="<<p4cal[jetInd].Pt()<<endl; - jetInd++; - } - //Fill Resp vs Pt profile histogram with response of two leading gen jets - for( jetInd=0; jetInd<numJets; ++jetInd ){ - if(fabs(p4gen[jetInd].eta())<1.){ - respVsPt.Fill(p4gen[jetInd].Pt(), p4cal[jetInd].Pt()/p4gen[jetInd].Pt() ); - } - } - - //Find the Corrected CaloJets that match the two uncorrected CaloJets - evt.getByLabel( "corJetMcone5", caloJets ); - for( jetInd=0; jetInd<numJets; ++jetInd ){ - bool found=kFALSE; - for( CaloJetCollection::const_iterator cor = caloJets->begin(); cor != caloJets->end() && !found; ++ cor ) { //all corrected CaloJets - double delR = deltaR( cor->eta(), cor->phi(), p4cal[jetInd].eta(), p4cal[jetInd].phi()); - if(delR<0.01){ - dRmin[jetInd]=delR; //delta R of match - p4cor[jetInd] = cor->p4(); //Matched Cal 4-vector - found=kTRUE; - dRcor.Fill(dRmin[jetInd]); - } - } - if(!found)cout << "Warning: corrected jet not found. jetInd=" << jetInd << endl; - } - //Fill Resp vs Pt profile histogram with corrected response of two leading gen jets - for( jetInd=0; jetInd<numJets; ++jetInd ){ - if(fabs(p4gen[jetInd].eta())<1.){ - corRespVsPt.Fill(p4gen[jetInd].Pt(), p4cor[jetInd].Pt()/p4gen[jetInd].Pt() ); - } - } - -} - -void DijetMass::endJob() { - - //Write out the histogram file. - m_file->Write(); - -} diff --git a/RecoJets/JetAnalyzers/src/JetAnalysis.cc b/RecoJets/JetAnalyzers/src/JetAnalysis.cc deleted file mode 100644 index adf58d01f7d..00000000000 --- a/RecoJets/JetAnalyzers/src/JetAnalysis.cc +++ /dev/null @@ -1,853 +0,0 @@ -// -// Example analysis related to calorimeter and jets -// Anwar A Bhatti The Rockefeller University -// Leonard Apanasevich University of Illinois Chicago -// August 30, 2006 -// -// -#include <iostream> -#include <sstream> -#include <istream> -#include <fstream> -#include <iomanip> -#include <string> -#include <cmath> -#include <functional> - -#include "RecoJets/JetAnalyzers/interface/JetAnalysis.h" -#include "RecoJets/JetAnalyzers/interface/JetUtil.h" -#include "RecoJets/JetAnalyzers/interface/CaloTowerBoundries.h" - -#include <sstream> -#include <stdlib.h> -#include <string.h> - -#include <CLHEP/Vector/TwoVector.h> - -typedef CaloJetCollection::const_iterator CalJetIter; -typedef GenJetCollection::const_iterator GenJetIter; - -JetAnalysis::JetAnalysis() { - m_file=0; // set to null - evtCounter=0; - - //set parameter defaults - _Monte=false; - _EtaMin=-5.2; - _EtaMax=5.2; - _HistName="test.root"; - _PlotRecHits=false; - _PlotDigis=false; - -} - -void JetAnalysis::setup(const edm::ParameterSet& pSet) { - - edm::ParameterSet myJetParams = pSet.getParameter<edm::ParameterSet>("RunParameters") ; - vector<std::string> parameterNames = myJetParams.getParameterNames() ; - - for ( vector<std::string>::iterator iParam = parameterNames.begin(); - iParam != parameterNames.end(); iParam++ ){ - if ( (*iParam) == "Monte" ) _Monte = myJetParams.getParameter<bool>( *iParam ); - else if ( (*iParam) == "EtaMin" ) _EtaMin = myJetParams.getParameter<double>( *iParam ); - else if ( (*iParam) == "EtaMax" ) _EtaMax = myJetParams.getParameter<double>( *iParam ); - else if ( (*iParam) == "HistogramFile" ) _HistName = myJetParams.getParameter<string>( *iParam ); - else if ( (*iParam) == "PlotRecHits" ) _PlotRecHits = myJetParams.getParameter<bool>( *iParam ); - else if ( (*iParam) == "PlotDigis" ) _PlotDigis = myJetParams.getParameter<bool>( *iParam ); - } - - cout << "---------- Input Parameters ---------------------------" << endl; - cout << " Monte: " << _Monte << endl; - cout << " EtaMin: " << _EtaMin << endl; - cout << " EtaMax: " << _EtaMax << endl; - cout << " Output histograms written to: " << _HistName << std::endl; - cout << "-------------------------------------------------------" << endl; - // open the histogram file - - m_file=new TFile(_HistName.c_str(),"RECREATE"); - m_file->mkdir(EnergyDir()); - m_file->mkdir(PulseDir()); - m_file->cd(); - bookHistograms(); - - for(int ieta=0;ieta<NETA;ieta++){ - cout << " ieta " << ieta << " eta min " << CaloTowerEtaBoundries[ieta] <<endl; - } - -} -void JetAnalysis::fillHist(const TString& histName, const Double_t& value, const Double_t& wt) { - fillHist1D(histName,value,wt); -} -void JetAnalysis::fillHist1D(const TString& histName, const Double_t& value, const Double_t& wt) { - - hid=m_HistNames.find(histName); - if (hid==m_HistNames.end()) - std::cout << "%fillHist -- Could not find histogram with name: " << histName << std::endl; - else - hid->second->Fill(value,wt); - -} - -void JetAnalysis::fillHist2D(const TString& histName, const Double_t& x,const Double_t& y,const Double_t& wt) { - - hid2D=m_HistNames2D.find(histName); - if (hid2D==m_HistNames2D.end()) - std::cout << "%fillHist -- Could not find histogram with name: " << histName << std::endl; - else - hid2D->second->Fill(x,y,wt); - -} - -void JetAnalysis::bookHistograms() { - - bookGeneralHistograms(); - - bookTBTriggerHists(); - - bookCaloTowerHists(); - - if (_Monte) bookJetHistograms("Gen"); - bookJetHistograms("Calo"); - - if (_Monte) bookMetHists("Gen"); - bookMetHists("Calo"); - - if (_Monte) bookCalculateEfficiency(); - - if (_Monte) bookDiJetBalance("Gen"); - bookDiJetBalance("Calo"); - - if (_Monte) bookMCParticles(); - -} -/** Analyze the hits */ -void JetAnalysis::analyze( const CaloJetCollection& calojets, - const GenJetCollection& genjets, - const CaloMETCollection& recmets, - const METCollection& genmets, - const CaloTowerCollection& caloTowers, - const HepMC::GenEvent mctruth, - const HBHERecHitCollection& hbhe_hits, - const HBHEDigiCollection& hbhe_digis, - const HORecHitCollection& ho_hits, - const HODigiCollection& ho_digis, - const HFRecHitCollection& hf_hits, - const HFDigiCollection& hf_digis, - const HcalTBTriggerData& trigger, - const CaloGeometry& geom) { - - //std::cout << " Beginning JetAnalysis " << std::endl; - - (&genjets) ? doGenJets=true : doGenJets=false; - (&genmets) ? doGenMets=true : doGenMets=false; - (&mctruth) ? doMCTruth=true : doMCTruth=false; - (&trigger) ? doTBTrigger=true : doTBTrigger=false; - - fillHist("Nevents",1.0); - - if (doTBTrigger) fillTBTriggerHists(trigger); - - // Make a copy, so that you can sort - - CaloJetCollection mycalojets=calojets; - std::sort(mycalojets.begin(),mycalojets.end(),PtGreater()); - - GenJetCollection mygenjets; - if (doGenJets) { - mygenjets=genjets; - std::sort(mygenjets.begin(),mygenjets.end(),PtGreater()); - } - - // fill calojet and genjet hists - fillJetHists(mycalojets,"Calo"); - if (doGenJets)fillJetHists(mygenjets,"Gen"); - - // fill recmet and genjet hists - fillMetHists(recmets,"Calo"); - if (doGenMets)fillMetHists(genmets,"Gen"); - - // fill CaloTower hists - fillCaloTowerHists(caloTowers); - - if (doGenJets) CalculateEfficiency(mygenjets,mycalojets); - - DiJetBalance(mycalojets,"Calo"); - if (doGenJets)DiJetBalance(mygenjets,"Gen"); - - if (doMCTruth)fillMCParticles(mctruth); - - // Plot RecHits - if (_PlotRecHits){ - if (&hbhe_hits) fillRecHits(hbhe_hits); - if (&ho_hits) fillRecHits(ho_hits); - if (&hf_hits) fillRecHits(hf_hits); - } - // Plot Digis - if (_PlotDigis){ - if (&hbhe_digis) fillDigis(hbhe_digis); - if (&ho_digis) fillDigis(ho_digis); - if (&hf_digis) fillDigis(hf_digis); - } - -} - -void JetAnalysis::bookGeneralHistograms() { - - TString hname="Nevents"; TString htitle="Number of events"; - - m_HistNames[hname]= new TH1F(hname,htitle,5,0.0,5.0); -} - -void JetAnalysis::bookTBTriggerHists() { - - - TString hname="Trigger"; TString htitle="Trigger Histogram"; - - TH1F* id =new TH1F(hname,htitle,5,0.0,5.0); - id->GetXaxis()->SetBinLabel(1,trigBeam()); - id->GetXaxis()->SetBinLabel(2,trigIped()); - id->GetXaxis()->SetBinLabel(3,trigOped()); - id->GetXaxis()->SetBinLabel(4,trigLED()); - id->GetXaxis()->SetBinLabel(5,trigLaser()); - - m_HistNames[hname]= id; - -} - -void JetAnalysis::fillTBTriggerHists(const HcalTBTriggerData& trigger){ - - TString hname="Trigger"; - - hid=m_HistNames.find(hname); - if (hid==m_HistNames.end()) - std::cout << "%fillHist -- Could not find histogram with name: " << hname << std::endl; - else - { - if (trigger.wasBeamTrigger()) hid->second->Fill(trigBeam(),1.0); - if (trigger.wasInSpillPedestalTrigger()) hid->second->Fill(trigIped(),1.0); - if (trigger.wasOutSpillPedestalTrigger()) hid->second->Fill(trigOped(),1.0); - if (trigger.wasLEDTrigger()) hid->second->Fill(trigLED(),1.0); - if (trigger.wasLaserTrigger()) hid->second->Fill(trigLaser(),1.0); - } -} - -void JetAnalysis::bookJetHistograms(const TString& prefix) { - - TString hname; - TString htitle; - - std::ostringstream ch_eta; ch_eta << etaBarrel(); - std::ostringstream ch_etamin; ch_etamin << _EtaMin; - std::ostringstream ch_etamax; ch_etamax << _EtaMax; - - TString h_EtaRng= ch_etamin.str() + " < #eta < " + ch_etamax.str(); - - // book rec and gen jet histograms - Int_t netbins=80, nengbins=100; - Double_t etmin=0.,etmax=400.,engmin=0.,engmax=500.; - - hname=prefix + "et"; htitle=prefix+" Jet E_{T} -- " + h_EtaRng; - m_HistNames[hname]= new TH1F(hname,htitle,netbins,etmin,etmax); - hname=prefix + "pt"; htitle=prefix+" Jet p_{T} -- " + h_EtaRng; - m_HistNames[hname]= new TH1F(hname,htitle,netbins,etmin,etmax); - - hname=prefix + "energy"; htitle=prefix+" Jet Energy -- " + h_EtaRng; - m_HistNames[hname]= new TH1F(hname,htitle,nengbins,engmin,engmax); - - float deltaEta=0.1,deltaPhi=0.1; - Int_t netabins=int((_EtaMax-_EtaMin)/deltaEta); - Int_t nphibins=int(2.*M_PI/deltaPhi); - - hname=prefix + "phi" ; htitle=prefix+" Jet #phi -- " + h_EtaRng; - m_HistNames[hname] = new TH1F(hname,htitle,nphibins,-M_PI,M_PI); - hname=prefix + "eta"; htitle=prefix+" Jet #eta -- " + h_EtaRng; - m_HistNames[hname] = new TH1F(hname,htitle,netabins,_EtaMin,_EtaMax); - - - hname=prefix + "et_Barrel"; htitle=prefix+" Jet E_{T} -- |#eta| < " + ch_eta.str(); - m_HistNames[hname] = new TH1F(hname,htitle,netbins,etmin,etmax); - hname=prefix + "pt_Barrel"; htitle=prefix+" Jet p_{T} -- |#eta| < " + ch_eta.str(); - m_HistNames[hname] = new TH1F(hname,htitle,netbins,etmin,etmax); - - hname=prefix + "etmax"; htitle=prefix+" Max Jet E_{T} -- |#eta| < " + ch_eta.str(); - m_HistNames[hname] = new TH1F(hname,htitle,netbins,etmin,etmax); - hname=prefix + "ptmax"; htitle=prefix+" Max Jet p_{T} -- |#eta| < " + ch_eta.str(); - m_HistNames[hname] = new TH1F(hname,htitle,netbins,etmin,etmax); - - -} - -void JetAnalysis::bookForId(const HcalDetId& id) { - - std::ostringstream ss,ss_t1,ss_t2,st; - - ss << "Energy " << id; - ss_t1 << "LowEnergy" << id; - ss_t2 << "Energy" << id; - - //std::cout << "Booking Histograms for HCAL Subdetector: " << id.subdet() - // << " Name: " << ss.str() << std::endl; - - Int_t nbins; - Double_t xmin,xmax; - - switch (id.subdet()){ - case (HcalBarrel):{ - nbins=300; xmin=0.; xmax=600.; - } break; - case (HcalOuter):{ - nbins=100; xmin=0.; xmax=100.; - } break; - default:{ - nbins=300; xmin=0.; xmax=600.; - } - } - channelmap1[id]=new TH1F(ss_t1.str().c_str(),ss.str().c_str(),520,-3.0,10.0); - channelmap2[id]=new TH1F(ss_t2.str().c_str(),ss.str().c_str(),nbins,xmin,xmax); -} - -void JetAnalysis::bookForId_TS(const HcalDetId& id) { - - std::ostringstream ss,st; - ss << "ADC" << id; - st << "fC" << id; - - digimap1[id]=new TH1I(ss.str().c_str(),ss.str().c_str(),10,-0.5,9.5); - digimap2[id]=new TH1F(st.str().c_str(),st.str().c_str(),10,-0.5,9.5); - -} - -template <typename T> void JetAnalysis::fillRecHits(const T& hits) { - - std::map<HcalDetId,TH1*>::iterator h1,h2; - - m_file->cd(EnergyDir()); - typedef typename T::const_iterator iter; - for ( iter i=hits.begin(); i!=hits.end(); i++) { - - h1=channelmap1.find(i->id()); // look for a histogram with this hit's id - h2=channelmap2.find(i->id()); // look for a histogram with this hit's id - if (h1==channelmap1.end()) { - bookForId(i->id()); - h1=channelmap1.find(i->id()); // look for a histogram with this hit's id - h2=channelmap2.find(i->id()); // look for a histogram with this hit's id - } - //std::cout << "Energy: " << i->energy() << " hist1: " << h1->second->GetTitle() << endl; - h1->second->Fill(i->energy()); // if it's there, fill it with energy - h2->second->Fill(i->energy()); // if it's there, fill it with energy - } - m_file->cd(); -} - - -template <typename T> void JetAnalysis::fillDigis(const T& digis) { - - std::map<HcalDetId,TH1*>::iterator h1,h2; - - m_file->cd(PulseDir()); - typedef typename T::const_iterator iter; - - for ( iter ii=digis.begin(); ii!=digis.end(); ii++) { - h1=digimap1.find(ii->id()); // look for a histogram with this hit's id - h2=digimap2.find(ii->id()); // look for a histogram with this hit's id - if (h1==digimap1.end()) { - bookForId_TS(ii->id()); - h1=digimap1.find(ii->id()); // look for a histogram with this hit's id - h2=digimap2.find(ii->id()); // look for a histogram with this hit's id - } - for (int indx=0; indx<ii->size(); indx++) { - int i_adc=ii->sample(indx).adc(); - //std::cout << " LA: " << ii->sample(indx) << ii->sample(indx).capid() << std::endl; - h1->second->Fill(indx,i_adc); - Double_t wt=ii->sample(indx).nominal_fC(); - //std::cout << i_adc << " " << wt << std::endl; - h2->second->Fill(indx,wt); - } - } - m_file->cd(); -} - -template <typename T> void JetAnalysis::fillJetHists(const T& jets, const TString& prefix) { - - typedef typename T::const_iterator iter; - - Double_t maxEt=0.,maxPt=0.; - for ( iter i=jets.begin(); i!=jets.end(); i++) { - - Double_t jetEng = i->energy(); - Double_t jetEt = i->et(); - Double_t jetPt = i->pt(); - Double_t jetEta = i->eta(); - Double_t jetPhi = i->phi(); - - if (jetEta > _EtaMin && jetEta < _EtaMax){ - fillHist(prefix + "energy",jetEng); - fillHist(prefix + "et",jetEt); - fillHist(prefix + "pt",jetPt); - - fillHist(prefix + "eta",jetEta); - fillHist(prefix + "phi",jetPhi); - - if (fabs(jetEta) < etaBarrel()){ - fillHist(prefix + "et_Barrel",jetEt); - fillHist(prefix + "pt_Barrel",jetPt); - if (jetEt > maxEt) maxEt = jetEt; - if (jetPt > maxPt) maxPt = jetPt; - } - } - } - fillHist(prefix + "etmax",maxEt); - fillHist(prefix + "ptmax",maxPt); -} - -void JetAnalysis::bookCaloTowerHists() { - - TString hname; - int netbins=50; - float etmin=0.; float etmax=50.; - - hname="CaloTowerEt"; - m_HistNames[hname] = new TH1F(hname,"CaloTower E_{T}",netbins,etmin,etmax); - - hname="CaloTowerEta"; - m_HistNames[hname] = new TH1F(hname,"CaloTower #eta",110,-5.5,5.5); - - - hname="CaloTowerEnergy"; - m_HistNames[hname] = new TH1F(hname,"CaloTower Energy",100,0.0,100.); - - - hname="CaloTowerEmEnergy"; - m_HistNames[hname] = new TH1F(hname,"CaloTower EmEnergy",100,0.0,100.); - - hname="CaloTowerHadEnergy"; - m_HistNames[hname] = new TH1F(hname,"CaloTower HadEnergy",100,0.0,100.); - - hname="CaloTowerOuterEnergy"; - m_HistNames[hname] = new TH1F(hname,"CaloTower Outer Energy",100,0.0,100.); - - hname="CaloTowerEnergyEtaPhi"; - // TH2F* f2d = new TH2F(hname,"CaloTower Outer Energy",100,0.0,100.,100,-3,+3); - m_HistNames2D[hname] = new TH2F(hname,"CaloTower Energy",110,-5.5,5.5,72,-M_PI,+M_PI); - - -} -void JetAnalysis::fillCaloTowerHists(const CaloTowerCollection& caloTowers) { - - for ( CaloTowerCollection::const_iterator tower=caloTowers.begin(); - tower!=caloTowers.end(); tower++) { - - Double_t et=tower->et(); - Double_t eta=tower->eta(); - Double_t phi=tower->phi(); - - if (et<1.) continue; - - Double_t totEnergy= tower->energy(); - Double_t emEnergy= tower->emEnergy(); - Double_t hadEnergy= tower->hadEnergy(); - Double_t outerEnergy= tower->outerEnergy(); - - - fillHist("CaloTowerEt",et); - fillHist("CaloTowerEta",eta); - fillHist("CaloTowerEnergy",totEnergy); - fillHist("CaloTowerEmEnergy",emEnergy); - fillHist("CaloTowerHadEnergy",hadEnergy); - fillHist("CaloTowerOuterEnergy",outerEnergy); - - fillHist2D("CaloTowerEnergyEtaPhi",eta,phi,totEnergy); - - } -} -void JetAnalysis::bookMetHists(const TString& prefix) { - - TString hname; - TString htitle; - - hname=prefix + "num"; - htitle = prefix+" Number of MET objects"; - m_HistNames[hname] = new TH1I(hname,htitle,10,0.,10.); - - hname=prefix+"etMiss"; - htitle=prefix+" Missing Et"; - m_HistNames[hname] = new TH1F(hname,htitle,500,0.0,500.); - - hname=prefix+"etMissX"; - htitle=prefix+" Missing Et-X"; - m_HistNames[hname] = new TH1F(hname,htitle,2000,-1000.0,1000.); - - hname=prefix+"etMissPhi"; - htitle=prefix+" Phi of Missing Et"; - m_HistNames[hname] = new TH1F(hname,htitle,100,-M_PI,M_PI); - - - hname=prefix+"sumEt"; - htitle=prefix+" Sum Et"; - m_HistNames[hname] = new TH1F(hname,htitle,1400,0.0,14000.); - -} -template <typename T> void JetAnalysis::fillMetHists(const T& mets, const TString& prefix) { - - Int_t metnum=mets.size(); - fillHist(prefix + "num",metnum); - - typedef typename T::const_iterator iter; - for ( iter met=mets.begin(); met!=mets.end(); met++) { - - Double_t mEt=met->et(); - - // Double_t mEt=met->momentum().Pt(); - Double_t sumEt=met->sumEt(); - Double_t mEtPhi=met->phi(); - Double_t mEtX=met->px(); - - // CLHEP::HepLorentzVector momentum = met->Momentum(); - // Double_t mEtx= momentum.px(); - - fillHist(prefix + "etMiss",mEt); - fillHist(prefix + "sumEt",sumEt); - fillHist(prefix + "etMissX",mEtX); - fillHist(prefix + "etMissPhi",mEtPhi); - } -} - - - -void JetAnalysis::dummyAnalyze( - const CaloGeometry& geom) { - - std::cout << "Inside dummyAnalyse routine" << std::endl; - -} -/** Finalization (close files, etc) */ -void JetAnalysis::done() { - std::cout << "Closing up.\n"; - if (m_file!=0) { // if there was a histogram file... - m_file->Write(); // write out the histrograms - delete m_file; // close and delete the file - m_file=0; // set to zero to clean up - } -} -void JetAnalysis::bookCalculateEfficiency(){ - - TString hname; - TString htitle; - - hname="rmin"; - htitle = " Minimum Distance between Calo and Gen Jet"; - m_HistNames[hname] = new TH1F(hname,htitle,100,0.0,10.); - - hname="CalPtoGenPt"; - htitle = " CaloJet Pt/ GenJet Pt"; - m_HistNames[hname] = new TH1F(hname,htitle,100,0.0,5.); - -} - - -void JetAnalysis::CalculateEfficiency(GenJetCollection& genjets, CaloJetCollection& calojets){ - - const float GenJetPtCut=10; - const float GenJetEtaCut=1.0; - const float RCUT=0.25; - - for(GenJetIter i=genjets.begin();i!=genjets.end(); i++) { - Double_t GenJetPt = i->pt(); - Double_t genJetEta = i->eta(); - if(GenJetPt>GenJetPtCut) { - - if(genJetEta<GenJetEtaCut){ - - if(calojets.size()>0){ - float rmin(99); - CalJetIter caljet; - float calpt(0); - for(CalJetIter j=calojets.begin();j!=calojets.end();j++){ - float rr=radius(i,j); - if(rr<rmin){rmin=rr;caljet=j;calpt=j->pt();} - } - fillHist("rmin",rmin); - if(rmin<RCUT){ - - // cout << " radius " << rmin << " GenPt " << GenJetPt << " CalPt " << caljet->pt() <<" rr " << calpt/GenJetPt <<endl; - fillHist("CalPtoGenPt",calpt/GenJetPt); - } - } - } - } - } -} - -void JetAnalysis::bookDiJetBalance(const TString& prefix) { - TString hname; - TString htitle; - - hname=prefix + "DiJetBalance"; - htitle = prefix+" (PtTrigger-PtProbe)/PtAve "; - m_HistNames[hname] = new TH1F(hname,htitle,100,-2.,2.); - -} -template <typename T> void JetAnalysis::DiJetBalance(const T& jets, const TString& prefix) { - - const float TrigEtaCut=1.0; - const float AvePtCut=10; - const float DPhiCut=2.7; - const float PtJet3Cut=8; - - typedef typename T::const_iterator iter; - - if(jets.size()<2) return; - - float PtJet3= (jets.size()>2) ? jets[2].pt() : 0; - - float AvePt=(jets[0].pt()+jets[1].pt())/2.0; - - bool FirstJetIsCentral = (fabs(jets[0].eta())<TrigEtaCut); - bool SecondJetIsCentral = (fabs(jets[1].eta())<TrigEtaCut); - - - int trig(-1); - int probe(-1); - - if( FirstJetIsCentral && SecondJetIsCentral) { - if(jets[0].phi()<jets[1].phi()){ trig=0;probe=1; } // Both central pick trigger randomly, phi is random - else{trig=1;probe=0;} - } - else if(FirstJetIsCentral) {trig=0;probe=1;} - else if(SecondJetIsCentral){trig=1;probe=0;} - else {return;} - - float B= (jets[trig].pt()-jets[probe].pt())/AvePt; - - if(AvePt>AvePtCut){ - if(fabs(dPhi(jets[0].phi(),jets[1].phi()))>DPhiCut){ - if(PtJet3<PtJet3Cut){ - fillHist(prefix+"DiJetBalance",B); - } - } - } -} -void JetAnalysis::bookMCParticles(){ - - TString hname; - TString htitle; - - const int imax=1; - const int jmax=1; - - - for(int i=0;i<imax;i++){ - std::ostringstream oi; oi << i; - - for(int j=0;j<jmax;++j){ - std::ostringstream oj; oj << j; - - istringstream ints(oj.str()); - - int k; - ints>>k; - cout << k << endl; - - hname="VertexZ"+oi.str()+oi.str(); - m_HistNames[hname] = new TH1F(hname,hname,100,-50.,50.); - - hname="VertexX"+oi.str()+oj.str(); - m_HistNames[hname] = new TH1F(hname,hname,200,-5.,5.); - - hname="VertexY"+oi.str()+oj.str(); - m_HistNames[hname] = new TH1F(hname,hname,200,-5.,5.); - - hname="Pt"+oi.str()+oj.str(); - m_HistNames[hname] = new TH1F(hname,hname,500,0.0,500.); - - hname="Pid"+oi.str()+oj.str(); - m_HistNames[hname] = new TH1F(hname,hname,10000,0.0,10000.); - - } - } -} - -void JetAnalysis::fillMCParticles(const HepMC::GenEvent mctruth){ - - - for (HepMC::GenEvent::particle_const_iterator partIter = mctruth.particles_begin(); partIter != mctruth.particles_end(); - ++partIter) { - - int status = (*partIter)->status(); - bool ParticleIsStable = status==1; - - if(ParticleIsStable){ - CLHEP::HepLorentzVector vertex = (*partIter)->CreationVertex(); - CLHEP::HepLorentzVector momentum = (*partIter)->Momentum(); - HepPDT::ParticleID id = (*partIter)->particleID(); // electrons and positrons are 11 and -11 - // cout << "MC particle id " << id.pid() << ", creationVertex " << vertex << " cm, initialMomentum " << momentum << " GeV/c" << endl; - fillHist("Pid00",id.pid()); - fillHist("VertexX00",vertex.x()); - fillHist("VertexY00",vertex.y()); - fillHist("VertexZ00",vertex.z()); - - fillHist("Pt00",momentum.perp()); - } - } -} -void JetAnalysis::fillMCParticlesInsideJet(const HepMC::GenEvent genEvent,const GenJetCollection& genjets){ - - - const float GenJetEtaCut=1.0; - - const float GenJetPtCut[6]={10.,30.,50.,100.,120.,170.}; - const int imax=5; - - - - int njet=0; - for(GenJetIter ijet=genjets.begin();ijet!=genjets.end(); ijet++){ - - njet++; - if(njet>10) return; - - Double_t GenJetPt = ijet->pt(); - Double_t GenJetEta = ijet->eta(); - Double_t GenJetPhi = ijet->phi(); - - for(int ipt=0;ipt<=imax;ipt++){ - if(GenJetPt>GenJetPtCut[ipt] && GenJetPt<GenJetPtCut[ipt+1]){ - std::ostringstream pi; pi << ipt; - - if(fabs(GenJetEta)<GenJetEtaCut){ - - fillHist("GenJetPt"+pi.str(),GenJetPt); - fillHist("GenJetPhi"+pi.str(),GenJetPhi); - fillHist("GenJetEta"+pi.str(),GenJetEta); - - - //float SumPt(0); - - - int NumParticle(0); - - HepLorentzVector P4Jet(0,0,0,0); - - const std::vector<int>& barcodes = ijet->getBarcodes(); - - int nConstituents= barcodes.size(); - for (int i = 0; i <nConstituents ; i++){ - - HepMC::GenParticle* part = genEvent.barcode_to_particle (barcodes [i]); - - NumParticle++; - - - - CLHEP::HepLorentzVector momentum = part->Momentum(); - HepLorentzVector p(momentum.px(),momentum.py(),momentum.pz(),momentum.e()); - P4Jet +=p; - - Double_t Eta = momentum.eta(); - Double_t Phi = momentum.phi(); - Double_t Pt = momentum.perp(); - fillHist("PtOfParticleinJet"+pi.str(),Pt); - - float rr=radius(GenJetEta,GenJetPhi,Eta,Phi); - - fillHist("Radius"+pi.str(),rr); - fillHist("JetShape"+pi.str(),rr,Pt); - fillHist("Ptdensity"+pi.str(),rr,Pt/(2*M_PI*rr)); - } - - fillHist("P4Jet"+pi.str(),P4Jet.perp()); - fillHist("P4JetoGenJetPt"+pi.str(),P4Jet.perp()/GenJetPt); - fillHist("NumParticle"+pi.str(),NumParticle); - - } - } - } - } -} - -void JetAnalysis::bookMCParticles(const TString& prefix ){ - - TString hname; - TString htitle; - - const float k[6]={10.,30.,50.,100.,120.,170.}; - - const int imax=5; - for(int i=0;i<=imax;i++){ - - std::ostringstream pti;pti << i; - std::ostringstream ki;ki << k[i]; - std::ostringstream si;si << k[i+1]; - - - hname="GenJetEta"+pti.str(); - htitle = "GenJetEta"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,600,-6.0,6.); - - hname="GenJetPhi"+pti.str(); - htitle = "GenJetPhi"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,72,-M_PI,M_PI); - - hname="GenJetPt"+pti.str(); - htitle = "GenJet Pt "+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,500,0.0,500.); - - hname="P4JetoGenJetPt"+pti.str(); - htitle = "P4Jet / GenJet Pt"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,100,0.9,1.1); - - - hname="P4Jet"+pti.str(); - htitle = "P4Jet"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,500,0.0,500.); - - hname="NumParticle"+pti.str(); - htitle = "NumParticle "+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,500,0.0,500); - - hname="PtOfParticleinJet"+pti.str(); - htitle = "PtOfParticleinJet"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,500,0.0,100.); - - hname="Radius"+pti.str(); - htitle = "radius "+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,300,0.0,3.); - - hname="JetShape"+pti.str(); - htitle="radius"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,300,0.0,3.); - - - hname="Ptdensity"+pti.str(); - htitle="Ptdensity"+pti.str()+" "+ki.str()+"GeV-"+si.str()+"GeV"; - m_HistNames[hname] = new TH1F(hname,htitle,300,0.0,3.); - } -} - - -void Kperp(CLHEP::Hep2Vector jet1,CLHEP::Hep2Vector jet2,float& kperp,float& kparallel){ - - - float AvePt=(jet1.mag()+jet2.mag())/2.0; - - // unit vector bisecting the angle between two leading jets - - CLHEP::Hep2Vector parallel= (jet1.unit()+jet2.unit()).unit(); - CLHEP::Hep2Vector perp = parallel.orthogonal(); - - float jparallel= jet1.dot(parallel)*jet2.dot(parallel); - float jperp = jet1.dot(perp)*jet2.dot(perp); - - kparallel=jparallel/AvePt; - kperp=jperp/AvePt; - -} - - - - - - - - - diff --git a/RecoJets/JetAnalyzers/src/JetAnalyzer.cc b/RecoJets/JetAnalyzers/src/JetAnalyzer.cc deleted file mode 100644 index ce81ca91bba..00000000000 --- a/RecoJets/JetAnalyzers/src/JetAnalyzer.cc +++ /dev/null @@ -1,156 +0,0 @@ -// File: JetAnalyzer.cc -// Description: Example of Jet Analysis driver originally from Jeremy Mans, -// developed by Lenny Apanesevich and Anwar Bhatti for various purposes. -// Date: 31-August-2006 - -#include "RecoJets/JetAnalyzers/interface/JetAnalyzer.h" - -// Boiler-plate constructor definition of an analyzer module: -// -JetAnalyzer::JetAnalyzer(edm::ParameterSet const& conf) { - - // If your module takes parameters, here is where you would define - // their names and types, and access them to initialize internal - // variables. Example as follows: - // - std::cout << " Beginning JetAnalyzer Analysis " << std::endl; - - recjets_ = conf.getParameter< std::string > ("recjets"); - genjets_ = conf.getParameter< std::string > ("genjets"); - recmet_ = conf.getParameter< std::string > ("recmet"); - genmet_ = conf.getParameter< std::string > ("genmet"); - calotowers_ = conf.getParameter< std::string > ("calotowers"); - - errCnt=0; - - analysis_.setup(conf); - -} - -// Boiler-plate "analyze" method declaration for an analyzer module. -// -void JetAnalyzer::analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) { - - - // To get information from the event setup, you must request the "Record" - // which contains it and then extract the object you need - edm::ESHandle<CaloGeometry> geometry; - iSetup.get<IdealGeometryRecord>().get(geometry); - - // These declarations create handles to the types of records that you want - // to retrieve from event "iEvent". - // - - edm::Handle<CaloJetCollection> recjets; - edm::Handle<GenJetCollection> genjets; - edm::Handle<CaloTowerCollection> caloTowers; - edm::Handle<CaloMETCollection> recmet; - edm::Handle<METCollection> genmet; - edm::Handle<edm::HepMCProduct> mctruthHandle; - - edm::Handle<HBHERecHitCollection> hbhe_hits; - edm::Handle<HBHEDigiCollection> hbhe_digis; - edm::Handle<HORecHitCollection> ho_hits; - edm::Handle<HODigiCollection> ho_digis; - edm::Handle<HFRecHitCollection> hf_hits; - edm::Handle<HFDigiCollection> hf_digis; - edm::Handle<HcalTBTriggerData> trigger; - - // Data objects - iEvent.getByLabel (recjets_,recjets); - iEvent.getByLabel (recmet_,recmet); - iEvent.getByLabel (recmet_,recmet); - iEvent.getByLabel (calotowers_,caloTowers); - - string errMsg(""); - try { - iEvent.getByType(hbhe_hits); - } catch (...) { - errMsg=errMsg + " -- No HBHE hits"; - } - - try { - iEvent.getByType(hbhe_digis); - } catch (...) { - errMsg=errMsg + " -- No HBHE digis"; - } - - try { - iEvent.getByType(ho_hits); - } catch (...) { - errMsg=errMsg + " -- No HO hits"; - } - - try { - iEvent.getByType(ho_digis); - } catch (...) { - errMsg=errMsg + " -- No HO digis"; - } - - try { - iEvent.getByType(hf_hits); - } catch (...) { - errMsg=errMsg + " -- No HF hits"; - } - - try { - iEvent.getByType(hf_digis); - } catch (...) { - errMsg=errMsg + " -- No HF digis"; - } - - // Trigger Information - try { - iEvent.getByType(trigger); - } catch (...) { - errMsg=errMsg + " -- No TB Trigger info"; - } - - - // MC objects - HepMC::GenEvent mctruth; - try { - iEvent.getByLabel("VtxSmeared", "", mctruthHandle); - mctruth = mctruthHandle->getHepMCData(); - - } catch (...) { - errMsg=errMsg + " -- No MC truth"; - } - - try { - iEvent.getByLabel (genjets_,genjets); - } catch (...) { - errMsg=errMsg + " -- No GenJets"; - } - - try { - iEvent.getByLabel (genmet_,genmet); - } catch (...) { - errMsg=errMsg + " -- GenMet"; - } - - if ((errMsg != "") && (errCnt < errMax())){ - errCnt=errCnt+1; - errMsg=errMsg + "."; - std::cout << "%JetAnalyzer-Warning" << errMsg << std::endl; - if (errCnt == errMax()){ - errMsg="%JetAnalyzer-Warning -- Maximum error count reached -- No more messages will be printed."; - std::cout << errMsg << std::endl; - } - } - // "do stuff" - // - analysis_.analyze(*recjets,*genjets, - *recmet,*genmet,*caloTowers,mctruth, - *hbhe_hits,*hbhe_digis,*ho_hits,*ho_digis,*hf_hits,*hf_digis, - *trigger,*geometry); - //analysis_.dummyAnalyze(*geometry); -} - -// "endJob" is an inherited method that you may implement to do post-EOF processing -// and produce final output. -// -void JetAnalyzer::endJob() { - analysis_.done(); -} - diff --git a/RecoJets/JetAnalyzers/src/JetPlotsExample.cc b/RecoJets/JetAnalyzers/src/JetPlotsExample.cc deleted file mode 100644 index dcc9647510a..00000000000 --- a/RecoJets/JetAnalyzers/src/JetPlotsExample.cc +++ /dev/null @@ -1,77 +0,0 @@ -// JetPlotsExample.cc -// Description: Example of simple EDAnalyzer for jets. -// Author: Robert M. Harris -// Date: 28 - August - 2006 -// -#include "RecoJets/JetAnalyzers/interface/JetPlotsExample.h" -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/JetReco/interface/GenJet.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include <TROOT.h> -#include <TSystem.h> -#include <TFile.h> -#include <TCanvas.h> -#include <cmath> -using namespace edm; -using namespace reco; -using namespace std; - -// Get the algorithm of the jet collections we will read from the .cfg file -// which defines the value of the strings CaloJetAlgorithm and GenJetAlgorithm. -JetPlotsExample::JetPlotsExample( const ParameterSet & cfg ) : - CaloJetAlgorithm( cfg.getParameter<string>( "CaloJetAlgorithm" ) ), - GenJetAlgorithm( cfg.getParameter<string>( "GenJetAlgorithm" ) ) - { -} - -void JetPlotsExample::beginJob( const EventSetup & ) { - - // Open the histogram file and book some associated histograms - m_file=new TFile("histo.root","RECREATE"); - h_ptCal = TH1F( "ptCal", "p_{T} of leading CaloJets", 50, 0, 1000 ); - h_etaCal = TH1F( "etaCal", "#eta of leading CaloJets", 50, -3, 3 ); - h_phiCal = TH1F( "phiCal", "#phi of leading CaloJets", 50, -M_PI, M_PI ); - h_ptGen = TH1F( "ptGen", "p_{T} of leading GenJets", 50, 0, 1000 ); - h_etaGen = TH1F( "etaGen", "#eta of leading GenJets", 50, -3, 3 ); - h_phiGen = TH1F( "phiGen", "#phi of leading GenJets", 50, -M_PI, M_PI ); -} - -void JetPlotsExample::analyze( const Event& evt, const EventSetup& es ) { - - //Get the CaloJet collection - Handle<CaloJetCollection> caloJets; - evt.getByLabel( CaloJetAlgorithm, caloJets ); - - //Loop over the two leading CaloJets and fill some histograms - int jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<2; ++ cal ) { - h_ptCal.Fill( cal->pt() ); - h_etaCal.Fill( cal->eta() ); - h_phiCal.Fill( cal->phi() ); - jetInd++; - } - - //Get the GenJet collection - Handle<GenJetCollection> genJets; - evt.getByLabel( GenJetAlgorithm, genJets ); - - //Loop over the two leading GenJets and fill some histograms - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<2; ++ gen ) { - h_ptGen.Fill( gen->pt() ); - h_etaGen.Fill( gen->eta() ); - h_phiGen.Fill( gen->phi() ); - jetInd++; - } - -} - -void JetPlotsExample::endJob() { - - //Write out the histogram file. - m_file->Write(); - -} diff --git a/RecoJets/JetAnalyzers/src/JetToDigiDump.cc b/RecoJets/JetAnalyzers/src/JetToDigiDump.cc deleted file mode 100644 index f366864dad8..00000000000 --- a/RecoJets/JetAnalyzers/src/JetToDigiDump.cc +++ /dev/null @@ -1,260 +0,0 @@ -// JetToDigiDump.cc -// Description: Prints out Jets, consituent CaloTowers, constituent RecHits and associated Digis (the digis for HCAL only). -// The user can specify which level in the config file: -// DumpLevel="Jets": Printout of jets and their kinematic quantities. -// DumpLevel="Towers": Nested Printout of jets and their constituent CaloTowers -// DumpLevel="RecHits": Nested Printout of jets, constituent CaloTowers and constituent RecHits -// DumpLevel="Digis": Nested Printout of jets, constituent CaloTowers, RecHits and all the HCAL digis -// associated with the RecHit channel (no links exist to go back to actual digis used). -// Does simple sanity checks on energy sums at each level: jets=sum of towers, tower=sum of RecHits. -// Does quick and dirty estimate of the fC/GeV factor that was applied to make the RecHit from the Digis. -// -// Author: Robert M. Harris -// Date: 19 - October - 2006 -// -#include "RecoJets/JetAnalyzers/interface/JetToDigiDump.h" -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" -#include "DataFormats/DetId/interface/DetId.h" -#include "DataFormats/HcalDetId/interface/HcalDetId.h" -#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h" -#include "DataFormats/HcalRecHit/interface/HBHERecHit.h" -#include "DataFormats/EcalDetId/interface/EBDetId.h" -#include "DataFormats/EcalDetId/interface/EEDetId.h" -#include "DataFormats/EcalRecHit/interface/EcalRecHitCollections.h" -#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include <TROOT.h> -#include <TSystem.h> -#include <TFile.h> -#include <TCanvas.h> -#include <cmath> -using namespace edm; -using namespace reco; -using namespace std; - -JetToDigiDump::JetToDigiDump( const ParameterSet & cfg ) : - DumpLevel( cfg.getParameter<string>( "DumpLevel" ) ), - CaloJetAlg( cfg.getParameter<string>( "CaloJetAlg" ) ) - { -} - -void JetToDigiDump::beginJob( const EventSetup & ) { - if(DumpLevel=="Jets") - { - cout << "Dump of Jets" << endl; - Dump=1; - } - else if(DumpLevel=="Towers") - { - cout << "Dump of Jets and constituent CaloTowers" << endl; - Dump=2; - } - else if(DumpLevel=="RecHits") - { - cout << "Dump of Jets, constituent CaloTowers, and constituent RecHits" << endl; - Dump=3; - } - else if(DumpLevel=="Digis") - { - cout << "Dump of Jets, constituent CaloTowers, constituent RecHits and associated Digis" << endl; - Dump=4; - } - cout << "Jet Algorithm being dumped is " << CaloJetAlg << endl; - //Initialize some stuff - evtCount = 0; -} - -void JetToDigiDump::analyze( const Event& evt, const EventSetup& es ) { - - int jetInd; - Handle<CaloJetCollection> caloJets; - Handle<CaloTowerCollection> caloTowers; - Handle<HBHERecHitCollection> HBHERecHits; - Handle<HORecHitCollection> HORecHits; - Handle<HFRecHitCollection> HFRecHits; - Handle<EBRecHitCollection> EBRecHits; - Handle<EERecHitCollection> EERecHits; - Handle<HBHEDigiCollection> HBHEDigis; - Handle<HODigiCollection> HODigis; - Handle<HFDigiCollection> HFDigis; - - //Find the CaloTowers in leading CaloJets - evt.getByLabel( CaloJetAlg, caloJets ); - evt.getByLabel( "towerMaker", caloTowers ); - evt.getByLabel( "hbhereco", HBHERecHits ); - evt.getByLabel( "horeco", HORecHits ); - evt.getByLabel( "hfreco", HFRecHits ); - evt.getByLabel( "ecalRecHit", "EcalRecHitsEB", EBRecHits ); - evt.getByLabel( "ecalRecHit", "EcalRecHitsEE", EERecHits ); - evt.getByLabel( "hcalDigis", HBHEDigis ); - evt.getByLabel( "hcalDigis", HODigis ); - evt.getByLabel( "hcalDigis", HFDigis ); - - cout << endl << "Evt: "<<evtCount <<", Num Jets=" <<caloJets->end() - caloJets->begin() << endl; - if(Dump>=1)cout <<" *********************************************************" <<endl; - jetInd = 0; - if(Dump>=1)for( CaloJetCollection::const_iterator jet = caloJets->begin(); jet != caloJets->end(); ++ jet ) { - const std::vector<CaloTowerDetId>& detIDs=jet->getTowerIndices(); - int nConstituents= detIDs.size(); - cout <<" Jet: "<<jetInd<<", eta="<<jet->eta()<<", phi="<<jet->phi()<<", pt="<<jet->pt()<<\ - ",E="<<jet->energy()<<", EB E="<<jet->emEnergyInEB()<<" ,HB E="<<jet->hadEnergyInHB()<<\ - ", HO E="<<jet->hadEnergyInHO()<<" ,EE E="<< jet->emEnergyInEE()\ - <<", HE E="<<jet->hadEnergyInHE()<<", HF E="<<jet->hadEnergyInHF()+jet->emEnergyInHF()<<", Num Towers="<<nConstituents<<endl; - if(Dump>=2)cout <<" ====================================================="<<endl; - float sumTowerE = 0.0; - if(Dump>=2)for (int i = 0; i <nConstituents ; i++) { - CaloTowerCollection::const_iterator theTower=caloTowers->find(detIDs[i]); //Find the tower from its CaloTowerDetID - int ietaTower = detIDs[i].ieta(); - int iphiTower = detIDs[i].iphi(); - sumTowerE += theTower->energy(); - size_t numRecHits = theTower->constituentsSize(); - cout << " Tower " << i <<": ieta=" << ietaTower << ", eta=" << theTower->eta() <<", iphi=" << iphiTower << ", phi=" << theTower->phi() << \ - ", energy=" << theTower->energy() << ", EM=" << theTower->emEnergy()<< ", HAD=" << theTower->hadEnergy()\ - << ", HO=" << theTower->outerEnergy() <<", Num Rec Hits =" << numRecHits << endl; - if(Dump>=3)cout << " ------------------------------------------------"<<endl; - float sumRecHitE = 0.0; - if(Dump>=3)for(size_t j = 0; j <numRecHits ; j++) { - DetId RecHitDetID=theTower->constituent(j); - DetId::Detector DetNum=RecHitDetID.det(); - if( DetNum == DetId::Hcal ){ - //cout << "RecHit " << j << ": Detector = " << DetNum << ": Hcal " << endl; - HcalDetId HcalID = RecHitDetID; - HcalSubdetector HcalNum = HcalID.subdet(); - if( HcalNum == HcalBarrel ){ - HBHERecHitCollection::const_iterator theRecHit=HBHERecHits->find(HcalID); - sumRecHitE += theRecHit->energy(); - HBHEDigiCollection::const_iterator theDigis=HBHEDigis->find(HcalID); - cout << " RecHit: " << j << ": HB, ieta=" << HcalID.ieta() << ", iphi=" << HcalID.iphi()<< - ", depth=" << HcalID.depth() << ", energy=" << theRecHit->energy() << ", time=" <<\ - theRecHit->time() <<", All Digis=" << theDigis->size() << ", presamples =" <<\ - theDigis->presamples() <<endl; - /* const HcalElectronicsId HW_ID = theDigis->elecId(); - cout << "Digi: Index=" << HW_ID.linearIndex() << ", raw ID=" << HW_ID.rawId() << ", fiberChan=" << HW_ID.fiberChanId() << ", fiberInd=" << HW_ID.fiberIndex() \ - << ", HTR chan=" << HW_ID.htrChanId() << ", HTR Slot=" << HW_ID.htrSlot() << ", HDR top/bot=" << HW_ID.htrTopBottom() \ - << ", VME crate=" << HW_ID.readoutVMECrateId() << ", DCC=" << HW_ID.dccid() << ", DCC spigot=" << HW_ID.spigot() << endl; - */ - float SumDigiCharge = 0.0; - float EstimatedPedestal=0.0; - int SamplesToAdd = 4; - if(Dump>=4)cout << " ......................................"<<endl; - if(Dump>=4)for(int k=0; k<theDigis->size(); k++){ - const HcalQIESample QIE = theDigis->sample(k); - if(k>=theDigis->presamples()&&k<theDigis->presamples()+SamplesToAdd)SumDigiCharge+=QIE.nominal_fC(); - if(k<theDigis->presamples()-1)EstimatedPedestal+=QIE.nominal_fC()*SamplesToAdd/(theDigis->presamples()-1); - cout << " Digi: " << k << ", cap ID = " << QIE.capid() << ": ADC Counts = " << QIE.adc() << ", nominal fC = " << QIE.nominal_fC() <<endl; - } - if(Dump>=4)cout << " 4 Digi fC ="<<SumDigiCharge<<", est. ped. fC="<<EstimatedPedestal<<", est. GeV/fc="<<theRecHit->energy()/(SumDigiCharge-EstimatedPedestal) << endl; - if(Dump>=4)cout << " ......................................"<<endl; - } - else if( HcalNum == HcalEndcap ){ - HBHERecHitCollection::const_iterator theRecHit=HBHERecHits->find(HcalID); - if( (abs(HcalID.ieta())==28||abs(HcalID.ieta())==29)&&HcalID.depth()==3){ - sumRecHitE += theRecHit->energy()/2; //Depth 3 split over tower 28 & 29 - } - else{ - sumRecHitE += theRecHit->energy(); - } - HBHEDigiCollection::const_iterator theDigis=HBHEDigis->find(HcalID); - cout << " RecHit: " << j << ": HE, ieta=" << HcalID.ieta() << ", iphi=" << HcalID.iphi()<< - ", depth=" << HcalID.depth() << ", energy=" << theRecHit->energy() << ", time=" <<\ - theRecHit->time() <<", All Digis=" << theDigis->size() << ", presamples =" <<\ - theDigis->presamples() <<endl; - float SumDigiCharge = 0.0; - float EstimatedPedestal=0.0; - int SamplesToAdd = 4; - if(Dump>=4)cout << " ......................................"<<endl; - if(Dump>=4)for(int k=0; k<theDigis->size(); k++){ - const HcalQIESample QIE = theDigis->sample(k); - if(k>=theDigis->presamples()&&k<theDigis->presamples()+SamplesToAdd)SumDigiCharge+=QIE.nominal_fC(); - if(k<theDigis->presamples()-1)EstimatedPedestal+=QIE.nominal_fC()*SamplesToAdd/(theDigis->presamples()-1); - cout << " Digi: " << k << ", cap ID = " << QIE.capid() << ": ADC Counts = " << QIE.adc() << ", nominal fC = " << QIE.nominal_fC() <<endl; - } - if(Dump>=4)cout << " 4 Digi fC ="<<SumDigiCharge<<", est. ped. fC="<<EstimatedPedestal<<", est. GeV/fc="<<theRecHit->energy()/(SumDigiCharge-EstimatedPedestal) << endl; - if(Dump>=4)cout << " ......................................"<<endl; - } - else if( HcalNum == HcalOuter ){ - HORecHitCollection::const_iterator theRecHit=HORecHits->find(HcalID); - sumRecHitE += theRecHit->energy(); - HODigiCollection::const_iterator theDigis=HODigis->find(HcalID); - cout << " RecHit: " << j << ": HO, ieta=" << HcalID.ieta() << ", iphi=" << HcalID.iphi()<< - ", depth=" << HcalID.depth() << ", energy=" << theRecHit->energy() << ", time=" <<\ - theRecHit->time() <<", All Digis=" << theDigis->size() << ", presamples =" <<\ - theDigis->presamples() <<endl; - float SumDigiCharge = 0.0; - float EstimatedPedestal=0.0; - int SamplesToAdd = 4; - if(Dump>=4)cout << " ......................................"<<endl; - if(Dump>=4)for(int k=0; k<theDigis->size(); k++){ - const HcalQIESample QIE = theDigis->sample(k); - if(k>=theDigis->presamples()&&k<theDigis->presamples()+SamplesToAdd)SumDigiCharge+=QIE.nominal_fC(); - if(k<theDigis->presamples()-1)EstimatedPedestal+=QIE.nominal_fC()*SamplesToAdd/(theDigis->presamples()-1); - cout << " Digi: " << k << ", cap ID = " << QIE.capid() << ": ADC Counts = " << QIE.adc() << ", nominal fC = " << QIE.nominal_fC() <<endl; - } - if(Dump>=4)cout << " 4 Digi fC ="<<SumDigiCharge<<", est. ped. fC="<<EstimatedPedestal<<", est. GeV/fc="<<theRecHit->energy()/(SumDigiCharge-EstimatedPedestal) << endl; - if(Dump>=4)cout << " ......................................"<<endl; - } - else if( HcalNum == HcalForward ){ - HFRecHitCollection::const_iterator theRecHit=HFRecHits->find(HcalID); - sumRecHitE += theRecHit->energy(); - HFDigiCollection::const_iterator theDigis=HFDigis->find(HcalID); - cout << " RecHit: " << j << ": HF, ieta=" << HcalID.ieta() << ", iphi=" << HcalID.iphi()<< - ", depth=" << HcalID.depth() << ", energy=" << theRecHit->energy() << ", time=" <<\ - theRecHit->time() <<", All Digis=" << theDigis->size() << ", presamples =" <<\ - theDigis->presamples() <<endl; - float SumDigiCharge = 0.0; - float EstimatedPedestal=0.0; - int SamplesToAdd = 1; - if(Dump>=4)cout << " ......................................"<<endl; - if(Dump>=4)for(int k=0; k<theDigis->size(); k++){ - const HcalQIESample QIE = theDigis->sample(k); - if(k>=theDigis->presamples()&&k<theDigis->presamples()+SamplesToAdd)SumDigiCharge+=QIE.nominal_fC(); - if(k<theDigis->presamples()-1)EstimatedPedestal+=QIE.nominal_fC()*SamplesToAdd/(theDigis->presamples()-1); - cout << " Digi: " << k << ", cap ID = " << QIE.capid() << ": ADC Counts = " << QIE.adc() << ", nominal fC = " << QIE.nominal_fC() <<endl; - } - if(Dump>=4)cout << " 1 Digi fC ="<<SumDigiCharge<<", est. ped. fC="<<EstimatedPedestal<<", est. GeV/fc="<<theRecHit->energy()/(SumDigiCharge-EstimatedPedestal) << endl; - if(Dump>=4)cout << " ......................................"<<endl; - } - } - if( DetNum == DetId::Ecal ){ - int EcalNum = RecHitDetID.subdetId(); - if( EcalNum == 1 ){ - EBDetId EcalID = RecHitDetID; - EBRecHitCollection::const_iterator theRecHit=EBRecHits->find(EcalID); - sumRecHitE += theRecHit->energy(); - cout << " RecHit " << j << ": EB, ieta=" << EcalID.ieta() << ", iphi=" << EcalID.iphi() << ", SM=" << EcalID.ism() << ", energy=" << theRecHit->energy() << endl; - } - else if( EcalNum == 2 ){ - EEDetId EcalID = RecHitDetID; - EERecHitCollection::const_iterator theRecHit=EERecHits->find(EcalID); - sumRecHitE += theRecHit->energy(); - cout << " RecHit " << j << ": EE, ix=" << EcalID.ix() << ", iy=" << EcalID.iy() << ", energy=" << theRecHit->energy() << endl; - } - } - } - if(Dump>=3){ - if( abs(ietaTower)==28||abs(ietaTower)==29){ - cout << " Splitted Sum of RecHit Energies=" << sumRecHitE <<", CaloTower energy=" << theTower->energy() << endl; - } - else{ - cout << " Sum of RecHit Energies=" << sumRecHitE <<", CaloTower energy=" << theTower->energy() << endl; - } - } - if(Dump>=3)cout << " ------------------------------------------------"<<endl; - } - if(Dump>=2)cout << " Sum of tower energies=" << sumTowerE << ", CaloJet energy=" << jet->energy() << endl; - jetInd++; - if(Dump>=2)cout <<" ====================================================="<<endl; - } - evtCount++; - if(Dump>=1)cout <<" *********************************************************" <<endl; - -} - -void JetToDigiDump::endJob() { - - -} diff --git a/RecoJets/JetAnalyzers/src/JetValidation.cc b/RecoJets/JetAnalyzers/src/JetValidation.cc deleted file mode 100644 index e4975133027..00000000000 --- a/RecoJets/JetAnalyzers/src/JetValidation.cc +++ /dev/null @@ -1,408 +0,0 @@ -// JetValidation.cc -// Description: Some Basic validation plots for jets. -// Author: Robert M. Harris -// Date: 30 - August - 2006 -// -#include "RecoJets/JetAnalyzers/interface/JetValidation.h" -#include "RecoJets/JetAlgorithms/interface/JetAlgoHelper.h" -#include "DataFormats/JetReco/interface/CaloJetCollection.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/JetReco/interface/GenJet.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include <TROOT.h> -#include <TSystem.h> -#include <TFile.h> -#include <TCanvas.h> -#include <cmath> -using namespace edm; -using namespace reco; -using namespace std; - -// Get the algorithm of the jet collections we will read from the .cfg file -// which defines the value of the strings CaloJetAlgorithm and GenJetAlgorithm. -JetValidation::JetValidation( const ParameterSet & cfg ) : - PtHistMax( cfg.getParameter<double>( "PtHistMax" ) ), - diagPrintNum( cfg.getParameter<int>( "diagPrintNum" ) ), - GenType( cfg.getParameter<string>( "GenType" ) ) - { -} - -void JetValidation::beginJob( const EventSetup & ) { - cout << "JetValidation: Maximum bin edge for Pt Hists = " << PtHistMax << endl; - if(GenType=="chargedPion"){ - numJets=1; - cout << "charged pion analysis mode" << endl; - } - else - { - numJets=2; - } - - //Initialize some stuff - evtCount = 0; - - // Open the histogram file and book some associated histograms - m_file=new TFile("JetValidationHistos.root","RECREATE"); - - //Simple histos - - //MC5 cal - ptMC5cal = TH1F("ptMC5cal","p_{T} of leading CaloJets (MC5)",50,0.0,PtHistMax); - etaMC5cal = TH1F("etaMC5cal","#eta of leading CaloJets (MC5)",100,-5.0,5.0); - phiMC5cal = TH1F("phiMC5cal","#phi of leading CaloJets (MC5)",72,-M_PI, M_PI); - m2jMC5cal = TH1F("m2jMC5cal","Dijet Mass of leading CaloJets (MC5)",100,0.0,2*PtHistMax); - - //MC5 gen - ptMC5gen = TH1F("ptMC5gen","p_{T} of leading GenJets (MC5)",50,0.0,PtHistMax); - etaMC5gen = TH1F("etaMC5gen","#eta of leading GenJets (MC5)",100,-5.0,5.0); - phiMC5gen = TH1F("phiMC5gen","#phi of leading GenJets (MC5)",72,-M_PI, M_PI); - m2jMC5gen = TH1F("m2jMC5gen","Dijet Mass of leading GenJets (MC5)",100,0.0,2*PtHistMax); - - //IC5 cal - ptIC5cal = TH1F("ptIC5cal","p_{T} of leading CaloJets (IC5)",50,0.0,PtHistMax); - etaIC5cal = TH1F("etaIC5cal","#eta of leading CaloJets (IC5)",100,-5.0,5.0); - phiIC5cal = TH1F("phiIC5cal","#phi of leading CaloJets (IC5)",72,-M_PI, M_PI); - m2jIC5cal = TH1F("m2jIC5cal","Dijet Mass of leading CaloJets (IC5)",100,0.0,2*PtHistMax); - - //IC5 gen - ptIC5gen = TH1F("ptIC5gen","p_{T} of leading GenJets (IC5)",50,0.0,PtHistMax); - etaIC5gen = TH1F("etaIC5gen","#eta of leading GenJets (IC5)",100,-5.0,5.0); - phiIC5gen = TH1F("phiIC5gen","#phi of leading GenJets (IC5)",72,-M_PI, M_PI); - m2jIC5gen = TH1F("m2jIC5gen","Dijet Mass of leading GenJets (IC5)",100,0.0,2*PtHistMax); - - //KT10 cal - ptKT10cal = TH1F("ptKT10cal","p_{T} of leading CaloJets (KT10)",50,0.0,PtHistMax); - etaKT10cal = TH1F("etaKT10cal","#eta of leading CaloJets (KT10)",100,-5.0,5.0); - phiKT10cal = TH1F("phiKT10cal","#phi of leading CaloJets (KT10)",72,-M_PI, M_PI); - m2jKT10cal = TH1F("m2jKT10cal","Dijet Mass of leading CaloJets (KT10)",100,0.0,2*PtHistMax); - - //KT10 gen - ptKT10gen = TH1F("ptKT10gen","p_{T} of leading GenJets (KT10)",50,0.0,PtHistMax); - etaKT10gen = TH1F("etaKT10gen","#eta of leading GenJets (KT10)",100,-5.0,5.0); - phiKT10gen = TH1F("phiKT10gen","#phi of leading GenJets (KT10)",72,-M_PI, M_PI); - m2jKT10gen = TH1F("m2jKT10gen","Dijet Mass of leading GenJets (KT10)",100,0.0,2*PtHistMax); - - //Calorimeter Sub-System Analysis Histograms for IC5 CaloJets only - emEnergyFraction = TH1F("emEnergyFraction","Leading Jets EM Fraction",100,0.0,1.00001); - emEnergyInEB = TH1F("emEnergyInEB","Leading Jets emEnergyInEB",100,0.0,2*PtHistMax); - emEnergyInEE = TH1F("emEnergyInEE","Leading Jets emEnergyInEE",100,0.0,2*PtHistMax); - emEnergyInHF = TH1F("emEnergyInHF","Leading Jets emEnergyInHF",100,0.0,2*PtHistMax); - hadEnergyInHB = TH1F("hadEnergyInHB","Leading Jets hadEnergyInHB",100,0.0,2*PtHistMax); - hadEnergyInHE = TH1F("hadEnergyInHE","Leading Jets hadEnergyInHE",100,0.0,2*PtHistMax); - hadEnergyInHF = TH1F("hadEnergyInHF","Leading Jets hadEnergyInHF",100,0.0,2*PtHistMax); - hadEnergyInHO = TH1F("hadEnergyInHO","Leading Jets hadEnergyInHO",100,0.0,0.5*PtHistMax); - - EBfractionVsEta = TProfile("EBfractionVsEta","Leading Jets EBfraction vs #eta",50,0.0,5.0); - EEfractionVsEta = TProfile("EEfractionVsEta","Leading Jets EEfraction vs #eta",50,0.0,5.0); - HBfractionVsEta = TProfile("HBfractionVsEta","Leading Jets HBfraction vs #eta",50,0.0,5.0); - HOfractionVsEta = TProfile("HOfractionVsEta","Leading Jets HOfraction vs #eta",50,0.0,5.0); - HEfractionVsEta = TProfile("HEfractionVsEta","Leading Jets HEfraction vs #eta",50,0.0,5.0); - HFfractionVsEta = TProfile("HFfractionVsEta","Leading Jets HFfraction vs #eta",50,0.0,5.0); - - CaloEnergyVsEta = TProfile("CaloEnergyVsEta","Leading CaloJets Energy Vs. Eta",50,0.0,5.0); - GenEnergyVsEta = TProfile("GenEnergyVsEta","Leading GenJets Energy Vs. Eta",50,0.0,5.0); - emEnergyVsEta = TProfile("emEnergyVsEta","Leading Jets EM Energy Vs. Eta",50,0.0,5.0); - hadEnergyVsEta = TProfile("hadEnergyVsEta","Leading Jets HAD Energy Vs. Eta",50,0.0,5.0); - - CaloErespVsEta = TProfile("CaloErespVsEta","Leading Jets Energy Response Vs. Eta",50,0.0,5.0); - emErespVsEta = TProfile("emErespVsEta","Leading Jets EM Energy Response Vs. Eta",50,0.0,5.0); - hadErespVsEta = TProfile("hadErespVsEta","Leading Jets HAD Enegy Response Vs. Eta",50,0.0,5.0); - - - WindowEBfractionVsEta = TProfile("WindowEBfractionVsEta","Jets EBfraction vs #eta (E Window)",50,0.0,5.0); - WindowEEfractionVsEta = TProfile("WindowEEfractionVsEta","Jets EEfraction vs #eta (E Window)",50,0.0,5.0); - WindowHBfractionVsEta = TProfile("WindowHBfractionVsEta","Jets HBfraction vs #eta (E Window)",50,0.0,5.0); - WindowHOfractionVsEta = TProfile("WindowHOfractionVsEta","Jets HOfraction vs #eta (E Window)",50,0.0,5.0); - WindowHEfractionVsEta = TProfile("WindowHEfractionVsEta","Jets HEfraction vs #eta (E Window)",50,0.0,5.0); - WindowHFfractionVsEta = TProfile("WindowHFfractionVsEta","Jets HFfraction vs #eta (E Window)",50,0.0,5.0); - - - WindowCaloEnergyVsEta = TProfile("WindowCaloEnergyVsEta","CaloJets Energy Vs. Eta (E Window)",50,0.0,5.0); - WindowGenEnergyVsEta = TProfile("WindowGenEnergyVsEta","GenJets Energy Vs. Eta (E Window)",50,0.0,5.0); - WindowEmEnergyVsEta = TProfile("WindowEmEnergyVsEta","Jets EM Energy Vs. Eta (E Window)",50,0.0,5.0); - WindowHadEnergyVsEta = TProfile("WindowHadEnergyVsEta","Jets HAD Energy Vs. Eta (E Window)",50,0.0,5.0); - - WindowCaloErespVsEta = TProfile("WindowCaloErespVsEta","Jets Energy Response Vs. Eta (E Window)",50,0.0,5.0); - WindowEmErespVsEta = TProfile("WindowEmErespVsEta","Jets EM Energy Response Vs. Eta (E Window)",50,0.0,5.0); - WindowHadErespVsEta = TProfile("WindowHadErespVsEta","Jets HAD Enegy Response Vs. Eta (E Window)",50,0.0,5.0); - - WindowMaxTowErespVsEta = TProfile("WindowMaxTowErespVsEta","Max EM + HAD Tower Response Vs. Jet Eta (E Window)",50,0.0,5.0); - WindowMaxEmErespVsEta = TProfile("WindowMaxEmErespVsEta","Max EM Tower Response Vs. Jet Eta (E Window)",50,0.0,5.0); - WindowMaxHadErespVsEta = TProfile("WindowMaxHadErespVsEta","Max Had Tower Response Vs. Jet Eta (E Window)",50,0.0,5.0); - - GenEnergyVsEta2D = TH2F("GenEnergyVsEta2D","Leading GenJets Energy Vs. Eta",50,0.0,5.0,100,0.0,5*PtHistMax); - AllGenEnergyVsEta2D = TH2F("AllGenEnergyVsEta2D","All GenJets Energy Vs. Eta",50,0.0,5.0,100,0.0,5*PtHistMax); - - - //Matched jets Analysis Histograms for MC5 CaloJets only - dR = TH1F("dR","Leading GenJets dR with matched CaloJet",100,0,0.5); - respVsPt = TProfile("respVsPt","CaloJet Response of Leading GenJets in Barrel",100,0.0,PtHistMax/2); - dRcor = TH1F("dRcor","CorJets dR with matched CaloJet",100,0.0,0.01); - corRespVsPt = TProfile("corRespVsPt","Corrected CaloJet Response of Leading GenJets in Barrel",100,0.0,PtHistMax/2); -} - -void JetValidation::analyze( const Event& evt, const EventSetup& es ) { - - evtCount++; - math::XYZTLorentzVector p4jet[2], p4gen[2], p4cal[2], p4cor[2]; - int jetInd; - Handle<CaloJetCollection> caloJets; - Handle<GenJetCollection> genJets; - - //Fill Simple Histos - - //MC5 cal - evt.getByLabel( "midPointCone5CaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<numJets; ++ cal ) { - ptMC5cal.Fill( cal->pt() ); - etaMC5cal.Fill( cal->eta() ); - phiMC5cal.Fill( cal->phi() ); - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2)m2jMC5cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //MC5 gen - evt.getByLabel( "midPointCone5GenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { - ptMC5gen.Fill( gen->pt() ); - etaMC5gen.Fill( gen->eta() ); - phiMC5gen.Fill( gen->phi() ); - p4jet[jetInd] = gen->p4(); - jetInd++; - } - if(jetInd==2)m2jMC5gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //IC5 cal - evt.getByLabel( "iterativeCone5CaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<numJets; ++ cal ) { - ptIC5cal.Fill( cal->pt() ); - etaIC5cal.Fill( cal->eta() ); - phiIC5cal.Fill( cal->phi() ); - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2)m2jIC5cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //IC5 gen - evt.getByLabel( "iterativeCone5GenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { - ptIC5gen.Fill( gen->pt() ); - etaIC5gen.Fill( gen->eta() ); - phiIC5gen.Fill( gen->phi() ); - p4jet[jetInd] = gen->p4(); - - GenEnergyVsEta.Fill(fabs(gen->eta()),gen->energy()); - GenEnergyVsEta2D.Fill(fabs(gen->eta()),gen->energy()); - - jetInd++; - } - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end(); ++ gen ) { - AllGenEnergyVsEta2D.Fill(fabs(gen->eta()),gen->energy()); - if(gen->energy()<0.5*PtHistMax && gen->energy()>0.3*PtHistMax){ - WindowGenEnergyVsEta.Fill(fabs(gen->eta()),gen->energy()); - } - - } - - if(jetInd==2)m2jIC5gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //KT10 cal - evt.getByLabel( "ktCaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<numJets; ++ cal ) { - ptKT10cal.Fill( cal->pt() ); - etaKT10cal.Fill( cal->eta() ); - phiKT10cal.Fill( cal->phi() ); - p4jet[jetInd] = cal->p4(); - jetInd++; - } - if(jetInd==2)m2jKT10cal.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //KT10 gen - evt.getByLabel( "ktGenJets", genJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { - ptKT10gen.Fill( gen->pt() ); - etaKT10gen.Fill( gen->eta() ); - phiKT10gen.Fill( gen->phi() ); - p4jet[jetInd] = gen->p4(); - jetInd++; - } - if(jetInd==2)m2jKT10gen.Fill( (p4jet[0]+p4jet[1]).mass() ); - - //Calorimeter Sub-System Analysis Histograms for IC5 CaloJets only - evt.getByLabel( "iterativeCone5CaloJets", caloJets ); - jetInd = 0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end() && jetInd<numJets; ++ cal ) { - emEnergyFraction.Fill(cal->emEnergyFraction()); - emEnergyInEB.Fill(cal->emEnergyInEB()); - emEnergyInEE.Fill(cal->emEnergyInEE()); - emEnergyInHF.Fill(cal->emEnergyInHF()); - hadEnergyInHB.Fill(cal->hadEnergyInHB()); - hadEnergyInHE.Fill(cal->hadEnergyInHE()); - hadEnergyInHF.Fill(cal->hadEnergyInHF()); - hadEnergyInHO.Fill(cal->hadEnergyInHO()); - - EBfractionVsEta.Fill(fabs(cal->eta()),cal->emEnergyInEB()/cal->energy()); - EEfractionVsEta.Fill(fabs(cal->eta()),cal->emEnergyInEE()/cal->energy()); - HBfractionVsEta.Fill(fabs(cal->eta()),cal->hadEnergyInHB()/cal->energy()); - HOfractionVsEta.Fill(fabs(cal->eta()),cal->hadEnergyInHO()/cal->energy()); - HEfractionVsEta.Fill(fabs(cal->eta()),cal->hadEnergyInHE()/cal->energy()); - HFfractionVsEta.Fill(fabs(cal->eta()), (cal->hadEnergyInHF()+cal->emEnergyInHF())/cal->energy()); - - CaloEnergyVsEta.Fill(fabs(cal->eta()),cal->energy()); - emEnergyVsEta.Fill(fabs(cal->eta()),cal->emEnergyInEB()+cal->emEnergyInEE()+cal->emEnergyInHF()); - hadEnergyVsEta.Fill(fabs(cal->eta()),cal->hadEnergyInHB()+cal->hadEnergyInHO()+cal->hadEnergyInHE()+cal->hadEnergyInHF()); - - jetInd++; - } - - //Matching for IC5 Jets for window energy fraction study - evt.getByLabel( "iterativeCone5GenJets", genJets ); - evt.getByLabel( "iterativeCone5CaloJets", caloJets ); - double dRminSave; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end(); ++ gen ) { //all genJets - CaloJet MatchedJet; - dRminSave=1000.0; - if( gen->energy()<0.5*PtHistMax && gen->energy()>0.3*PtHistMax){ - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) { //all CaloJets - double delR = deltaR( cal->eta(), cal->phi(), gen->eta(), gen->phi() ); - if(delR<dRminSave){ - dRminSave=delR; //delta R of match - MatchedJet = *cal; //Matched Jet - } - } - if(dRminSave>0.5)cout << "Window Match Warning: dR=" << dRminSave << ", Gen eta=" << gen->eta() << ", Cal eta=" << MatchedJet.eta() << endl; - else{ - WindowEBfractionVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.emEnergyInEB()/MatchedJet.energy()); - WindowEEfractionVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.emEnergyInEE()/MatchedJet.energy()); - WindowHBfractionVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.hadEnergyInHB()/MatchedJet.energy()); - WindowHOfractionVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.hadEnergyInHO()/MatchedJet.energy()); - WindowHEfractionVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.hadEnergyInHE()/MatchedJet.energy()); - WindowHFfractionVsEta.Fill(fabs(MatchedJet.eta()), (MatchedJet.hadEnergyInHF()+MatchedJet.emEnergyInHF())/MatchedJet.energy()); - WindowCaloEnergyVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.energy()); - WindowEmEnergyVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.emEnergyInEB()+MatchedJet.emEnergyInEE()+MatchedJet.emEnergyInHF()); - WindowHadEnergyVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.hadEnergyInHB()+MatchedJet.hadEnergyInHO()+MatchedJet.hadEnergyInHE()+MatchedJet.hadEnergyInHF()); - WindowCaloErespVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.energy()/gen->energy()); - WindowEmErespVsEta.Fill(fabs(MatchedJet.eta()),(MatchedJet.emEnergyInEB()+MatchedJet.emEnergyInEE()+MatchedJet.emEnergyInHF())/gen->energy()); - WindowHadErespVsEta.Fill(fabs(MatchedJet.eta()),(MatchedJet.hadEnergyInHB()+MatchedJet.hadEnergyInHO()+MatchedJet.hadEnergyInHE()+MatchedJet.hadEnergyInHF())/gen->energy()); - WindowMaxTowErespVsEta.Fill(fabs(MatchedJet.eta()),(MatchedJet.maxEInEmTowers()+MatchedJet.maxEInHadTowers())/gen->energy()); - WindowMaxEmErespVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.maxEInEmTowers()/gen->energy()); - WindowMaxHadErespVsEta.Fill(fabs(MatchedJet.eta()),MatchedJet.maxEInHadTowers()/gen->energy()); - } - } - - } - - //Matching for IC5 Jets for leading jets energy fraction - evt.getByLabel( "iterativeCone5GenJets", genJets ); - evt.getByLabel( "iterativeCone5CaloJets", caloJets ); - jetInd = 0; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { //leading genJets - CaloJet MatchedJet; - dRminSave=1000.0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) { //all CaloJets - double delR = deltaR( cal->eta(), cal->phi(), gen->eta(), gen->phi() ); - if(delR<dRminSave){ - dRminSave=delR; //delta R of match - MatchedJet = *cal; //Matched Jet - } - } - if(dRminSave>0.5)cout << "Leading Match Warning: dR=" << dRminSave << ", Gen eta=" << gen->eta() << ", Cal eta=" << MatchedJet.eta() << endl; - else{ - float abs_eta; - if(GenType=="chargedPion"){abs_eta=fabs(gen->eta());} else {abs_eta=fabs(MatchedJet.eta());} - CaloErespVsEta.Fill(abs_eta, MatchedJet.energy()/gen->energy()); - emErespVsEta.Fill(abs_eta,(MatchedJet.emEnergyInEB()+MatchedJet.emEnergyInEE()+MatchedJet.emEnergyInHF())/gen->energy()); - hadErespVsEta.Fill(abs_eta,(MatchedJet.hadEnergyInHB()+MatchedJet.hadEnergyInHO()+MatchedJet.hadEnergyInHE()+MatchedJet.hadEnergyInHF())/gen->energy()); - } - jetInd++; - } - - - //Matching for MC5 Jets: leading genjets matched to any CaloJet - evt.getByLabel( "midPointCone5GenJets", genJets ); - evt.getByLabel( "midPointCone5CaloJets", caloJets ); - jetInd = 0; - double dRmin[2]; - for( GenJetCollection::const_iterator gen = genJets->begin(); gen != genJets->end() && jetInd<numJets; ++ gen ) { //leading genJets - p4gen[jetInd] = gen->p4(); //Gen 4-vector - dRmin[jetInd]=1000.0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) { //all CaloJets - double delR = deltaR( cal->eta(), cal->phi(), gen->eta(), gen->phi() ); - if(delR<dRmin[jetInd]){ - dRmin[jetInd]=delR; //delta R of match - p4cal[jetInd] = cal->p4(); //Matched Cal 4-vector - } - } - dR.Fill(dRmin[jetInd]); - if(dRmin[jetInd]>0.5)cout << "MC5 Match Warning: dR=" <<dRmin[jetInd]<<", GenPt="<<p4gen[jetInd].Pt()<<", CalPt="<<p4cal[jetInd].Pt()<<endl; - jetInd++; - } - //Fill Resp vs Pt profile histogram with response of two leading gen jets - for( jetInd=0; jetInd<numJets; ++jetInd ){ - if(fabs(p4gen[jetInd].eta())<1.){ - respVsPt.Fill(p4gen[jetInd].Pt(), p4cal[jetInd].Pt()/p4gen[jetInd].Pt() ); - } - } - - //Find the Corrected CaloJets that match the two uncorrected CaloJets - evt.getByLabel( "corJetMcone5", caloJets ); - for( jetInd=0; jetInd<numJets; ++jetInd ){ - bool found=kFALSE; - for( CaloJetCollection::const_iterator cor = caloJets->begin(); cor != caloJets->end() && !found; ++ cor ) { //all corrected CaloJets - double delR = deltaR( cor->eta(), cor->phi(), p4cal[jetInd].eta(), p4cal[jetInd].phi()); - if(delR<0.01){ - dRmin[jetInd]=delR; //delta R of match - p4cor[jetInd] = cor->p4(); //Matched Cal 4-vector - found=kTRUE; - dRcor.Fill(dRmin[jetInd]); - } - } - if(!found)cout << "Warning: corrected jet not found. jetInd=" << jetInd << endl; - } - //Fill Resp vs Pt profile histogram with corrected response of two leading gen jets - for( jetInd=0; jetInd<numJets; ++jetInd ){ - if(fabs(p4gen[jetInd].eta())<1.){ - corRespVsPt.Fill(p4gen[jetInd].Pt(), p4cor[jetInd].Pt()/p4gen[jetInd].Pt() ); - } - } - - - //Diagnostic Printout - if(evtCount<=diagPrintNum){ - - // Printout the uncorrected calojets for midpoint cone size 0.5 - evt.getByLabel( "midPointCone5CaloJets", caloJets ); - jetInd=0; - for( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) { - cout <<"CaloJet "<< jetInd << ", pt=" <<cal->pt()<<", eta="<<cal->eta()<<", phi="<<cal->phi()<<endl; - jetInd++; - } - - // Printout the Corrected jets for midpoint cone size 0.5 - evt.getByLabel( "corJetMcone5", caloJets ); - jetInd=0; - for( CaloJetCollection::const_iterator cor = caloJets->begin(); cor != caloJets->end(); ++ cor ) { - cout <<"CorJet "<< jetInd << ", pt=" <<cor->pt()<<", eta="<<cor->eta()<<", phi="<<cor->phi()<<endl; - jetInd++; - } - - } - - -} - -void JetValidation::endJob() { - - //Write out the histogram file. - m_file->Write(); - -} diff --git a/RecoJets/JetAnalyzers/src/SealModule.cc b/RecoJets/JetAnalyzers/src/SealModule.cc deleted file mode 100755 index 52879d4d098..00000000000 --- a/RecoJets/JetAnalyzers/src/SealModule.cc +++ /dev/null @@ -1,16 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "RecoJets/JetAnalyzers/interface/JetPlotsExample.h" -#include "RecoJets/JetAnalyzers/interface/JetAnalyzer.h" -#include "RecoJets/JetAnalyzers/interface/JetValidation.h" -#include "RecoJets/JetAnalyzers/interface/CaloTowersExample.h" -#include "RecoJets/JetAnalyzers/interface/JetToDigiDump.h" -#include "RecoJets/JetAnalyzers/interface/DijetMass.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE( JetPlotsExample ); -DEFINE_ANOTHER_FWK_MODULE( JetAnalyzer ); -DEFINE_ANOTHER_FWK_MODULE( JetValidation ); -DEFINE_ANOTHER_FWK_MODULE( CaloTowersExample ); -DEFINE_ANOTHER_FWK_MODULE( JetToDigiDump ); -DEFINE_ANOTHER_FWK_MODULE( DijetMass ); diff --git a/RecoJets/JetAnalyzers/test/DijetMassQstar.cint b/RecoJets/JetAnalyzers/test/DijetMassQstar.cint deleted file mode 100644 index bc334971677..00000000000 --- a/RecoJets/JetAnalyzers/test/DijetMassQstar.cint +++ /dev/null @@ -1,286 +0,0 @@ -{ -// File: JetValidation.cint -// Description: Produce jet validation plots from previously made histogram -// file JetValidationHistos.root made by JetValidation Analyzer. -// Author: Robert M. Harris -// Date: 1-Sep-2006 - - gStyle->SetOptStat(0); - -//pt - TCanvas *mycpt = new TCanvas("mycpt","Jet PT Validation 1"); - mycpt->cd(); - - //titles - ptMC5gen->SetTitle("Leading Jets with |#eta|<1 from 400 GeV q*"); - ptMC5gen->SetTitleSize(0.045,"X"); - ptMC5gen->SetXTitle("Jet p_{T} (GeV)"); - - //gen - ptMC5gen->SetLineColor(2); - ptMC5gen->SetLineWidth(2); - ptMC5gen->Draw(""); - ptIC5gen->SetMarkerColor(2); - ptIC5gen->SetLineColor(2); - ptIC5gen->SetMarkerStyle(20); - ptIC5gen->Draw("peSAME"); - ptKT10gen->SetMarkerColor(2); - ptKT10gen->SetLineColor(2); - ptKT10gen->SetMarkerStyle(25); - ptKT10gen->Draw("peSAME"); - - //cal - ptMC5cal->SetLineWidth(2); - ptMC5cal->Draw("SAME"); - ptIC5cal->SetMarkerStyle(20); - ptIC5cal->Draw("peSAME"); - ptKT10cal->SetMarkerStyle(25); - ptKT10cal->Draw("peSAME"); - - //cor - ptMC5cor->SetLineColor(8); - ptMC5cor->SetLineWidth(2); - ptMC5cor->Draw("SAME"); - ptIC5cor->SetLineColor(8); - ptIC5cor->SetMarkerStyle(20); - ptIC5cor->SetMarkerColor(8); - ptIC5cor->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.6,0.38,0.85,0.63); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(ptMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(ptIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(ptKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.6,0.65,0.85,0.9); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(ptMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(ptIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(ptKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - leg0 = new TLegend(0.6,0.18,0.85,0.36); - leg0->SetFillColor(0); - leg0->SetTextColor(8); - leg0->SetHeader("CorJets"); - leg0->AddEntry(ptMC5cor,"MCone R=0.5","l"); - leg0->AddEntry(ptIC5cor,"ICone R=0.5","pe"); - leg0->Draw(); - - mycpt->Print("ptBarrel.eps"); - mycpt->Print("ptBarrel.gif"); -//------------------------------------------------------------ - -//m2j - TCanvas *mycm2j = new TCanvas("mycm2j","Jet m2j Validation 1"); - mycm2j->cd(); - - //titles - m2jMC5gen->SetTitle("Leading Jets with |#eta|<1 from 400 GeV q*"); - m2jMC5gen->SetTitleSize(0.045,"X"); - m2jMC5gen->SetXTitle("Dijet Mass (GeV)"); - - //gen - m2jMC5gen->SetLineColor(2); - m2jMC5gen->SetLineWidth(2); - m2jMC5gen->Draw(""); - m2jIC5gen->SetMarkerColor(2); - m2jIC5gen->SetLineColor(2); - m2jIC5gen->SetMarkerStyle(20); - m2jIC5gen->Draw("peSAME"); - m2jKT10gen->SetMarkerColor(2); - m2jKT10gen->SetLineColor(2); - m2jKT10gen->SetMarkerStyle(25); - m2jKT10gen->Draw("peSAME"); - - //cal - m2jMC5cal->SetLineWidth(2); - m2jMC5cal->Draw("SAME"); - m2jIC5cal->SetMarkerStyle(20); - m2jIC5cal->Draw("peSAME"); - m2jKT10cal->SetMarkerStyle(25); - m2jKT10cal->Draw("peSAME"); - - //cor - m2jMC5cor->SetLineColor(8); - m2jMC5cor->SetLineWidth(2); - m2jMC5cor->Draw("SAME"); - m2jIC5cor->SetLineColor(8); - m2jIC5cor->SetMarkerStyle(20); - m2jIC5cor->SetMarkerColor(8); - m2jIC5cor->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.6,0.38,0.85,0.63); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(m2jMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(m2jIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(m2jKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.6,0.65,0.85,0.9); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(m2jMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(m2jIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(m2jKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - leg0 = new TLegend(0.6,0.18,0.85,0.36); - leg0->SetFillColor(0); - leg0->SetTextColor(8); - leg0->SetHeader("CorJets"); - leg0->AddEntry(m2jMC5cor,"MCone R=0.5","l"); - leg0->AddEntry(m2jIC5cor,"ICone R=0.5","pe"); - leg0->Draw(); - mycm2j->Print("m2jBarrel.eps"); - mycm2j->Print("m2jBarrel.gif"); -//------------------------------------------------------------ - - -//eta - TCanvas *myceta = new TCanvas("myceta","Jet eta Validation 1"); - myceta->cd(); - - //titles - etaMC5gen->SetTitle("Leading Jets with |#eta|<1 from 400 GeV q*"); - etaMC5gen->SetTitleSize(0.045,"X"); - etaMC5gen->SetXTitle("Jet #eta "); - - //gen - etaMC5gen->SetMinimum(0.0); - etaMC5gen->SetLineColor(2); - etaMC5gen->SetLineWidth(2); - etaMC5gen->Draw(""); - etaIC5gen->SetMarkerColor(2); - etaIC5gen->SetLineColor(2); - etaIC5gen->SetMarkerStyle(20); - etaIC5gen->Draw("peSAME"); - etaKT10gen->SetMarkerColor(2); - etaKT10gen->SetLineColor(2); - etaKT10gen->SetMarkerStyle(25); - etaKT10gen->Draw("peSAME"); - - //cal - etaMC5cal->SetLineWidth(2); - etaMC5cal->Draw("SAME"); - etaIC5cal->SetMarkerStyle(20); - etaIC5cal->Draw("peSAME"); - etaKT10cal->SetMarkerStyle(25); - etaKT10cal->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.10,0.2,0.35,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(etaMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(etaIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(etaKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.65,0.2,0.9,0.45); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(etaMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(etaIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(etaKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - myceta->Print("etaBarrel.eps"); - myceta->Print("etaBarrel.gif"); -//------------------------------------------------------------ - -//phi - TCanvas *mycphi = new TCanvas("mycphi","Jet phi Validation 1"); - mycphi->cd(); - - //titles - phiMC5gen->SetTitle("Leading Jets with |#eta|<1 from 400 GeV q*"); - phiMC5gen->SetTitleSize(0.045,"X"); - phiMC5gen->SetXTitle("Jet #phi "); - - //gen - phiMC5gen->SetMinimum(0.0); - phiMC5gen->SetLineColor(2); - phiMC5gen->SetLineWidth(2); - phiMC5gen->Draw(""); - phiIC5gen->SetMarkerColor(2); - phiIC5gen->SetLineColor(2); - phiIC5gen->SetMarkerStyle(20); - phiIC5gen->Draw("peSAME"); - phiKT10gen->SetMarkerColor(2); - phiKT10gen->SetLineColor(2); - phiKT10gen->SetMarkerStyle(25); - phiKT10gen->Draw("peSAME"); - - //cal - phiMC5cal->SetLineWidth(2); - phiMC5cal->Draw("SAME"); - phiIC5cal->SetMarkerStyle(20); - phiIC5cal->Draw("peSAME"); - phiKT10cal->SetMarkerStyle(25); - phiKT10cal->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.20,0.2,0.45,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(phiMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(phiIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(phiKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.55,0.2,0.8,0.45); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(phiMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(phiIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(phiKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - mycphi->Print("phiBarrel.eps"); - mycphi->Print("phiBarrel.gif"); -//------------------------------------------------------------ - -// Jet Response, raw and corrected - TCanvas *mycresp = new TCanvas("mycresp","Jet Response Validation 1"); - mycresp->cd(); - - //titles - corRespVsPt->SetTitle("Response of Leading Jets with |#eta|<1"); - corRespVsPt->SetTitleSize(0.045,"X"); - corRespVsPt->SetTitleSize(0.04,"Y"); - corRespVsPt->SetTitleOffset(1.05,"Y"); - corRespVsPt->SetXTitle("Gen Jet p_{T} (GeV)"); - corRespVsPt->SetYTitle("(Calo Jet p_{T}) / (Gen Jet p_{T})"); - corRespVsPt->GetXaxis()->SetRangeUser(30.0,350.0); - corRespVsPt->SetMinimum(0.0); - - //cor - corRespVsPt->SetMarkerColor(4); - corRespVsPt->SetLineColor(4); - corRespVsPt->SetMarkerStyle(20); - corRespVsPt->Draw("pe"); - l = new TLine(30.0, 1.0, 350.0, 1.0); - l->SetLineColor(4); - l->SetLineWidth(2); - l->Draw(); - - //cal - respVsPt->SetMarkerColor(1); - respVsPt->SetLineColor(1); - respVsPt->SetMarkerStyle(25); - respVsPt->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.5,0.2,0.85,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets (MC5)"); - leg1->AddEntry(corRespVsPt,"Corrected","pe"); - leg1->AddEntry(respVsPt,"Plain","pe"); - leg1->Draw(); - mycresp->Print("respVsPtBarrel.eps"); - mycresp->Print("respVsPtBarrel.gif"); -//------------------------------------------------------------ -} diff --git a/RecoJets/JetAnalyzers/test/DijetMassZprime.cint b/RecoJets/JetAnalyzers/test/DijetMassZprime.cint deleted file mode 100644 index cf137afce25..00000000000 --- a/RecoJets/JetAnalyzers/test/DijetMassZprime.cint +++ /dev/null @@ -1,286 +0,0 @@ -{ -// File: JetValidation.cint -// Description: Produce jet validation plots from previously made histogram -// file JetValidationHistos.root made by JetValidation Analyzer. -// Author: Robert M. Harris -// Date: 1-Sep-2006 - - gStyle->SetOptStat(0); - -//pt - TCanvas *mycpt = new TCanvas("mycpt","Jet PT Validation 1"); - mycpt->cd(); - - //titles - ptMC5gen->SetTitle("Leading Jets with |#eta|<1 from 700 GeV Zprime"); - ptMC5gen->SetTitleSize(0.045,"X"); - ptMC5gen->SetXTitle("Jet p_{T} (GeV)"); - - //gen - ptMC5gen->SetLineColor(2); - ptMC5gen->SetLineWidth(2); - ptMC5gen->Draw(""); - ptIC5gen->SetMarkerColor(2); - ptIC5gen->SetLineColor(2); - ptIC5gen->SetMarkerStyle(20); - ptIC5gen->Draw("peSAME"); - ptKT10gen->SetMarkerColor(2); - ptKT10gen->SetLineColor(2); - ptKT10gen->SetMarkerStyle(25); - ptKT10gen->Draw("peSAME"); - - //cal - ptMC5cal->SetLineWidth(2); - ptMC5cal->Draw("SAME"); - ptIC5cal->SetMarkerStyle(20); - ptIC5cal->Draw("peSAME"); - ptKT10cal->SetMarkerStyle(25); - ptKT10cal->Draw("peSAME"); - - //cor - ptMC5cor->SetLineColor(8); - ptMC5cor->SetLineWidth(2); - ptMC5cor->Draw("SAME"); - ptIC5cor->SetLineColor(8); - ptIC5cor->SetMarkerStyle(20); - ptIC5cor->SetMarkerColor(8); - ptIC5cor->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.6,0.38,0.85,0.63); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(ptMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(ptIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(ptKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.6,0.65,0.85,0.9); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(ptMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(ptIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(ptKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - leg0 = new TLegend(0.6,0.18,0.85,0.36); - leg0->SetFillColor(0); - leg0->SetTextColor(8); - leg0->SetHeader("CorJets"); - leg0->AddEntry(ptMC5cor,"MCone R=0.5","l"); - leg0->AddEntry(ptIC5cor,"ICone R=0.5","pe"); - leg0->Draw(); - - mycpt->Print("ptBarrel.eps"); - mycpt->Print("ptBarrel.gif"); -//------------------------------------------------------------ - -//m2j - TCanvas *mycm2j = new TCanvas("mycm2j","Jet m2j Validation 1"); - mycm2j->cd(); - - //titles - m2jMC5gen->SetTitle("Leading Jets with |#eta|<1 from 700 GeV Zprime"); - m2jMC5gen->SetTitleSize(0.045,"X"); - m2jMC5gen->SetXTitle("Dijet Mass (GeV)"); - - //gen - m2jMC5gen->SetLineColor(2); - m2jMC5gen->SetLineWidth(2); - m2jMC5gen->Draw(""); - m2jIC5gen->SetMarkerColor(2); - m2jIC5gen->SetLineColor(2); - m2jIC5gen->SetMarkerStyle(20); - m2jIC5gen->Draw("peSAME"); - m2jKT10gen->SetMarkerColor(2); - m2jKT10gen->SetLineColor(2); - m2jKT10gen->SetMarkerStyle(25); - m2jKT10gen->Draw("peSAME"); - - //cal - m2jMC5cal->SetLineWidth(2); - m2jMC5cal->Draw("SAME"); - m2jIC5cal->SetMarkerStyle(20); - m2jIC5cal->Draw("peSAME"); - m2jKT10cal->SetMarkerStyle(25); - m2jKT10cal->Draw("peSAME"); - - //cor - m2jMC5cor->SetLineColor(8); - m2jMC5cor->SetLineWidth(2); - m2jMC5cor->Draw("SAME"); - m2jIC5cor->SetLineColor(8); - m2jIC5cor->SetMarkerStyle(20); - m2jIC5cor->SetMarkerColor(8); - m2jIC5cor->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.6,0.38,0.85,0.63); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(m2jMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(m2jIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(m2jKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.6,0.65,0.85,0.9); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(m2jMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(m2jIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(m2jKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - leg0 = new TLegend(0.6,0.18,0.85,0.36); - leg0->SetFillColor(0); - leg0->SetTextColor(8); - leg0->SetHeader("CorJets"); - leg0->AddEntry(m2jMC5cor,"MCone R=0.5","l"); - leg0->AddEntry(m2jIC5cor,"ICone R=0.5","pe"); - leg0->Draw(); - mycm2j->Print("m2jBarrel.eps"); - mycm2j->Print("m2jBarrel.gif"); -//------------------------------------------------------------ - - -//eta - TCanvas *myceta = new TCanvas("myceta","Jet eta Validation 1"); - myceta->cd(); - - //titles - etaMC5gen->SetTitle("Leading Jets with |#eta|<1 from 700 GeV Zprime"); - etaMC5gen->SetTitleSize(0.045,"X"); - etaMC5gen->SetXTitle("Jet #eta "); - - //gen - etaMC5gen->SetMinimum(0.0); - etaMC5gen->SetLineColor(2); - etaMC5gen->SetLineWidth(2); - etaMC5gen->Draw(""); - etaIC5gen->SetMarkerColor(2); - etaIC5gen->SetLineColor(2); - etaIC5gen->SetMarkerStyle(20); - etaIC5gen->Draw("peSAME"); - etaKT10gen->SetMarkerColor(2); - etaKT10gen->SetLineColor(2); - etaKT10gen->SetMarkerStyle(25); - etaKT10gen->Draw("peSAME"); - - //cal - etaMC5cal->SetLineWidth(2); - etaMC5cal->Draw("SAME"); - etaIC5cal->SetMarkerStyle(20); - etaIC5cal->Draw("peSAME"); - etaKT10cal->SetMarkerStyle(25); - etaKT10cal->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.10,0.2,0.35,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(etaMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(etaIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(etaKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.65,0.2,0.9,0.45); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(etaMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(etaIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(etaKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - myceta->Print("etaBarrel.eps"); - myceta->Print("etaBarrel.gif"); -//------------------------------------------------------------ - -//phi - TCanvas *mycphi = new TCanvas("mycphi","Jet phi Validation 1"); - mycphi->cd(); - - //titles - phiMC5gen->SetTitle("Leading Jets with |#eta|<1 from 700 GeV Zprime"); - phiMC5gen->SetTitleSize(0.045,"X"); - phiMC5gen->SetXTitle("Jet #phi "); - - //gen - phiMC5gen->SetMinimum(0.0); - phiMC5gen->SetLineColor(2); - phiMC5gen->SetLineWidth(2); - phiMC5gen->Draw(""); - phiIC5gen->SetMarkerColor(2); - phiIC5gen->SetLineColor(2); - phiIC5gen->SetMarkerStyle(20); - phiIC5gen->Draw("peSAME"); - phiKT10gen->SetMarkerColor(2); - phiKT10gen->SetLineColor(2); - phiKT10gen->SetMarkerStyle(25); - phiKT10gen->Draw("peSAME"); - - //cal - phiMC5cal->SetLineWidth(2); - phiMC5cal->Draw("SAME"); - phiIC5cal->SetMarkerStyle(20); - phiIC5cal->Draw("peSAME"); - phiKT10cal->SetMarkerStyle(25); - phiKT10cal->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.20,0.2,0.45,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets"); - leg1->AddEntry(phiMC5cal,"MCone R=0.5","l"); - leg1->AddEntry(phiIC5cal,"ICone R=0.5","pe"); - leg1->AddEntry(phiKT10cal,"KT D=1.0","pe"); - leg1->Draw(); - leg2 = new TLegend(0.55,0.2,0.8,0.45); - leg2->SetFillColor(0); - leg2->SetTextColor(2); - leg2->SetHeader("GenJets"); - leg2->AddEntry(phiMC5gen,"MCone R=0.5","l"); - leg2->AddEntry(phiIC5gen,"ICone R=0.5","pe"); - leg2->AddEntry(phiKT10gen,"KT D=1.0","pe"); - leg2->Draw(); - mycphi->Print("phiBarrel.eps"); - mycphi->Print("phiBarrel.gif"); -//------------------------------------------------------------ - -// Jet Response, raw and corrected - TCanvas *mycresp = new TCanvas("mycresp","Jet Response Validation 1"); - mycresp->cd(); - - //titles - corRespVsPt->SetTitle("Response of Leading Jets with |#eta|<1"); - corRespVsPt->SetTitleSize(0.045,"X"); - corRespVsPt->SetTitleSize(0.04,"Y"); - corRespVsPt->SetTitleOffset(1.05,"Y"); - corRespVsPt->SetXTitle("Gen Jet p_{T} (GeV)"); - corRespVsPt->SetYTitle("(Calo Jet p_{T}) / (Gen Jet p_{T})"); - corRespVsPt->GetXaxis()->SetRangeUser(30.0,350.0); - corRespVsPt->SetMinimum(0.0); - - //cor - corRespVsPt->SetMarkerColor(4); - corRespVsPt->SetLineColor(4); - corRespVsPt->SetMarkerStyle(20); - corRespVsPt->Draw("pe"); - l = new TLine(30.0, 1.0, 350.0, 1.0); - l->SetLineColor(4); - l->SetLineWidth(2); - l->Draw(); - - //cal - respVsPt->SetMarkerColor(1); - respVsPt->SetLineColor(1); - respVsPt->SetMarkerStyle(25); - respVsPt->Draw("peSAME"); - - //legend - leg1 = new TLegend(0.5,0.2,0.85,0.45); - leg1->SetFillColor(0); - leg1->SetHeader("CaloJets (MC5)"); - leg1->AddEntry(corRespVsPt,"Corrected","pe"); - leg1->AddEntry(respVsPt,"Plain","pe"); - leg1->Draw(); - mycresp->Print("respVsPtBarrel.eps"); - mycresp->Print("respVsPtBarrel.gif"); -//------------------------------------------------------------ -} diff --git a/RecoJets/JetAssociationAlgorithms/doc/html/index.html b/RecoJets/JetAssociationAlgorithms/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoJets/JetAssociationAlgorithms/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoJets/JetAssociationAlgorithms/doc/html/overview.html b/RecoJets/JetAssociationAlgorithms/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoJets/JetAssociationAlgorithms/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoJets/JetAssociationProducers/doc/html/index.html b/RecoJets/JetAssociationProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoJets/JetAssociationProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoJets/JetAssociationProducers/doc/html/overview.html b/RecoJets/JetAssociationProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoJets/JetAssociationProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoJets/JetPlusTracks/doc/html/index.html b/RecoJets/JetPlusTracks/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoJets/JetPlusTracks/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoJets/JetPlusTracks/doc/html/overview.html b/RecoJets/JetPlusTracks/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoJets/JetPlusTracks/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/CaloRecCandCreator/doc/html/index.html b/RecoLocalCalo/CaloRecCandCreator/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/CaloRecCandCreator/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/CaloRecCandCreator/doc/html/overview.html b/RecoLocalCalo/CaloRecCandCreator/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/CaloRecCandCreator/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/Castor/doc/html/index.html b/RecoLocalCalo/Castor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/Castor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/Castor/doc/html/overview.html b/RecoLocalCalo/Castor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/Castor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/CastorReco/doc/html/index.html b/RecoLocalCalo/CastorReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/CastorReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/CastorReco/doc/html/overview.html b/RecoLocalCalo/CastorReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/CastorReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/index.html b/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/overview.html b/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/EcalDeadChannelRecoveryAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/index.html b/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/overview.html b/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/EcalDeadChannelRecoveryProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitFixedAlphaBetaAlgo.h b/RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitFixedAlphaBetaAlgo.h index 1b9842ac2e9..d356fbfd481 100644 --- a/RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitFixedAlphaBetaAlgo.h +++ b/RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitFixedAlphaBetaAlgo.h @@ -15,9 +15,6 @@ #include "CLHEP/Matrix/SymMatrix.h" //#include "CLHEP/Matrix/Matrix.h" #include "RecoLocalCalo/EcalRecAlgos/interface/EcalUncalibRecHitRecAbsAlgo.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" - #include <vector> #include <string> @@ -204,10 +201,9 @@ template<class C> float EcalUncalibRecHitFixedAlphaBetaAlgo<C>::PerformAnalyticF if (num_fit_min<0) num_fit_min = 0 ; //if (num_fit_max>=fNsamples-1) num_fit_max = fNsamples-2 ; if (num_fit_max>= C::MAXSAMPLES ) {num_fit_max = C::MAXSAMPLES-1 ;} - + // if(fAmp_max_ < 8.) { - LogDebug("EcalUncalibRecHitFixedAlphaBetaAlgo")<<"amplitude less than 8 ADC counts, no fit performed"; return -1; - return -1; + std::cout<<"amplitude less than 8 ADC counts, no fit performed"<<std::endl; return -1; } double func,delta ; diff --git a/RecoLocalCalo/HcalLaserReco/doc/html/index.html b/RecoLocalCalo/HcalLaserReco/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalCalo/HcalLaserReco/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalCalo/HcalLaserReco/doc/html/overview.html b/RecoLocalCalo/HcalLaserReco/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalCalo/HcalLaserReco/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalMuon/CSCEfficiency/doc/html/index.html b/RecoLocalMuon/CSCEfficiency/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalMuon/CSCEfficiency/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalMuon/CSCEfficiency/doc/html/overview.html b/RecoLocalMuon/CSCEfficiency/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalMuon/CSCEfficiency/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalMuon/CSCRecHitD/doc/html/index.html b/RecoLocalMuon/CSCRecHitD/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalMuon/CSCRecHitD/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalMuon/CSCRecHitD/doc/html/overview.html b/RecoLocalMuon/CSCRecHitD/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalMuon/CSCRecHitD/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalMuon/CSCSegment/BuildFile b/RecoLocalMuon/CSCSegment/BuildFile index bfd06aab98d..6a152795c8a 100644 --- a/RecoLocalMuon/CSCSegment/BuildFile +++ b/RecoLocalMuon/CSCSegment/BuildFile @@ -8,6 +8,7 @@ <use name=FWCore/ParameterSet> <use name=Foundation/PluginManager> <use name=FWCore/ParameterSet> +<use name=CommonTools/Statistics> <use name=boost> <use name=clhep> <use name=root> diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc index 8537f8becfc..b782f705428 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.cc @@ -109,7 +109,7 @@ std::vector<CSCSegment> CSCSegAlgoDF::buildSegments(ChamberHitContainer rechits) // Clear proto segment so it can be (re)-filled protoSegment.clear(); - if ( usedHits[i1-ib] ) continue; // Hit has been used already + if ( usedHits[i2-ib] ) continue; // Hit has been used already const CSCRecHit2D* h2 = *i2; int layer2 = layerIndex[i2-ib]; @@ -133,6 +133,10 @@ std::vector<CSCSegment> CSCSegAlgoDF::buildSegments(ChamberHitContainer rechits) // calculate error matrix AlgebraicSymMatrix protoErrors = calculateError(); + // but reorder components to match what's required by TrackingRecHit interface + // i.e. slopes first, then positions + flipErrors( protoErrors ); + CSCSegment temp(protoSegment, protoIntercept, protoDirection, protoErrors, protoChi2); segmentInChamber.push_back(temp); @@ -175,7 +179,7 @@ void CSCSegAlgoDF::tryAddingHitsToSegment( const ChamberHitContainer& rechits, for ( ChamberHitContainerCIt i = ib; i != ie; ++i ) { - if ( usedHits[i-ib] > 1) continue; // Don't use hits already part of a segment. + if ( usedHits[i-ib] ) continue; // Don't use hits already part of a segment. if (pass < 2) if (i == i1 || i == i2 ) continue; // For first 2 pass, don't try changing endpoints (seeds). @@ -658,3 +662,26 @@ AlgebraicSymMatrix CSCSegAlgoDF::calculateError() const { return result; } + +void CSCSegAlgoDF::flipErrors( AlgebraicSymMatrix& a ) const { + + // The CSCSegment needs the error matrix re-arranged + + AlgebraicSymMatrix hold( a ); + + // errors on slopes into upper left + a(1,1) = hold(3,3); + a(1,2) = hold(3,4); + a(2,1) = hold(4,3); + a(2,2) = hold(4,4); + + // errors on positions into lower right + a(3,3) = hold(1,1); + a(3,4) = hold(1,2); + a(4,3) = hold(2,1); + a(4,4) = hold(2,2); + + // off-diagonal elements remain unchanged + +} + diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h index b218cd7c929..ed35301676f 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoDF.h @@ -114,7 +114,8 @@ private: HepMatrix derivativeMatrix(void) const; AlgebraicSymMatrix weightMatrix(void) const; AlgebraicSymMatrix calculateError(void) const; - + void flipErrors(AlgebraicSymMatrix&) const; + // Member variables const std::string myName; const CSCChamber* theChamber; diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc index 723f86c7038..1c5384e9ffb 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.cc @@ -1,8 +1,8 @@ /** * \file CSCSegAlgoSK.cc * - * $Date: 2006/05/17 14:38:12 $ - * $Revision: 1.8 $ + * $Date: 2006/09/26 09:00:12 $ + * $Revision: 1.9 $ * \author M. Sani */ @@ -170,8 +170,13 @@ std::vector<CSCSegment> CSCSegAlgoSK::buildSegments(ChamberHitContainer rechits) } else { - // calculate error matrix - AlgebraicSymMatrix errors = calculateError(); + // calculate error matrix... + AlgebraicSymMatrix errors = calculateError(); + + // but reorder components to match what's required by TrackingRecHit interface + // i.e. slopes first, then positions + + flipErrors( errors ); CSCSegment temp(proto_segment, theOrigin, theDirection, errors, theChi2); @@ -806,3 +811,24 @@ AlgebraicSymMatrix CSCSegAlgoSK::calculateError() const { return result; } +void CSCSegAlgoSK::flipErrors( AlgebraicSymMatrix& a ) const { + + // The CSCSegment needs the error matrix re-arranged + + AlgebraicSymMatrix hold( a ); + + // errors on slopes into upper left + a(1,1) = hold(3,3); + a(1,2) = hold(3,4); + a(2,1) = hold(4,3); + a(2,2) = hold(4,4); + + // errors on positions into lower right + a(3,3) = hold(1,1); + a(3,4) = hold(1,2); + a(4,3) = hold(2,1); + a(4,4) = hold(2,2); + + // off-diagonal elements remain unchanged + +} diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h index bf059c51559..b39a9e1301b 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoSK.h @@ -21,8 +21,8 @@ * Reimplemented in terms of layer index, and bug fix: Tim.Cox@cern.ch <BR> * Ported to CMSSW 2006-04-03: Matteo.Sani@cern.ch <BR> * - * $Date: 2006/05/17 14:38:12 $ - * $Revision: 1.6 $ + * $Date: 2006/09/26 09:00:16 $ + * $Revision: 1.7 $ * \author M. Sani */ @@ -125,6 +125,7 @@ private: HepMatrix derivativeMatrix(void) const; AlgebraicSymMatrix weightMatrix(void) const; AlgebraicSymMatrix calculateError(void) const; + void flipErrors(AlgebraicSymMatrix&) const; // Member variables // ================ diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc index d87b56d9859..2dcd7525f37 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.cc @@ -1,8 +1,8 @@ /** * \file CSCSegAlgoTC.cc * - * $Date: 2006/05/17 14:38:12 $ - * $Revision: 1.6 $ + * $Date: 2006/11/21 23:22:13 $ + * $Revision: 1.8 $ * \author M. Sani * */ @@ -21,6 +21,8 @@ #include <iostream> #include <string> +#include "CommonTools/Statistics/interface/ChiSquaredProbability.h" + CSCSegAlgoTC::CSCSegAlgoTC(const edm::ParameterSet& ps) : CSCSegmentAlgorithm(ps), myName("CSCSegAlgoTC") { @@ -31,7 +33,9 @@ CSCSegAlgoTC::CSCSegAlgoTC(const edm::ParameterSet& ps) : CSCSegmentAlgorithm(ps dRPhiFineMax = ps.getParameter<double>("dRPhiFineMax"); dPhiFineMax = ps.getParameter<double>("dPhiFineMax"); chi2Max = ps.getParameter<double>("chi2Max"); + chi2ndfProbMin = ps.getParameter<double>("chi2ndfProbMin"); minLayersApart = ps.getParameter<int>("minLayersApart"); + SegmentSorting = ps.getParameter<int>("SegmentSorting"); LogDebug("CSC") << myName << " has algorithm cuts set to: \n" << "--------------------------------------------------------------------\n" @@ -40,7 +44,9 @@ CSCSegAlgoTC::CSCSegAlgoTC(const edm::ParameterSet& ps) : CSCSegmentAlgorithm(ps << "dRPhiFineMax = " << dRPhiFineMax << '\n' << "dPhiFineMax = " << dPhiFineMax << '\n' << "chi2Max = " << chi2Max << '\n' - << "minLayersApart = " << minLayersApart << std::endl; + << "chi2ndfProbMin = " << chi2ndfProbMin << '\n' + << "minLayersApart = " << minLayersApart << '\n' + << "SegmentSorting = " << SegmentSorting << std::endl; } std::vector<CSCSegment> CSCSegAlgoTC::run(const CSCChamber* aChamber, ChamberHitContainer rechits) { @@ -157,7 +163,11 @@ std::vector<CSCSegment> CSCSegAlgoTC::buildSegments(ChamberHitContainer rechits) // calculate error matrix AlgebraicSymMatrix error_matrix = calculateError(); - + + // but reorder components to match what's required by TrackingRecHit interface + // i.e. slopes first, then positions + flipErrors( error_matrix ); + candidates.push_back(proto_segment); origins.push_back(theOrigin); directions.push_back(theDirection); @@ -706,7 +716,7 @@ void CSCSegAlgoTC::dumpHits(const ChamberHitContainer& rechits) const { } -bool CSCSegAlgoTC::isSegmentGood(std::vector<ChamberHitContainer>::iterator seg, +bool CSCSegAlgoTC::isSegmentGood(std::vector<ChamberHitContainer>::iterator seg, std::vector<double>::iterator chi2, const ChamberHitContainer& rechitsInChamber, BoolContainer& used) const { // Apply any selection cuts to segment @@ -722,6 +732,21 @@ bool CSCSegAlgoTC::isSegmentGood(std::vector<ChamberHitContainer>::iterator seg, if (seg->size() < 3 + iadd) return false; + // Additional part of alternative segment selection scheme: reject + // segments with a chi2 probability of less than chi2ndfProbMin. Relies on list + // being sorted with "SegmentSorting == 2", that is first by nrechits and then + // by chi2prob in subgroups of same nr of rechits. + + if( SegmentSorting == 2 ){ + if( (*chi2) != 0 && ((2*seg->size())-4) >0 ) { + if ( ChiSquaredProbability((*chi2),(double)(2*seg->size()-4)) < chi2ndfProbMin ) { + return false; + } + } + if((*chi2) == 0 ) return false; + } + + for(unsigned int ish = 0; ish < seg->size(); ++ish) { ChamberHitContainerCIt ib = rechitsInChamber.begin(); @@ -777,7 +802,7 @@ void CSCSegAlgoTC::pruneTheSegments(const ChamberHitContainer& rechitsInChamber) for (is = candidates.begin(); is != candidates.end(); ) { - bool goodSegment = isSegmentGood(is, rechitsInChamber, used); + bool goodSegment = isSegmentGood(is, ichi, rechitsInChamber, used); if (goodSegment) { LogDebug("CSC") << "Accepting segment: "; @@ -814,27 +839,80 @@ void CSCSegAlgoTC::segmentSort() { int n1 = candidates[i].size(); int n2 = candidates[j].size(); - if ((chi2s[i]/n1) > (chi2s[j]/n2)) { - - ChamberHitContainer temp = candidates[j]; - candidates[j] = candidates[i]; - candidates[i] = temp; - - double temp1 = chi2s[j]; - chi2s[j] = chi2s[i]; - chi2s[i] = temp1; - - AlgebraicSymMatrix temp2 = errors[j]; - errors[j] = errors[i]; - errors[i] = temp2; - - LocalPoint temp3 = origins[j]; - origins[j] = origins[i]; - origins[i] = temp3; - - LocalVector temp4 = directions[j]; - directions[j] = directions[i]; - directions[i] = temp4; + + if( SegmentSorting == 2 ){ // Sort criterion: first sort by Nr of rechits, then in groups of rechits by chi2prob: + if ( n2 > n1 ) { // sort by nr of rechits + ChamberHitContainer temp = candidates[j]; + candidates[j] = candidates[i]; + candidates[i] = temp; + + double temp1 = chi2s[j]; + chi2s[j] = chi2s[i]; + chi2s[i] = temp1; + + AlgebraicSymMatrix temp2 = errors[j]; + errors[j] = errors[i]; + errors[i] = temp2; + + LocalPoint temp3 = origins[j]; + origins[j] = origins[i]; + origins[i] = temp3; + + LocalVector temp4 = directions[j]; + directions[j] = directions[i]; + directions[i] = temp4; + } + // sort by chi2 probability in subgroups with equal nr of rechits + if(chi2s[i] != 0. && 2*n2-4 > 0 ) { + if( n2 == n1 && (ChiSquaredProbability( chi2s[i],(double)(2*n1-4)) < ChiSquaredProbability(chi2s[j],(double)(2*n2-4))) ){ + ChamberHitContainer temp = candidates[j]; + candidates[j] = candidates[i]; + candidates[i] = temp; + + double temp1 = chi2s[j]; + chi2s[j] = chi2s[i]; + chi2s[i] = temp1; + + AlgebraicSymMatrix temp2 = errors[j]; + errors[j] = errors[i]; + errors[i] = temp2; + + LocalPoint temp3 = origins[j]; + origins[j] = origins[i]; + origins[i] = temp3; + + LocalVector temp4 = directions[j]; + directions[j] = directions[i]; + directions[i] = temp4; + } + } + } + else if( SegmentSorting == 1 ){ + if ((chi2s[i]/n1) > (chi2s[j]/n2)) { + + ChamberHitContainer temp = candidates[j]; + candidates[j] = candidates[i]; + candidates[i] = temp; + + double temp1 = chi2s[j]; + chi2s[j] = chi2s[i]; + chi2s[i] = temp1; + + AlgebraicSymMatrix temp2 = errors[j]; + errors[j] = errors[i]; + errors[i] = temp2; + + LocalPoint temp3 = origins[j]; + origins[j] = origins[i]; + origins[i] = temp3; + + LocalVector temp4 = directions[j]; + directions[j] = directions[i]; + directions[i] = temp4; + } + } + else{ + LogDebug("CSC") << "No valid segment sorting specified - BAD !!!\n"; } } } @@ -901,3 +979,26 @@ AlgebraicSymMatrix CSCSegAlgoTC::weightMatrix() const { matrix.invert(ierr); return matrix; } + +void CSCSegAlgoTC::flipErrors( AlgebraicSymMatrix& a ) const { + + // The CSCSegment needs the error matrix re-arranged + + AlgebraicSymMatrix hold( a ); + + // errors on slopes into upper left + a(1,1) = hold(3,3); + a(1,2) = hold(3,4); + a(2,1) = hold(4,3); + a(2,2) = hold(4,4); + + // errors on positions into lower right + a(3,3) = hold(1,1); + a(3,4) = hold(1,2); + a(4,3) = hold(2,1); + a(4,4) = hold(2,2); + + // off-diagonal elements remain unchanged + +} + diff --git a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h index 976d797cd06..61dfdb3514f 100644 --- a/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h +++ b/RecoLocalMuon/CSCSegment/src/CSCSegAlgoTC.h @@ -18,8 +18,8 @@ * * Ported to CMSSW 2006-04-03: Matteo.Sani@cern.ch <BR> * - * $Date: 2006/05/17 14:38:12 $ - * $Revision: 1.3 $ + * $Date: 2006/11/21 23:22:13 $ + * $Revision: 1.5 $ * \author M. Sani * */ @@ -85,6 +85,7 @@ class CSCSegAlgoTC : public CSCSegmentAlgorithm { AlgebraicSymMatrix calculateError() const; HepMatrix derivativeMatrix() const; AlgebraicSymMatrix weightMatrix() const; + void flipErrors(AlgebraicSymMatrix&) const; /** * Return true if the difference in (local) x of two hits is < dRPhiMax @@ -121,8 +122,10 @@ class CSCSegAlgoTC : public CSCSegmentAlgorithm { /** * Return true if segment is good. * In this algorithm, this means it shares no hits with any other segment. + * If "SegmentSort=2" also require a minimal chi2 probability of "chi2ndfProbMin". */ bool isSegmentGood(std::vector<ChamberHitContainer>::iterator is, + std::vector<double>::iterator ichi, const ChamberHitContainer& rechitsInChamber, BoolContainer& used) const; @@ -168,6 +171,11 @@ class CSCSegAlgoTC : public CSCSegmentAlgorithm { */ float chi2Max; + /** min segment chi squared probability. + * Used ONLY if SegmentSorting is chosen to be 2 + */ + float chi2ndfProbMin; + /** max hit deviation in r-phi from the segment axis. * Function hitNearSegment requires rxy*abs(deltaphi) < dRPhiFineMax. */ @@ -191,6 +199,14 @@ class CSCSegAlgoTC : public CSCSegmentAlgorithm { */ int minLayersApart; + /** Select which segment sorting to use (the higher the segment + * is in the list, the better the segment is supposed to be): + * if value is ==1: Sort segments by Chi2/(#hits on segment) + * if value is ==2: Sort segments first by #hits on segment, + * then by Chi2Probability(Chi2/ndf) + */ + int SegmentSorting; + /** Name of this class */ const std::string myName; diff --git a/RecoLocalMuon/CSCValidation/doc/html/index.html b/RecoLocalMuon/CSCValidation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalMuon/CSCValidation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalMuon/CSCValidation/doc/html/overview.html b/RecoLocalMuon/CSCValidation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalMuon/CSCValidation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLocalTracker/SiPixelRecHits/BuildFile b/RecoLocalTracker/SiPixelRecHits/BuildFile index d672b6c4693..65a15ca28f3 100644 --- a/RecoLocalTracker/SiPixelRecHits/BuildFile +++ b/RecoLocalTracker/SiPixelRecHits/BuildFile @@ -9,7 +9,6 @@ <use name=DataFormats/TrackerRecHit2D> <use name=DataFormats/DetId> <use name=DataFormats/Common> -<use name=CondFormats/SiPixelObjects> <use name=Geometry/CommonDetAlgo> <use name=Geometry/CommonDetUnit> <use name=Geometry/TrackerGeometryBuilder> @@ -33,7 +32,6 @@ <use name=DataFormats/TrackerRecHit2D> <use name=DataFormats/DetId> <use name=DataFormats/Common> -<use name=CondFormats/SiPixelObjects> <use name=Geometry/CommonDetAlgo> <use name=Geometry/CommonDetUnit> <use name=Geometry/TrackerGeometryBuilder> diff --git a/RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h b/RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h deleted file mode 100644 index 2145fd64949..00000000000 --- a/RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H -#define RecoLocalTracker_SiPixelRecHits_PixelCPETemplateReco_H - -#include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEBase.h" - -#include "Geometry/CommonDetUnit/interface/GeomDetType.h" -#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" -#include "Geometry/TrackerTopology/interface/RectangularPixelTopology.h" - -#include "Geometry/CommonDetAlgo/interface/MeasurementPoint.h" -#include "Geometry/CommonDetAlgo/interface/MeasurementError.h" - -//--- For the various "Frames" -#include "Geometry/Surface/interface/GloballyPositioned.h" - -//--- For the configuration: -#include "FWCore/ParameterSet/interface/ParameterSet.h" - - -#ifndef SI_PIXEL_TEMPLATE_STANDALONE -#include "CondFormats/SiPixelObjects/interface/SiPixelTemplate.h" -#else -#include "SiPixelTemplate.h" -#endif - -#include <utility> -#include <vector> - - -#if 0 -/** \class PixelCPETemplateReco - * Perform the position and error evaluation of pixel hits using - * the Det angle to estimate the track impact angle -*/ -#endif - -class MagneticField; -class PixelCPETemplateReco : public PixelCPEBase -{ - public: - // PixelCPETemplateReco( const DetUnit& det ); - PixelCPETemplateReco(edm::ParameterSet const& conf, const MagneticField*); - ~PixelCPETemplateReco(); - - // We only need to implement measurementPosition, since localPosition() from - // PixelCPEBase will call it and do the transformation. - MeasurementPoint measurementPosition( const SiPixelCluster&, - const GeomDetUnit & det) const ; - - // However, we do need to implement localError(). - LocalError localError (const SiPixelCluster& cl, const GeomDetUnit & det) const ; - - private: - //-------------------------------------------------------------------- - // Methods. - //------------------------------------------------------------------ - - // Position in x and y - float xpos( const SiPixelCluster& ) const; - float ypos( const SiPixelCluster& ) const; - - // Quantities needed to calculate xpos() and ypos() - float chargeWidthX() const; - float chargeWidthY() const; - - private: - // Template stuff in here &&& - - mutable SiPixelTemplate templ_ ; - - // The result - mutable float templXrec_ ; - mutable float templYrec_ ; - mutable float templSigmaX_ ; - mutable float templSigmaY_ ; -}; - -#endif - - - - diff --git a/RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h b/RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h deleted file mode 100644 index c8e2cdebe9e..00000000000 --- a/RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * SiPixelTemplateReco.h - * - * - * Created by Morris Swartz on 10/27/06. - * Copyright 2006 __MyCompanyName__. All rights reserved. - * - */ - -#ifndef SI_PIXEL_TEMPLATE_STANDALONE -#include "CondFormats/SiPixelObjects/interface/SiPixelTemplate.h" -#else -#include "SiPixelTemplate.h" -#endif - -#include <vector> -#include "boost/multi_array.hpp" - - -namespace SiPixelTemplateReco - { - - typedef boost::multi_array<float, 2> array_2d; - - int PixelTempReco2D(int id, bool fpix, float cotalpha, float cotbeta, array_2d cluster, - std::vector<bool> ydouble, std::vector<bool> xdouble, - SiPixelTemplate& templ, - float& yrec, float& sigmay, float& xrec, float& sigmax); - -} - - diff --git a/RecoLocalTracker/SiPixelRecHits/src/PixelCPETemplateReco.cc b/RecoLocalTracker/SiPixelRecHits/src/PixelCPETemplateReco.cc deleted file mode 100644 index 4612b0f0626..00000000000 --- a/RecoLocalTracker/SiPixelRecHits/src/PixelCPETemplateReco.cc +++ /dev/null @@ -1,411 +0,0 @@ -// Include our own header first -#include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h" - -// Geometry services -#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" -#include "Geometry/TrackerTopology/interface/RectangularPixelTopology.h" - -//#define DEBUG - -// MessageLogger -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -// Magnetic field -#include "MagneticField/Engine/interface/MagneticField.h" - -#include <iostream> -using namespace std; - -const float PI = 3.141593; -const float HALFPI = PI * 0.5; -const float degsPerRad = 57.29578; - - -// The template header files -#include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h" -#include <vector> -#include "boost/multi_array.hpp" -using namespace SiPixelTemplateReco ; - - -//----------------------------------------------------------------------------- -// Constructor. All detUnit-dependent quantities will be initialized later, -// in setTheDet(). Here we only load the templates into the template store templ_ . -//----------------------------------------------------------------------------- -PixelCPETemplateReco::PixelCPETemplateReco(edm::ParameterSet const & conf, - const MagneticField *mag) - : PixelCPEBase(conf,mag) -{ - // Initialize template store, CMSSW simulation as thePixelTemp[0] - templ_.pushfile(201); - - // Initialize template store, Pixelav 125V simulation as - // thePixelTemp[1] - templ_.pushfile(1); - - // Initialize template store, CMSSW simulation w/ reduced difusion - // as thePixelTemp[2] - templ_.pushfile(401); - -} - -//----------------------------------------------------------------------------- -// Clean up. -//----------------------------------------------------------------------------- -PixelCPETemplateReco::~PixelCPETemplateReco() -{ - // &&& delete template store? -} - - -//------------------------------------------------------------------ -// Public methods mandated by the base class. -//------------------------------------------------------------------ - - -//------------------------------------------------------------------ -// localPosition() calls measurementPosition() and then converts it -// to the LocalPoint. USE THE ONE FROM THE BASE CLASS -//------------------------------------------------------------------ -// LocalPoint -// PixelCPETemplateReco::localPosition(const SiPixelCluster& cluster, -// const GeomDetUnit & det) const { -// setTheDet( det ); -// MeasurementPoint ssss = measurementPosition(cluster, det); -// LocalPoint cdfsfs = theTopol->localPosition(ssss); -// return cdfsfs; -// } -//------------------------------------------------------------------ -// localError() calls measurementError() after computing size and -// edge (flag) along x and y. -//------------------------------------------------------------------ -LocalError -PixelCPETemplateReco::localError( const SiPixelCluster& cluster, const GeomDetUnit & det)const -{ - setTheDet( det ); - - //--- Default is the maximum error used for edge clusters. - float xerr = thePitchX / sqrt(12.); - float yerr = thePitchY / sqrt(12.); - - //--- Are we near either of the edges? - bool edgex = (cluster.edgeHitX()) || (cluster.maxPixelRow() > theNumOfRow); - bool edgey = (cluster.edgeHitY()) || (cluster.maxPixelCol() > theNumOfCol); - - if (edgex && edgey) { - //--- Both axes on the edge, no point in calling PixelErrorParameterization, - //--- just return the max errors on both. - cout << "PixelCPETemplateReco::localError: edge hit, returning sqrt(12)." - << endl; - return LocalError(xerr*xerr, 0,yerr*yerr); - } - else { - // &&& need a class const - static const float micronsToCm = 1e-4; - - xerr = templSigmaX_ * micronsToCm; - yerr = templSigmaY_ * micronsToCm; - - // &&& should also check ierr (saved as class variable) and return - // &&& nonsense (another class static) if the template fit failed. - } - - if (theVerboseLevel > 9) { - LogDebug("PixelCPETemplateReco") << - "Sizex = " << cluster.sizeX() << " Sizey = " << cluster.sizeY() << - " Edgex = " << edgex << " Edgey = " << edgey << - " ErrX = " << xerr << " ErrY = " << yerr; - } - return LocalError(xerr*xerr, 0,yerr*yerr); -} - - - -//----------------------------------------------------------------------------- -//! The method in which we perform the template hit reconstruction, via a call -//! to PixelTemplateReco2D() function. In setting up the call, we transfer -//! the digis from SiPixelCluster cluster to a 2D matrix (in fact a -//! boost::multi_array<float,2>) called clust_array_2d. En route we also flag the -//! double pixels we find while filling the 2D matrix, and store that in -//! xdouble and ydouble vectors. -//! -//! Questions for Morris: given that the size of the template matrix is -//! constrained to 21x7 pixels, why not use arrays instead of vectors for xdouble -//! and ydouble (since there's nothing dynamic about them, they need to be -//! filled whole...) and why not use a 2D array instead of boost::multi_array? -//----------------------------------------------------------------------------- -MeasurementPoint -PixelCPETemplateReco::measurementPosition( const SiPixelCluster& cluster, - const GeomDetUnit & det) const -{ - if (theVerboseLevel > 9) { - LogDebug("PixelCPETemplateReco") << - "::measurementPosition: processing cluster at" << - "X-pos = " << xpos(cluster) << - " Y-pos = " << ypos(cluster); - } - - int ierr; //!< return status - int ID = 2; //!< picks the third entry from the template store, namely 401 - bool fpix; //!< barrel(false) or forward(true) - if (thePart == GeomDetEnumerators::PixelBarrel) - fpix = false; // no, it's not forward -- it's barrel - else - fpix = true; // yes, it's forward - - // Make cot(alpha) and cot(beta)... cot(x) = tan(pi/2 - x); - float cotalpha = tan(HALFPI - alpha_); - float cotbeta = tan(HALFPI - beta_); - - // Make from cluster (a SiPixelCluster) a boost multi_array_2d called - // clust_array_2d. - boost::multi_array<float, 2> clust_array_2d(boost::extents[7][21]); - - // Copy clust's pixels (calibrated in electrons) into clust_array_2d; - - - // Preparing to retrieve ADC counts from the SiPixelCluster. In the cluster, - // we have the following: - // int minPixelRow(); // Minimum pixel index in the x direction (low edge). - // int maxPixelRow(); // Maximum pixel index in the x direction (top edge). - // int minPixelCol(); // Minimum pixel index in the y direction (left edge). - // int maxPixelCol(); // Maximum pixel index in the y direction (right edge). - // So the pixels from minPixelRow() will go into clust_array_2d[0][*], - // and the pixels from minPixelCol() will go into clust_array_2d[*][0]. - int row_offset = cluster.minPixelRow(); - int col_offset = cluster.minPixelCol(); - - const std::vector<SiPixelCluster::Pixel> & pixVec = cluster.pixels(); - std::vector<SiPixelCluster::Pixel>::const_iterator - pixIter = pixVec.begin(), pixEnd = pixVec.end(); - // - for ( ; pixIter != pixEnd; ++pixIter ) { - // - // *pixIter dereferences to Pixel struct, with public vars x, y, adc (all float) - int irow = int(pixIter->x) - row_offset; // &&& do we need +0.5 ??? - int icol = int(pixIter->y) - col_offset; // &&& do we need +0.5 ??? - clust_array_2d[ irow ][ icol ] = pixIter->adc; - } - - // Make and fill the bool arrays flagging double pixels - // &&& Need to define constants for 7 and 21 somewhere! - std::vector<bool> ydouble(21), xdouble(7); - // x directions (shorter), rows - for (int irow = 0; irow < 7; ++irow) { - xdouble[irow] = RectangularPixelTopology::isItBigPixelInX( irow+row_offset ); - } - // y directions (longer), columns - for (int icol = 0; icol < 21; ++icol) { - ydouble[icol] = RectangularPixelTopology::isItBigPixelInY( icol+col_offset ); - } - - // Output: - static float nonsense = -99999.0; // nonsense init value - templXrec_ = templYrec_ = templSigmaX_ = templSigmaY_ = nonsense; - - // ****************************************************************** - // Do it! - ierr = - PixelTempReco2D(ID, fpix, cotalpha, cotbeta, - clust_array_2d, ydouble, xdouble, - templ_, - templYrec_, templSigmaY_, - templXrec_, templSigmaX_); - // ****************************************************************** - - // &&& need a class const - static const float micronsToCm = 1e-4; - - // Check exit status - if (ierr != 0) { - printf("reconstruction failed with error %d \n", ierr); - // &&& throw an exception? - return MeasurementPoint( nonsense, nonsense ); - } - else - return MeasurementPoint( templXrec_*micronsToCm , templYrec_*micronsToCm ); - -} - - -//------------------------------------------------------------------ -// Helper methods (protected) -//------------------------------------------------------------------ - -//----------------------------------------------------------------------------- -// Calculates the *corrected* position of the cluster. -// &&& Probably generic enough for the base class. -//----------------------------------------------------------------------------- -float -PixelCPETemplateReco::xpos(const SiPixelCluster& cluster) const -{ - float xcluster = 0; - int size = cluster.sizeX(); - const vector<SiPixelCluster::Pixel>& pixelsVec = cluster.pixels(); - float baryc = cluster.x(); - - if (size == 1) { - // the middle of only one pixel is equivalent to the baryc. - xcluster = baryc; - } else { - - //calculate center - float xmin = float(cluster.minPixelRow()) + 0.5; - float xmax = float(cluster.maxPixelRow()) + 0.5; - float xcenter = ( xmin + xmax ) / 2; - - vector<float> xChargeVec = xCharge(pixelsVec, xmin, xmax); - float q1 = xChargeVec[0]; - float q2 = xChargeVec[1]; - // &&& The following line from CPEFromDetPosition: - // float chargeWX = chargeWidthX() + theSign * geomCorrection() * xcenter; - float chargeWX = chargeWidthX(); - float effchargeWX = fabs(chargeWX) - (float(size)-2); - - // truncated charge width only if it greather than the cluster size - if ( fabs(effchargeWX) > 2 ) effchargeWX = 1; - - xcluster = xcenter + (q2-q1) * effchargeWX / (q1+q2) / 2.; - - - // &&& should go away there too: float alpha = estimatedAlphaForBarrel(xcenter); - if (alpha_ < 1.53) { - float etashift=0; - float charatio = q1/(q1+q2); - etashift = theEtaFunc.xEtaShift(size, thePitchX, - charatio, alpha_); - xcluster = xcluster - etashift; - } - } - return xcluster; -} - - -//----------------------------------------------------------------------------- -// Calculates the *corrected* position of the cluster. -// &&& Probably generic enough for the base class. -//----------------------------------------------------------------------------- -float -PixelCPETemplateReco::ypos(const SiPixelCluster& cluster) const -{ - float ycluster = 0; - const vector<SiPixelCluster::Pixel>& pixelsVec = cluster.pixels(); - int size = cluster.sizeY(); - float baryc = cluster.y(); - - if (size == 1) { - ycluster = baryc; - } -// &&& The size == 2,3 exists in FromDetPosition but not in FromTrackAngles: -// else if (size < 4) { - -// // Calculate center -// float ymin = float(cluster.minPixelCol()) + 0.5; -// float ymax = float(cluster.maxPixelCol()) + 0.5; -// float ycenter = ( ymin + ymax ) / 2; - -// //calculate charge width -// float chargeWY = chargeWidthY() + geomCorrection() * ycenter; -// float effchargeWY = fabs(chargeWY) - (float(size)-2); - -// // truncate charge width when it is > 2 -// if ( (effchargeWY < 0) || (effchargeWY > 1.) ) effchargeWY = 1; - -// //calculate charge of first, last and inner pixels of cluster -// vector<float> yChargeVec = yCharge(pixelsVec, ymin, ymax); -// float q1 = yChargeVec[0]; -// float q2 = yChargeVec[1]; -// // float qm = yChargeVec[2]; -// // float charatio = q1/(q1+q2); - -// ycluster = ycenter + (q2-q1) * effchargeWY / (q1+q2) / 2.; - -// } - else { // Use always the edge method - - float chargeWY = chargeWidthY(); - float effchargeWY = fabs(chargeWY) - (float(size)-2); - // truncate charge width when it is > 2 - if ( (effchargeWY < 0) || (effchargeWY > 2) ) effchargeWY = 1; - - // Calculate center - float ymin = float(cluster.minPixelCol()) + 0.5; - float ymax = float(cluster.maxPixelCol()) + 0.5; - float ycenter = ( ymin + ymax ) / 2; - - //calculate charge of first, last and inner pixels of cluster - vector<float> yChargeVec = yCharge(pixelsVec, ymin, ymax); - float q1 = yChargeVec[0]; - float q2 = yChargeVec[1]; - // float qm = yChargeVec[2]; - float charatio = q1/(q1+q2); - - // &&& FromDetPosition does not apply etashfit in y: - // eta function for shallow tracks - float etashift = theEtaFunc.yEtaShift(size, thePitchY, - charatio, beta_); - ycluster = ycenter + (q2-q1) * effchargeWY / (q1+q2) / 2.- etashift; - - } - - return ycluster; -} - - - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -float -PixelCPETemplateReco::chargeWidthX() const -{ -// &&& Commented out: the version from FromDetPosition: -// float chargeW = 0; -// float lorentzWidth = 2 * theLShift; -// if (thePart == GeomDetEnumerators::PixelBarrel) { -// // Redefine the charge width to include the offset -// chargeW = lorentzWidth - theSign * geomCorrection() * theOffsetX; -// } else { // forward -// chargeW = fabs(lorentzWidth) + -// theThickness * fabs(theDetR/theDetZ) / thePitchX; -// } -// return chargeW; - - float geomWidthX = theThickness * tan(PI/2 - alpha_)/thePitchX; - if (thePart == GeomDetEnumerators::PixelBarrel){ - return (geomWidthX) + (2 * theLShiftX); - } else { - return fabs(geomWidthX) + (2 * fabs(theLShiftX)); - } -} - - -//----------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------- -float -PixelCPETemplateReco::chargeWidthY() const -{ -// &&& Commented out: the version from FromDetPosition: -// float chargeW = 0; -// if (thePart == GeomDetEnumerators::PixelBarrel) { -// chargeW = theThickness * fabs(theDetZ/theDetR) / thePitchY; -// chargeW -= (geomCorrection() * theOffsetY); -// } else { //forward -// // Width comes from geometry only, fixed by the tilt angle -// chargeW = theThickness * tan(20./degsPerRad) / thePitchY; -// } -// return chargeW; - - float geomWidthY = theThickness * tan(PI/2 - beta_)/thePitchY; - if (thePart == GeomDetEnumerators::PixelBarrel) { - return geomWidthY; - } else { - return fabs(geomWidthY); - } -} - - - - - diff --git a/RecoLocalTracker/SiPixelRecHits/src/SiPixelRecHitConverter.cc b/RecoLocalTracker/SiPixelRecHits/src/SiPixelRecHitConverter.cc index 115a9bd0722..b47e2c5269a 100644 --- a/RecoLocalTracker/SiPixelRecHits/src/SiPixelRecHitConverter.cc +++ b/RecoLocalTracker/SiPixelRecHits/src/SiPixelRecHitConverter.cc @@ -13,7 +13,6 @@ #include "RecoLocalTracker/SiPixelRecHits/interface/CPEFromDetPosition.h" #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEInitial.h" #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEParmError.h" -#include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPETemplateReco.h" // Geometry #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" @@ -120,10 +119,6 @@ namespace cms cpe_ = new PixelCPEParmError(conf_,mag); ready_ = true; } - else if ( cpeName_ == "TemplateReco" ) { - cpe_ = new PixelCPETemplateReco(conf_,mag); - ready_ = true; - } else { edm::LogError("SiPixelRecHitConverter") <<" Cluster parameter estimator " << cpeName_ << " is invalid.\n" diff --git a/RecoLocalTracker/SiPixelRecHits/src/SiPixelTemplateReco.cc b/RecoLocalTracker/SiPixelRecHits/src/SiPixelTemplateReco.cc deleted file mode 100644 index 7baca485059..00000000000 --- a/RecoLocalTracker/SiPixelRecHits/src/SiPixelTemplateReco.cc +++ /dev/null @@ -1,550 +0,0 @@ -/* - * SiPixelTemplateReco.cc - * - * - * Created by Morris Swartz on 10/27/06. - * Copyright 2006 __MyCompanyName__. All rights reserved. - * - */ - -#ifndef SI_PIXEL_TEMPLATE_STANDALONE -#include "RecoLocalTracker/SiPixelRecHits/interface/SiPixelTemplateReco.h" -#else -#include "SiPixelTemplateReco.h" -#endif - -#include <math.h> -#include <algorithm> -#include <vector> -#include <iostream> - - -using namespace SiPixelTemplateReco; - -// ****************************************************************************************** -//! Reconstruct the best estimate of the hit position for pixel clusters. -//! \param id - (input) identifier of the template to use -//! \param fpix - (input) logical input indicating whether to use -//! FPix templates (true) or Barrel templates (false) -//! \param cotalpha - (input) the cotangent of the alpha track angle (see CMS IN 2004/014) -//! \param cotbeta - (input) the cotangent of the beta track angle (see CMS IN 2004/014) -//! \param cluster - (input) boost multi_array container of 7x21 array of pixel signals, -//! origin of local coords (0,0) at center of pixel cluster[0][0]. -//! \param ydouble - (input) STL vector of 21 element array to flag a double-pixel -//! \param xdouble - (input) STL vector of 7 element array to flag a double-pixel -//! \param templ - (input) the template used in the reconstruction -//! \param yrec - (output) best estimate of y-coordinate of hit in microns -//! \param sigmay - (output) best estimate of uncertainty on yrec in microns -//! \param xrec - (output) best estimate of x-coordinate of hit in microns -//! \param sigmax - (output) best estimate of uncertainty on xrec in microns -// ****************************************************************************************** -int SiPixelTemplateReco::PixelTempReco2D(int id, bool fpix, float cotalpha, float cotbeta, array_2d cluster, - std::vector<bool> ydouble, std::vector<bool> xdouble, - SiPixelTemplate& templ, - float& yrec, float& sigmay, float& xrec, float& sigmax) -{ - // Local variables - int i, j, k, minbin, binl, binh, binq, midpix; - unsigned int nclusx, nclusy; - std::vector<float> ysig2(25), xsig2(11); - float sythr, sxthr, rnorm, delta, sigma, sigavg; - float chimin, ss2, ssa, sa2, ssba, saba, sba2, rat, chi2, sigi, sigi2, sigi3, sigi4, fq; - float originx, originy; - const float ysize={150.}, xsize={100.}; - - - -// First, interpolate the template needed to analyze this cluster - - templ.interpolate(id, fpix, cotalpha, cotbeta); - -// Next, copy the y- and x-templates to matrix containers - - array_2d ytemp(boost::extents[41][25]); - for(i=0; i<41; ++i) { - for(j=0; j<25; ++j) { - ytemp[i][j]=templ.ytemp(i,j); - } - } - - array_2d xtemp(boost::extents[41][11]); - for(i=0; i<41; ++i) { - for(j=0; j<11; ++j) { - xtemp[i][j]=templ.xtemp(i,j); - } - } - -// Check that the cluster container is (up to) a 7x21 matrix and matches the dimensions of the double pixel flags - - if(cluster.num_dimensions() != 2) {return 3;} - nclusx = cluster.size(); - nclusy = cluster.num_elements()/nclusx; - if(nclusx != xdouble.size()) {return 4;} - if(nclusy != ydouble.size()) {return 5;} - -// enforce maximum size - - if(nclusx > 7) {nclusx = 7;} - if(nclusy > 21) {nclusy = 21;} - - -// Next, make y-projection of the cluster and copy the double pixel flags into a 25 element container - - float qtotal = 0.; - std::vector<float> ysum(25, 0.); - std::vector<bool> yd(25, false); - k=0; - for(i=0; i<nclusy; ++i) { - for(j=0; j<nclusx; ++j) { - ysum[k] += cluster[j][i]; - qtotal += cluster[j][i]; - } - -// If this is a double pixel, put 1/2 of the charge in 2 consective single pixels - - if(ydouble[i]) { - ysum[k] /= 2.; - ysum[k+1] = ysum[k]; - yd[k] = true; - yd[k+1] = false; - k=k+2; - } else { - yd[k] = false; - ++k; - } - if(k > 24) {break;} - } - -// Next, make x-projection of the cluster and copy the double pixel flags into an 11 element container - - std::vector<float> xsum(11, 0.); - std::vector<bool> xd(11, false); - k=0; - for(j=0; j<nclusx; ++j) { - for(i=0; i<nclusy; ++i) { - xsum[k] += cluster[j][i]; - } - -// If this is a double pixel, put 1/2 of the charge in 2 consective single pixels - - if(xdouble[j]) { - xsum[k] /= 2.; - xsum[k+1] = xsum[k]; - xd[k]=true; - xd[k+1]=false; - k=k+2; - } else { - xd[k]=false; - ++k; - } - if(k > 10) {break;} - } - -// next, identify the y-cluster ends, count total pixels, nypix, and logical pixels, logypx - - int fypix=-1; - int nypix=0; - int lypix=0; - int logypx=0; - std::vector<float> ysort; - for(i=0; i<25; ++i) { - if(ysum[i] > 0.) { - if(fypix == -1) {fypix = i;} - if(!yd[i]) { - ysort.push_back(ysum[i]); - ++logypx; - } - ++nypix; - lypix = i; - } - } - if((lypix-fypix+1) != nypix) { return 1; } - -// next, center the cluster on pixel 12 if necessary - - midpix = (fypix+lypix)/2; - int shifty = 12 - midpix; - if(shifty > 0) { - for(i=lypix; i>=fypix; --i) { - ysum[i+shifty] = ysum[i]; - ysum[i] = 0.; - yd[i+shifty] = yd[i]; - yd[i] = false; - } - } else if (shifty < 0) { - for(i=fypix; i<=lypix; ++i) { - ysum[i+shifty] = ysum[i]; - ysum[i] = 0.; - yd[i+shifty] = yd[i]; - yd[i] = false; - } - } - lypix +=shifty; - fypix +=shifty; - -// Add pseudo-pixels - - ysum[fypix-1] = 0.2*templ.s50(); - ysum[lypix+1] = ysum[fypix-1]; - ysum[fypix-2] = ysum[fypix-1]; - ysum[lypix+2] = ysum[fypix-1]; - -// finally, determine if pixel[0] is a double pixel and make an origin correction if it is - - if(ydouble[0]) { - originy = -0.5; - } else { - originy = 0.; - } - -// next, identify the x-cluster ends, count total pixels, nxpix, and logical pixels, logxpx - - int fxpix=-1; - int nxpix=0; - int lxpix=0; - int logxpx=0; - std::vector<float> xsort; - for(i=0; i<11; ++i) { - if(xsum[i] > 0.) { - if(fxpix == -1) {fxpix = i;} - if(!xd[i]) { - xsort.push_back(xsum[i]); - ++logxpx; - } - ++nxpix; - lxpix = i; - } - } - if((lxpix-fxpix+1) != nxpix) { return 2; } - -// next, center the cluster on pixel 5 if necessary - - midpix = (fxpix+lxpix)/2; - int shiftx = 5 - midpix; - if(shiftx > 0) { - for(i=lxpix; i>=fxpix; --i) { - xsum[i+shiftx] = xsum[i]; - xsum[i] = 0.; - xd[i+shiftx] = xd[i]; - xd[i] = false; - } - } else if (shiftx < 0) { - for(i=fxpix; i<=lxpix; ++i) { - xsum[i+shiftx] = xsum[i]; - xsum[i] = 0.; - xd[i+shiftx] = xd[i]; - xd[i] = false; - } - } - lxpix +=shiftx; - fxpix +=shiftx; - -// Add pseudo-pixels - - xsum[fxpix-1] = 0.2*templ.s50(); - xsum[lxpix+1] = xsum[fxpix-1]; - xsum[fxpix-2] = xsum[fxpix-1]; - xsum[lxpix+2] = xsum[fxpix-1]; - - -// finally, determine if pixel[0] is a double pixel and make an origin correction if it is - - if(xdouble[0]) { - originx = -0.5; - } else { - originx = 0.; - } - -// uncertainty and final corrections depend upon total charge bin - - fq = qtotal/templ.qavg(); - if(fq > 1.5) { - binq=0; - } else { - if(fq > 1.0) { - binq=1; - } else { - if(fq > 0.85) { - binq=2; - } else { - binq=3; - } - } - } - -// Do the y-reconstruction first - -// Do not apply templates to 1-pixel clusters (use calibrated offset) - - if(logypx == 1) { - - if(nypix ==1) { - delta = templ.dyone(); - sigma = templ.syone(); - } else { - delta = templ.dytwo(); - sigma = templ.sytwo(); - } - - yrec = 0.5*(fypix+lypix-2*shifty+2.*originy)*ysize-delta; - - if(sigma <= 0.) { - sigmay = 43.3; - } else { - sigmay = sigma; - } - - } else { - -// Apply the template algorithm - -// Modify the template if double pixels are present - - if(nypix > logypx) { - i=fypix; - while(i < lypix) { - if(yd[i] && !yd[i+1]) { - for(j=0; j<41; ++j) { - -// Sum the adjacent cells and put the average signal in both - - sigavg = (ytemp[j][i] + ytemp[j][i+1])/2.; - ytemp[j][i] = sigavg; - ytemp[j][i+1] = sigavg; - } - i += 2; - } else { - ++i; - } - } - } - -// Define the maximum signal to allow before de-weighting a pixel - - sythr = 1.1*(templ.symax()); - -// Make sure that there will be at least two pixels that are not de-weighted - - std::sort(ysort.begin(), ysort.end()); - if (ysort[1] > sythr) { sythr = 1.01*ysort[1]; } - -// Evaluate pixel-by-pixel uncertainties (weights) for the templ analysis - - for(i=fypix-2; i<=lypix+2; ++i) { - if(i < fypix || i > lypix) { - ysig2[i] = (templ.s50())*(templ.s50()); - } else { - if(ysum[i] < templ.symax()) { - sigi = ysum[i]; - } else { - sigi = templ.symax(); - } - sigi2 = sigi*sigi; sigi3 = sigi2*sigi; sigi4 = sigi3*sigi; - if(i <= 12) { - ysig2[i] = (1.-(templ.yratio()))* - (templ.yparl(0,0)+templ.yparl(0,1)*sigi+templ.yparl(0,2)*sigi2+templ.yparl(0,3)*sigi3+templ.yparl(0,4)*sigi4) - + (templ.yratio())* - (templ.yparh(0,0)+templ.yparh(0,1)*sigi+templ.yparh(0,2)*sigi2+templ.yparh(0,3)*sigi3+templ.yparh(0,4)*sigi4); - } else { - ysig2[i] = (1.-(templ.yratio()))* - (templ.yparl(1,0)+templ.yparl(1,1)*sigi+templ.yparl(1,2)*sigi2+templ.yparl(1,3)*sigi3+templ.yparl(1,4)*sigi4) - + (templ.yratio())* - (templ.yparh(1,0)+templ.yparh(1,1)*sigi+templ.yparh(1,2)*sigi2+templ.yparh(1,3)*sigi3+templ.yparh(1,4)*sigi4); - } - if(ysum[i] > sythr) {ysig2[i] = 1.e8;} -// if(yd[i] != 0) {ysig2[i] = 1.e8;} - } - } - - -// Find the template bin that minimizes the Chi^2 - - chimin = 1.e15; - minbin = -1; - for(j=0; j<41; ++j) { - ss2 = 0.; - ssa = 0.; - sa2 = 0.; - for(i=fypix-2; i<=lypix+2; ++i) { - ss2 += ysum[i]*ysum[i]/ysig2[i]; - ssa += ysum[i]*ytemp[j][i]/ysig2[i]; - sa2 += ytemp[j][i]*ytemp[j][i]/ysig2[i]; - } - rat=ssa/ss2; - chi2=rat*rat*ss2-2.*rat*ssa+sa2; - if(chi2 < chimin) { - chimin = chi2; - minbin = j; - } - } - -// Now make the second, interpolating pass with the templates - - binl = minbin - 1; - binh = binl + 2; - if(binl < 0) { binl = 0;} - if(binh > 40) { binh = 40;} - ss2 = 0.; - ssa = 0.; - ssba = 0.; - saba = 0.; - sba2 = 0.; - for(i=fypix-2; i<=lypix+2; ++i) { - ss2 += ysum[i]*ysum[i]/ysig2[i]; - ssa += ysum[i]*ytemp[binl][i]/ysig2[i]; - ssba += ysum[i]*(ytemp[binh][i] - ytemp[binl][i])/ysig2[i]; - saba += ytemp[binl][i]*(ytemp[binh][i] - ytemp[binl][i])/ysig2[i]; - sba2 += (ytemp[binh][i] - ytemp[binl][i])*(ytemp[binh][i] - ytemp[binl][i])/ysig2[i]; - } - -// rat is the fraction of the "distance" from template a to template b - - rat=(ssba*ssa-ss2*saba)/(ss2*sba2-ssba*ssba); - if(rat < 0.) {rat=0.;} - if(rat > 1.) {rat=1.0;} - rnorm = (ssa+rat*ssba)/ss2; - -// uncertainty and final correction depend upon charge bin - - yrec = (0.125*binl+9.5+rat*(binh-binl)*0.125-(float)shifty+originy)*ysize - templ.yavg(binq); - sigmay = templ.yrms(binq); - } - -// Do the x-reconstruction next - -// Do not apply templates to 1-pixel clusters (use calibrated offset) - - if(logxpx == 1) { - - if(nxpix ==1) { - delta = templ.dxone(); - sigma = templ.sxone(); - } else { - delta = templ.dxtwo(); - sigma = templ.sxtwo(); - } - xrec = 0.5*(fxpix+lxpix-2*shiftx+2.*originx)*xsize-delta; - if(sigma <= 0.) { - sigmax = 28.9; - } else { - sigmax = sigma; - } - - } else { - -// Apply the template algorithm - -// Modify the template if double pixels are present - - if(nxpix > logxpx) { - i=fxpix; - while(i < lxpix) { - if(xd[i] && !xd[i+1]) { - for(j=0; j<41; ++j) { - -// Sum the adjacent cells and put the average signal in both - - sigavg = (xtemp[j][i] + xtemp[j][i+1])/2.; - xtemp[j][i] = sigavg; - xtemp[j][i+1] = sigavg; - } - i += 2; - } else { - ++i; - } - } - } - -// Define the maximum signal to allow before de-weighting a pixel - - sxthr = 1.1*templ.sxmax(); - -// Make sure that there will be at least two pixels that are not de-weighted - - std::sort(xsort.begin(), xsort.end()); - if (xsort[1] > sxthr) { sxthr = 1.01*xsort[1]; } - -// Evaluate pixel-by-pixel uncertainties (weights) for the templ analysis - - for(i=fxpix-2; i<=lxpix+2; ++i) { - if(i < fxpix || i > lxpix) { - xsig2[i] = templ.s50()*templ.s50(); - } else { - if(xsum[i] < templ.sxparmax()) { - sigi = xsum[i]; - } else { - sigi = templ.sxparmax(); - } - sigi2 = sigi*sigi; sigi3 = sigi2*sigi; sigi4 = sigi3*sigi; - if(i <= 5) { - xsig2[i] = (1.-(templ.xratio()))* - (templ.xparl(0,0)+templ.xparl(0,1)*sigi+templ.xparl(0,2)*sigi2+templ.xparl(0,3)*sigi3+templ.xparl(0,4)*sigi4) - + (templ.xratio())* - (templ.xparh(0,0)+templ.xparh(0,1)*sigi+templ.xparh(0,2)*sigi2+templ.xparh(0,3)*sigi3+templ.xparh(0,4)*sigi4); - } else { - xsig2[i] = (1.-(templ.xratio()))* - (templ.xparl(1,0)+templ.xparl(1,1)*sigi+templ.xparl(1,2)*sigi2+templ.xparl(1,3)*sigi3+templ.xparl(1,4)*sigi4) - + (templ.xratio())* - (templ.xparh(1,0)+templ.xparh(1,1)*sigi+templ.xparh(1,2)*sigi2+templ.xparh(1,3)*sigi3+templ.xparh(1,4)*sigi4); - } - if(xsum[i] > sxthr) {xsig2[i] = 1.e8;} -// if(xd[i] != 0) {xsig2[i] = 1.e8;} - } - } - - -// Find the template bin that minimizes the Chi^2 - - chimin = 1.e15; - minbin = -1; - for(j=0; j<41; ++j) { - ss2 = 0.; - ssa = 0.; - sa2 = 0.; - for(i=fxpix-2; i<=lxpix+2; ++i) { - ss2 += xsum[i]*xsum[i]/xsig2[i]; - ssa += xsum[i]*xtemp[j][i]/xsig2[i]; - sa2 += xtemp[j][i]*xtemp[j][i]/xsig2[i]; - } - rat=ssa/ss2; - chi2=rat*rat*ss2-2.*rat*ssa+sa2; - if(chi2 < chimin) { - chimin = chi2; - minbin = j; - } - } - -// Now make the second, interpolating pass with the templates - - binl = minbin - 1; - binh = binl + 2; - if(binl < 0) { binl = 0;} - if(binh > 40) { binh = 40;} - ss2 = 0.; - ssa = 0.; - ssba = 0.; - saba = 0.; - sba2 = 0.; - for(i=fxpix-2; i<=lxpix+2; ++i) { - ss2 += xsum[i]*xsum[i]/xsig2[i]; - ssa += xsum[i]*xtemp[binl][i]/xsig2[i]; - ssba += xsum[i]*(xtemp[binh][i] - xtemp[binl][i])/xsig2[i]; - saba += xtemp[binl][i]*(xtemp[binh][i] - xtemp[binl][i])/xsig2[i]; - sba2 += (xtemp[binh][i] - xtemp[binl][i])*(xtemp[binh][i] - xtemp[binl][i])/xsig2[i]; - } - -// rat is the fraction of the "distance" from template a to template b - - rat=(ssba*ssa-ss2*saba)/(ss2*sba2-ssba*ssba); - if(rat < 0.) {rat=0.;} - if(rat > 1.) {rat=1.0;} - rnorm = (ssa+rat*ssba)/ss2; - -// uncertainty and final correction depend upon charge bin - - xrec = (0.125*binl+2.5+rat*(binh-binl)*0.125-(float)shiftx+originx)*xsize - templ.xavg(binq); - sigmax = templ.xrms(binq); - } - - return 0; -} // TempRecon2D diff --git a/RecoLocalTracker/SubCollectionProducers/doc/html/index.html b/RecoLocalTracker/SubCollectionProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLocalTracker/SubCollectionProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLocalTracker/SubCollectionProducers/doc/html/overview.html b/RecoLocalTracker/SubCollectionProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLocalTracker/SubCollectionProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLuminosity/LumiDB/doc/html/index.html b/RecoLuminosity/LumiDB/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLuminosity/LumiDB/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLuminosity/LumiDB/doc/html/overview.html b/RecoLuminosity/LumiDB/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLuminosity/LumiDB/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLuminosity/LumiProducer/doc/html/index.html b/RecoLuminosity/LumiProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLuminosity/LumiProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLuminosity/LumiProducer/doc/html/overview.html b/RecoLuminosity/LumiProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLuminosity/LumiProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLuminosity/ROOTSchema/doc/html/index.html b/RecoLuminosity/ROOTSchema/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLuminosity/ROOTSchema/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLuminosity/ROOTSchema/doc/html/overview.html b/RecoLuminosity/ROOTSchema/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLuminosity/ROOTSchema/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoLuminosity/TCPReceiver/doc/html/index.html b/RecoLuminosity/TCPReceiver/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoLuminosity/TCPReceiver/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoLuminosity/TCPReceiver/doc/html/overview.html b/RecoLuminosity/TCPReceiver/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoLuminosity/TCPReceiver/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc index ddfd1d9552e..1167d91bcb7 100644 --- a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc +++ b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.cc @@ -5,8 +5,8 @@ * information,<BR> * starting from a standalone reonstructed muon. * - * $Date: 2006/11/03 17:49:53 $ - * $Revision: 1.18 $ + * $Date: 2006/11/06 18:42:21 $ + * $Revision: 1.19 $ * * \author R.Bellan - INFN TO */ @@ -48,6 +48,9 @@ GlobalMuonProducer::GlobalMuonProducer(const ParameterSet& parameterSet) { // STA Muon Collection Label theSTACollectionLabel = parameterSet.getParameter<InputTag>("MuonCollectionLabel"); + // STA semi-persistent flag + theSTATrajectoryFlag = parameterSet.getParameter<bool>("MuonTrajectoryAvailable"); + // service parameters ParameterSet serviceParameters = parameterSet.getParameter<ParameterSet>("ServiceParameters"); @@ -104,13 +107,11 @@ void GlobalMuonProducer::produce(Event& event, const EventSetup& eventSetup) { Handle<vector<Trajectory> > staMuonsTraj; - try { + if(theSTATrajectoryFlag) { event.getByLabel(theSTACollectionLabel,staMuonsTraj); LogDebug(metname)<<"Track Reconstruction (tracks, trajs) "<< staMuons.product()->size() << " " << staMuonsTraj.product()->size() <<endl; - - } catch (...) { - LogDebug(metname)<<"Track Reconstruction (staTracks)"<<endl; - } + } + theTrackFinder->reconstruct(staMuons, staMuonsTraj, event); diff --git a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h index 2bf7c2efd11..bff4b1f4d97 100644 --- a/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h +++ b/RecoMuon/GlobalMuonProducer/src/GlobalMuonProducer.h @@ -9,8 +9,8 @@ * starting from a standalone reonstructed muon. * * - * $Date: 2006/10/19 18:46:15 $ - * $Revision: 1.5 $ + * $Date: 2006/10/19 20:50:15 $ + * $Revision: 1.6 $ * * \author R.Bellan - INFN TO */ @@ -40,6 +40,8 @@ class GlobalMuonProducer : public edm::EDProducer { /// Seed STA Label edm::InputTag theSTACollectionLabel; + + bool theSTATrajectoryFlag; MuonTrackFinder* theTrackFinder; diff --git a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc index 3db8981c6e9..be3db0f6980 100644 --- a/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc +++ b/RecoMuon/GlobalTrackFinder/src/GlobalMuonTrajectoryBuilder.cc @@ -12,8 +12,8 @@ * in the muon system and the tracker. * * - * $Date: 2006/11/10 17:23:27 $ - * $Revision: 1.55 $ + * $Date: 2006/11/22 17:54:34 $ + * $Revision: 1.58 $ * * Authors : * N. Neumeister Purdue University @@ -41,6 +41,7 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "Utilities/Timing/interface/TimingReport.h" #include "CommonTools/Statistics/interface/ChiSquaredProbability.h" @@ -95,12 +96,8 @@ GlobalMuonTrajectoryBuilder::GlobalMuonTrajectoryBuilder(const edm::ParameterSet theLayerMeasurements = new MuonDetLayerMeasurements(); - tkSeedFlag = false; + tkSeedFlag = par.getParameter<bool>("RegionalSeedFlag"); theTkTrackLabel = par.getParameter<string>("TkTrackCollectionLabel"); - if (theTkTrackLabel == "") { - LogInfo(metname) << "TkTrackCollectionLabel unspecified" ; - tkSeedFlag = true; - } theTrackConverter = new MuonTrackConverter(par,theService); theTrackMatcher = new GlobalMuonTrackMatcher(par,theService); @@ -118,7 +115,7 @@ GlobalMuonTrajectoryBuilder::GlobalMuonTrajectoryBuilder(const edm::ParameterSet theVertexErr = GlobalError(0.0001,0.0,0.0001,0.0,0.0,28.09); convert = true; - tkTrajsAvailable = false; + tkTrajsAvailable = par.getParameter<bool>("TkTrajectoryAvailable"); first = true; std::string ckfBuilderName = par.getParameter<std::string>("TkTrackBuilder"); @@ -155,18 +152,12 @@ void GlobalMuonTrajectoryBuilder::setEvent(const edm::Event& event) { << " tracker Tracks with label "<< theTkTrackLabel; } edm::Handle<std::vector<Trajectory> > handleTrackerTrajs; - try - { - event.getByLabel(theTkTrackLabel,handleTrackerTrajs); - tkTrajsAvailable = true; - allTrackerTrajs = &*handleTrackerTrajs; - if( first ) LogInfo(metname) << "Tk Trajectories Found! "; - } - catch (...) - { - if( first ) LogInfo(metname) << "No Tk Trajectories Found! "; - tkTrajsAvailable = false; - } + + if(tkTrajsAvailable) { + event.getByLabel(theTkTrackLabel,handleTrackerTrajs); + allTrackerTrajs = &*handleTrackerTrajs; + if( first ) LogInfo(metname) << "Tk Trajectories Found! "; + } theLayerMeasurements->setEvent(event); theTkSeedGenerator->setEvent(event); @@ -184,36 +175,40 @@ void GlobalMuonTrajectoryBuilder::setEvent(const edm::Event& event) { // reconstruct trajectories // MuonCandidate::CandidateContainer GlobalMuonTrajectoryBuilder::trajectories(const TrackCand& staCandIn) { - + std::string metname = "GLBTrajBuilder::trajectories"; + bool timing = false; + TimeMe time_GLBBuilder_tot(metname,timing); + // cut on muons with low momenta if ( (staCandIn).second->pt() < thePtCut || (staCandIn).second->innerMomentum().Rho() < thePtCut || (staCandIn).second->innerMomentum().R() < 2.5 ) return CandidateContainer(); // convert the STA track into a Trajectory if Trajectory not already present TrackCand staCand = TrackCand(staCandIn); addTraj(staCand); - + vector<TrackCand> regionalTkTracks = makeTkCandCollection(staCand); LogInfo(metname) << "Found " << regionalTkTracks.size() << " tracks within region of interest"; // match tracker tracks to muon track vector<TrackCand> trackerTracks = theTrackMatcher->match(staCand, regionalTkTracks); LogInfo(metname) << "Found " << trackerTracks.size() << " matching tracker tracks within region of interest"; - + // build a combined tracker-muon MuonCandidate CandidateContainer result = build(staCand, trackerTracks); LogInfo(metname) << "Found "<< result.size() << " GLBMuons from one STACand"; - + // free memory - if ( staCand.first != 0) { - if ( staCand.first ) delete staCand.first; - } - for ( vector<TrackCand>::const_iterator is = regionalTkTracks.begin(); is != regionalTkTracks.end(); ++is) { - if ( (*is).first ) delete (*is).first; - } + if ( staCandIn.first == 0) delete staCand.first; + if ( !tkTrajsAvailable ) { + for ( vector<TrackCand>::const_iterator is = regionalTkTracks.begin(); is != regionalTkTracks.end(); ++is) { + delete (*is).first; + } + } + return result; - + } @@ -330,7 +325,7 @@ MuonCandidate::CandidateContainer GlobalMuonTrajectoryBuilder::build(const Track // CandidateContainer tkTrajs; for (vector<TrackCand>::const_iterator tkt = tkMatchedTracks.begin(); tkt != tkMatchedTracks.end(); tkt++) { - if ((*tkt).first != 0) { + if ((*tkt).first != 0 && (*tkt).first->isValid()) { MuonCandidate* muonCand = new MuonCandidate(new Trajectory(*(*tkt).first),staCand.second,(*tkt).second); tkTrajs.push_back(muonCand); } @@ -890,8 +885,8 @@ vector<GlobalMuonTrajectoryBuilder::TrackCand> GlobalMuonTrajectoryBuilder::make TrackCand tkCand = TrackCand(0,tkTrackRef); if ( tkTrajsAvailable ) { std::vector<Trajectory>::const_iterator it = allTrackerTrajs->begin()+position; - Trajectory trajRef = *it; - if( trajRef.isValid() ) tkCand = TrackCand(&trajRef,tkTrackRef); + const Trajectory* trajRef(&*it); + if( trajRef->isValid() ) tkCand.first = trajRef; } tkTrackCands.push_back(tkCand); } @@ -908,8 +903,7 @@ vector<GlobalMuonTrajectoryBuilder::TrackCand> GlobalMuonTrajectoryBuilder::make void GlobalMuonTrajectoryBuilder::addTraj(TrackCand& candIn) const { std::string metname = "GLBTrajBuilder::addTraj"; - if( candIn.first == 0 || !(candIn.first->isValid()) ) { - if( candIn.first ) delete candIn.first; + if( candIn.first == 0 ) { LogDebug(metname) << "Making new trajectory from TrackRef"; TC staTrajs = theTrackConverter->convert(candIn.second); candIn = ( !staTrajs.empty() ) ? TrackCand(new Trajectory(staTrajs.front()),candIn.second) : TrackCand(0,candIn.second); diff --git a/RecoMuon/GlobalTrackingTools/doc/html/index.html b/RecoMuon/GlobalTrackingTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoMuon/GlobalTrackingTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoMuon/GlobalTrackingTools/doc/html/overview.html b/RecoMuon/GlobalTrackingTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoMuon/GlobalTrackingTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoMuon/L3TrackFinder/doc/html/index.html b/RecoMuon/L3TrackFinder/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoMuon/L3TrackFinder/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoMuon/L3TrackFinder/doc/html/overview.html b/RecoMuon/L3TrackFinder/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoMuon/L3TrackFinder/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoMuon/MuonIdentification/BuildFile b/RecoMuon/MuonIdentification/BuildFile deleted file mode 100644 index 58e3d43c915..00000000000 --- a/RecoMuon/MuonIdentification/BuildFile +++ /dev/null @@ -1,22 +0,0 @@ -# -*-SH-*- -<flags SEAL_PLUGIN_NAME="RecoMuonMuonIdentification"> -<use name=DataFormats/Common> -<use name=DataFormats/TrackReco> -<use name=DataFormats/MuonReco> -<use name=TrackingTools/TrackAssociator> -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=boost> - -<export> - <lib name=TrackingToolsTrackAssociator> - <use name=DataFormats/TrackReco> - <use name=DataFormats/MuonReco> - <use name=TrackingTools/TrackAssociator> - <use name=FWCore/Framework> - <use name=FWCore/ParameterSet> -</export> - -# add debug symbols -# <Flags CXXFLAGS=-g> diff --git a/RecoMuon/MuonIdentification/doc/html/index.html b/RecoMuon/MuonIdentification/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoMuon/MuonIdentification/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoMuon/MuonIdentification/doc/html/overview.html b/RecoMuon/MuonIdentification/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoMuon/MuonIdentification/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoMuon/MuonIdentification/interface/MuonIdProducer.h b/RecoMuon/MuonIdentification/interface/MuonIdProducer.h deleted file mode 100644 index 2133fa90858..00000000000 --- a/RecoMuon/MuonIdentification/interface/MuonIdProducer.h +++ /dev/null @@ -1,70 +0,0 @@ -// -*- C++ -*- -// -// Package: MuonIdentification -// Class: MuonIdProducer -// -/* - - Description: Create a new collection of muons filling muon ID information. - reco::TrackCollection or reco::MuonCollection can be used as input. - - Implementation: - -*/ -// -// Original Author: Dmytro Kovalskyi -// $Id: MuonIdProducer.h,v 1.2 2006/09/18 13:03:45 dmytro Exp $ -// -// - - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/MuonReco/interface/Muon.h" -#include "DataFormats/MuonReco/interface/MuonWithMatchInfo.h" - -#include "TrackingTools/TrackAssociator/interface/TrackAssociator.h" -#include "TrackingTools/TrackAssociator/interface/TimerStack.h" - -class MuonIdProducer : public edm::EDProducer { - public: - enum InputMode {TrackCollection, MuonCollection}; - explicit MuonIdProducer(const edm::ParameterSet&); - - ~MuonIdProducer(); - - virtual void produce(edm::Event&, const edm::EventSetup&); - - private: - void fillMuonId(edm::Event&, const edm::EventSetup&, - reco::MuonWithMatchInfo& aMuon); - void init(edm::Event&, const edm::EventSetup&); - reco::MuonWithMatchInfo* getNewMuon(edm::Event& iEvent, - const edm::EventSetup& iSetup); - - TrackAssociator trackAssociator_; - bool useEcal_; - bool useHcal_; - bool useMuon_; - std::string inputCollectionType_; - std::string outputCollectionName_; - std::pair<std::string,std::string> inputCollectionLabels_; - InputMode mode_; - double minPt_; - double maxRfromIP_; - edm::Handle<reco::TrackCollection> trackCollectionHandle_; - reco::TrackCollection::const_iterator trackCollectionIter_; - edm::Handle<reco::MuonCollection> muonCollectionHandle_; - reco::MuonCollection::const_iterator muonCollectionIter_; - int index_; -}; diff --git a/RecoMuon/MuonIdentification/src/MuonIdProducer.cc b/RecoMuon/MuonIdentification/src/MuonIdProducer.cc deleted file mode 100644 index 947a88bf999..00000000000 --- a/RecoMuon/MuonIdentification/src/MuonIdProducer.cc +++ /dev/null @@ -1,237 +0,0 @@ -// -*- C++ -*- -// -// Package: MuonIdentification -// Class: MuonIdProducer -// -/* - - Description: Create a new collection of muons filling muon ID information. - reco::TrackCollection or reco::MuonCollection can be used as input. - - Implementation: - -*/ -// -// Original Author: Dmytro Kovalskyi -// $Id: MuonIdProducer.cc,v 1.3 2006/09/27 12:06:04 dmytro Exp $ -// -// - - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/MuonReco/interface/Muon.h" -#include "DataFormats/MuonReco/interface/MuonWithMatchInfo.h" - -#include "TrackingTools/TrackAssociator/interface/TrackAssociator.h" -#include "TrackingTools/TrackAssociator/interface/TimerStack.h" - -#include <boost/regex.hpp> -#include "RecoMuon/MuonIdentification/interface/MuonIdProducer.h" - -MuonIdProducer::MuonIdProducer(const edm::ParameterSet& iConfig) -{ - outputCollectionName_ = iConfig.getParameter<std::string>("outputCollection"); - produces<reco::MuonWithMatchInfoCollection>(outputCollectionName_); - - useEcal_ = iConfig.getParameter<bool>("useEcal"); - useHcal_ = iConfig.getParameter<bool>("useHcal"); - useMuon_ = iConfig.getParameter<bool>("useMuon"); - minPt_ = iConfig.getParameter<double>("minPt"); - maxRfromIP_ = iConfig.getParameter<double>("maxDistanceFromIP"); - - // Fill data labels - std::vector<std::string> labels = iConfig.getParameter<std::vector<std::string> >("labels"); - boost::regex regExp1 ("([^\\s,]+)[\\s,]+([^\\s,]+)$"); - boost::regex regExp2 ("([^\\s,]+)[\\s,]+([^\\s,]+)[\\s,]+([^\\s,]+)$"); - boost::smatch matches; - - for(std::vector<std::string>::const_iterator label = labels.begin(); label != labels.end(); label++) { - if (boost::regex_match(*label,matches,regExp1)) - trackAssociator_.addDataLabels(matches[1],matches[2]); - else if (boost::regex_match(*label,matches,regExp2)) - trackAssociator_.addDataLabels(matches[1],matches[2],matches[3]); - else - edm::LogError("ConfigurationError") << "Failed to parse label:\n" << *label << "Skipped.\n"; - } - - // Determine input collection - std::string inputCollection = iConfig.getParameter<std::string>("inputCollection"); - if (boost::regex_match(inputCollection,matches,regExp1)) - { - inputCollectionType_ = matches[1]; - inputCollectionLabels_ = std::pair<std::string,std::string>(matches[2],""); - } - else if (boost::regex_match(inputCollection,matches,regExp2)) - { - inputCollectionType_ = matches[1]; - inputCollectionLabels_ = std::pair<std::string,std::string>(matches[2],matches[3]); - } - else - throw cms::Exception("FatalError") << "Failed to parse inputCollection:\n" << inputCollection << "\n"; - - if (inputCollectionType_ == "TrackCollection") - mode_ = TrackCollection; - else if (inputCollectionType_ == "MuonCollection") - mode_ = MuonCollection; - else - throw cms::Exception("FatalError") << "Unkown input type: " << inputCollectionType_ << "\n"; - trackAssociator_.useDefaultPropagator(); -} - - -MuonIdProducer::~MuonIdProducer() -{ - TimingReport::current()->dump(std::cout); -} - -void MuonIdProducer::init(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - switch (mode_) { - case TrackCollection: - iEvent.getByLabel(inputCollectionLabels_.first, inputCollectionLabels_.second, trackCollectionHandle_); - if (! trackCollectionHandle_.isValid()) throw cms::Exception("FatalError") << - "Cannot find input list in Event: " << inputCollectionType_ << " " << - inputCollectionLabels_.first << " " << inputCollectionLabels_.second << "\n"; - trackCollectionIter_ = trackCollectionHandle_->begin(); - index_ = 0; - break; - case MuonCollection: - iEvent.getByLabel(inputCollectionLabels_.first, inputCollectionLabels_.second, muonCollectionHandle_); - if (! muonCollectionHandle_.isValid()) throw cms::Exception("FatalError") << - "Cannot find input list in Event: " << inputCollectionType_ << " " << - inputCollectionLabels_.first << " " << inputCollectionLabels_.second << "\n"; - muonCollectionIter_ = muonCollectionHandle_->begin(); - break; - } -} - -reco::MuonWithMatchInfo* MuonIdProducer::getNewMuon(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - switch (mode_) { - case TrackCollection: - if( trackCollectionIter_ != trackCollectionHandle_->end()) - { - reco::MuonWithMatchInfo* aMuon = new reco::MuonWithMatchInfo; - aMuon->setTrack(reco::TrackRef(trackCollectionHandle_,index_)); - index_++; - trackCollectionIter_++; - return aMuon; - } - else return 0; - break; - case MuonCollection: - if( muonCollectionIter_ != muonCollectionHandle_->end()) - { - muonCollectionIter_++; - // return new reco::MuonWithMatchInfo(*muonCollectionIter_); - } - else return 0; - break; - } - return 0; -} - -void MuonIdProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - - std::auto_ptr<reco::MuonWithMatchInfoCollection> outputMuons(new reco::MuonWithMatchInfoCollection); - - TimerStack timers; - timers.push("MuonIdProducer::produce::init"); - init(iEvent, iSetup); - timers.clean_stack(); - - - - // loop over input collection - while(reco::MuonWithMatchInfo* aMuon = getNewMuon(iEvent, iSetup)) - { - LogTrace("MuonIdProducer::produce") << "-----------------" << "\n"; - LogTrace("MuonIdProducer::produce") << "(Pt: " << aMuon->track().get()->pt() << " GeV" <<"\n"; - LogTrace("MuonIdProducer::produce") << "Distance from IP: " << - aMuon->track().get()->vertex().rho() << " cm" <<"\n"; - - if (aMuon->track().get()->pt() < minPt_) - { LogTrace("MuonIdProducer::produce") << "Skipped low Pt track (Pt: " << aMuon->track().get()->pt() << " GeV)\n";} - else if (aMuon->track().get()->vertex().rho() > maxRfromIP_) - {LogTrace("MuonIdProducer::produce") << "Skipped track originated away from IP: " << - aMuon->track().get()->vertex().rho() << " cm\n"; - } - else { - fillMuonId(iEvent, iSetup, *aMuon); - outputMuons->push_back(*aMuon); - } - delete aMuon; - } - iEvent.put(outputMuons,outputCollectionName_); -} - -void MuonIdProducer::fillMuonId(edm::Event& iEvent, const edm::EventSetup& iSetup, - reco::MuonWithMatchInfo& aMuon) -{ - TrackAssociator::AssociatorParameters parameters; - parameters.useEcal = useEcal_ ; - parameters.useHcal = useHcal_ ; - parameters.useMuon = useMuon_ ; - parameters.dRHcal = 0.4; - parameters.dRHcal = 0.4; - - TrackDetMatchInfo info = trackAssociator_.associate(iEvent, iSetup, - trackAssociator_.getFreeTrajectoryState(iSetup, *(aMuon.track().get()) ), - parameters); - reco::MuonWithMatchInfo::MuonEnergy muonEnergy; - muonEnergy.had = info.hcalEnergy(); - muonEnergy.em = info.ecalEnergy(); - muonEnergy.ho = info.outerHcalEnergy(); - aMuon.setCalEnergy( muonEnergy ); - - /* reco::MuonWithMatchInfo::MuonIsolation muonIsolation; - muonIsolation.hCalEt01 = 0; - muonIsolation.eCalEt01 = 0; - muonIsolation.hCalEt04 = info.hcalConeEnergy(); - muonIsolation.eCalEt04 = info.ecalConeEnergy(); - muonIsolation.hCalEt07 = 0; - muonIsolation.eCalEt07 = 0; - muonIsolation.trackSumPt01 = 0; - muonIsolation.trackSumPt04 = 0; - muonIsolation.trackSumPt07 = 0; - aMuon.setIsolation( muonIsolation );*/ - - std::vector<reco::MuonWithMatchInfo::MuonMatch> muonMatches; - for( std::vector<MuonSegmentMatch>::const_iterator segment=info.segments.begin(); - segment!=info.segments.end(); segment++ ) - { - reco::MuonWithMatchInfo::MuonMatch aMatch; - aMatch.dX = segment->segmentLocalPosition.x()-segment->trajectoryLocalPosition.x(); - aMatch.dY = segment->segmentLocalPosition.y()-segment->trajectoryLocalPosition.y(); - aMatch.dXErr = sqrt(segment->trajectoryLocalErrorXX+segment->segmentLocalErrorXX); - aMatch.dYErr = sqrt(segment->trajectoryLocalErrorYY+segment->segmentLocalErrorYY); - aMatch.dXdZ = 0; - aMatch.dYdZ = 0; - aMatch.dXdZErr = 0; - aMatch.dYdZErr = 0; - muonMatches.push_back(aMatch); - LogTrace("MuonIdProducer::fillMuonId")<< "Muon match (dX,dY,dXErr,dYErr): " << aMatch.dX << " \t" << aMatch.dY - << " \t" << aMatch.dXErr << " \t" << aMatch.dYErr << "\n"; - } - aMuon.setMatches(muonMatches); - LogTrace("MuonIdProducer::fillMuonId") << "number of muon matches: " << aMuon.matches().size() << "\n"; -} - -//define this as a plug-in -DEFINE_FWK_MODULE(MuonIdProducer); diff --git a/RecoMuon/MuonIdentification/test/TestMuonIdProducer.cxx b/RecoMuon/MuonIdentification/test/TestMuonIdProducer.cxx deleted file mode 100644 index 83f6db2c83c..00000000000 --- a/RecoMuon/MuonIdentification/test/TestMuonIdProducer.cxx +++ /dev/null @@ -1,61 +0,0 @@ -{ - gStyle->SetPalette(1,0); - TFile f("muons.root"); - - c3 = new TCanvas("c3","HCAL energy deposition"); - // Events->Draw("muons.energy().had>>h3(100,0,10)","fabs(muons.eta())<1"); - Events->Draw("muons.calEnergy().had>>h3(100,0,10)"); - - c4 = new TCanvas("c4","ECAL energy deposition (barrel)"); - Events->Draw("muons.calEnergy().em>>h4(100,0,2)","abs(muons.track().get().eta())<1"); - - gROOT->LoadMacro("resolution_fit.cxx"); - c5 = new TCanvas("c5","Muon DT segments",400,800); - c5->Divide(2,4); - c5->cd(1); - Events->Draw("muons.dX(0)>>hh1(100,-50,50)","muons.numberOfMatches()>0"); - resolution_fit(hh1,"dX[0]"); - c5->cd(2); - Events->Draw("muons.dY(0)>>hh2(100,-50,50)","muons.numberOfMatches()>0"); - resolution_fit(hh2,"dY[0]"); - c5->cd(3); - Events->Draw("muons.dX(1)>>hh3(100,-50,50)","muons.numberOfMatches()>1"); - resolution_fit(hh3,"dX[1]"); - c5->cd(4); - Events->Draw("muons.dY(1)>>hh4(100,-50,50)","muons.numberOfMatches()>1"); - resolution_fit(hh4,"dY[1]"); - c5->cd(5); - Events->Draw("muons.dX(2)>>hh5(100,-50,50)","muons.numberOfMatches()>2"); - resolution_fit(hh5,"dX[2]"); - c5->cd(6); - Events->Draw("muons.dY(2)>>hh6(100,-50,50)","muons.numberOfMatches()>2"); - resolution_fit(hh6,"dY[2]"); - c5->cd(7); - Events->Draw("muons.dX(3)>>hh7(100,-50,50)","muons.numberOfMatches()>3"); - resolution_fit(hh7,"dX[3]"); - - c6 = new TCanvas("c6","Muon pulls",400,800); - c6->Divide(2,4); - c6->cd(1); - Events->Draw("muons.dX(0)/muons.dXErr(0)>>hp1(100,-10,10)","muons.numberOfMatches()>0"); - resolution_fit(hp1,"pull X[0]"); - c6->cd(2); - Events->Draw("muons.dY(0)/muons.dYErr(0)>>hp2(100,-10,10)","muons.numberOfMatches()>0"); - resolution_fit(hp2,"pull Y[0]"); - c6->cd(3); - Events->Draw("muons.dX(1)/muons.dXErr(1)>>hp3(100,-10,10)","muons.numberOfMatches()>1"); - resolution_fit(hp3,"pull X[1]"); - c6->cd(4); - Events->Draw("muons.dY(1)/muons.dYErr(1)>>hp4(100,-10,10)","muons.numberOfMatches()>1"); - resolution_fit(hp4,"pull Y[1]"); - c6->cd(5); - Events->Draw("muons.dX(2)/muons.dXErr(2)>>hp5(100,-10,10)","muons.numberOfMatches()>2"); - resolution_fit(hp5,"pull X[2]"); - c6->cd(6); - Events->Draw("muons.dY(2)/muons.dYErr(2)>>hp6(100,-10,10)","muons.numberOfMatches()>2"); - resolution_fit(hp6,"pull Y[2]"); - c6->cd(7); - Events->Draw("muons.dX(3)/muons.dXErr(3)>>hp7(100,-10,10)","muons.numberOfMatches()>3"); - resolution_fit(hp7,"pull X[3]"); - -} diff --git a/RecoMuon/MuonIdentification/test/resolution_fit.cxx b/RecoMuon/MuonIdentification/test/resolution_fit.cxx deleted file mode 100644 index 3733fb70f3f..00000000000 --- a/RecoMuon/MuonIdentification/test/resolution_fit.cxx +++ /dev/null @@ -1,23 +0,0 @@ -RooPlot* resolution_fit(TH1* histo, TString title = "") -{ - RooRealVar x("x","x",0); - RooRealVar mean1("mean1","mean1",-100,100); - RooRealVar mean2("mean2","mean2",-100,100); - RooRealVar sigma1("sigma1","sigma1",0.001,100); - RooRealVar sigma2("sigma2","sigma2",1,100); - RooGaussian pdf1("gaus1","gaus1",x,mean1,sigma1); - RooGaussian pdf2("gaus2","gaus2",x,mean2,sigma2); - RooRealVar frac("frac","frac",0,1); - RooAddPdf pdf("pdf","pdf",pdf1,pdf2,frac); - RooDataHist data("data","data",x,histo); - pdf.fitTo(data,RooFit::Minos(kFALSE)); - frame=x.frame(); - data.plotOn(frame); - data.statOn(frame,What("N")); - pdf.paramOn(frame,Format("NEA",AutoPrecision(2))); - pdf.plotOn(frame); - frame->SetTitle(title); - frame->Draw(); - return frame; -} - diff --git a/RecoMuon/MuonIdentification/test/rootlogon.C b/RecoMuon/MuonIdentification/test/rootlogon.C deleted file mode 100644 index 73d7061778f..00000000000 --- a/RecoMuon/MuonIdentification/test/rootlogon.C +++ /dev/null @@ -1,10 +0,0 @@ -{ - gROOT->SetStyle("Plain"); - cout << "loading..." <<endl; - gSystem->Load("libCintex"); - Cintex::Enable(); - gSystem->Load("libFWCoreFWLite"); - AutoLibraryLoader::enable(); - gSystem->Load("libRooFit.so"); - using namespace RooFit; -} diff --git a/RecoMuon/MuonIsolationProducers/doc/html/index.html b/RecoMuon/MuonIsolationProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoMuon/MuonIsolationProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoMuon/MuonIsolationProducers/doc/html/overview.html b/RecoMuon/MuonIsolationProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoMuon/MuonIsolationProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h b/RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h index 794fa6ef1c2..5eed319b5ca 100644 --- a/RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h +++ b/RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h @@ -4,8 +4,8 @@ /** \class MuonTrajectoryCleaner * No description available. * - * $Date: 2006/07/25 12:22:29 $ - * $Revision: 1.4 $ + * $Date: 2006/08/29 23:45:05 $ + * $Revision: 1.5 $ * \author R. Bellan - INFN Torino */ @@ -30,8 +30,8 @@ class MuonTrajectoryCleaner { /// Clean the trajectories container, erasing the (worst) clone trajectory void clean(TrajectoryContainer &muonTrajectories); //used by reference... - /// Check trajectories that very close to each other for ghosts, and erase - void checkGhosts(CandidateContainer& muonTrajectories); //used by reference... + /// Clean the candidates container, erasing the (worst) clone trajectory + void clean(CandidateContainer &muonTrajectories); //used by reference... protected: diff --git a/RecoMuon/TrackingTools/src/MuonTrackFinder.cc b/RecoMuon/TrackingTools/src/MuonTrackFinder.cc index 8127127329d..39f9fc2a5e7 100644 --- a/RecoMuon/TrackingTools/src/MuonTrackFinder.cc +++ b/RecoMuon/TrackingTools/src/MuonTrackFinder.cc @@ -1,8 +1,8 @@ /** \class MuonTrackFinder * Concrete Track finder for the Muon Reco * - * $Date: 2006/11/06 18:42:22 $ - * $Revision: 1.27 $ + * $Date: 2006/11/07 17:04:34 $ + * $Revision: 1.28 $ * \author R. Bellan - INFN Torino */ @@ -149,8 +149,7 @@ void MuonTrackFinder::reconstruct(const Handle<reco::TrackCollection>& staTracks } // clean the cloned candidates - //theTrajCleaner->clean(muonCandidates); - theTrajCleaner->checkGhosts(muonCandidates); + theTrajCleaner->clean(muonCandidates); // convert the trajectories into staTracks and load them into the event LogDebug(metname)<<"Load Muon Candidates into the event"<<endl; diff --git a/RecoMuon/TrackingTools/src/MuonTrackReFitter.cc b/RecoMuon/TrackingTools/src/MuonTrackReFitter.cc index 76f9b963417..3d260c6b5cc 100644 --- a/RecoMuon/TrackingTools/src/MuonTrackReFitter.cc +++ b/RecoMuon/TrackingTools/src/MuonTrackReFitter.cc @@ -6,8 +6,8 @@ * and a Kalman backward smoother. * * - * $Date: 2006/09/01 15:47:05 $ - * $Revision: 1.6 $ + * $Date: 2006/11/28 14:30:31 $ + * $Revision: 1.10 $ * * \author N. Neumeister Purdue University * \author C. Liu Purdue University @@ -150,26 +150,37 @@ vector<Trajectory> MuonTrackReFitter::fit(const TrajectorySeed& seed, if ( hits.front()->isValid() ) { // update - currTsos = theUpdator->update(predTsos, *hits.front()); + TransientTrackingRecHit::RecHitPointer preciseHit = hits.front()->clone(predTsos); + currTsos = theUpdator->update(predTsos, *preciseHit); myTraj.push(TM(predTsos, currTsos, hits.front(), theEstimator->estimate(predTsos, *hits.front()).second)); } else { currTsos = predTsos; myTraj.push(TM(predTsos, hits.front())); } + //const TransientTrackingRecHit& firsthit = *hits.front(); for ( ConstRecHitContainer::const_iterator ihit = hits.begin() + 1; ihit != hits.end(); ++ihit ) { + if ((**ihit).isValid() == false && (**ihit).det() == 0) continue; + predTsos = thePropagator1->propagate(currTsos, (**ihit).det()->surface()); if ( !predTsos.isValid() ) { //return vector<Trajectory>(); } else if ( (**ihit).isValid() ) { // update - currTsos = theUpdator->update(predTsos, **ihit); - myTraj.push(TM(predTsos, currTsos, *ihit, - theEstimator->estimate(predTsos, **ihit).second)); + TransientTrackingRecHit::RecHitPointer preciseHit = (**ihit).clone(predTsos); + + if (preciseHit->isValid() == false) { + currTsos = predTsos; + myTraj.push(TM(predTsos, *ihit)); + } else { + currTsos = theUpdator->update(predTsos, *preciseHit); + myTraj.push(TM(predTsos, currTsos, preciseHit, + theEstimator->estimate(predTsos, *preciseHit).second)); + } } else { currTsos = predTsos; myTraj.push(TM(predTsos, *ihit)); @@ -200,7 +211,7 @@ vector<Trajectory> MuonTrackReFitter::smooth(const vector<Trajectory>& tc) const // -// +// smooth trajectory // vector<Trajectory> MuonTrackReFitter::smooth(const Trajectory& t) const { @@ -224,20 +235,19 @@ vector<Trajectory> MuonTrackReFitter::smooth(const Trajectory& t) const { // first smoothed TM is last fitted if ( avtm.back().recHit()->isValid() ) { currTsos = theUpdator->update(predTsos, (*avtm.back().recHit())); - myTraj.push(TM(avtm.back().forwardPredictedState(), + myTraj.push(TM(avtm.back().forwardPredictedState(), predTsos, - avtm.back().updatedState(), + avtm.back().updatedState(), avtm.back().recHit(), - avtm.back().estimate(), - avtm.back().layer()), - avtm.back().estimate()); + avtm.back().estimate()//, + /*avtm.back().layer()*/), + avtm.back().estimate()); } else { currTsos = predTsos; myTraj.push(TM(avtm.back().forwardPredictedState(), - avtm.back().recHit(), - avtm.back().estimate(), - avtm.back().layer())); + avtm.back().recHit()//, + /*avtm.back().layer()*/)); } @@ -264,8 +274,8 @@ vector<Trajectory> MuonTrackReFitter::smooth(const Trajectory& t) const { predTsos, smooTsos, (*itm).recHit(), - theEstimator->estimate(combTsos, (*(*itm).recHit())).second, - (*itm).layer()), + theEstimator->estimate(combTsos, (*(*itm).recHit())).second//, + /*(*itm).layer()*/), (*itm).estimate()); } else { currTsos = predTsos; @@ -276,9 +286,8 @@ vector<Trajectory> MuonTrackReFitter::smooth(const Trajectory& t) const { myTraj.push(TM((*itm).forwardPredictedState(), predTsos, combTsos, - (*itm).recHit(), - (*itm).estimate(), - (*itm).layer())); + (*itm).recHit()//, + /*(*itm).layer()*/)); } } @@ -294,17 +303,18 @@ vector<Trajectory> MuonTrackReFitter::smooth(const Trajectory& t) const { predTsos, currTsos, avtm.front().recHit(), - theEstimator->estimate(predTsos, (*avtm.front().recHit())).second, - avtm.front().layer()), - avtm.front().estimate()); + theEstimator->estimate(predTsos, (*avtm.front().recHit())).second//, + /*avtm.front().layer()*/), + avtm.front().estimate()); } else { myTraj.push(TM(avtm.front().forwardPredictedState(), - avtm.front().recHit(), - avtm.front().estimate(), - avtm.front().layer())); + avtm.front().recHit()//, + /*avtm.front().layer()*/)); } - return vector<Trajectory>(1, myTraj); + if (myTraj.foundHits() > 3) + return vector<Trajectory>(1, myTraj); + else return vector<Trajectory>(); } diff --git a/RecoMuon/TrackingTools/src/MuonTrajectoryCleaner.cc b/RecoMuon/TrackingTools/src/MuonTrajectoryCleaner.cc index 5e9075b8d39..61d39990264 100644 --- a/RecoMuon/TrackingTools/src/MuonTrajectoryCleaner.cc +++ b/RecoMuon/TrackingTools/src/MuonTrajectoryCleaner.cc @@ -1,8 +1,8 @@ /** * A selector for muon tracks * - * $Date: 2006/08/30 10:12:55 $ - * $Revision: 1.8 $ + * $Date: 2006/09/21 15:48:31 $ + * $Revision: 1.9 $ * \author R.Bellan - INFN Torino */ #include "RecoMuon/TrackingTools/interface/MuonTrajectoryCleaner.h" @@ -90,44 +90,78 @@ void MuonTrajectoryCleaner::clean(TrajectoryContainer& trajC){ } // -// check for ghosts +// clean CandidateContainer // -void MuonTrajectoryCleaner::checkGhosts(CandidateContainer& candidates){ +void MuonTrajectoryCleaner::clean(CandidateContainer& candC){ + const std::string metname = "Muon|RecoMuon|MuonTrajectoryCleaner"; + + LogDebug(metname) << "Muon Trajectory Cleaner called" << endl; - if ( candidates.size() < 2 ) return; + if ( candC.size() < 2 ) return; + + CandidateContainer::iterator iter, jter; + Trajectory::DataContainer::const_iterator m1, m2; const float deltaEta = 0.01; const float deltaPhi = 0.01; const float deltaPt = 1.0; + + LogDebug(metname) << "Number of muon candidates in the container: " <<candC.size()<< endl; - CandidateContainer::iterator e = candidates.end(); - CandidateContainer::iterator i1; - CandidateContainer::iterator i2; + int i(0), j(0); + int match(0); + bool directionMatch = false; - for ( i1 = candidates.begin(); i1 != e; ++i1 ) { - if ( *i1 == 0 ) continue; - TrajectoryStateOnSurface innerTSOS; + // CAVEAT: vector<bool> is not a vector, its elements are not addressable! + // This is fine as long as only operator [] is used as in this case. + // cf. par 16.3.11 + vector<bool> mask(candC.size(),true); + + CandidateContainer result; - if ((*i1)->trajectory()->direction() == alongMomentum) { - innerTSOS = (*i1)->trajectory()->firstMeasurement().updatedState(); + for ( iter = candC.begin(); iter != candC.end(); iter++ ) { + if ( !mask[i] ) { i++; continue; } + const Trajectory::DataContainer& meas1 = (*iter)->trajectory()->measurements(); + j = i+1; + bool skipnext=false; + + TrajectoryStateOnSurface innerTSOS; + + if ((*iter)->trajectory()->direction() == alongMomentum) { + innerTSOS = (*iter)->trajectory()->firstMeasurement().updatedState(); } - else if ((*i1)->trajectory()->direction() == oppositeToMomentum) { - innerTSOS = (*i1)->trajectory()->lastMeasurement().updatedState(); + else if ((*iter)->trajectory()->direction() == oppositeToMomentum) { + innerTSOS = (*iter)->trajectory()->lastMeasurement().updatedState(); } if ( !(innerTSOS.isValid()) ) continue; float pt1 = innerTSOS.globalMomentum().perp(); float eta1 = innerTSOS.globalMomentum().eta(); float phi1 = innerTSOS.globalMomentum().phi(); - for ( i2 = i1+1; i2 != e; ++i2 ) { - if ( *i2 == 0 || *i1 == 0 ) continue; - TrajectoryStateOnSurface innerTSOS2; - if ((*i2)->trajectory()->direction() == alongMomentum) { - innerTSOS2 = (*i2)->trajectory()->firstMeasurement().updatedState(); + for ( jter = iter+1; jter != candC.end(); jter++ ) { + if ( !mask[j] ) { j++; continue; } + const Trajectory::DataContainer& meas2 = (*jter)->trajectory()->measurements(); + match = 0; + for ( m1 = meas1.begin(); m1 != meas1.end(); m1++ ) { + for ( m2 = meas2.begin(); m2 != meas2.end(); m2++ ) { + if ( (*m1).recHit()->isValid() && (*m2).recHit()->isValid() ) + if ( ( (*m1).recHit()->globalPosition() - (*m2).recHit()->globalPosition()).mag()< 10e-5 ) match++; + } + } + + LogDebug(metname) + << " MuonTrajSelector: candC " << i << " chi2/nRH = " + << (*iter)->trajectory()->chiSquared() << "/" << (*iter)->trajectory()->foundHits() << + " vs trajC " << j << " chi2/nRH = " << (*jter)->trajectory()->chiSquared() << + "/" << (*jter)->trajectory()->foundHits() << " Shared RecHits: " << match; + + TrajectoryStateOnSurface innerTSOS2; + if ((*jter)->trajectory()->direction() == alongMomentum) { + innerTSOS2 = (*jter)->trajectory()->firstMeasurement().updatedState(); } - else if ((*i2)->trajectory()->direction() == oppositeToMomentum) { - innerTSOS2 = (*i2)->trajectory()->lastMeasurement().updatedState(); + else if ((*jter)->trajectory()->direction() == oppositeToMomentum) { + innerTSOS2 = (*jter)->trajectory()->lastMeasurement().updatedState(); } if ( !(innerTSOS2.isValid()) ) continue; @@ -139,18 +173,43 @@ void MuonTrajectoryCleaner::checkGhosts(CandidateContainer& candidates){ float dphi(fabs(Geom::Phi<float>(phi1)-Geom::Phi<float>(phi2))); float dpt(abs(pt1-pt2)); if ( dpt < deltaPt && deta < deltaEta && dphi < deltaPhi ) { - CandidateContainer::iterator bad; - if ((*i1)->trajectory()->foundHits() == (*i2)->trajectory()->foundHits() ) - bad = ( (*i1)->trajectory()->chiSquared() < (*i2)->trajectory()->chiSquared() ) ? i2 : i1; - else bad = ( (*i1)->trajectory()->foundHits() > (*i2)->trajectory()->foundHits() ) ? i2 : i1; - delete (*bad); - *bad = 0; + directionMatch = true; + LogDebug(metname) + << " MuonTrajSelector: candC " << i<<" and "<<j<< " direction matched: " + <<innerTSOS.globalMomentum()<<" and " <<innerTSOS2.globalMomentum(); + + } + + // If there are matches, reject the worst track + if ( (match > 0) || directionMatch ) { + if ( (*iter)->trajectory()->foundHits() == (*jter)->trajectory()->foundHits() ) { + if ( (*iter)->trajectory()->chiSquared() > (*jter)->trajectory()->chiSquared() ) { + mask[i] = false; + skipnext=true; + } + else mask[j] = false; + } + else { // different number of hits + if ( (*iter)->trajectory()->foundHits() < (*jter)->trajectory()->foundHits() ) { + mask[i] = false; + skipnext=true; + } + else mask[j] = false; + } } + if(skipnext) break; + j++; } + i++; + if(skipnext) continue; } - - candidates.erase(remove(candidates.begin(), - candidates.end(), - static_cast<MuonCandidate*>(0)), - candidates.end()); + + i = 0; + for ( iter = candC.begin(); iter != candC.end(); iter++ ) { + if ( mask[i] ) result.push_back(*iter); + i++; + } + + candC.clear(); + candC = result; } diff --git a/RecoParticleFlow/Benchmark/doc/html/index.html b/RecoParticleFlow/Benchmark/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/Benchmark/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/Benchmark/doc/html/overview.html b/RecoParticleFlow/Benchmark/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/Benchmark/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoParticleFlow/Configuration/doc/html/index.html b/RecoParticleFlow/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/Configuration/doc/html/overview.html b/RecoParticleFlow/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoParticleFlow/PFBlockProducer/doc/html/index.html b/RecoParticleFlow/PFBlockProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/PFBlockProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/PFBlockProducer/doc/html/overview.html b/RecoParticleFlow/PFBlockProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/PFBlockProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoParticleFlow/PFClusterProducer/interface/PFClusterProducer.h b/RecoParticleFlow/PFClusterProducer/interface/PFClusterProducer.h index 30ea9176379..8c6759d1bdd 100644 --- a/RecoParticleFlow/PFClusterProducer/interface/PFClusterProducer.h +++ b/RecoParticleFlow/PFClusterProducer/interface/PFClusterProducer.h @@ -52,6 +52,15 @@ class PFClusterProducer : public edm::EDProducer { const CaloSubdetectorTopology& endcapTopo, const CaloSubdetectorGeometry& endcapGeom ); + void + findRecHitNeighboursCT( reco::PFRecHit* rh, + const std::map<unsigned,reco::PFRecHit* >& rechits, + const CaloSubdetectorTopology& topology, + const CaloSubdetectorGeometry& geometry ); + + DetId getNorth(const DetId& id, const CaloSubdetectorTopology& topology); + DetId getSouth(const DetId& id, const CaloSubdetectorTopology& topology); + reco::PFRecHit* createHcalRecHit( const DetId& detid, double energy, int layer, @@ -74,6 +83,9 @@ class PFClusterProducer : public edm::EDProducer { /// clustering Hcal ? bool clusteringHcal_; + /// clustering Hcal: use CaloTowers for navigation ? + bool clusteringHcalCaloTowers_; + /// clustering preshower ? bool clusteringPS_; @@ -125,6 +137,8 @@ class PFClusterProducer : public edm::EDProducer { std::string ecalRecHitsESProductInstanceName_; std::string hcalRecHitsHBHEModuleLabel_; std::string hcalRecHitsHBHEProductInstanceName_; + std::string caloTowersModuleLabel_; + std::string caloTowersProductInstanceName_; }; diff --git a/RecoParticleFlow/PFClusterProducer/src/PFClusterProducer.cc b/RecoParticleFlow/PFClusterProducer/src/PFClusterProducer.cc index 7f92a42ac59..623ade5b980 100644 --- a/RecoParticleFlow/PFClusterProducer/src/PFClusterProducer.cc +++ b/RecoParticleFlow/PFClusterProducer/src/PFClusterProducer.cc @@ -35,9 +35,16 @@ #include "Geometry/CaloTopology/interface/HcalTopology.h" #include "RecoCaloTools/Navigation/interface/CaloNavigator.h" +// #include "DataFormats/CaloTowers/interface/CaloTowerFwd.h" +// #include "DataFormats/CaloTowers/interface/CaloTower.h" +#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" + +#include "Geometry/CaloTopology/interface/CaloTowerTopology.h" +#include "RecoCaloTools/Navigation/interface/CaloTowerNavigator.h" using namespace std; +using namespace edm; PFClusterProducer::PFClusterProducer(const edm::ParameterSet& iConfig) { @@ -55,6 +62,8 @@ PFClusterProducer::PFClusterProducer(const edm::ParameterSet& iConfig) iConfig.getUntrackedParameter<bool>("clustering_Ecal",true); clusteringHcal_ = iConfig.getUntrackedParameter<bool>("clustering_Hcal",true); + clusteringHcalCaloTowers_ = + iConfig.getUntrackedParameter<bool>("clustering_Hcal_CaloTowers",true); clusteringPS_ = iConfig.getUntrackedParameter<bool>("clustering_PS",true); @@ -144,6 +153,13 @@ PFClusterProducer::PFClusterProducer(const edm::ParameterSet& iConfig) iConfig.getUntrackedParameter<string>("hcalRecHitsHBHEProductInstanceName", ""); + caloTowersModuleLabel_ = + iConfig.getUntrackedParameter<string>("caloTowersModuleLabel", + "towerMaker"); + caloTowersProductInstanceName_ = + iConfig.getUntrackedParameter<string>("caloTowersProductInstanceName", + ""); + // produceClusters_ = // iConfig.getUntrackedParameter<bool>("produceClusters", true ); @@ -169,7 +185,6 @@ PFClusterProducer::~PFClusterProducer() {} void PFClusterProducer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) { - using namespace edm; // for output @@ -417,78 +432,111 @@ void PFClusterProducer::produce(edm::Event& iEvent, // get the hcalBarrel geometry const CaloSubdetectorGeometry *hcalBarrelGeometry = geoHandle->getSubdetectorGeometry(DetId::Hcal, HcalBarrel); - - // get the hcal topology - HcalTopology hcalTopology; - + // get the endcap geometry const CaloSubdetectorGeometry *hcalEndcapGeometry = geoHandle->getSubdetectorGeometry(DetId::Hcal, HcalEndcap); - // HCAL rechits - vector<edm::Handle<HBHERecHitCollection> > hcalHandles; - try { -// iEvent.getByLabel(hcalRecHitsHBHEModuleLabel_, -// hcalRecHitsHBHEProductInstanceName_, -// hcalHandles); - iEvent.getManyByType(hcalHandles); - - - for(unsigned ih=0; ih<hcalHandles.size(); ih++) { - const edm::Handle<HBHERecHitCollection>& handle = hcalHandles[ih]; + + + if( clusteringHcalCaloTowers_ ) { - for(unsigned irechit=0; irechit<handle->size(); irechit++) { - const HBHERecHit& hit = (*handle)[irechit]; - - double energy = hit.energy(); + edm::Handle<CaloTowerCollection> caloTowers; + CaloTowerTopology caloTowerTopology; + const CaloSubdetectorGeometry *caloTowerGeometry = 0; + // = geometry_->getSubdetectorGeometry(id) + + try { + // get calotowers + iEvent.getByLabel(caloTowersModuleLabel_, + caloTowersProductInstanceName_, + caloTowers); + + // create rechits + typedef CaloTowerCollection::const_iterator ICT; + + for(ICT ict=caloTowers->begin(); ict!=caloTowers->end();ict++) { + // cout<<"CaloTower "<<(*ict)<<endl; + + + + const CaloTower& ct = (*ict); + - reco::PFRecHit* pfrechit = 0; + if(!caloTowerGeometry) + caloTowerGeometry = geoHandle->getSubdetectorGeometry(ct.id()); + + // get the hadronic energy. + double energy = ct.hadEnergy(); + if( energy < 1e-9 ) continue; + + // the layer will be taken from the first constituent. + // all thresholds for ECAL must be set to very high values !!! + assert( ct.constituentsSize() ); + const HcalDetId& detid = ct.constituent(0); - const HcalDetId& detid = hit.detid(); + int layer = 0; + switch( detid.subdet() ) { case HcalBarrel: - if(energy > threshHcalBarrel_){ - pfrechit = createHcalRecHit(detid, - energy, - PFLayer::HCAL_BARREL1, - hcalBarrelGeometry ); - } + if(energy > threshHcalBarrel_) + layer = PFLayer::HCAL_BARREL1; break; case HcalEndcap: - if(energy > threshHcalEndcap_){ - pfrechit = createHcalRecHit(detid, - energy, - PFLayer::HCAL_ENDCAP, - hcalEndcapGeometry ); - } + if(energy > threshHcalEndcap_) + layer = PFLayer::HCAL_ENDCAP; break; default: LogError("PFClusterProducer") - <<"HCAL rechit: unknown layer : "<<detid.subdet()<<endl; - continue; + <<"CaloTower constituent: unknown layer : " + <<detid.subdet()<<endl; } + + // either detid.subdet() not treated in switch/case + // or calotower under threshold + if(!layer) continue; - if(pfrechit) { + // get the geometry - // const math::XYZPoint& cpos = pfrechit->positionXYZ(); - // if( fabs(cpos.Eta() )< 0.06 ) - - - hcalrechits.insert( make_pair(detid.rawId(), pfrechit) ); + const CaloCellGeometry* geom = geoHandle->getGeometry( ct.id() ); + if(!geom) { + edm::LogError("PFClusterProducer") + <<"warning CaloTower detid " + <<ct.id().rawId()<<" not found in CaloGeometry"<<endl; + continue; } + + const GlobalPoint& position = geom->getPosition(); + + + reco::PFRecHit* pfrechit + = new reco::PFRecHit( ct.id().rawId(), layer, energy, + position.x(), position.y(), position.z(), + 0,0,0 ); + + // cout<<"rechit : "<<*pfrechit<<endl; + // note that the key is the CaloTower detid, + // not the constituent detid. + + + hcalrechits.insert( make_pair(ct.id().rawId(), pfrechit) ); + + // cout<<"CT : "<<ct<<endl; } - + + + // do navigation for( PFClusterAlgo::IDH ih = hcalrechits.begin(); ih != hcalrechits.end(); ih++) { - findRecHitNeighbours( ih->second, hcalrechits, - hcalTopology, - *hcalBarrelGeometry, - hcalTopology, - *hcalEndcapGeometry); + findRecHitNeighboursCT( ih->second, + hcalrechits, + caloTowerTopology, + *caloTowerGeometry ); } - + // do clustering + if(clusteringHcal_) { - + PFClusterAlgo clusteralgo; clusteralgo.setThreshHcalBarrel( threshHcalBarrel_ ); @@ -496,10 +544,10 @@ void PFClusterProducer::produce(edm::Event& iEvent, clusteralgo.setThreshHcalEndcap( threshHcalEndcap_ ); clusteralgo.setThreshSeedHcalEndcap( threshSeedHcalEndcap_ ); - + clusteralgo.init( hcalrechits ); clusteralgo.doClustering(); - + LogInfo("PFClusterProducer") <<" HCAL clusters --------------------------------- "<<endl <<clusteralgo<<endl; @@ -515,20 +563,20 @@ void PFClusterProducer::produce(edm::Event& iEvent, // and pass them to the event. if(produceRecHits_) { -// const map<unsigned, reco::PFRecHit* >& -// algohits = clusteralgo.idRecHits(); + // const map<unsigned, reco::PFRecHit* >& + // algohits = clusteralgo.idRecHits(); auto_ptr< vector<reco::PFRecHit> > recHits( new vector<reco::PFRecHit> ); recHits->reserve( hcalrechits.size() ); -// for(PFClusterAlgo::IDH ih=algohits.begin(); -// ih!=algohits.end(); ih++) { -// recHits->push_back( reco::PFRecHit( *(ih->second) ) ); -// } + // for(PFClusterAlgo::IDH ih=algohits.begin(); + // ih!=algohits.end(); ih++) { + // recHits->push_back( reco::PFRecHit( *(ih->second) ) ); + // } for( PFClusterAlgo::IDH ih = hcalrechits.begin(); ih != hcalrechits.end(); ih++) { - recHits->push_back( reco::PFRecHit( *(ih->second) ) ); + recHits->push_back( reco::PFRecHit( *(ih->second) ) ); } iEvent.put( recHits, "HCAL" ); @@ -541,10 +589,151 @@ void PFClusterProducer::produce(edm::Event& iEvent, delete ih->second; } - } - } catch (...) { - LogError("PFClusterProducer") - <<"could not get handles on HBHERecHits!"<< endl; + } + catch ( cms::Exception& ex ) { + edm::LogError("PFClusterProducerError") + <<"Error! can't get the CaloTowers "<<ex.what()<<endl; + } + } + else { + + // map<unsigned, reco::PFRecHit* > hcalrechits; + +// edm::ESHandle<CaloGeometry> geoHandle; +// iSetup.get<IdealGeometryRecord>().get(geoHandle); + +// // get the hcalBarrel geometry +// const CaloSubdetectorGeometry *hcalBarrelGeometry = +// geoHandle->getSubdetectorGeometry(DetId::Hcal, HcalBarrel); + + // get the hcal topology + HcalTopology hcalTopology; + +// // get the endcap geometry +// const CaloSubdetectorGeometry *hcalEndcapGeometry = +// geoHandle->getSubdetectorGeometry(DetId::Hcal, HcalEndcap); + + // HCAL rechits + vector<edm::Handle<HBHERecHitCollection> > hcalHandles; + try { + // iEvent.getByLabel(hcalRecHitsHBHEModuleLabel_, + // hcalRecHitsHBHEProductInstanceName_, + // hcalHandles); + iEvent.getManyByType(hcalHandles); + + + for(unsigned ih=0; ih<hcalHandles.size(); ih++) { + const edm::Handle<HBHERecHitCollection>& handle = hcalHandles[ih]; + + for(unsigned irechit=0; irechit<handle->size(); irechit++) { + const HBHERecHit& hit = (*handle)[irechit]; + + double energy = hit.energy(); + + reco::PFRecHit* pfrechit = 0; + + const HcalDetId& detid = hit.detid(); + switch( detid.subdet() ) { + case HcalBarrel: + if(energy > threshHcalBarrel_){ + pfrechit = createHcalRecHit(detid, + energy, + PFLayer::HCAL_BARREL1, + hcalBarrelGeometry ); + } + break; + case HcalEndcap: + if(energy > threshHcalEndcap_){ + pfrechit = createHcalRecHit(detid, + energy, + PFLayer::HCAL_ENDCAP, + hcalEndcapGeometry ); + } + break; + default: + LogError("PFClusterProducer") + <<"HCAL rechit: unknown layer : "<<detid.subdet()<<endl; + continue; + } + + if(pfrechit) { + + // const math::XYZPoint& cpos = pfrechit->positionXYZ(); + // if( fabs(cpos.Eta() )< 0.06 ) + + + hcalrechits.insert( make_pair(detid.rawId(), pfrechit) ); + } + } + + for( PFClusterAlgo::IDH ih = hcalrechits.begin(); + ih != hcalrechits.end(); ih++) { + findRecHitNeighbours( ih->second, hcalrechits, + hcalTopology, + *hcalBarrelGeometry, + hcalTopology, + *hcalEndcapGeometry); + } + + if(clusteringHcal_) { + + PFClusterAlgo clusteralgo; + + clusteralgo.setThreshHcalBarrel( threshHcalBarrel_ ); + clusteralgo.setThreshSeedHcalBarrel( threshSeedHcalBarrel_ ); + + clusteralgo.setThreshHcalEndcap( threshHcalEndcap_ ); + clusteralgo.setThreshSeedHcalEndcap( threshSeedHcalEndcap_ ); + + clusteralgo.init( hcalrechits ); + clusteralgo.doClustering(); + + LogInfo("PFClusterProducer") + <<" HCAL clusters --------------------------------- "<<endl + <<clusteralgo<<endl; + + auto_ptr< vector<reco::PFCluster> > + outClustersHCAL( clusteralgo.clusters() ); + // outClustersHCAL = clusteralgo.clusters(); + iEvent.put( outClustersHCAL, "HCAL"); + + } + + // if requested, get rechits passing the threshold from algo, + // and pass them to the event. + if(produceRecHits_) { + + // const map<unsigned, reco::PFRecHit* >& + // algohits = clusteralgo.idRecHits(); + + auto_ptr< vector<reco::PFRecHit> > + recHits( new vector<reco::PFRecHit> ); + recHits->reserve( hcalrechits.size() ); + + // for(PFClusterAlgo::IDH ih=algohits.begin(); + // ih!=algohits.end(); ih++) { + // recHits->push_back( reco::PFRecHit( *(ih->second) ) ); + // } + for( PFClusterAlgo::IDH ih = hcalrechits.begin(); + ih != hcalrechits.end(); ih++) { + recHits->push_back( reco::PFRecHit( *(ih->second) ) ); + } + + iEvent.put( recHits, "HCAL" ); + } + + + // clear all + for( PFClusterAlgo::IDH ih = hcalrechits.begin(); + ih != hcalrechits.end(); ih++) { + + delete ih->second; + } + } + } catch (...) { + LogError("PFClusterProducer") + <<"could not get handles on HBHERecHits!"<< endl; + } } } // process HCAL @@ -722,18 +911,17 @@ void PFClusterProducer::produce(edm::Event& iEvent, // iEvent.put( outClustersPS, "PS"); } + + void PFClusterProducer::findRecHitNeighbours ( reco::PFRecHit* rh, - const map<unsigned, - reco::PFRecHit* >& rechits, + const map<unsigned, reco::PFRecHit* >& rechits, const CaloSubdetectorTopology& barrelTopology, const CaloSubdetectorGeometry& barrelGeometry, const CaloSubdetectorTopology& endcapTopology, const CaloSubdetectorGeometry& endcapGeometry ) { - - const math::XYZPoint& cpos = rh->positionXYZ(); double posx = cpos.X(); double posy = cpos.Y(); @@ -1005,6 +1193,320 @@ PFClusterProducer::findRecHitNeighbours } +void +PFClusterProducer::findRecHitNeighboursCT +( reco::PFRecHit* rh, + const map<unsigned, reco::PFRecHit* >& rechits, + const CaloSubdetectorTopology& topology, + const CaloSubdetectorGeometry& geometry ) { + + const math::XYZVector& rhpos = math::XYZVector(rh->positionXYZ()); + double rhposx = rhpos.X(); + double rhposy = rhpos.Y(); + double rhposz = rhpos.Z(); + + + math::XYZVector dummy(rhpos); + dummy += rhpos; + + bool debug = false; + // if( rh->layer() == PFLayer::PS1 || + // rh->layer() == PFLayer::PS2 ) debug = true; + + + DetId detid( rh->detId() ); + + vector<DetId> northids = topology.north(detid); + vector<DetId> westids = topology.west(detid); + vector<DetId> southids = topology.south(detid); + vector<DetId> eastids = topology.east(detid); + + DetId badId; + + DetId north; + DetId northwest; + DetId west; + DetId southwest; + DetId south; + DetId southeast; + DetId east; + DetId northeast; + + // for north and south, there is no ambiguity : 1 or 0 neighbours + string err("PFClusterProducer::findRecHitNeighboursCT : incorrect number of neighbours "); + char n[20]; + + switch( northids.size() ) { + case 0: + break; + case 1: + north = northids[0]; + break; + default: + sprintf(n, "north: %d", northids.size() ); + err += n; + throw( err ); + } + + switch( southids.size() ) { + case 0: + break; + case 1: + south = southids[0]; + break; + default: + sprintf(n, "south %d", southids.size() ); + err += n; + throw( err ); + } + + // for east and west, one must take care + // of the pitch change in HCAL endcap. + + switch( eastids.size() ) { + case 0: + break; + case 1: + east = eastids[0]; + northeast = getNorth(east, topology); + southeast = getSouth(east, topology); + break; + case 2: + // in this case, 0 is more on the north than 1 + east = eastids[0]; + northeast = getNorth(east, topology ); + southeast = getSouth(eastids[1], topology); + break; + default: + sprintf(n, "%d", eastids.size() ); + err += n; + throw( err ); + } + + + switch( westids.size() ) { + case 0: + break; + case 1: + west = westids[0]; + northwest = getNorth(west, topology); + southwest = getSouth(west, topology); + break; + case 2: + // in this case, 0 is more on the north than 1 + west = westids[0]; + northwest = getNorth(west, topology ); + southwest = getSouth(westids[1], topology ); + break; + default: + sprintf(n, "%d", westids.size() ); + err += n; + throw( err ); + } + + + + // set corners + // Attention !!! in CMSSW east corresponds to negative eta. + // this is counterintuitive -> changing it. + + if(northeast != badId) { + const CaloCellGeometry *thisCell = geometry.getGeometry(northeast); + if(!thisCell) { + LogError("PFClusterProducer") + <<"warning detid "<<detid.rawId() + <<" not found in geometry"<<endl; + } + else { + const GlobalPoint& pos = thisCell->getPosition(); + double cornerposx = pos.x(); + double cornerposy = pos.y(); + double cornerposz = pos.z(); + cornerposx += rhposx; cornerposx /= 2.; + cornerposy += rhposy; cornerposy /= 2.; + cornerposz += rhposz; cornerposz /= 2.; + + rh->setNWCorner(cornerposx, cornerposy, cornerposz); + } + } + + + if(southeast != badId) { + const CaloCellGeometry *thisCell = geometry.getGeometry(southeast); + if(!thisCell) { + LogError("PFClusterProducer") + <<"warning detid "<<detid.rawId() + <<" not found in geometry"<<endl; + } + else { + const GlobalPoint& pos = thisCell->getPosition(); + double cornerposx = pos.x(); + double cornerposy = pos.y(); + double cornerposz = pos.z(); + cornerposx += rhposx; cornerposx /= 2.; + cornerposy += rhposy; cornerposy /= 2.; + cornerposz += rhposz; cornerposz /= 2.; + + rh->setSWCorner(cornerposx, cornerposy, cornerposz); + } + } + + + if(southwest != badId) { + const CaloCellGeometry *thisCell = geometry.getGeometry(southwest); + if(!thisCell) { + LogError("PFClusterProducer") + <<"warning detid "<<detid.rawId() + <<" not found in geometry"<<endl; + } + else { + const GlobalPoint& pos = thisCell->getPosition(); + double cornerposx = pos.x(); + double cornerposy = pos.y(); + double cornerposz = pos.z(); + cornerposx += rhposx; cornerposx /= 2.; + cornerposy += rhposy; cornerposy /= 2.; + cornerposz += rhposz; cornerposz /= 2.; + + rh->setSECorner(cornerposx, cornerposy, cornerposz); + } + } + + + if(northwest != badId) { + const CaloCellGeometry *thisCell = geometry.getGeometry(northwest); + if(!thisCell) { + LogError("PFClusterProducer") + <<"warning detid "<<detid.rawId() + <<" not found in geometry"<<endl; + } + else { + const GlobalPoint& pos = thisCell->getPosition(); + double cornerposx = pos.x(); + double cornerposy = pos.y(); + double cornerposz = pos.z(); + cornerposx += rhposx; cornerposx /= 2.; + cornerposy += rhposy; cornerposy /= 2.; + cornerposz += rhposz; cornerposz /= 2.; + + rh->setNECorner(cornerposx, cornerposy, cornerposz); + } + } + + + + + // find and set neighbours + + reco::PFRecHit* rhnorth = 0; + PFClusterAlgo::IDH i = rechits.find( north.rawId() ); + if(i != rechits.end() ) + rhnorth = i->second; + + reco::PFRecHit* rhnortheast = 0; + i = rechits.find( northeast.rawId() ); + if(i != rechits.end() ) + rhnortheast = i->second; + + reco::PFRecHit* rhsouth = 0; + i = rechits.find( south.rawId() ); + if(i != rechits.end() ) + rhsouth = i->second; + + reco::PFRecHit* rhsouthwest = 0; + i = rechits.find( southwest.rawId() ); + if(i != rechits.end() ) + rhsouthwest = i->second; + + reco::PFRecHit* rheast = 0; + i = rechits.find( east.rawId() ); + if(i != rechits.end() ) + rheast = i->second; + + reco::PFRecHit* rhsoutheast = 0; + i = rechits.find( southeast.rawId() ); + if(i != rechits.end() ) + rhsoutheast = i->second; + + reco::PFRecHit* rhwest = 0; + i = rechits.find( west.rawId() ); + if(i != rechits.end() ) + rhwest = i->second; + + reco::PFRecHit* rhnorthwest = 0; + i = rechits.find( northwest.rawId() ); + if(i != rechits.end() ) + rhnorthwest = i->second; + + vector<reco::PFRecHit*> neighbours; + neighbours.reserve(8); + neighbours.push_back( rhnorth ); + neighbours.push_back( rhnorthwest ); + neighbours.push_back( rhwest ); + neighbours.push_back( rhsouthwest ); + neighbours.push_back( rhsouth ); + neighbours.push_back( rhsoutheast ); + neighbours.push_back( rheast ); + neighbours.push_back( rhnortheast ); + + rh->setNeighbours( neighbours ); + + + if(westids.size()==2 || eastids.size()==2) + debug = true; + + if(debug) { + + cout<<"NWSE " + <<northids.size()<<" " + <<westids.size()<<" " + <<southids.size()<<" " + <<eastids.size()<<" " + <<rhpos.Eta()<<" "<<rhpos.Phi()<<endl; + + cout<<"west neighbours:"<<endl; + for(unsigned i=0; i<westids.size(); i++) { + const CaloCellGeometry *thisCell = geometry.getGeometry( westids[i] ); + const GlobalPoint& npos = thisCell->getPosition(); + cout<<"\t"<<i<<": " + <<npos.eta()<<" " + <<npos.phi()<<endl; + } + cout<<"east neighbours:"<<endl; + for(unsigned i=0; i<eastids.size(); i++) { + const CaloCellGeometry *thisCell = geometry.getGeometry( eastids[i] ); + const GlobalPoint& npos = thisCell->getPosition(); + + cout<<"\t"<<i<<": " + <<npos.eta()<<" " + <<npos.phi()<<endl; + } + } +} + +DetId PFClusterProducer::getSouth(const DetId& id, + const CaloSubdetectorTopology& topology) { + + DetId south; + vector<DetId> sids = topology.south(id); + if(sids.size() == 1) + south = sids[0]; + + return south; +} + +DetId PFClusterProducer::getNorth(const DetId& id, + const CaloSubdetectorTopology& topology) { + + DetId north; + vector<DetId> nids = topology.north(id); + if(nids.size() == 1) + north = nids[0]; + + return north; +} + + reco::PFRecHit* PFClusterProducer::createHcalRecHit( const DetId& detid, double energy, diff --git a/RecoParticleFlow/PFClusterShapeProducer/doc/html/index.html b/RecoParticleFlow/PFClusterShapeProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/PFClusterShapeProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/PFClusterShapeProducer/doc/html/overview.html b/RecoParticleFlow/PFClusterShapeProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/PFClusterShapeProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoParticleFlow/PFClusterTools/doc/html/index.html b/RecoParticleFlow/PFClusterTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/PFClusterTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/PFClusterTools/doc/html/overview.html b/RecoParticleFlow/PFClusterTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/PFClusterTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoParticleFlow/PFProducer/interface/EFilter.h b/RecoParticleFlow/PFProducer/interface/EFilter.h new file mode 100644 index 00000000000..8d7258495e5 --- /dev/null +++ b/RecoParticleFlow/PFProducer/interface/EFilter.h @@ -0,0 +1,50 @@ +#ifndef RecoParticleFlow_PFProducer_EFilter_h_ +#define RecoParticleFlow_PFProducer_EFilter_h_ + +#include "FWCore/Framework/interface/EDFilter.h" +// #include "FWCore/ParameterSet/interface/ParameterSet.h" + + +// -*- C++ -*- +// +// Package: EFilter +// Class: EFilter +// +/**\class EFilter + + Description: filters single particle events according to the energy of + the mother particle + +*/ + + + +// +// class declaration +// + +class FSimEvent; + +class EFilter : public edm::EDFilter { + public: + explicit EFilter(const edm::ParameterSet&); + ~EFilter(); + + private: + virtual void beginJob(const edm::EventSetup&) ; + virtual bool filter(edm::Event&, const edm::EventSetup&); + virtual void endJob() ; + + // ----------member data --------------------------- +/* edm::ParameterSet vertexGenerator_; */ +/* edm::ParameterSet particleFilter_; */ +/* FSimEvent* mySimEvent; */ + // std::string hepMCModuleLabel_; + + double minE_; + double maxE_; + double minEt_; + double maxEt_; +}; + +#endif diff --git a/RecoParticleFlow/PFProducer/setup_pflow b/RecoParticleFlow/PFProducer/setup_pflow index a225821e10c..1d5b3764e62 100755 --- a/RecoParticleFlow/PFProducer/setup_pflow +++ b/RecoParticleFlow/PFProducer/setup_pflow @@ -1,5 +1,4 @@ #!/bin/csh cd ../.. -cvs co Configuration/Examples/data/RECO.cff -cp -r ~cbern/public/CMSSW/CMSSW_1_2_0_pre1/RECO.cff Configuration/Examples/data/RECO.cff -cvs co -r V00-02-04 FastSimulation/Event +cvs co Configuration/StandardSequences/data/Reconstruction.cff +cp -r ~cbern/public/CMSSW/CMSSW_1_2_0_pre9/Reconstruction.cff Configuration/StandardSequences/data/Reconstruction.cff diff --git a/RecoParticleFlow/PFProducer/src/EFilter.cc b/RecoParticleFlow/PFProducer/src/EFilter.cc new file mode 100644 index 00000000000..c91bacebd50 --- /dev/null +++ b/RecoParticleFlow/PFProducer/src/EFilter.cc @@ -0,0 +1,131 @@ +// system include files +#include <memory> +#include <iostream> + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +// #include "FWCore/Framework/interface/EDFilter.h" + +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/EventSetup.h" + +// #include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "RecoParticleFlow/PFProducer/interface/EFilter.h" + + +// #include "FastSimulation/Event/interface/FSimEvent.h" +// #include "FastSimulation/Event/interface/FSimTrack.h" +// #include "FastSimulation/Event/interface/FSimVertex.h" + +// #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h" +// #include "FastSimulation/Particle/interface/ParticleTable.h" + +#include "FWCore/MessageLogger/interface/MessageLogger.h" +// #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" + +#include "DataFormats/ParticleFlowReco/interface/PFParticle.h" + +using namespace edm; +using namespace std; + +EFilter::EFilter(const edm::ParameterSet& iConfig) { + //now do what ever initialization is needed + + minE_ = iConfig.getUntrackedParameter<double>("minE",-1); + maxE_ = iConfig.getUntrackedParameter<double>("maxE",999999); + minEt_ = iConfig.getUntrackedParameter<double>("minEt",-1); + maxEt_ = iConfig.getUntrackedParameter<double>("maxEt",999999); + + LogWarning("PFProducer")<<"EFilter : will filter particles with " + <<minE_<<" < E < "<<maxE_<<" and "<<minEt_<<" < Et <"<<maxEt_<<endl; + +} + + +EFilter::~EFilter() { + + // do anything here that needs to be done at desctruction time + // (e.g. close files, deallocate resources etc.) + // delete mySimEvent; + + +} + + +bool +EFilter::filter(edm::Event& iEvent, + const edm::EventSetup& iSetup) { + + + + try { + Handle<std::vector<reco::PFParticle> > particles; + iEvent.getByLabel("particleFlow", particles); + // cout<<"n particles = "<<particles->size()<<endl; + + if( !particles->empty() ) { + // take first trajectory point of first particle (the mother) + const reco::PFTrajectoryPoint& tp = (*particles)[0].trajectoryPoint(0); + + const math::XYZTLorentzVector& mom = tp.momentum(); + + double e = mom.E(); + double et = mom.Et(); + + if( e >= minE_ && e<= maxE_ && + et>= minEt_ && et<= maxEt_ ) { + cout<<"ok "<<e<<endl; + return true; + } + else { + cout<<"bad "<<e<<endl; + return false; + } + } + } + catch(...) { + LogError("PFProducer")<<"EFilter : cannot get PFParticles with module label " + <<"particleFlow"<<endl; + return true; + } + +// try { +// Handle<HepMCProduct> evt; +// iEvent.getByLabel(hepMCModuleLabel_, evt); +// const HepMC::GenEvent* genEvent = evt->GetEvent(); + +// if(!genEvent) return true; + +// genEvent->print(); + +// cout<<"-----------"<<endl; +// for ( HepMC::GenEvent::particle_const_iterator part +// = genEvent->particles_begin(); +// part != genEvent->particles_end(); ++part ) { +// cout<<"part : "<<(**part)<<endl; +// } +// } +// catch(...) { +// LogError("PFProducer")<<"EFilter : cannot get HepMCProduct with module label " +// <<hepMCModuleLabel_<<endl; +// return true; +// } + + + return true; +} + +void EFilter::beginJob(const edm::EventSetup& es) { + // init Particle data table (from Pythia) +// edm::ESHandle < DefaultConfig::ParticleDataTable > pdt; +// es.getData(pdt); +// if ( !ParticleTable::instance() ) +// ParticleTable::instance(&(*pdt)); +// mySimEvent->initializePdt(&(*pdt)); +} + +void EFilter::endJob() { +} diff --git a/RecoParticleFlow/PFProducer/src/SealModule.cc b/RecoParticleFlow/PFProducer/src/SealModule.cc index a78123b4cf4..eaddb440607 100644 --- a/RecoParticleFlow/PFProducer/src/SealModule.cc +++ b/RecoParticleFlow/PFProducer/src/SealModule.cc @@ -5,7 +5,9 @@ #include "RecoParticleFlow/PFProducer/interface/PFProducer.h" #include "RecoParticleFlow/PFProducer/interface/TauHadronDecayFilter.h" +#include "RecoParticleFlow/PFProducer/interface/EFilter.h" DEFINE_SEAL_MODULE(); DEFINE_ANOTHER_FWK_MODULE(PFProducer); DEFINE_ANOTHER_FWK_MODULE(TauHadronDecayFilter); +DEFINE_ANOTHER_FWK_MODULE(EFilter); diff --git a/RecoParticleFlow/PFRootEvent/BuildFile b/RecoParticleFlow/PFRootEvent/BuildFile index 33a2cce0043..cad403d530e 100644 --- a/RecoParticleFlow/PFRootEvent/BuildFile +++ b/RecoParticleFlow/PFRootEvent/BuildFile @@ -1,4 +1,5 @@ <use name=FWCore/Framework> +<use name=DataFormats/CaloTowers> <use name=DataFormats/ParticleFlowReco> <use name=DataFormats/EgammaReco> <use name=DataFormats/Math> @@ -7,6 +8,7 @@ <use name=root> <export> <use name=FWCore/Framework> + <use name=DataFormats/CaloTowers> <use name=DataFormats/ParticleFlowReco> <use name=DataFormats/EgammaReco> <use name=DataFormats/Math> diff --git a/RecoParticleFlow/PFRootEvent/interface/EventColin.h b/RecoParticleFlow/PFRootEvent/interface/EventColin.h index 28c7bdc9a1c..7145a0c25e1 100644 --- a/RecoParticleFlow/PFRootEvent/interface/EventColin.h +++ b/RecoParticleFlow/PFRootEvent/interface/EventColin.h @@ -48,6 +48,13 @@ class EventColin { clustersIsland_.push_back(ptc); } + const std::vector<EventColin::Particle>& particles() + {return particles_;} + const std::vector<EventColin::Cluster>& clusters() + {return clusters_;} + const std::vector<EventColin::Cluster>& clustersIsland() + {return clustersIsland_;} + private: diff --git a/RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h b/RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h index d6a46797de0..1b5a7de6a21 100644 --- a/RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h +++ b/RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h @@ -1,5 +1,5 @@ -#ifndef Demo_PFRootEvent_PFRootEventManager_h -#define Demo_PFRootEvent_PFRootEventManager_h +#ifndef RecoParticleFlow_PFRootEvent_PFRootEventManager_h +#define RecoParticleFlow_PFRootEvent_PFRootEventManager_h #include "DataFormats/ParticleFlowReco/interface/PFRecHit.h" #include "DataFormats/ParticleFlowReco/interface/PFCluster.h" @@ -7,6 +7,8 @@ #include "DataFormats/ParticleFlowReco/interface/PFRecTrack.h" #include "DataFormats/ParticleFlowReco/interface/PFParticle.h" #include "DataFormats/EgammaReco/interface/BasicCluster.h" +#include "DataFormats/CaloTowers/interface/CaloTower.h" +#include "DataFormats/CaloTowers/interface/CaloTowerFwd.h" #include "RecoParticleFlow/PFAlgo/interface/PFBlock.h" #include "RecoParticleFlow/PFClusterAlgo/interface/PFClusterAlgo.h" @@ -129,7 +131,8 @@ class PFRootEventManager { /// performs particle flow void particleFlow(); - /// display one entry + + /// process and display one entry void display(int ientry); /* void displayXY(); */ @@ -142,7 +145,11 @@ class PFRootEventManager { /* void displayEtaPhiE(); */ /* void displayEtaPhiH(); */ - + /// display next selected entry. if init, restart from i=0 + void displayNext(bool init); + + /// display current entry + void display(); /// display x/y or r/z void displayView(unsigned viewType); @@ -161,6 +168,8 @@ class PFRootEventManager { void displayCluster(const reco::PFCluster& cluster, unsigned viewType, double phi0 = 0.); + /// display cluster-to-rechits lines + void displayClusterLines(const reco::PFCluster& cluster); /// display reconstructed tracks void displayRecTracks(unsigned viewType, double phi0 = 0.); @@ -238,6 +247,9 @@ class PFRootEventManager { /// ECAL island clusters branch_; TBranch* clustersIslandBarrelBranch_; + + /// calotowers + TBranch* caloTowersBranch_; /// reconstructed tracks branch TBranch* recTracksBranch_; @@ -273,6 +285,8 @@ class PFRootEventManager { /// clusters ECAL island barrel std::vector<reco::BasicCluster> clustersIslandBarrel_; + CaloTowerCollection caloTowers_; + /// reconstructed tracks std::vector<reco::PFRecTrack> recTracks_; @@ -313,6 +327,9 @@ class PFRootEventManager { /// algos to display std::set<int> algosToDisplay_; + /// display cluster-to-rechits lines ? + bool displayClusterLines_; + /// display pad xy size for eta/phi view std::vector<int> viewSizeEtaPhi_; diff --git a/RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h b/RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h new file mode 100644 index 00000000000..0135f55de72 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h @@ -0,0 +1,93 @@ +#ifndef RecoParticleFlow_PFRootEvent_ResidualFitter_h +#define RecoParticleFlow_PFRootEvent_ResidualFitter_h + +#include <RQ_OBJECT.h> +#include <TH3.h> +#include <TCanvas.h> + +class TF1; +class TH2; + +class ResidualFitter : public TH3D, public TQObject { + + // RQ_OBJECT("ResidualFitter") + + public: + ResidualFitter(const char* name, + const char* title, + int nbinsx, double xlow, double xup, + int nbinsy, double ylow, double yup, + int nbinsz, double zlow, double zup); + + ~ResidualFitter(); + + static void SetCanvas(int x, int y) { xCanvas_=x; yCanvas_=y;} + void CreateCanvas(); + + void AddTrue( double x, double y, double z) + {true_.push_back( Point(x,y,z) ); } + void AddMeas( double x, double y, double z ) + {meas_.push_back( Point(x,y,z) ); } + void Fill(); + + void SetFitFunction(TF1* func) { fitFunction_ = func; } + void SetFitOptions(const char* opt) {fitOptions_ = opt; } + + void FitSlicesZ(TF1 *f1=0); + void ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject *sel); + + void Fit(int x, int y, const char* opt=""); + void ShowFit(TH2* h2d, double x, double y); + + void SetAutoRange(int n) { + autoRangeN_= n; + fitOptions_ += "R"; + } + + void cd() {canvas_->cd(); } + + TF1* GetFunction() {return fitFunction_;} + + TH1D* CurBin() {return curBin_;} + + class Point { + public: + Point() : x_(-10), y_(-10), z_(-10) {} + Point(double x, double y, double z) : + x_(x), y_(y), z_(z) {} + private: + double x_; + double y_; + double z_; + + friend class ResidualFitter; + }; + + private: + std::vector< ResidualFitter::Point > true_; + std::vector< ResidualFitter::Point > meas_; + + TF1* fitFunction_; + std::string fitOptions_; + + TCanvas* canvas_; + + static int xCanvas_; + static int yCanvas_; + + + TCanvas* canvasFit_; + + TH1D* curBin_; + TH2D* mean_; + TH2D* sigma_; + TH2D* chi2_; + TH2D* nseen_; + + int oldBinx_; + int oldBiny_; + + int autoRangeN_; +}; + +#endif diff --git a/RecoParticleFlow/PFRootEvent/src/IO.cc b/RecoParticleFlow/PFRootEvent/src/IO.cc index 1e4d193bcaa..fc4a29328e5 100644 --- a/RecoParticleFlow/PFRootEvent/src/IO.cc +++ b/RecoParticleFlow/PFRootEvent/src/IO.cc @@ -13,6 +13,12 @@ IO::IO(const char* filepattern) : fCurline(0) { vector<string> files = Utils::Glob(filepattern); + if( files.empty() ) { + string err = "IO::IO : no files verify pattern "; + err += filepattern; + throw err; + } + for(unsigned i=0; i<files.size(); i++) { ParseFile(files[i].c_str()); } diff --git a/RecoParticleFlow/PFRootEvent/src/PFRootEventManager.cc b/RecoParticleFlow/PFRootEvent/src/PFRootEventManager.cc index 05be8423260..7502357b277 100644 --- a/RecoParticleFlow/PFRootEvent/src/PFRootEventManager.cc +++ b/RecoParticleFlow/PFRootEvent/src/PFRootEventManager.cc @@ -39,9 +39,11 @@ PFRootEventManager::PFRootEventManager(const char* file) clustersPS_(new vector<reco::PFCluster>) { options_ = 0; - readOptions(file); + tree_ = 0; iEvent_=0; + readOptions(file); + displayView_.resize(NViews); displayHist_.resize(NViews); @@ -74,11 +76,19 @@ void PFRootEventManager::reset() { void PFRootEventManager::readOptions(const char* file, bool refresh) { PFGeometry pfGeometry; // initialize geometry - if( !options_ ) - options_ = new IO(file); - else if( refresh) { - delete options_; - options_ = new IO(file); + cout<<"reading options "<<endl; + + try { + if( !options_ ) + options_ = new IO(file); + else if( refresh) { + delete options_; + options_ = new IO(file); + } + } + catch( const string& err ) { + cout<<err<<endl; + return; } clusteringIsOn_ = true; @@ -116,7 +126,7 @@ void PFRootEventManager::readOptions(const char* file, bool refresh) { <<inFileName_<<endl; } } - + // hits branches ---------------------------------------------- string rechitsECALbranchname; @@ -240,6 +250,21 @@ void PFRootEventManager::readOptions(const char* file, bool refresh) { trueParticlesBranch_->SetAddress(&trueParticles_); } + string caloTowersBranchName; + caloTowersBranch_ = 0; + options_->GetOpt("root","caloTowers_branch", caloTowersBranchName); + if(!caloTowersBranchName.empty() ) { + caloTowersBranch_ = tree_->GetBranch(caloTowersBranchName.c_str()); + if(!caloTowersBranch_) { + cerr<<"PFRootEventManager::ReadOptions : caloTowers_branch not found : " + <<caloTowersBranchName<< endl; + } + else { + // cerr<<"setting address"<<endl; + caloTowersBranch_->SetAddress(&caloTowers_); + } + } + // output root file ------------------------------------------ @@ -258,6 +283,11 @@ void PFRootEventManager::readOptions(const char* file, bool refresh) { algosToDisplay_.clear(); for(unsigned i=0; i< algos.size(); i++) algosToDisplay_.insert( algos[i] ); + displayClusterLines_ = false; + options_->GetOpt("display", "cluster_lines", displayClusterLines_); + + if(displayClusterLines_) + cout<<"will display cluster lines "<<endl; viewSizeEtaPhi_.clear(); options_->GetOpt("display", "viewsize_etaphi", viewSizeEtaPhi_); @@ -410,12 +440,18 @@ void PFRootEventManager::readOptions(const char* file, bool refresh) { options_->GetOpt("particle_flow", "resolution_map_HCAL_eta", map_HCAL_eta); string map_HCAL_phi; options_->GetOpt("particle_flow", "resolution_map_HCAL_phi", map_HCAL_phi); - PFBlock::setResMaps(map_ECAL_eta, - map_ECAL_phi, - map_ECALec_x, - map_ECALec_y, - map_HCAL_eta, - map_HCAL_phi); + + try{ + PFBlock::setResMaps(map_ECAL_eta, + map_ECAL_phi, + map_ECALec_x, + map_ECALec_y, + map_HCAL_eta, + map_HCAL_phi); + } + catch( const string& err ) { + cout<<err<<endl; + } double chi2_ECAL_HCAL=0; options_->GetOpt("particle_flow", "chi2_ECAL_HCAL", chi2_ECAL_HCAL); @@ -546,6 +582,9 @@ bool PFRootEventManager::processEntry(int entry) { particleFlow(); return true; + // if(trueParticles_.size() != 1 ) return false; + + } @@ -593,6 +632,12 @@ bool PFRootEventManager::readFromSimulation(int entry) { if(clustersIslandBarrelBranch_) { clustersIslandBarrelBranch_->GetEntry(entry); } + if(caloTowersBranch_) { + caloTowersBranch_->GetEntry(entry); + cout<<"number of calotowers :"<<caloTowers_.size()<<endl; + } + + if(recTracksBranch_) recTracksBranch_->GetEntry(entry); return true; @@ -812,6 +857,8 @@ void PFRootEventManager::clustering() { clusterAlgoECAL.SetNCrystalPosCalcEcal( nCrystalsPosCalcEcal_ ); + // cout<<clusterAlgoECAL<<endl; + for(unsigned i=0; i<rechitsECAL_.size(); i++) { rechits.insert( make_pair(rechitsECAL_[i].detId(), &rechitsECAL_[i] ) ); } @@ -830,11 +877,11 @@ void PFRootEventManager::clustering() { PFClusterAlgo clusterAlgoHCAL; - clusterAlgoHCAL.setThreshEcalBarrel( threshEcalBarrel_ ); - clusterAlgoHCAL.setThreshSeedEcalBarrel( threshSeedEcalBarrel_ ); + clusterAlgoHCAL.setThreshHcalBarrel( threshHcalBarrel_ ); + clusterAlgoHCAL.setThreshSeedHcalBarrel( threshSeedHcalBarrel_ ); - clusterAlgoHCAL.setThreshEcalEndcap( threshEcalEndcap_ ); - clusterAlgoHCAL.setThreshSeedEcalEndcap( threshSeedEcalEndcap_ ); + clusterAlgoHCAL.setThreshHcalEndcap( threshHcalEndcap_ ); + clusterAlgoHCAL.setThreshSeedHcalEndcap( threshSeedHcalEndcap_ ); clusterAlgoHCAL.setNNeighboursEcal( nNeighboursEcal_ ); @@ -953,16 +1000,36 @@ void PFRootEventManager::particleFlow() { void PFRootEventManager::display(int ientry) { processEntry(ientry); + display(); +} + + + +void PFRootEventManager::displayNext(bool init) { + + static int ientry=0; + if( init ) ientry=0; // restarting from 0 + + bool ok = false; + while(!ok && ientry<tree_->GetEntries() ) { + ok = processEntry(ientry); + // iCurrentEntry_=ientry; + ientry++; + } + display(); +} + + +void PFRootEventManager::display() { if(displayRZ_) displayView(RZ); if(displayXY_) displayView(XY); if(displayEtaPhi_) { displayView(EPE); displayView(EPH); - } + } } - void PFRootEventManager::displayView(unsigned viewType) { @@ -1131,6 +1198,7 @@ void PFRootEventManager::displayRecHit(reco::PFRecHit& rh, unsigned viewType, double maxe, double phi0) { + double me = maxe; double thresh = 0; int layer = rh.layer(); @@ -1179,6 +1247,11 @@ void PFRootEventManager::displayRecHit(reco::PFRecHit& rh, unsigned viewType, double rheta = rh.positionREP().Eta(); double rhphi = rh.positionREP().Phi(); + +// if( abs(rheta - 1.69) > 0.05 || +// abs(rhphi + 1.61) > 0.05 || +// layer<0) return; + double sign = 1.; if (cos(phi0 - rhphi) < 0.) sign = -1.; @@ -1212,6 +1285,9 @@ void PFRootEventManager::displayRecHit(reco::PFRecHit& rh, unsigned viewType, if(me>0) ampl = (log(rh.energy() + 1.)/log(me + 1.)); for ( unsigned jc=0; jc<4; ++jc ) { + + // cout<<"corner "<<jc<<" "<<corners[jc].Eta()<<" "<<corners[jc].Phi()<<endl; + phiSize[jc] = rhphi-corners[jc].Phi(); etaSize[jc] = rheta-corners[jc].Eta(); if ( phiSize[jc] > 1. ) phiSize[jc] -= 2.*TMath::Pi(); // this is strange... @@ -1225,8 +1301,8 @@ void PFRootEventManager::displayRecHit(reco::PFRecHit& rh, unsigned viewType, y[jc] = cornerposxyz.Y(); z[jc] = cornerposxyz.Z(); r[jc] = sign*cornerposxyz.Rho(); - eta[jc] = rheta + etaSize[jc]; - phi[jc] = rhphi + phiSize[jc]; + eta[jc] = rheta - etaSize[jc]; + phi[jc] = rhphi - phiSize[jc]; // cell area is prop to log(E) @@ -1421,7 +1497,7 @@ void PFRootEventManager::displayCluster(const reco::PFCluster& cluster, m.SetMarkerColor(color); m.SetMarkerStyle(20); - math::XYZPoint xyzPos = cluster.positionXYZ(); + const math::XYZPoint& xyzPos = cluster.positionXYZ(); switch(viewType) { case XY: @@ -1436,17 +1512,45 @@ void PFRootEventManager::displayCluster(const reco::PFCluster& cluster, break; } case EPE: - if(cluster.layer()<0) + if( cluster.layer()<0 ) { m.DrawMarker(xyzPos.Eta(), xyzPos.Phi()); + if( displayClusterLines_ ) displayClusterLines(cluster); + } break; case EPH: - if(cluster.layer()>0) + if( cluster.layer()>0 ) { m.DrawMarker(xyzPos.Eta(), xyzPos.Phi()); + if( displayClusterLines_ ) displayClusterLines(cluster); + } break; } } +void PFRootEventManager::displayClusterLines(const reco::PFCluster& cluster) { + + cout<<"displayClusterLines"<<endl; + + const math::XYZPoint& xyzPos = cluster.positionXYZ(); + double eta = xyzPos.Eta(); + double phi = xyzPos.Phi(); + + // draw a line from the cluster to each of the rechits + const std::vector< reco::PFRecHitFraction >& rhfracs = + cluster.recHitFractions(); + + TLine l; + + for(unsigned i=0; i<rhfracs.size(); i++) { + double rheta = rhfracs[i].getRecHit()->positionXYZ().Eta(); + double rhphi = rhfracs[i].getRecHit()->positionXYZ().Phi(); + cout<<" "<<eta<<" "<<phi<<" "<<rheta<<" "<<rhphi<<endl; + + l.DrawLine(eta,phi,rheta,rhphi); + } +} + + void PFRootEventManager::displayRecTracks(unsigned viewType, double phi0) { diff --git a/RecoParticleFlow/PFRootEvent/src/ResidualFitter.cc b/RecoParticleFlow/PFRootEvent/src/ResidualFitter.cc new file mode 100644 index 00000000000..a052561efcf --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/src/ResidualFitter.cc @@ -0,0 +1,185 @@ +#include "RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h" + +#include <iostream> +#include <TCanvas.h> +#include <TH2.h> +#include <TF1.h> + +#include <string> + +using namespace std; + +// TCanvas* ResidualFitter::canvasFit_ = 0; + +int ResidualFitter::xCanvas_ = 600; +int ResidualFitter::yCanvas_ = 600; + +ResidualFitter::ResidualFitter(const char* name, + const char* title, + int nbinsx, double xlow, double xup, + int nbinsy, double ylow, double yup, + int nbinsz, double zlow, double zup) + : TH3D( name, title, + nbinsx, xlow, xup, + nbinsy, ylow, yup, + nbinsz, zlow, zup ), + fitFunction_( new TF1("gaus", "gaus") ), + canvasFit_(0), + curBin_(0), + autoRangeN_(0) { + + string meanname = name; meanname += "_mean"; + mean_ = new TH2D(meanname.c_str(), meanname.c_str(), + nbinsx, xlow, xup, + nbinsy, ylow, yup); + mean_->SetStats(0); + + string sigmaname = name; sigmaname += "_sigma"; + sigma_ = new TH2D(sigmaname.c_str(), sigmaname.c_str(), + nbinsx, xlow, xup, + nbinsy, ylow, yup); + + sigma_->SetStats(0); + + string chi2name = name; chi2name += "_chi2"; + chi2_ = new TH2D(chi2name.c_str(), chi2name.c_str(), + nbinsx, xlow, xup, + nbinsy, ylow, yup); + chi2_->SetStats(0); + + string nseenname = name; nseenname += "_nseen"; + nseen_ = new TH2D(nseenname.c_str(), nseenname.c_str(), + nbinsx, xlow, xup, + nbinsy, ylow, yup); + nseen_->SetStats(0); + + CreateCanvas(); +} + +ResidualFitter::~ResidualFitter() { + delete fitFunction_; + if(canvas_) delete canvas_; + if(curBin_) delete curBin_; + + delete mean_; + delete sigma_; + delete chi2_; + delete nseen_; +} + +void ResidualFitter::CreateCanvas() { + string cname = "ResidualFitterCanvas_"; cname += GetName(); + canvas_ = new TCanvas(cname.c_str(), cname.c_str(),xCanvas_, yCanvas_); + + canvas_ ->Connect("ProcessedEvent(Int_t,Int_t,Int_t,TObject*)", "ResidualFitter", + this, "ExecuteEvent(Int_t,Int_t,Int_t,TObject*)"); +} + + +void ResidualFitter::Fill() { + + Reset(); + + for(unsigned it = 0; it<true_.size(); it++) { + for(unsigned im = 0; im<meas_.size(); im++) { + TH3D::Fill(true_[it].x_, + true_[it].y_, + meas_[it].z_ - true_[it].z_ ); + } + } +} + +void ResidualFitter::FitSlicesZ(TF1 *f1) { + + mean_->Reset(); + sigma_->Reset(); + chi2_->Reset(); + nseen_->Reset(); + + cout<<"ResidualFitter::FitSlicesZ"<<endl; + if(f1) SetFitFunction(f1); + + for(int ix=1; ix<=GetNbinsX(); ix++) { + for(int iy=1; iy<=GetNbinsY(); iy++) { + Fit(ix, iy, "Q0"); + } + } + + // TH3D::FitSlicesZ(f1); +} + + +void ResidualFitter::ExecuteEvent(Int_t event, Int_t px, Int_t py, TObject *sel) { + + TH2* histo2d = dynamic_cast<TH2*>(sel); + if(!histo2d) return; + + float x = canvas_->AbsPixeltoX(px); + float y = canvas_->AbsPixeltoY(py); + x = canvas_->PadtoX(x); + y = canvas_->PadtoY(y); + + ShowFit(histo2d, x, y); +} + + +void ResidualFitter::ShowFit(TH2* histo2d, double x, double y) { + + if(!canvasFit_) { + string cname = "ResidualFitterCanvasFit_"; cname += GetName(); + canvasFit_ = new TCanvas(cname.c_str(), cname.c_str(),300,300); + } + canvasFit_ ->cd(); + + int binx = histo2d->GetXaxis()->FindBin(x); + int biny = histo2d->GetYaxis()->FindBin(y); + + if(binx == oldBinx_ && biny == oldBiny_ ) return; + oldBinx_ = binx; + oldBiny_ = biny; + + Fit(binx, biny); + + canvasFit_->Modified(); + canvasFit_->Update(); + + canvas_->Modified(); + canvas_->Update(); + canvas_->cd(); +} + + +void ResidualFitter::Fit(int binx, int biny, const char* opt) { + TH1::AddDirectory(0); + + if(curBin_) delete curBin_; + curBin_ = TH3::ProjectionZ("", binx, binx, biny, biny); + + string sopt = fitOptions_; sopt += opt; + + if( autoRangeN_ ) { + double maxpos = curBin_->GetBinCenter( curBin_->GetMaximumBin() ); + fitFunction_->SetRange( maxpos-curBin_->GetRMS()* autoRangeN_ , + maxpos+curBin_->GetRMS()* autoRangeN_ ); + } + + curBin_->Fit(fitFunction_, sopt.c_str() ); + + mean_->SetBinContent(binx,biny, fitFunction_->GetParameter(1) ); + sigma_->SetBinContent(binx,biny, fitFunction_->GetParameter(2) ); + + double chi2overndf=0; + if(fitFunction_->GetNDF()) + chi2overndf = fitFunction_->GetChisquare()/ fitFunction_->GetNDF(); + + chi2_->SetBinContent(binx,biny,chi2overndf); + + nseen_->SetBinContent(binx, biny, + fitFunction_->Integral( fitFunction_->GetXmin(), + fitFunction_->GetXmax()) + /curBin_->GetBinWidth(1) ); + + TH1::AddDirectory(1); +} + + diff --git a/RecoParticleFlow/PFRootEvent/src/classes.h b/RecoParticleFlow/PFRootEvent/src/classes.h index c46ee82ba8f..74375127729 100644 --- a/RecoParticleFlow/PFRootEvent/src/classes.h +++ b/RecoParticleFlow/PFRootEvent/src/classes.h @@ -1,6 +1,7 @@ #include "RecoParticleFlow/PFRootEvent/interface/PFRootEventManager.h" #include "RecoParticleFlow/PFRootEvent/interface/PFRootEventManagerColin.h" #include "RecoParticleFlow/PFRootEvent/interface/EventColin.h" +#include "RecoParticleFlow/PFRootEvent/interface/ResidualFitter.h" namespace { namespace { diff --git a/RecoParticleFlow/PFRootEvent/src/classes_def.xml b/RecoParticleFlow/PFRootEvent/src/classes_def.xml index 706e3905c65..30f41e14551 100644 --- a/RecoParticleFlow/PFRootEvent/src/classes_def.xml +++ b/RecoParticleFlow/PFRootEvent/src/classes_def.xml @@ -4,6 +4,9 @@ <class name="PFRootEventManagerColin"/> <class name="EventColin"/> <class name="EventColin::Particle"/> + <class name="std::vector<EventColin::Particle>"/> <class name="EventColin::Cluster"/> + <class name="std::vector<EventColin::Cluster>"/> + <class name="ResidualFitter"/> </lcgdict> diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/compareResMaps.C b/RecoParticleFlow/PFRootEvent/test/Macros/compareResMaps.C new file mode 100644 index 00000000000..b5470a5580a --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/compareResMaps.C @@ -0,0 +1,25 @@ +{ +gROOT->Macro("init.C"); + +Chain std("Eff","Out_std/out_b_singlegamma_pf_*root"); + +ResidualFitter eri1("eri1","truc",30,-3,3,100,0,200,100,-0.05,0.05); +std.Draw("clusters_.eta-particles_.eta:particles_.e:particles_.eta>>eri1","","goff"); +eri1.SetAutoRange(3); +eri1.SetFitOptions("W"); +eri1.FitSlicesZ(); +eri1.cd(); +eri1_sigma.Draw("colz"); + +float max = 0.025; +float min = 0; +eri1_sigma.SetMaximum(max); +eri1_sigma.SetMinimum(min); + +PFResolutionMap* etanew = (PFResolutionMap*) eri1_sigma.Clone("etanew"); + + +PFResolutionMap etaold("etaold","../../PFProducer/data/resmap_ECAL_eta.dat"); +etaold.SetMaximum(max); +etanew.SetMinimum(min); +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/effEflowIslandStyle.C b/RecoParticleFlow/PFRootEvent/test/Macros/effEflowIslandStyle.C new file mode 100644 index 00000000000..cf4bd0129fe --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/effEflowIslandStyle.C @@ -0,0 +1,67 @@ +{ +eflow0->SetStats(0); +eflow0->SetTitle(""); + +eflow0.GetYaxis()->SetTitle("#varepsilon"); +eflow0.GetYaxis()->SetTitleSize(0.08); +eflow0.GetYaxis()->SetTitleOffset(0.5); +eflow0.GetXaxis()->SetTitleSize(0.05); +eflow0.GetXaxis()->SetTitleOffset(0.8); + +eflow0->GetXaxis()->SetTitle("E_{#gamma}"); +eflow0->SetLineColor(2); +eflow0->SetLineWidth(2); + + +island1->SetStats(0); +island1->SetTitle(""); + + +// island1->GetYaxis()->SetTitle("#varepsilon"); +// island1->GetXaxis()->SetTitle("E_{#gamma}"); + +island1->SetLineColor(1); +island1->SetLineWidth(2); + +TLegend leg(0.4,0.4,0.89,0.7); +leg.AddEntry(eflow0, "Eflow, T_{seed}=200 MeV", "l"); +leg.AddEntry(island1, "Island", "l"); + +bool famos = true; +if(famos) { + gSystem->Load("libTextTree"); + TextTree t("/afs/cern.ch/user/c/cbern/scratch0/Logbook_CMS/Analysis/EFLOW/ECAL_clustering/SinglePhotons/Efficiency_Purity/Barrel/effpur.dat","xxx"); + + bool comp = false; + + t.SetLineWidth(3); + t.Draw("c4:c1","c0==0.2","goff"); + // t.Draw("c2:c0","c1==0.3","plsame"); + TGraph *gra = new TGraph(t.GetSelectedRows(), + t.GetV2(), t.GetV1()); + gra->SetLineWidth(3); + gra->SetMarkerStyle(20); + gra->SetMarkerColor(1); + gra->Draw("psame"); + + t.Draw("c2:c1","c0==0.2","goff"); + TGraph *grb = new TGraph(t.GetSelectedRows(), + t.GetV2(), t.GetV1()); + grb->SetMarkerStyle(20); + grb->SetLineWidth(3); + grb->SetMarkerColor(2); + grb->Draw("psame"); + + leg->AddEntry(grb, "Eflow, T_{seed}=200 MeV (FAMOS)", "p"); + leg->AddEntry(gra, "Island (FAMOS)", "p"); +} +leg.Draw(); + +TLine l; +l.SetLineStyle(2); + +l.DrawLine(0, 1, 5, 1); + +gPad->Modified(); + +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/effEflowSeedsStyle.C b/RecoParticleFlow/PFRootEvent/test/Macros/effEflowSeedsStyle.C new file mode 100644 index 00000000000..1beb14d2e80 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/effEflowSeedsStyle.C @@ -0,0 +1,47 @@ +{ + +TH1F* eflow02_0 = (TH1F*) gDirectory->Get("eflow0.2_0"); +TH1F* eflow015_0 = (TH1F*) gDirectory->Get("eflow0.15_0"); +TH1F* eflow03_0 = (TH1F*) gDirectory->Get("eflow0.3_0"); + +eflow02_0->SetStats(0); +eflow02_0->SetTitle(""); +eflow015_0->GetYaxis()->SetTitle("#varepsilon"); +eflow015_0.GetYaxis()->SetTitleSize(0.08); +eflow015_0.GetYaxis()->SetTitleOffset(0.5); +eflow015_0.GetXaxis()->SetTitleSize(0.05); +eflow015_0.GetXaxis()->SetTitleOffset(0.8); + +eflow015_0->GetXaxis()->SetTitle("E_{#gamma}"); +eflow02_0->SetLineColor(2); +eflow02_0->SetLineWidth(2); + + +eflow015_0->SetStats(0); +eflow015_0->SetTitle(""); +eflow015_0->SetLineColor(4); +eflow015_0->SetLineWidth(2); + +eflow03_0->SetStats(0); +eflow03_0->SetTitle(""); +eflow03_0->SetLineColor(5); +eflow03_0->SetLineWidth(2); + + + +TLegend leg(0.5,0.4,0.8,0.7); +leg.AddEntry(eflow015_0, "Eflow, T_{seed}=150 MeV", "l"); +leg.AddEntry(eflow02_0, "Eflow, T_{seed}=200 MeV", "l"); +leg.AddEntry(eflow03_0, "Eflow, T_{seed}=300 MeV", "l"); + + +leg.Draw(); + +TLine l; +l.SetLineStyle(2); + +l.DrawLine(0, 1, 5, 1); + +gPad->Modified(); + +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/effIneff.C b/RecoParticleFlow/PFRootEvent/test/Macros/effIneff.C new file mode 100644 index 00000000000..3335fbe1d46 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/effIneff.C @@ -0,0 +1,298 @@ + +Chain* chain; + +using namespace std; + +void Init(const char* files="Out_std/out_b_singlegamma_pf_*root") { + gROOT->Macro("init.C"); + + chain = new Chain("Eff",files); +} + +void EffIneff2D(int clustertype, const char* cut= "") { + + + string hname = "effineff1"; + + string var; + char type[2]; + sprintf(type,"%d",clustertype); + hname += type; + + switch(clustertype) { + case 0: + cout<<"eflow"<<endl; + var = "@clusters_.size()"; + break; + case 1: + cout<<"island"<<endl; + var = "@clustersIsland_.size()"; + break; + } + var += ":particles_.e>>"; + var += hname; + + + TH2F* h=new TH2F( hname.c_str(), hname.c_str(), 200, 0, 200, 4,0,4); + + chain->Draw( var.c_str(), cut, "lego2"); +} + +TH1F* EffPlateau(Chain* chain, + int clustertype, + const char* hname="effplateau", + float drmax=0.1, + float etamax=1 ) { + + // if(!chain) Init(); + + string var = "particles_.e"; + + string shname = hname; + char type[2]; + sprintf(type,"%d",clustertype); + shname += type; + + char cdrmax[10]; + sprintf(cdrmax,"%f",drmax); + + char cetamax[10]; + sprintf(cetamax,"%f",etamax); + string cut = "@particles_.size()==1 && abs(particles_[0].eta)<"; + // string cut = "abs(particles_.eta)<"; + cut += cetamax; + + string cutseen = cut; + + switch(clustertype) { + case 0: + cutseen += " && sqrt((clusters_.eta-particles_[0].eta)^2 + (clusters_.phi-particles_[0].phi)^2) < "; + cutseen += cdrmax; + + cout<<"eflow"<<endl; + break; + case 1: + cutseen += " && sqrt((clustersIsland_.eta-particles_.eta)^2 + (clustersIsland_.phi-particles_.phi)^2) < "; + cutseen += cdrmax; + + cout<<"island"<<endl; + break; + } + + TH1F* h=new TH1F(shname.c_str(), shname.c_str(), 50,0,5); + + string nameref = shname; + nameref += "_ref"; + TH1F* ref = (TH1F*) h->Clone( nameref.c_str() ); + + string nameseen = shname; + nameseen += "_seen"; + TH1F* seen = (TH1F*) h->Clone( nameseen.c_str() ); + + string varref = var; + varref += ">>"; varref += nameref; + + cout<<varref<<" "<<cut<<endl; + chain->Draw(varref.c_str(), cut.c_str(), "goff"); + + string varseen = var; + varseen += ">>"; varseen += nameseen; + cout<<varseen<<" "<<cutseen<<endl; + chain->Draw(varseen.c_str(), cutseen.c_str(),"goff" ); + + h->Add(seen); + h->Sumw2(); + ref->Sumw2(); + h->Divide(ref); + + return h; +} + +void Impurity( int clustertype, + float drmax=0.1, + float etamax=1, + const char* hname="impurity") { + + string eflowname = hname; eflowname += "_eflow"; + string islandname = hname; islandname += "_island"; + string refname = hname; refname += "_ref"; + + int nbinse = 100; + float mine = 0; + float maxe = 200; + + TH2D* heflow=new TH2D(eflowname.c_str(), eflowname.c_str(), + nbinse, mine, maxe, 10,0,10); + TH2D* hisland = (TH2D*) heflow->Clone(islandname.c_str()); + TH1D* href = new TH1D(refname.c_str(), refname.c_str(), + nbinse, mine, maxe); + + EventColin* event = new EventColin(); + chain->SetBranchAddress("event",&event); + +// vector<int> truc; +// cout<<truc.size()<<endl; + + for(unsigned i=0; i<chain->GetEntries(); i++) { + + if( (i%1000) == 0) cout<<i<<endl; + + chain->GetEntry(i); + // count the number of clusters close to the particle + + const std::vector<EventColin::Particle>& + particles = event->particles(); + + if(particles.size() != 1) { + // cerr<<"number of particles != 1 - skip"<<endl; + continue; + } + + if( fabs(particles[0].eta) > etamax) continue; + + href->Fill(particles[0].e); + +// const vector<EventColin::Cluster>* clusters; +// switch(clustertype) { +// case 0: +// clusters = & event->clusters(); +// break; +// case 1: +// clusters = & event->clustersIsland(); +// break; +// default: +// cerr<<"clustertype "<<clustertype<<" not recognized"<<endl; +// return; +// } + +// const vector<EventColin::Cluster>& cref = *clusters; + +// const std::vector<EventColin::Cluster>& +// clusters = event->clusters(); + +// const std::vector<EventColin::Cluster>& +// clustersIsland = event->clustersIsland(); + + + const vector<EventColin::Cluster>& clustersEflow = event->clusters(); + int nclustersOkeflow = 0; + for( unsigned jc = 0; jc<clustersEflow.size(); jc++ ) { + double dphi = clustersEflow[jc].phi - particles[0].phi; + double deta = clustersEflow[jc].eta - particles[0].eta; + double dr = sqrt(dphi*dphi + deta*deta); + + if(dr<drmax) nclustersOkeflow++; + } + + heflow->Fill( particles[0].e, nclustersOkeflow ); + + const vector<EventColin::Cluster>& clustersIsland = event->clustersIsland(); + int nclustersOkisland = 0; + for( unsigned jc = 0; jc<clustersIsland.size(); jc++ ) { + double dphi = clustersIsland[jc].phi - particles[0].phi; + double deta = clustersIsland[jc].eta - particles[0].eta; + double dr = sqrt(dphi*dphi + deta*deta); + + if(dr<drmax) nclustersOkisland++; + } + + hisland->Fill( particles[0].e, nclustersOkisland ); + } + + return; +} + + +// TH1F* ImpurityRatio( const TH2F* h ) { + + +// } + + + +TH1F* EffPlateau2( Chain* chain, + int clustertype, + const char* hname="effplateau", + float drmax=0.1, + float etamax=1 ) { + + + string var = "particles_.e"; + + string shname = hname; + char type[2]; + sprintf(type,"%d",clustertype); + shname += type; + + TH1F* h=new TH1F(shname.c_str(), shname.c_str(), 50,0,5); + + string nameref = shname; + nameref += "_ref"; + TH1F* href = (TH1F*) h->Clone( nameref.c_str() ); + + string nameseen = shname; + nameseen += "_seen"; + TH1F* hseen = (TH1F*) h->Clone( nameseen.c_str() ); + + + EventColin* event = new EventColin(); + chain->SetBranchAddress("event",&event); + + + for(unsigned i=0; i<chain->GetEntries(); i++) { + + if( (i%1000) == 0) cout<<i<<endl; + chain->GetEntry(i); + // count the number of clusters close to the particle + + const std::vector<EventColin::Particle>& + particles = event->particles(); + + if(particles.size() != 1) { + // cerr<<"number of particles != 1 - skip"<<endl; + continue; + } + + if( fabs(particles[0].eta) > etamax) continue; + href->Fill( particles[0].e ); + + const vector<EventColin::Cluster>* clusters; + switch(clustertype) { + case 0: + clusters = & event->clusters(); + break; + case 1: + clusters = & event->clustersIsland(); + break; + default: + cerr<<"clustertype "<<clustertype<<" not recognized"<<endl; + return; + } + + const vector<EventColin::Cluster>& cref = *clusters; + +// const std::vector<EventColin::Cluster>& +// clusters = event->clusters(); + +// const std::vector<EventColin::Cluster>& +// clustersIsland = event->clustersIsland(); + + + int nclustersOk = 0; + for( unsigned jc = 0; jc<cref.size(); jc++ ) { + double dphi = cref[jc].phi - particles[0].phi; + double deta = cref[jc].eta - particles[0].eta; + double dr = sqrt(dphi*dphi + deta*deta); + + if(dr<drmax) nclustersOk++; + } + + if(nclustersOk) + hseen->Fill( particles[0].e ); + } + + h->Add(hseen); + h->Divide(href); + + return h; +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/effIneffStyle.C b/RecoParticleFlow/PFRootEvent/test/Macros/effIneffStyle.C new file mode 100644 index 00000000000..3d4898cd817 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/effIneffStyle.C @@ -0,0 +1,67 @@ +{ +eflow0->SetStats(0); +eflow0->SetTitle(""); + +eflow0->GetYaxis()->SetTitle("#varepsilon"); +eflow0.GetYaxis()->SetTitleSize(0.08); +eflow0.GetYaxis()->SetTitleOffset(0.5); +eflow0.GetXaxis()->SetTitleSize(0.05); +eflow0.GetXaxis()->SetTitleOffset(0.8); + +eflow0->GetXaxis()->SetTitle("E_{#gamma}"); +eflow0->SetLineColor(2); +eflow0->SetLineWidth(2); + + +island1->SetStats(0); +island1->SetTitle(""); + + +// island1->GetYaxis()->SetTitle("#varepsilon"); +// island1->GetXaxis()->SetTitle("E_{#gamma}"); + +island1->SetLineColor(1); +island1->SetLineWidth(2); + +TLegend leg(0.5,0.4,0.8,0.7); +leg.AddEntry(eflow0, "Eflow", "l"); +leg.AddEntry(island1, "Island", "l"); + +bool famos = true; +if(famos) { + gSystem->Load("libTextTree"); + TextTree t("/afs/cern.ch/user/c/cbern/scratch0/Logbook_CMS/Analysis/EFLOW/ECAL_clustering/SinglePhotons/Efficiency_Purity/Barrel/effpur.dat","xxx"); + + bool comp = false; + + t.SetLineWidth(3); + t.Draw("c4:c1","c0==0.2","goff"); + // t.Draw("c2:c0","c1==0.3","plsame"); + TGraph *gra = new TGraph(t.GetSelectedRows(), + t.GetV2(), t.GetV1()); + gra->SetLineWidth(3); + gra->SetMarkerStyle(20); + gra->SetMarkerColor(1); + gra->Draw("psame"); + + t.Draw("c2:c1","c0==0.2","goff"); + TGraph *grb = new TGraph(t.GetSelectedRows(), + t.GetV2(), t.GetV1()); + grb->SetMarkerStyle(20); + grb->SetLineWidth(3); + grb->SetMarkerColor(2); + grb->Draw("psame"); + + leg->AddEntry(grb, "Eflow (FAMOS)", "p"); + leg->AddEntry(gra, "Island (FAMOS)", "p"); +} +leg.Draw(); + +TLine l; +l.SetLineStyle(2); + +l.DrawLine(0, 1, 5, 1); + +gPad->Modified(); + +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/impEflowIslandStyle.C b/RecoParticleFlow/PFRootEvent/test/Macros/impEflowIslandStyle.C new file mode 100644 index 00000000000..25099618155 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/impEflowIslandStyle.C @@ -0,0 +1,44 @@ +{ +gROOT->LoadMacro("effIneff.C"); +Init("ScanOut_eb_seed_0.2_0.4/out_singlegamma_repf_*.root"); +// Init("ScanOut_eb_seed_0.15_0.8/out_singlegamma_repf_*.root"); +Impurity(0,0.1,1,"impurity"); + +impurity_island->ProjectionX("impisland",3,-1); +impurity_island->ProjectionX("refisland"); + +impurity_eflow->ProjectionX("impeflow",3,-1); +impurity_eflow->ProjectionX("refeflow"); + +impeflow.Divide(impurity_ref); +impisland.Divide(impurity_ref); + +impeflow->SetStats(0); +impeflow->SetLineColor(2); +impeflow->SetLineWidth(2); + +impisland->SetTitle(""); +impisland->GetYaxis()->SetTitle("Impurity (#DeltaR=0.1)"); +impisland->GetYaxis()->SetTitleSize(0.05); +impisland->GetYaxis()->SetTitleOffset(0.95); +impisland->GetXaxis()->SetTitleSize(0.05); +impisland->GetXaxis()->SetTitleOffset(0.95); +impisland->GetXaxis()->SetTitle("E_{#gamma}"); + +impisland->SetStats(0); +impisland->SetLineColor(1); +impisland->SetLineWidth(2); + +impisland->SetMaximum(0.5); +impisland->SetMinimum(0.); + +impisland->Draw(); +impeflow->Draw("same"); + +TLegend leg(0.13,0.69,0.51,0.88); +leg.AddEntry(impisland, "Island", "l"); +leg.AddEntry(impeflow, "Eflow, T_{seed}=200 MeV", "l"); +leg.Draw(); + +gPad->Modified(); +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/impEflowSeedsStyle.C b/RecoParticleFlow/PFRootEvent/test/Macros/impEflowSeedsStyle.C new file mode 100644 index 00000000000..4e3db76d74a --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/impEflowSeedsStyle.C @@ -0,0 +1,63 @@ +{ +gROOT->LoadMacro("effIneff.C"); +// Init("ScanOut_eb_seed_0.2_0.4/out_singlegamma_repf_*.root"); +Init("ScanOut_eb_seed_0.15_0.8/out_singlegamma_repf_*.root"); +Impurity(0,0.1,1,"impurity_015"); +Init("ScanOut_eb_seed_0.2_0.4/out_singlegamma_repf_*.root"); +Impurity(0,0.1,1,"impurity_02"); +Init("ScanOut_eb_seed_0.3_0.6/out_singlegamma_repf_*.root"); +Impurity(0,0.1,1,"impurity_03"); + + +impurity_015_eflow->ProjectionX("impeflow015",3,-1); +impeflow015.Divide(impurity_015_ref); + +impurity_02_eflow->ProjectionX("impeflow02",3,-1); +impeflow02.Divide(impurity_02_ref); + +impurity_03_eflow->ProjectionX("impeflow03",3,-1); +impeflow03.Divide(impurity_03_ref); + +impeflow015->SetTitle(""); +impeflow015->GetYaxis()->SetTitle("Impurity (#DeltaR=0.1)"); +impeflow015->GetYaxis()->SetTitleSize(0.05); +impeflow015->GetYaxis()->SetTitleOffset(0.95); +impeflow015->GetXaxis()->SetTitleSize(0.05); +impeflow015->GetXaxis()->SetTitleOffset(0.95); +impeflow015->GetXaxis()->SetTitle("E_{#gamma}"); + +impeflow015->SetStats(0); +impeflow015->SetLineColor(4); +impeflow015->SetLineWidth(2); + +impeflow02->SetLineColor(2); +impeflow02->SetLineWidth(2); + +impeflow03->SetLineColor(5); +impeflow03->SetLineWidth(2); + + +impeflow015->SetMaximum(0.5); +impeflow015->SetMinimum(0.); + +impeflow015->Draw(); +impeflow02->Draw("same"); +impeflow03->Draw("same"); + + + +// impeflow->SetStats(0); +// impeflow->SetLineColor(2); +// impeflow->SetLineWidth(2); + + +// impeflow->Draw("same"); + +TLegend leg(0.13,0.69,0.51,0.88); +leg.AddEntry(impeflow015, "Eflow, T_{seed}=150 MeV", "l"); +leg.AddEntry(impeflow02, "Eflow, T_{seed}=200 MeV", "l"); +leg.AddEntry(impeflow03, "Eflow, T_{seed}=300 MeV", "l"); +leg.Draw(); + +// gPad->Modified(); +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/process.C b/RecoParticleFlow/PFRootEvent/test/Macros/process.C new file mode 100644 index 00000000000..e5efe096002 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/process.C @@ -0,0 +1,24 @@ +{ +// initialize the core of the framework, and load the PFRootEvent +// library, which contains the ROOT interface + +gSystem->Load("libFWCoreFWLite.so"); +gSystem->Load("libRecoParticleFlowPFRootEvent.so"); +AutoLibraryLoader::enable(); +gSystem->Load("libCintex.so"); +ROOT::Cintex::Cintex::Enable(); + +// create a PFRootEventManager +PFRootEventManagerColin em("/afs/cern.ch/user/c/cbern/scratch0/CMS/CMSSW_1_1_1/src/RecoParticleFlow/PFRootEvent/test/pfRootEvent.opt"); + +if(em.tree_) { + int n = em.tree_->GetEntries(); + // int n = 10; + for(unsigned i=0; i<n; i++) { + em.processEntry(i); + } + //em.processEntry(1126); + em.write(); +} +gApplication->Terminate(); +} diff --git a/RecoParticleFlow/PFRootEvent/test/Macros/resMaps.C b/RecoParticleFlow/PFRootEvent/test/Macros/resMaps.C new file mode 100644 index 00000000000..7371d0569a4 --- /dev/null +++ b/RecoParticleFlow/PFRootEvent/test/Macros/resMaps.C @@ -0,0 +1,35 @@ +{ +gROOT->Macro("init.C"); + +Chain chain1("Eff","ScanOut_eb_seed_0.15_0.8/*root"); + +// Chain chain2("Eff","Out_clustering_thresh_Ecal_Endcap_b_singlegamma_*/*_0.5.root"); + + +ResidualFitter::SetCanvas(400,400); + +ResidualFitter eri1("eri1","eri1",36,-3,3,100,0,200,100,-0.05,0.05); +chain1.Draw("clusters_.eta-particles_.eta:particles_.e:particles_.eta>>eri1","@particles_.size()==1","goff"); +eri1.SetAutoRange(3); +eri1.SetFitOptions("W"); +eri1.FitSlicesZ(); +eri1.cd(); +eri1_sigma.Draw("lego2"); + + +// ResidualFitter eri2("eri2","eri2",36,-3,3,1,0,10,100,-0.05,0.05); +// chain2.Draw("clusters_.eta-particles_.eta:particles_.e:particles_.eta>>eri2","@particles_.size()==1","goff"); +// eri2.SetAutoRange(3); +// eri2.SetFitOptions("W"); +// eri2.FitSlicesZ(); +// eri2.cd(); +// eri2_sigma.Draw("colz"); + +// TCanvas c3("ratio","",300,300); +// TH2D* ratio = (TH2D* ) eri2_sigma->Clone("ratio"); +// ratio->Divide(eri1_sigma); +// ratio->Draw("box"); + + + +} diff --git a/RecoParticleFlow/PFRootEvent/test/scan.pl b/RecoParticleFlow/PFRootEvent/test/scan.pl index b4080ce7a84..0bf846345c0 100755 --- a/RecoParticleFlow/PFRootEvent/test/scan.pl +++ b/RecoParticleFlow/PFRootEvent/test/scan.pl @@ -4,74 +4,100 @@ #use strict; use diagnostics; use Getopt::Long; +use File::Basename; my $tag1=0; my $tag2=0; + my $sfiles=0; +my $filePattern=0; + my $svalues=0; + my $masterfile="pfRootEvent.opt"; + my $doNotSubmit=0; +my $help=0; + +my $bsub=0; + +my $pwd = `pwd`; +chomp $pwd; +my $date = `date +%d%b%Y_%H%M%S`; +my $scandir = "ScanOut_$date"; +chomp $scandir; +`mkdir $scandir`; +`echo "scan.pl @ARGV" > scan.pl.log`; +`mv scan.pl.log $scandir`; GetOptions ('tag1=s' => \$tag1, 'tag2=s' => \$tag2, 'files=s' => \$sfiles, + 'pattern=s' => \$filePattern, 'values=s' => \$svalues, 'master=s' => \$masterfile, - 'n' => \$doNotSubmit ); - + 'h' => \$help, + 'n' => \$doNotSubmit, + 'b=s' => \$bsub ); + +if($help) { + print "usage : scan.pl -tag1 clustering -tag2 thresh_Ecal_Endcap -files=\"*.root\" -values \"0.1 0.3 0.5\" -master pfRootEvent.opt [-n] [-b \"bsub -q 8nm\"]\n"; + print " -n : do not proceed\n"; + print " -b <>: run on the batch system (LSF)\n"; + exit(1); +} if($doNotSubmit) { print "will do nothing... \n"; } print "master : $masterfile\n"; -print "========== tags: $tag1 $tag2 == values: $svalues == $sfiles ================= \n"; +print "======== tags: $tag1 $tag2 == values: $svalues == $sfiles ======= \n"; + -my @rootfiles; -my $basedir = 0; + +my $ls = "ls"; +my $basedir = "$sfiles"; # contains directory path if( $sfiles =~ /^\/castor/) { # print "source files are on castor\n"; + $ls = "nsls"; $basedir = "rfio://$sfiles"; - my @tmpfiles = `nsls $sfiles`; - foreach my $file (@tmpfiles) { - if( $file =~ /\.root$/ ) { - push(@rootfiles, $file); +} + + +my @rootfiles; # will contain base filenames (no path) + +my @tmpfiles = `$ls $sfiles`; +foreach my $file (@tmpfiles) { + if( $file =~ /\.root$/ ) { + if( ( $filePattern && + $file =~ /$filePattern/ ) || + !$filePattern ) { + push(@rootfiles, basename($file) ); + } } } -else { - @rootfiles = `ls $sfiles`; -} - -#print "$basedir\n"; -#print "@rootfiles \n"; my @values = split(" ",$svalues); -#if($svalues == 0) { -# print "no values given\n" -#} -#else { -# print "values : @values \n"; -#} + my $masterprocess = "Macros/process.C"; foreach my $rootfile (@rootfiles) { chomp $rootfile; - my $fullfilename = "$rootfile"; - if($basedir) { - $fullfilename = "$basedir/$rootfile"; - } + my $fullfilename = "$basedir/$rootfile"; print "processing : $fullfilename\n"; if($svalues == 0) { - my $outfile = "auto_$masterfile.opt"; + my $optfile = "$pwd/$scandir/auto_$rootfile.opt"; + my $outrootfile = "$pwd/$scandir/out_$rootfile"; open(IN, "<$masterfile"); - open(OUT, ">$outfile"); + open(OUT, ">$optfile"); while ( <IN> ) { my $line = $_; if($line =~ m!root\s+file\s+! ) { @@ -79,6 +105,9 @@ foreach my $rootfile (@rootfiles) { print OUT "root file $fullfilename\n"; } } + elsif($line =~ m!root\s+outfile\s+! ) { + print OUT "root outfile $outrootfile\n"; + } else { print OUT "$line"; } @@ -86,23 +115,34 @@ foreach my $rootfile (@rootfiles) { close(IN); close(OUT); + my $macro = "$pwd/$scandir/auto_$rootfile.C"; open(IN, "<$masterprocess"); - `rm -f tmpprocess.C`; - open(OUT, ">tmpprocess.C"); +# `rm -f tmpprocess.C`; + open(OUT, ">$macro"); while ( <IN> ) { my $line = $_; if($line =~ /^PFRootEventManagerColin\s+em/ && $line !~ /\s*\/\//) { - print OUT "PFRootEventManagerColin em(\"$outfile\");\n"; + print OUT "PFRootEventManagerColin em(\"$optfile\");\n"; } else { print OUT "$line"; } } if(! $doNotSubmit) { - `nice -n 5 root -b tmpprocess.C`; - my $outrootfile = "out_$rootfile"; - `mv out.root $outrootfile`; +# my $outrootfile = "$scandir/out_$rootfile"; + if( !$bsub ) { # standard execution + `nice -n 5 root -b $macro`; +# `mv out.root $outrootfile`; + } + else { # batch execution + # print "batch \n"; + print "$bsub root -b $macro\n"; + `$bsub root -b $macro`; + # `mv out.root $outrootfile`; + } + #`cp $macro $scandir`; + #`cp $optfile $scandir`; } } diff --git a/RecoParticleFlow/PFTracking/doc/html/index.html b/RecoParticleFlow/PFTracking/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoParticleFlow/PFTracking/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoParticleFlow/PFTracking/doc/html/overview.html b/RecoParticleFlow/PFTracking/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoParticleFlow/PFTracking/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterByHelixProjections.h b/RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterByHelixProjections.h index 0d18ff17754..75a6beac6a1 100644 --- a/RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterByHelixProjections.h +++ b/RecoPixelVertexing/PixelTrackFitting/interface/PixelFitterByHelixProjections.h @@ -6,14 +6,16 @@ #include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" #include "FWCore/Framework/interface/EventSetup.h" #include "DataFormats/TrackReco/interface/Track.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" #include <vector> -namespace edm {class ParameterSet;} +//namespace edm {class ParameterSet;} class TransientTrackingRecHitBuilder; class TrackerGeometry; class MagneticField; + class PixelFitterByHelixProjections : public PixelFitter { public: PixelFitterByHelixProjections( const edm::ParameterSet& cfg); @@ -33,6 +35,8 @@ private: double errTip2(float apt, float eta) const; private: + edm::ParameterSet theConfig; + mutable const TrackerGeometry * theTracker; mutable const MagneticField * theField; mutable const TransientTrackingRecHitBuilder * theTTRecHitBuilder; diff --git a/RecoPixelVertexing/PixelTrackFitting/src/PixelFitterByHelixProjections.cc b/RecoPixelVertexing/PixelTrackFitting/src/PixelFitterByHelixProjections.cc index 8cc538d8697..66b279408d2 100644 --- a/RecoPixelVertexing/PixelTrackFitting/src/PixelFitterByHelixProjections.cc +++ b/RecoPixelVertexing/PixelTrackFitting/src/PixelFitterByHelixProjections.cc @@ -34,7 +34,8 @@ #include "PixelTrackBuilder.h" PixelFitterByHelixProjections::PixelFitterByHelixProjections( - const edm::ParameterSet& cfg) : theTracker(0), theField(0), theTTRecHitBuilder(0) { } + const edm::ParameterSet& cfg) + : theConfig(cfg), theTracker(0), theField(0), theTTRecHitBuilder(0) { } reco::Track* PixelFitterByHelixProjections::run( const edm::EventSetup& es, @@ -59,7 +60,10 @@ reco::Track* PixelFitterByHelixProjections::run( theField = fieldESH.product(); edm::ESHandle<TransientTrackingRecHitBuilder> ttrhbESH; - es.get<TransientRecHitRecord>().get("WithoutRefit",ttrhbESH); +// std::string builderName = "WithoutRefit"; +// std::string builderName = "TTRHBuilder4PixelTriplets"; + std::string builderName = theConfig.getParameter<std::string>("TTRHBuilder"); + es.get<TransientRecHitRecord>().get(builderName,ttrhbESH); theTTRecHitBuilder = ttrhbESH.product(); } diff --git a/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h b/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h deleted file mode 100644 index 9233921fd6e..00000000000 --- a/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef CosmicHitTripletGenerator_H -#define CosmicHitTripletGenerator_H - -#include <vector> -#include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGenerator.h" -#include "RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h" -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h" -#include "DataFormats/Common/interface/RangeMap.h" -#include "FWCore/Framework/interface/EventSetup.h" - -class LayerWithHits; -class DetLayer; -class TrackingRegion; -class HitTripletGeneratorFromLayerTriplet; - - -/** \class CosmicHitTripletGenerator - * Hides set of HitTripletGeneratorFromLayerTriplet generators. - */ - -class CosmicHitTripletGenerator : public HitTripletGenerator{ - - typedef vector<CosmicHitTripletGeneratorFromLayerTriplet *> Container; - -public: - CosmicHitTripletGenerator(LayerTriplets& layers, const edm::EventSetup& iSetup); - CosmicHitTripletGenerator(LayerTriplets& layers); - - - ~CosmicHitTripletGenerator(); - - /// add generators based on layers - // void add(const DetLayer* inner, const DetLayer* outer); - void add(const LayerWithHits* inner, - const LayerWithHits* middle, - const LayerWithHits* outer, - const edm::EventSetup& iSetup); - /// form base class - virtual void hitTriplets( const TrackingRegion& reg, - OrderedHitTriplets & prs, - const edm::EventSetup& iSetup); - - /// from base class - virtual CosmicHitTripletGenerator * clone() const - { return new CosmicHitTripletGenerator(*this); } - -private: - - - Container theGenerators; - -}; -#endif diff --git a/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h b/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h deleted file mode 100644 index 54839a5b9bb..00000000000 --- a/RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h +++ /dev/null @@ -1,51 +0,0 @@ -#ifndef CosmicHitTripletGeneratorFromLayerTriplet_h -#define CosmicHitTripletGeneratorFromLayerTriplet_h - -#include "RecoPixelVertexing/PixelTriplets/interface/HitTripletGeneratorFromPairAndLayers.h" -#include "RecoTracker/TkHitPairs/interface/LayerWithHits.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h" -class DetLayer; -class TrackingRegion; -class LayerWithHits; - -class CosmicHitTripletGeneratorFromLayerTriplet : public HitTripletGeneratorFromPairAndLayers { - -public: - - - CosmicHitTripletGeneratorFromLayerTriplet( - const LayerWithHits* inner, - const LayerWithHits* middle, - const LayerWithHits* outer, - const edm::EventSetup& iSetup); - virtual ~CosmicHitTripletGeneratorFromLayerTriplet() { } - - virtual OrderedHitTriplets hitTriplets( const TrackingRegion& region,const edm::EventSetup& iSetup ) { - return HitTripletGenerator::hitTriplets(region, iSetup); - } - virtual void hitTriplets( const TrackingRegion& ar, OrderedHitTriplets & ap,const edm::EventSetup& iSetup); - - virtual CosmicHitTripletGeneratorFromLayerTriplet* clone() const { - return new CosmicHitTripletGeneratorFromLayerTriplet(*this); - } - void init( const HitPairGenerator & pairs, - std::vector<const LayerWithHits*> layers, LayerCacheType* layerCache){} - const LayerWithHits* innerLayer() const { return theInnerLayer; } - const LayerWithHits* middleLayer() const { return theMiddleLayer; } - const LayerWithHits* outerLayer() const { return theOuterLayer; } - -private: - const TransientTrackingRecHitBuilder * TTRHbuilder; - const TrackerGeometry* trackerGeometry; - const LayerWithHits* theOuterLayer; - const LayerWithHits* theMiddleLayer; - const LayerWithHits* theInnerLayer; - const DetLayer* innerlay; - const DetLayer* outerlay; - const DetLayer* middlelay; - -}; - -#endif diff --git a/RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h b/RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h deleted file mode 100644 index dc9874ee588..00000000000 --- a/RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef CosmicLayerTriplets_H -#define CosmicLayerTriplets_H - -/** \class CosmicLayerTriplets - * find all (resonable) pairs of pixel layers - */ -#include "Geometry/TrackerGeometryBuilder/interface/TrackerLayerIdAccessor.h" -#include "RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h" -#include "DataFormats/Common/interface/RangeMap.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "TrackingTools/DetLayers/interface/BarrelDetLayer.h" -#include "TrackingTools/DetLayers/interface/ForwardDetLayer.h" -#include "RecoTracker/TkHitPairs/interface/LayerWithHits.h" -//#include "RecoTracker/TkDetLayers/interface/PixelForwardLayer.h" -#include "RecoTracker/TkDetLayers/interface/TOBLayer.h" -#include "RecoTracker/TkDetLayers/interface/TIBLayer.h" -class CosmicLayerTriplets : public LayerTriplets{ -public: - CosmicLayerTriplets():isFirstCall(true){}; - ~CosmicLayerTriplets(); - // explicit PixelSeedLayerPairs(const edm::EventSetup& iSetup); - - - - // virtual vector<LayerPair> operator()() const; - // vector<LayerTriplet> operator()() ; - vector<LayerPairAndLayers> layers(); - -private: - - //definition of the map - - - SiStripRecHit2DCollection::range rphi_range1; - SiStripRecHit2DCollection::range rphi_range2; - SiStripRecHit2DCollection::range rphi_range3; - SiStripRecHit2DCollection::range rphi_range4; - - SiStripRecHit2DCollection::range stereo_range1; - SiStripRecHit2DCollection::range stereo_range2; - SiStripRecHit2DCollection::range stereo_range3; - - SiStripMatchedRecHit2DCollection::range match_range1; - SiStripMatchedRecHit2DCollection::range match_range2; - TrackerLayerIdAccessor acc; - - LayerWithHits *lh1; - LayerWithHits *lh2; - LayerWithHits *lh3; - LayerWithHits *lh4; - - vector<BarrelDetLayer*> bl; - vector<ForwardDetLayer*> fpos; - vector<ForwardDetLayer*> fneg; - //MP - vector<LayerWithHits*> allLayersWithHits; - bool isFirstCall; - public: - - void init(const SiStripRecHit2DCollection &collstereo, - const SiStripRecHit2DCollection &collrphi, - const SiStripMatchedRecHit2DCollection &collmatched, - std::string geometry, - const edm::EventSetup& iSetup); - - private: - std::string _geometry; -}; - - - - -#endif diff --git a/RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h b/RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h deleted file mode 100644 index f9d116ca913..00000000000 --- a/RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef LayerTriplets_H -#define LayerTriplets_H - -/** A class grouping pixel layers in pairs and associating a vector - of layers to each layer pair. The layer pair is used to generate - hit pairs and the associated vector of layers to generate - a third hit confirming layer pair - */ - -#include <vector> -#include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2DCollection.h" -#include "DataFormats/TrackerRecHit2D/interface/SiStripMatchedRecHit2DCollection.h" -#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h" -#include "DataFormats/Common/interface/RangeMap.h" -#include "RecoTracker/TkHitPairs/interface/SeedLayerPairs.h" -class DetLayer; -class LayerWithHits; -using namespace std; - -class LayerTriplets { -public: - // typedef pair<SeedLayerPairs::LayerPair, const LayerWithHits* > LayerTriplet; - typedef pair<SeedLayerPairs::LayerPair, vector<const LayerWithHits*> > LayerPairAndLayers; - LayerTriplets(){}; - virtual ~LayerTriplets(){}; - // virtual std::vector<LayerTriplet> operator()()= 0; - virtual std::vector<LayerPairAndLayers> layers()= 0 ; - -}; - -#endif - diff --git a/RecoPixelVertexing/PixelTriplets/interface/PixelLayerTriplets.h b/RecoPixelVertexing/PixelTriplets/interface/PixelLayerTriplets.h index 9d616bc7ee7..bbe1a93d76c 100644 --- a/RecoPixelVertexing/PixelTriplets/interface/PixelLayerTriplets.h +++ b/RecoPixelVertexing/PixelTriplets/interface/PixelLayerTriplets.h @@ -6,7 +6,7 @@ hit pairs and the associated vector of layers to generate a third hit confirming layer pair */ -#include "RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h" + #include "RecoTracker/TkHitPairs/interface/PixelSeedLayerPairs.h" #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h" #include "FWCore/Framework/interface/EventSetup.h" @@ -18,19 +18,15 @@ class BarrelDetLayer; class ForwardDetLayer; -//using namespace std; +using namespace std; -class PixelLayerTriplets : public LayerTriplets{ +class PixelLayerTriplets { public: PixelLayerTriplets(); ~PixelLayerTriplets(); typedef PixelSeedLayerPairs::LayerPair LayerPair; - // typedef pair<LayerPair, vector<const LayerWithHits*> > LayerPairAndLayers; - std::vector<LayerPairAndLayers> layers() ; -/* std::vector<LayerTriplet> operator()(){ */ -/* std::vector<LayerTriplet> laytriplet; */ -/* laytriplet.clear(); */ -/* return laytriplet;}; */ + typedef pair<LayerPair, vector<const LayerWithHits*> > LayerPairAndLayers; + vector<LayerPairAndLayers> layers() ; void init(const SiPixelRecHitCollection &coll,const edm::EventSetup& iSetup); private: diff --git a/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGenerator.cc b/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGenerator.cc deleted file mode 100644 index 5af5c887abe..00000000000 --- a/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGenerator.cc +++ /dev/null @@ -1,60 +0,0 @@ -#include "RecoPixelVertexing/PixelTriplets/interface/LayerTriplets.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h" - - - -CosmicHitTripletGenerator::CosmicHitTripletGenerator(LayerTriplets& layers, - const edm::EventSetup& iSetup) -{ - // vector<LayerTriplets::LayerTriplet> layerTriplets = layers(); - vector<LayerTriplets::LayerPairAndLayers> layerTriplets = layers.layers(); - vector<LayerTriplets::LayerPairAndLayers>::const_iterator it; - for (it = layerTriplets.begin(); it != layerTriplets.end(); it++) { - vector<const LayerWithHits*>::const_iterator ilwh; - for(ilwh=(*it).second.begin();ilwh!=(*it).second.end();ilwh++){ - // const LayerWithHits* first=(*it).first.first; -// const LayerWithHits* second=(*it).first.second; -// const LayerWithHits* third=(*ilwh); - // add( (*it).first.first, (*it).first.second, (*it).second,iSetup); - add( (*it).first.first, (*it).first.second, (*ilwh),iSetup); - } - } - -} - - - -CosmicHitTripletGenerator::~CosmicHitTripletGenerator() -{ - Container::const_iterator it; - for (it = theGenerators.begin(); it!= theGenerators.end(); it++) { - delete (*it); - } -} - - -void CosmicHitTripletGenerator::add( - const LayerWithHits *inner, - const LayerWithHits* middle, - const LayerWithHits *outer, - const edm::EventSetup& iSetup) -{ - theGenerators.push_back( - new CosmicHitTripletGeneratorFromLayerTriplet( inner,middle, outer, iSetup)); -} - -void CosmicHitTripletGenerator::hitTriplets( - const TrackingRegion& region, - OrderedHitTriplets & pairs, - const edm::EventSetup& iSetup) -{ - - Container::const_iterator i; - for (i=theGenerators.begin(); i!=theGenerators.end(); i++) { - (**i).hitTriplets( region, pairs,iSetup); - } - -} - - diff --git a/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGeneratorFromLayerTriplet.cc b/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGeneratorFromLayerTriplet.cc deleted file mode 100644 index 8856019f4a9..00000000000 --- a/RecoPixelVertexing/PixelTriplets/src/CosmicHitTripletGeneratorFromLayerTriplet.cc +++ /dev/null @@ -1,103 +0,0 @@ -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGeneratorFromLayerTriplet.h" -#include "RecoTracker/TkTrackingRegions/interface/TrackingRegion.h" -#include "TrackingTools/DetLayers/interface/DetLayer.h" -#include "RecoPixelVertexing/PixelTriplets/interface/OrderedHitTriplets.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "TrackingTools/DetLayers/interface/BarrelDetLayer.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "RecoTracker/TkHitPairs/interface/TkHitPairsCachedHit.h" -CosmicHitTripletGeneratorFromLayerTriplet::CosmicHitTripletGeneratorFromLayerTriplet -(const LayerWithHits* inner, - const LayerWithHits* middle, - const LayerWithHits* outer, - const edm::EventSetup& iSetup) - : TTRHbuilder(0),trackerGeometry(0), - //theLayerCache(*layerCache), - theOuterLayer(outer),theMiddleLayer(middle), theInnerLayer(inner) -{ - - edm::ESHandle<TrackerGeometry> tracker; - iSetup.get<TrackerDigiGeometryRecord>().get(tracker); - trackerGeometry = tracker.product(); -} -void CosmicHitTripletGeneratorFromLayerTriplet::hitTriplets( - const TrackingRegion & region, OrderedHitTriplets & result, - const edm::EventSetup& iSetup) -{ - - - if (theInnerLayer->recHits().empty()) return; - if (theMiddleLayer->recHits().empty()) return; - if (theOuterLayer->recHits().empty()) return; - float radius1 =dynamic_cast<const BarrelDetLayer*>(theInnerLayer->layer())->specificSurface().radius(); - float radius2 =dynamic_cast<const BarrelDetLayer*>(theMiddleLayer->layer())->specificSurface().radius(); - float radius3 =dynamic_cast<const BarrelDetLayer*>(theOuterLayer->layer())->specificSurface().radius(); - bool seedfromoverlaps=((abs(radius1-radius2)<0.1)|| (abs(radius3-radius2)<0.1))? true : false; - std::vector<const TrackingRecHit*>::const_iterator ohh; - std::vector<const TrackingRecHit*>::const_iterator mhh; - std::vector<const TrackingRecHit*>::const_iterator ihh; - - if(!seedfromoverlaps){ - for(ohh=theOuterLayer->recHits().begin();ohh!=theOuterLayer->recHits().end();ohh++){ - const TkHitPairsCachedHit * oh=new TkHitPairsCachedHit(*ohh,iSetup); - for(mhh=theMiddleLayer->recHits().begin();mhh!=theMiddleLayer->recHits().end();mhh++){ - const TkHitPairsCachedHit * mh=new TkHitPairsCachedHit(*mhh,iSetup); - float z_diff =mh->z()-oh->z(); - float midy=mh->r()*sin(mh->phi()); - float outy=oh->r()*sin(oh->phi()); - float midx=mh->r()*cos(mh->phi()); - float outx=oh->r()*cos(oh->phi()); - float dxdy=abs((outx-midx)/(outy-midy)); - if((abs(z_diff)<30) && (outy*midy>0) &&(dxdy<2)) - { - for(ihh=theInnerLayer->recHits().begin();ihh!=theInnerLayer->recHits().end();ihh++){ - const TkHitPairsCachedHit * ih=new TkHitPairsCachedHit(*ihh,iSetup); - float z_diff =mh->z()-ih->z(); - float inny=ih->r()*sin(ih->phi()); - float innx=ih->r()*cos(ih->phi()); - float dxdy=abs((innx-midx)/(inny-midy)); - if ((abs(z_diff)<30) && (inny*midy>0) &&(dxdy<2)&&(!seedfromoverlaps)) - { - result.push_back( OrderedHitTriplet(ih->RecHit(),mh->RecHit(), oh->RecHit())); - } - delete ih; - } - } - delete mh; - } - delete oh; - } - } else { - for(ohh=theOuterLayer->recHits().begin();ohh!=theOuterLayer->recHits().end();ohh++){ - const TkHitPairsCachedHit * oh=new TkHitPairsCachedHit(*ohh,iSetup); - for(mhh=theMiddleLayer->recHits().begin();mhh!=theMiddleLayer->recHits().end();mhh++){ - const TkHitPairsCachedHit * mh=new TkHitPairsCachedHit(*mhh,iSetup); - float z_diff =mh->z()-oh->z(); - float midy=mh->r()*sin(mh->phi()); - float outy=oh->r()*sin(oh->phi()); - float midx=mh->r()*cos(mh->phi()); - float outx=oh->r()*cos(oh->phi()); - float dxdy=abs((outx-midx)/(outy-midy)); - float DeltaR=oh->r()-mh->r(); - if((abs(z_diff)<18) && (abs(oh->phi()-mh->phi())<0.05) &&(DeltaR<0)&&(dxdy<2)){ - for(ihh=theInnerLayer->recHits().begin();ihh!=theInnerLayer->recHits().end();ihh++){ - const TkHitPairsCachedHit * ih=new TkHitPairsCachedHit(*ihh,iSetup); - float z_diff =mh->z()-ih->z(); - float inny=ih->r()*sin(ih->phi()); - float innx=ih->r()*cos(ih->phi()); - float dxdy=abs((innx-midx)/(inny-midy)); - if ((abs(z_diff)<30) && (inny*midy>0) &&(dxdy<2)) - { - result.push_back( OrderedHitTriplet(ih->RecHit(),mh->RecHit(), oh->RecHit())); - } - delete ih; - } - } - delete mh; - } - delete oh; - } - } -} - diff --git a/RecoPixelVertexing/PixelTriplets/src/CosmicLayerTriplets.cc b/RecoPixelVertexing/PixelTriplets/src/CosmicLayerTriplets.cc deleted file mode 100644 index f92a9ddf697..00000000000 --- a/RecoPixelVertexing/PixelTriplets/src/CosmicLayerTriplets.cc +++ /dev/null @@ -1,106 +0,0 @@ -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h" -#include "RecoTracker/TkHitPairs/interface/SeedLayerPairs.h" -#include "RecoTracker/TkDetLayers/interface/GeometricSearchTracker.h" -#include "RecoTracker/Record/interface/TrackerRecoGeometryRecord.h" - -#include "DataFormats/SiPixelDetId/interface/PXFDetId.h" -#include "DataFormats/SiPixelDetId/interface/PXBDetId.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" -#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" -#include "DataFormats/SiStripDetId/interface/TIBDetId.h" -#include "DataFormats/SiStripDetId/interface/TOBDetId.h" -#include "FWCore/Framework/interface/ESHandle.h" - -vector<LayerTriplets::LayerPairAndLayers> CosmicLayerTriplets::layers() -{ - vector<LayerPairAndLayers> result; - - if (_geometry=="STANDARD"){ - vector<const LayerWithHits*> third; - third.push_back(lh3); - result.push_back(LayerPairAndLayers(SeedLayerPairs::LayerPair(lh1,lh2),third)); - - } - - if (_geometry=="MTCC"){ - vector<const LayerWithHits*> third1; - vector<const LayerWithHits*> third2; - vector<const LayerWithHits*> third3; - vector<const LayerWithHits*> third4; - third1.clear();third2.clear();third3.clear();third4.clear(); - third1.push_back(lh1); - result.push_back(LayerPairAndLayers(SeedLayerPairs::LayerPair(lh3,lh2),third1)); - third2.push_back(lh1); - result.push_back(LayerPairAndLayers(SeedLayerPairs::LayerPair(lh2,lh1),third2)); - third3.push_back(lh2); - result.push_back(LayerPairAndLayers(SeedLayerPairs::LayerPair(lh3,lh2),third3)); - third4.push_back(lh4); - result.push_back(LayerPairAndLayers(SeedLayerPairs::LayerPair(lh2,lh3),third4)); - } - return result; -} -CosmicLayerTriplets::~CosmicLayerTriplets() -{ - for(vector<LayerWithHits*>::const_iterator it=allLayersWithHits.begin(); it!=allLayersWithHits.end();it++){ - delete *it; - } -} - - - -void CosmicLayerTriplets::init(const SiStripRecHit2DCollection &collstereo, - const SiStripRecHit2DCollection &collrphi, - const SiStripMatchedRecHit2DCollection &collmatched, - std::string geometry, - const edm::EventSetup& iSetup){ - - _geometry=geometry; - if(isFirstCall){ - edm::ESHandle<GeometricSearchTracker> track; - iSetup.get<TrackerRecoGeometryRecord>().get( track ); - bl=track->barrelLayers(); - isFirstCall=false; - } - for(vector<LayerWithHits*>::const_iterator it=allLayersWithHits.begin(); - it!=allLayersWithHits.end();it++){ - delete *it; - } - - allLayersWithHits.clear(); - LogDebug("CosmicSeedFinder") <<"Reconstruction for geometry "<<_geometry; - if (_geometry=="STANDARD"){ - rphi_range1=collrphi.get(acc.stripTOBLayer(4)); - rphi_range2=collrphi.get(acc.stripTOBLayer(5)); - rphi_range3=collrphi.get(acc.stripTOBLayer(6)); - - const TOBLayer* bl1=dynamic_cast<TOBLayer*>(bl[10]); - const TOBLayer* bl2=dynamic_cast<TOBLayer*>(bl[11]); - const TOBLayer* bl3=dynamic_cast<TOBLayer*>(bl[12]); - - - - // //LayersWithHits - lh1=new LayerWithHits(bl1,rphi_range1); allLayersWithHits.push_back(lh1); - lh2=new LayerWithHits(bl2,rphi_range2); allLayersWithHits.push_back(lh2); - lh3=new LayerWithHits(bl3,rphi_range3); allLayersWithHits.push_back(lh3); - } - if(_geometry=="MTCC"){ - - const TIBLayer* bl1=dynamic_cast<TIBLayer*>(bl[0]); - const TIBLayer* bl2=dynamic_cast<TIBLayer*>(bl[1]); - const TOBLayer* bl3=dynamic_cast<TOBLayer*>(bl[2]); - const TOBLayer* bl4=dynamic_cast<TOBLayer*>(bl[3]); - rphi_range1=collrphi.get(acc.stripTIBLayer(1)); - rphi_range2=collrphi.get(acc.stripTIBLayer(2)); - rphi_range3=collrphi.get(acc.stripTOBLayer(1)); - rphi_range4=collrphi.get(acc.stripTOBLayer(2)); - - lh1=new LayerWithHits(bl1,rphi_range1); allLayersWithHits.push_back(lh1); - lh2=new LayerWithHits(bl2,rphi_range2); allLayersWithHits.push_back(lh2); - lh3=new LayerWithHits(bl3,rphi_range3); allLayersWithHits.push_back(lh3); - lh4=new LayerWithHits(bl4,rphi_range4); allLayersWithHits.push_back(lh4); - } -} diff --git a/RecoPixelVertexing/PixelTriplets/src/PixelLayerTriplets.cc b/RecoPixelVertexing/PixelTriplets/src/PixelLayerTriplets.cc index aa8cc5b4ed2..ef409c19425 100644 --- a/RecoPixelVertexing/PixelTriplets/src/PixelLayerTriplets.cc +++ b/RecoPixelVertexing/PixelTriplets/src/PixelLayerTriplets.cc @@ -25,7 +25,7 @@ vector<PixelLayerTriplets::LayerPairAndLayers> PixelLayerTriplets::layers() { ThirdLayer thirds; - SeedLayerPairs::LayerPair base(lh1,lh2); + LayerPair base(lh1,lh2); thirds.push_back(lh3); thirds.push_back(pos1); thirds.push_back(neg1); diff --git a/RecoRomanPot/Configuration/doc/html/index.html b/RecoRomanPot/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoRomanPot/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoRomanPot/Configuration/doc/html/overview.html b/RecoRomanPot/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoRomanPot/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoRomanPot/RecoFP420/doc/html/index.html b/RecoRomanPot/RecoFP420/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoRomanPot/RecoFP420/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoRomanPot/RecoFP420/doc/html/overview.html b/RecoRomanPot/RecoFP420/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoRomanPot/RecoFP420/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTBCalo/EcalTBTDCReconstructor/BuildFile b/RecoTBCalo/EcalTBTDCReconstructor/BuildFile index acaf900a8f1..fd50db7753a 100644 --- a/RecoTBCalo/EcalTBTDCReconstructor/BuildFile +++ b/RecoTBCalo/EcalTBTDCReconstructor/BuildFile @@ -1,7 +1,6 @@ <use name=FWCore/Framework> <use name=FWCore/ParameterSet> <use name=TBDataFormats/EcalTBObjects> -<use name=TBDataFormats/HcalTBObjects> <use name=FWCore/MessageLogger> <use name=FWCore/MessageService> <use name=root> @@ -13,7 +12,6 @@ <use name=FWCore/Framework> <use name=FWCore/ParameterSet> <use name=TBDataFormats/EcalTBObjects> - <use name=TBDataFormats/HcalTBObjects> <use name=FWCore/MessageLogger> <use name=FWCore/MessageService> <use name=root> diff --git a/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h b/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h deleted file mode 100644 index 65f42755d41..00000000000 --- a/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef RecoTBCalo_EcalTBTDCReconstructor_EcalTBH2TDCRecInfoAlgo_HH -#define RecoTBCalo_EcalTBTDCReconstructor_EcalTBH2TDCRecInfoAlgo_HH - -#include "TBDataFormats/EcalTBObjects/interface/EcalTBEventHeader.h" -#include "TBDataFormats/HcalTBObjects/interface/HcalTBTiming.h" -#include "TBDataFormats/EcalTBObjects/interface/EcalTBTDCRecInfo.h" - -#include <vector> - -class EcalTBH2TDCRecInfoAlgo { - - public: - EcalTBH2TDCRecInfoAlgo() : tdcRangeErrorMessageAlreadyDisplayed_(false) {}; - - struct EcalTBH2TDCRanges - { - std::pair<int,int> runRanges; - double tdcZero; - }; - - explicit EcalTBH2TDCRecInfoAlgo(const std::vector<EcalTBH2TDCRanges>& tdcZero); - - ~EcalTBH2TDCRecInfoAlgo() - { - }; - - EcalTBTDCRecInfo reconstruct(const int& runNumber, const HcalTBTiming& TDCRawInfo) const; - - private: - - std::vector<EcalTBH2TDCRanges> tdcZeros_; - mutable bool tdcRangeErrorMessageAlreadyDisplayed_; - mutable int actualRun_; - mutable int actualRange_; -}; - -#endif diff --git a/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h b/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h deleted file mode 100644 index b7cca2ad08f..00000000000 --- a/RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RecoTBCalo_EcalTBTDCReconstructor_EcalTBH2TDCRecInfoProducer_HH -#define RecoTBCalo_EcalTBTDCReconstructor_EcalTBH2TDCRecInfoProducer_HH - -#include "FWCore/Framework/interface/EDProducer.h" -#include "DataFormats/Common/interface/EDProduct.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/Handle.h" - -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h" - -#include <vector> - -class EcalTBH2TDCRecInfoProducer : public edm::EDProducer { - - public: - - explicit EcalTBH2TDCRecInfoProducer(const edm::ParameterSet& ps); - virtual ~EcalTBH2TDCRecInfoProducer() ; - virtual void produce(edm::Event& e, const edm::EventSetup& es); - - private: - - std::string rawInfoProducer_; // name of module/plugin/producer making digis - std::string rawInfoCollection_; // secondary name given to collection of digis - std::string triggerDataProducer_; // name of module/plugin/producer making TBeventheader - std::string triggerDataCollection_; // secondary name given to collection of TBeventheader - std::string recInfoCollection_; // secondary name to be given to collection of hits - - EcalTBH2TDCRecInfoAlgo *algo_; - -}; -#endif diff --git a/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoAlgo.cc b/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoAlgo.cc deleted file mode 100644 index b48fc2fe8f6..00000000000 --- a/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoAlgo.cc +++ /dev/null @@ -1,67 +0,0 @@ -#include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoAlgo.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -#include <list> -#include <vector> -#include <iostream> - -EcalTBH2TDCRecInfoAlgo::EcalTBH2TDCRecInfoAlgo(const std::vector<EcalTBH2TDCRanges>& tdcZeros): - tdcZeros_(tdcZeros), actualRun_(-1) , actualRange_(-1) -{ - -} - -EcalTBTDCRecInfo EcalTBH2TDCRecInfoAlgo::reconstruct(const int& runNumber, const HcalTBTiming& TDCRawInfo) const -{ - if (actualRun_ != runNumber ) - { - actualRun_ = runNumber; - actualRange_ = -1; - for (unsigned int i=0; i<tdcZeros_.size();i++) - if ( runNumber <= tdcZeros_[i].runRanges.second && runNumber >= tdcZeros_[i].runRanges.first ) - actualRange_ = i; - - if (actualRange_ == -1) - { - edm::LogError("TDCRange not found") << "TDC range not found"; - return EcalTBTDCRecInfo(-1); - } - } - - int ntdc = TDCRawInfo.BeamCoincidenceCount(); - edm::LogInfo("") << "EcalTBH2TDCRecInfoAlgo::reconstruct # tdc hits: " << ntdc << std::endl;; - if(ntdc>1) { - for(int i=0; i<ntdc; ++i) { - edm::LogInfo("") << "hit i: " << i << " tdc: " << TDCRawInfo.BeamCoincidenceHits(i) << std::endl; - } - } - - - if(ntdc==0) { - edm::LogError("NoTDCHits") << "no TDC hits. TDC info not reliable" << std::endl; - return EcalTBTDCRecInfo(-999.); - } - - - //double tdcd = TDCRawInfo.ttcL1Atime() - TDCRawInfo.beamCoincidence(); - double tdcd = TDCRawInfo.ttcL1Atime() - TDCRawInfo.BeamCoincidenceHits(0); - - if( //!tdcRangeErrorMessageAlreadyDisplayed_ && - (tdcd < tdcZeros_[actualRange_].tdcZero -1 || tdcd > tdcZeros_[actualRange_].tdcZero + 26) ) - { - edm::LogError("TDCOutOfRange") << " ============================\n" - << " tdc value out of range = "<< tdcd - << " tdcZero = " << tdcZeros_[actualRange_].tdcZero - << "\n" - << " ============================\n" <<std::endl; - tdcRangeErrorMessageAlreadyDisplayed_ = true; - return EcalTBTDCRecInfo(-999.); - } - - double offset = ( (double)tdcd - (double)tdcZeros_[actualRange_].tdcZero ) - / 25.; // - // if (use2004OffsetConvention) - // offset = (1. - offset) ; - return EcalTBTDCRecInfo(offset); -} - diff --git a/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoProducer.cc b/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoProducer.cc deleted file mode 100644 index 2485779d67b..00000000000 --- a/RecoTBCalo/EcalTBTDCReconstructor/src/EcalTBH2TDCRecInfoProducer.cc +++ /dev/null @@ -1,100 +0,0 @@ -#include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h" -#include "TBDataFormats/HcalTBObjects/interface/HcalTBTiming.h" -#include "TBDataFormats/HcalTBObjects/interface/HcalTBTriggerData.h" -#include "TBDataFormats/EcalTBObjects/interface/EcalTBTDCRecInfo.h" -#include "DataFormats/Common/interface/EDCollection.h" -#include "FWCore/Framework/interface/Handle.h" -#include "FWCore/Framework/interface/Selector.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" - -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -EcalTBH2TDCRecInfoProducer::EcalTBH2TDCRecInfoProducer(edm::ParameterSet const& ps) -{ - rawInfoCollection_ = ps.getParameter<std::string>("rawInfoCollection"); - rawInfoProducer_ = ps.getParameter<std::string>("rawInfoProducer"); - triggerDataCollection_ = ps.getParameter<std::string>("triggerDataCollection"); - triggerDataProducer_ = ps.getParameter<std::string>("triggerDataProducer"); - recInfoCollection_ = ps.getParameter<std::string>("recInfoCollection"); - - - std::vector<EcalTBH2TDCRecInfoAlgo::EcalTBH2TDCRanges> tdcRanges; - - typedef std::vector< edm::ParameterSet > Parameters; - Parameters ranges=ps.getParameter<Parameters>("tdcZeros"); - for(Parameters::iterator itRanges = ranges.begin(); itRanges != ranges.end(); ++itRanges) - { - EcalTBH2TDCRecInfoAlgo::EcalTBH2TDCRanges aRange; - aRange.runRanges.first = itRanges->getParameter<int>("startRun"); - aRange.runRanges.second = itRanges->getParameter<int>("endRun"); - aRange.tdcZero = itRanges->getParameter< double >("tdcZero"); - tdcRanges.push_back(aRange); - } - - produces<EcalTBTDCRecInfo>(recInfoCollection_); - - algo_ = new EcalTBH2TDCRecInfoAlgo(tdcRanges); -} - -EcalTBH2TDCRecInfoProducer::~EcalTBH2TDCRecInfoProducer() -{ - if (algo_) - delete algo_; -} - -void EcalTBH2TDCRecInfoProducer::produce(edm::Event& e, const edm::EventSetup& es) -{ - int runNumber = e.id().run(); - // Get input - edm::Handle<HcalTBTiming> ecalRawTDC; - const HcalTBTiming* ecalTDCRawInfo = 0; - - try { - //evt.getByLabel( digiProducer_, digiCollection_, pDigis); - e.getByLabel( rawInfoProducer_, ecalRawTDC); - ecalTDCRawInfo = ecalRawTDC.product(); - } catch ( std::exception& ex ) { - // edm::LogError("EcalTBTDCRecInfoError") << "Error! can't get the product " << rawInfoCollection_.c_str() ; - } - - if (! ecalTDCRawInfo ) - { - edm::LogError("EcalTBTDCRecInfoError") << "Error! can't get the product " << rawInfoCollection_.c_str() ; - return; - } - - - // Get input - edm::Handle<HcalTBTriggerData> triggerData; - const HcalTBTriggerData* h2TriggerData = 0; - try { - //evt.getByLabel( digiProducer_, digiCollection_, pDigis); - e.getByLabel(triggerDataProducer_, triggerData); - h2TriggerData = triggerData.product(); - } catch ( std::exception& ex ) { - // edm::LogError("EcalTBTDCRecInfoError") << "Error! can't get the product " << triggerDataCollection_.c_str() ; - } - - if (! h2TriggerData ) - { - edm::LogError("EcalTBTDCRecInfoError") << "Error! can't get the product " << triggerDataCollection_.c_str(); - return; - } - - - if (!h2TriggerData->wasBeamTrigger()) - { - std::auto_ptr<EcalTBTDCRecInfo> recInfo(new EcalTBTDCRecInfo(0.5)); - e.put(recInfo,recInfoCollection_); - } - else - { - std::auto_ptr<EcalTBTDCRecInfo> recInfo(new EcalTBTDCRecInfo(algo_->reconstruct(runNumber,*ecalRawTDC))); - e.put(recInfo,recInfoCollection_); - } - - -} - - diff --git a/RecoTBCalo/EcalTBTDCReconstructor/src/SealModule.cc b/RecoTBCalo/EcalTBTDCReconstructor/src/SealModule.cc index 8d3c23255bc..ca62bd740e0 100644 --- a/RecoTBCalo/EcalTBTDCReconstructor/src/SealModule.cc +++ b/RecoTBCalo/EcalTBTDCReconstructor/src/SealModule.cc @@ -1,11 +1,9 @@ #include "PluginManager/ModuleDef.h" #include "FWCore/Framework/interface/MakerMacros.h" #include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBTDCRecInfoProducer.h" -#include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBH2TDCRecInfoProducer.h" #include "RecoTBCalo/EcalTBTDCReconstructor/interface/EcalTBTDCRawInfoDumper.h" DEFINE_SEAL_MODULE(); DEFINE_ANOTHER_FWK_MODULE( EcalTBTDCRecInfoProducer ); -DEFINE_ANOTHER_FWK_MODULE( EcalTBH2TDCRecInfoProducer ); DEFINE_ANOTHER_FWK_MODULE( EcalTBTDCRawInfoDumper ); diff --git a/RecoTBCalo/HcalPlotter/doc/html/index.html b/RecoTBCalo/HcalPlotter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTBCalo/HcalPlotter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTBCalo/HcalPlotter/doc/html/overview.html b/RecoTBCalo/HcalPlotter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTBCalo/HcalPlotter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTBCalo/ZDCTBAnalysis/doc/html/index.html b/RecoTBCalo/ZDCTBAnalysis/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTBCalo/ZDCTBAnalysis/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTBCalo/ZDCTBAnalysis/doc/html/overview.html b/RecoTBCalo/ZDCTBAnalysis/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTBCalo/ZDCTBAnalysis/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTauTag/HLTProducers/BuildFile b/RecoTauTag/HLTProducers/BuildFile index 6b7cb97fc09..05e2cf9dcf5 100644 --- a/RecoTauTag/HLTProducers/BuildFile +++ b/RecoTauTag/HLTProducers/BuildFile @@ -4,9 +4,8 @@ <use name=DataFormats/Common> <use name=DataFormats/BTauReco> <use name=DataFormats/VertexReco> -<use name=rootrflx> -<use name=DataFormats/Math> -<use name=boost> +#<use name=DataFormats/Math> +#<use name=boost> <use name=root> <flags SEAL_PLUGIN_NAME="RecoTauTagHLTProducers"> <export> diff --git a/RecoTauTag/HLTProducers/src/CaloTowerCreatorForTauHLT.cc b/RecoTauTag/HLTProducers/src/CaloTowerCreatorForTauHLT.cc index f9fac30cfe3..8e893ae7bbf 100644 --- a/RecoTauTag/HLTProducers/src/CaloTowerCreatorForTauHLT.cc +++ b/RecoTauTag/HLTProducers/src/CaloTowerCreatorForTauHLT.cc @@ -8,12 +8,12 @@ #include "FWCore/Framework/interface/Event.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "RecoTauTag/HLTProducers/interface/CaloTowerCreatorForTauHLT.h" -#include "DataFormats/JetReco/interface/GenJet.h" #include "DataFormats/L1Trigger/interface/L1JetParticle.h" -#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h" +//#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutRecord.h" // Math #include "Math/GenVector/VectorUtil.h" -#include "Math/GenVector/PxPyPzE4D.h" +//#include "Math/GenVector/PxPyPzE4D.h" +#include <cmath> using namespace edm; using namespace reco; @@ -58,7 +58,7 @@ void CaloTowerCreatorForTauHLT::produce( Event& evt, const EventSetup& ) { double Sum08 = 0.; if (mVerbose == 3) { - std::cout <<" Generated jet et = " << (*myL1Jet).et() + std::cout <<" L1 jet et = " << (*myL1Jet).et() <<" eta = " << myL1Jet->eta() <<" phi = " << myL1Jet->phi() << endl; } @@ -70,23 +70,19 @@ void CaloTowerCreatorForTauHLT::produce( Event& evt, const EventSetup& ) { << cal->et() << '/' << cal->eta() << '/' << cal->phi() << '/' << cal->energy() << " is..."; } if (cal->et() >= mEtThreshold && cal->energy() >= mEThreshold ) { - math::PtEtaPhiELorentzVector p( cal->et(), cal->eta(), cal->phi(), cal->energy() ); - - - double delta = ROOT::Math::VectorUtil::DeltaR((*myL1Jet).p4().Vect(), p); + double delta = ROOT::Math::VectorUtil::DeltaR((*myL1Jet).p4().Vect(), p); if(delta < mCone) { - RecoCaloTowerCandidate * c = new RecoCaloTowerCandidate( 0, Candidate::LorentzVector( p ) ); c->setCaloTower (CaloTowerRef( caloTowers, idx) ); + Sum08 += c->et(); cands->push_back( c ); - Sum08 += c->pt(); if (mVerbose == 3) std::cout << "accepted: pT/eta/phi:" - << c->pt() << '/' - << c->eta() << '/' - << c->phi() + << cal->et() << '/' + << cal->eta() << '/' + << cal->phi() <<" emEt()= " << (*caloTowers)[idx].emEt() <<" ehEt()= " << (*caloTowers)[idx].hadEt() <<" deltar= " << delta @@ -98,13 +94,14 @@ void CaloTowerCreatorForTauHLT::produce( Event& evt, const EventSetup& ) { } } if (mVerbose == 3) { - std::cout << "CaloTowerCreatorForTauHLT::produce-> " << cands->size () << " candidates created" << std::endl; - std::cout << " Sum08 = " << Sum08 << endl; + std::cout << "CaloTowerCreatorForTauHLT::produce-> " << cands->size () << " candidates created" << std::endl; + std::cout << " Sum08 = " << Sum08 << std::endl; } } idTau++; } - + + cout <<"Ma crasha qui? 2"<<endl; evt.put( cands ); } diff --git a/RecoTauTag/ImpactParameter/BuildFile b/RecoTauTag/ImpactParameter/BuildFile deleted file mode 100644 index d5b7c20db03..00000000000 --- a/RecoTauTag/ImpactParameter/BuildFile +++ /dev/null @@ -1,22 +0,0 @@ -<use name=FWCore/Framework> -<use name=Foundation/PluginManager> -<use name=FWCore/ParameterSet> -<use name=DataFormats/Common> -<use name=DataFormats/BTauReco> -<use name=DataFormats/VertexReco> -<use name=rootrflx> -<use name=DataFormats/Math> -<use name=boost> -<use name=root> -<use name=RecoBTag/TrackCounting> - -<flags SEAL_PLUGIN_NAME="RecoTauTagImpactParameter"> -<export> - <lib name=RecoTauTagImpactParameter> - <use name=RecoTauTagConeIsolation> - <use name=FWCore/Framework> - <use name=Foundation/PluginManager> - <use name=FWCore/ParameterSet> - <use name=DataFormats/VertexReco> - <use name=DataFormats/BTauReco> -</export> diff --git a/RecoTauTag/ImpactParameter/interface/ImpactParameter.h b/RecoTauTag/ImpactParameter/interface/ImpactParameter.h deleted file mode 100644 index 18283806ac9..00000000000 --- a/RecoTauTag/ImpactParameter/interface/ImpactParameter.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef RecoTauTag_ImpactParameter -#define RecoTauTag_ImpactParameter - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDProducer.h" -#include "RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h" - - -class ImpactParameter : public edm::EDProducer { - public: - explicit ImpactParameter(const edm::ParameterSet&); - ~ImpactParameter(); - - - virtual void produce(edm::Event&, const edm::EventSetup&); - private: - ImpactParameterAlgorithm* algo; - string jetTrackSrc; - string vertexSrc; - bool usingVertex; -}; -#endif - diff --git a/RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h b/RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h deleted file mode 100644 index 542ff1d8e72..00000000000 --- a/RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef ImpactParameterAlgorithm_H -#define ImpactParameterAlgorithm_H -#include "DataFormats/BTauReco/interface/TauImpactParameterInfo.h" -#include "DataFormats/BTauReco/interface/JetTag.h" -#include "DataFormats/VertexReco/interface/Vertex.h" -#include "DataFormats/JetReco/interface/Jet.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/BTauReco/interface/JetTracksAssociation.h" -#include "MagneticField/Engine/interface/MagneticField.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -//Math -#include "Math/GenVector/VectorUtil.h" -#include "Math/GenVector/PxPyPzE4D.h" - -#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" - -using namespace std; -using namespace edm; -using namespace reco; - -class ImpactParameterAlgorithm { - - public: - - ImpactParameterAlgorithm(const ParameterSet & parameters ); - ImpactParameterAlgorithm(); - - // For out of framework usage we may need a different constructor - // so we keep datamember as builtin types (instead of ParameterSet) - //ImpactParameterAlgorithm (int,float,....); - - ~ImpactParameterAlgorithm() {} - - void setPrimaryVertex(Vertex * pv) {primaryVertex = pv;} - - pair<JetTag,TauImpactParameterInfo> tag(const IsolatedTauTagInfoRef&, const Vertex&); - - void setTransientTrackBuilder(const TransientTrackBuilder*); - - - private: - Vertex* primaryVertex; - - //algorithm parameters - double ip_min, - ip_max, - sip_min; - bool use3D, - use_sign; - - const TransientTrackBuilder * transientTrackBuilder; -}; - -#endif - diff --git a/RecoTauTag/ImpactParameter/src/ImpactParameter.cc b/RecoTauTag/ImpactParameter/src/ImpactParameter.cc deleted file mode 100644 index 4f53bfddb29..00000000000 --- a/RecoTauTag/ImpactParameter/src/ImpactParameter.cc +++ /dev/null @@ -1,129 +0,0 @@ -// -*- C++ -*- -// -// Package: ImpactParameter -// Class: ImpactParameter -// -/**\class ImpactParameter ImpactParameter.cc RecoBTag/ImpactParameter/src/ImpactParameter.cc - - Description: <one line class summary> - - Implementation: - <Notes on implementation> -*/ -// -// Original Author: Andrea Rizzi -// Created: Thu Apr 6 09:56:23 CEST 2006 -// $Id: ImpactParameter.cc,v 1.1 2006/10/10 07:42:16 slehti Exp $ -// -// - - -// system include files -#include <memory> - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "RecoTauTag/ImpactParameter/interface/ImpactParameter.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/BTauReco/interface/JetTag.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/BTauReco/interface/IsolatedTauTagInfo.h" - -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" - -#include "TrackingTools/Records/interface/TransientTrackRecord.h" - -// -// constructors and destructor -// -ImpactParameter::ImpactParameter(const edm::ParameterSet& iConfig) { - - jetTrackSrc = iConfig.getParameter<string>("JetTagProd"); - vertexSrc = iConfig.getParameter<string>("vertexSrc"); - usingVertex = iConfig.getParameter<bool>("useVertex"); - - algo = new ImpactParameterAlgorithm(iConfig); - -// produces<reco::JetTagCollection>(); -// produces<reco::TauImpactParameterInfoCollection>(); - std::string modulname = iConfig.getParameter<string>( "@module_label" ); - produces<reco::JetTagCollection>().setBranchAlias(modulname); - string infoBranchName = modulname + "Info"; - produces<reco::TauImpactParameterInfoCollection>().setBranchAlias(infoBranchName); - -} - - -ImpactParameter::~ImpactParameter(){ - delete algo; -} - - - -// -// member functions -// -// ------------ method called to produce the data ------------ -void ImpactParameter::produce(edm::Event& iEvent, const edm::EventSetup& iSetup){ - - using namespace reco; - - Handle<IsolatedTauTagInfoCollection> isolatedTaus; - iEvent.getByLabel(jetTrackSrc,isolatedTaus); - - JetTagCollection *baseCollection = new JetTagCollection(); - TauImpactParameterInfoCollection *extCollection = new TauImpactParameterInfoCollection(); - - edm::ESHandle<TransientTrackBuilder> builder; - iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",builder); - algo->setTransientTrackBuilder(builder.product()); - - Vertex PV; - if(usingVertex){ - Handle<reco::VertexCollection> vertices; - iEvent.getByLabel(vertexSrc,vertices); - - const reco::VertexCollection vertCollection = *(vertices.product()); - reco::VertexCollection::const_iterator iVertex; - - for(iVertex = vertCollection.begin();iVertex!=vertCollection.end();iVertex++){ - PV = *iVertex; - } - - }else{ - Vertex::Error e; - e(0,0)=1; - e(1,1)=1; - e(2,2)=1; - Vertex::Point p(0,0,0); - - Vertex dummyPV(p,e,1,1,1); - PV = dummyPV; - } - - IsolatedTauTagInfoCollection::const_iterator it; - int theKey = 0; - for(it = isolatedTaus->begin(); it != isolatedTaus->end(); it++) { - IsolatedTauTagInfoRef tauRef(isolatedTaus,theKey); - pair<JetTag,TauImpactParameterInfo> ipInfo = algo->tag(tauRef,PV); - - baseCollection->push_back(ipInfo.first); - extCollection->push_back(ipInfo.second); - theKey++; - } - - - std::auto_ptr<reco::JetTagCollection> resultBase(baseCollection); - iEvent.put(resultBase); - - std::auto_ptr<reco::TauImpactParameterInfoCollection> resultExt(extCollection); - iEvent.put(resultExt); -} - - diff --git a/RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc b/RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc deleted file mode 100644 index 988653476f3..00000000000 --- a/RecoTauTag/ImpactParameter/src/ImpactParameterAlgorithm.cc +++ /dev/null @@ -1,72 +0,0 @@ -#include "RecoTauTag/ImpactParameter/interface/ImpactParameterAlgorithm.h" - -#include "RecoBTag/BTagTools/interface/SignedTransverseImpactParameter.h" -#include "RecoBTag/BTagTools/interface/SignedImpactParameter3D.h" - -#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" - -ImpactParameterAlgorithm::ImpactParameterAlgorithm(){ - ip_min = -9999; - ip_max = 9999; - sip_min = 0; - use_sign = false; - use3D = false; -} - -ImpactParameterAlgorithm::ImpactParameterAlgorithm(const ParameterSet & parameters){ - ip_min = parameters.getParameter<double>("TauImpactParameterMin"); - ip_max = parameters.getParameter<double>("TauImpactParameterMax"); - sip_min = parameters.getParameter<double>("TauImpactParameterSignificanceMin"); - use_sign = parameters.getParameter<bool>("UseTauImpactParameterSign"); - use3D = parameters.getParameter<bool>("UseTau3DImpactParameter"); - -} - -void ImpactParameterAlgorithm::setTransientTrackBuilder(const TransientTrackBuilder * builder) { - transientTrackBuilder = builder; -} - - -pair<JetTag,TauImpactParameterInfo> ImpactParameterAlgorithm::tag(const IsolatedTauTagInfoRef & tauRef, const Vertex & pv) { - - TauImpactParameterInfo resultExtended; - resultExtended.setIsolatedTauTag(tauRef); - - const Jet & jet = tauRef->jet(); - GlobalVector direction(jet.px(),jet.py(),jet.pz()); - - const TrackRefVector& tracks = tauRef->selectedTracks(); - - RefVector<TrackCollection>::const_iterator iTrack; - for(iTrack = tracks.begin(); iTrack!= tracks.end(); iTrack++){ - - const TransientTrack * transientTrack = (transientTrackBuilder->build(&(**iTrack))); - - SignedTransverseImpactParameter stip; - Measurement1D ip = stip.apply(*transientTrack,direction,pv).second; - - SignedImpactParameter3D signed_ip3D; - Measurement1D ip3D = signed_ip3D.apply(*transientTrack,direction,pv).second; - - - if(!use_sign){ - Measurement1D tmp2D(fabs(ip.value()),ip.error()); - ip = tmp2D; - - Measurement1D tmp3D(fabs(ip3D.value()),ip3D.error()); - ip3D = tmp3D; - } - - reco::TauImpactParameterTrackData theData; - - theData.transverseIp = ip; - theData.ip3D = ip3D; - resultExtended.storeTrackData(*iTrack,theData); - } - - double discriminator = resultExtended.discriminator(ip_min,ip_max,sip_min,use_sign,use3D); - const JetTracksAssociationRef& jtaRef = tauRef->jetRef()->jtaRef(); - JetTag resultBase(discriminator,jtaRef); - - return pair<JetTag,TauImpactParameterInfo> (resultBase,resultExtended); -} diff --git a/RecoTauTag/ImpactParameter/src/SealModule.cc b/RecoTauTag/ImpactParameter/src/SealModule.cc deleted file mode 100644 index 79c83030944..00000000000 --- a/RecoTauTag/ImpactParameter/src/SealModule.cc +++ /dev/null @@ -1,11 +0,0 @@ -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "RecoTauTag/ImpactParameter/interface/ImpactParameter.h" -//#include "RecoTauTag/ImpactParameter/interface/TauImpactParameterTest.h" - -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(ImpactParameter) -//DEFINE_ANOTHER_FWK_MODULE(TauImpactParameterTest) - - - diff --git a/RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc b/RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc deleted file mode 100644 index 45a6b5262ef..00000000000 --- a/RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc +++ /dev/null @@ -1,101 +0,0 @@ -// -*- C++ -*- -// -// Package: TauImpactParameterTest -// Class: TauImpactParameterTest -// -/**\class TauImpactParameterTest TauImpactParameterTest.cc RecoTauTag/ImpactParameter/test/TauImpactParameterTest.cc - - Description: EDAnalyzer to show how to get the tau impact parameter - Implementation: - -*/ -// -// Original Author: Sami Lehti -// - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "DataFormats/BTauReco/interface/TauImpactParameterInfo.h" - -#include <iostream> -#include <string> - -using namespace std; -using namespace edm; -using namespace reco; - -class TauImpactParameterTest : public edm::EDAnalyzer { - - public: - TauImpactParameterTest(const edm::ParameterSet&); - ~TauImpactParameterTest(); - - virtual void analyze(const edm::Event&, const edm::EventSetup&); - virtual void beginJob(); - virtual void endJob(); - - private: - string jetTagSrc; -}; - - -TauImpactParameterTest::TauImpactParameterTest(const edm::ParameterSet& iConfig){ - jetTagSrc = iConfig.getParameter<string>("JetTagProd"); -} - -TauImpactParameterTest::~TauImpactParameterTest(){ - -} - -void TauImpactParameterTest::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){ - - Handle<TauImpactParameterInfoCollection> tauHandle; - iEvent.getByLabel(jetTagSrc,tauHandle); - - const TauImpactParameterInfoCollection & tauIpInfo = *(tauHandle.product()); - cout << "Found " << tauIpInfo.size() << " Tau candidates" << endl; - - TauImpactParameterInfoCollection::const_iterator iJet; - int i = 0; - for (iJet = tauIpInfo.begin(); iJet != tauIpInfo.end(); iJet++) { - - cout << " Candidate " << i << endl; - - const TrackRefVector& tracks = iJet->getIsolatedTauTag()->selectedTracks(); - - RefVector<TrackCollection>::const_iterator iTrack; - for (iTrack = tracks.begin(); iTrack != tracks.end(); iTrack++){ - - cout << " track pt, eta " << (*iTrack)->pt() << " " - << (*iTrack)->eta() << endl; - - const reco::TauImpactParameterTrackData* trackData = iJet->getTrackData(*iTrack); - - if(! trackData == 0){ - Measurement1D tip = trackData->transverseIp; - - cout << " ip,sip,err " << tip.value() - << " " << tip.significance() - << " " << tip.error() << endl; - }else{ - cout << " track data = 0! " << endl; - } - } - - cout <<" discriminator = "<< iJet->discriminator() <<endl; - i++; - } -} - -void TauImpactParameterTest::beginJob(){ -} - -void TauImpactParameterTest::endJob(){ -} - -//define this as a plug-in -DEFINE_SEAL_MODULE(); -DEFINE_ANOTHER_FWK_MODULE(TauImpactParameterTest); diff --git a/RecoTauTag/Pi0Tau/doc/html/index.html b/RecoTauTag/Pi0Tau/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTauTag/Pi0Tau/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTauTag/Pi0Tau/doc/html/overview.html b/RecoTauTag/Pi0Tau/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTauTag/Pi0Tau/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTauTag/RecoTau/doc/html/index.html b/RecoTauTag/RecoTau/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTauTag/RecoTau/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTauTag/RecoTau/doc/html/overview.html b/RecoTauTag/RecoTau/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTauTag/RecoTau/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTauTag/TauTagTools/doc/html/index.html b/RecoTauTag/TauTagTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTauTag/TauTagTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTauTag/TauTagTools/doc/html/overview.html b/RecoTauTag/TauTagTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTauTag/TauTagTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/CkfPattern/test/runall.sh b/RecoTracker/CkfPattern/test/runall.sh index fe5ff450e46..8b5e79ee9f8 100755 --- a/RecoTracker/CkfPattern/test/runall.sh +++ b/RecoTracker/CkfPattern/test/runall.sh @@ -11,7 +11,8 @@ TrackCandidatesToTracks.cfg DigisToTrackCandidates.cfg RecHitsToTracks_PixelOnlySeeded.cfg RecHitsToTracks_PixelLessSeeded.cfg -RecHitsToTracks_MixedSeeded.cfg +RecHitsToTracks_MixedSeeded.cfg +regionalTracking.cfg " tests=`echo $testsTracking` diff --git a/RecoTracker/DeDx/doc/html/index.html b/RecoTracker/DeDx/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/DeDx/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/DeDx/doc/html/overview.html b/RecoTracker/DeDx/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/DeDx/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/DebugTools/doc/html/index.html b/RecoTracker/DebugTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/DebugTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/DebugTools/doc/html/overview.html b/RecoTracker/DebugTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/DebugTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/FinalTrackSelectors/doc/html/index.html b/RecoTracker/FinalTrackSelectors/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/FinalTrackSelectors/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/FinalTrackSelectors/doc/html/overview.html b/RecoTracker/FinalTrackSelectors/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/FinalTrackSelectors/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/IterativeTracking/doc/html/index.html b/RecoTracker/IterativeTracking/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/IterativeTracking/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/IterativeTracking/doc/html/overview.html b/RecoTracker/IterativeTracking/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/IterativeTracking/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/NuclearSeedGenerator/doc/html/index.html b/RecoTracker/NuclearSeedGenerator/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/NuclearSeedGenerator/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/NuclearSeedGenerator/doc/html/overview.html b/RecoTracker/NuclearSeedGenerator/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/NuclearSeedGenerator/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/RingESSource/doc/html/index.html b/RecoTracker/RingESSource/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/RingESSource/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/RingESSource/doc/html/overview.html b/RecoTracker/RingESSource/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/RingESSource/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/RingMakerESProducer/doc/html/index.html b/RecoTracker/RingMakerESProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/RingMakerESProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/RingMakerESProducer/doc/html/overview.html b/RecoTracker/RingMakerESProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/RingMakerESProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/RingRecord/doc/html/index.html b/RecoTracker/RingRecord/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/RingRecord/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/RingRecord/doc/html/overview.html b/RecoTracker/RingRecord/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/RingRecord/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/RoadSearchCloudMaker/src/RoadSearchCloudMaker.cc b/RecoTracker/RoadSearchCloudMaker/src/RoadSearchCloudMaker.cc index 676ccae45c1..66088e4df45 100644 --- a/RecoTracker/RoadSearchCloudMaker/src/RoadSearchCloudMaker.cc +++ b/RecoTracker/RoadSearchCloudMaker/src/RoadSearchCloudMaker.cc @@ -9,8 +9,8 @@ // Created: Sat Jan 14 22:00:00 UTC 2006 // // $Author: noeding $ -// $Date: 2006/09/01 21:12:47 $ -// $Revision: 1.11 $ +// $Date: 2006/09/20 21:35:41 $ +// $Revision: 1.12 $ // #include <memory> @@ -49,50 +49,53 @@ namespace cms // Step A: Get Inputs edm::Handle<TrajectorySeedCollection> seeds; e.getByLabel(seedProducer, seeds); - - // retrieve producer name of input SiStripRecHit2DCollection - edm::InputTag rphirecHitsTag = conf_.getParameter<edm::InputTag>("rphirecHits"); - edm::InputTag stereorecHitsTag = conf_.getParameter<edm::InputTag>("stereorecHits"); - edm::InputTag recHitCollection = conf_.getParameter<edm::InputTag>("recHitCollection"); - - edm::InputTag matchedrecHitsTag = conf_.getParameter<edm::InputTag>("matchedrecHits"); - - // get Inputs - edm::Handle<SiStripRecHit2DCollection> rphirecHits; - e.getByLabel( rphirecHitsTag, rphirecHits); - edm::Handle<SiStripRecHit2DCollection> stereorecHits; - e.getByLabel( stereorecHitsTag, stereorecHits); - - edm::Handle<SiStripMatchedRecHit2DCollection> matchedrecHits; - e.getByLabel( matchedrecHitsTag, matchedrecHits); - + + // retrieve InputTags for strip rechits + edm::InputTag matchedStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("matchedStripRecHits"); + edm::InputTag rphiStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("rphiStripRecHits"); + edm::InputTag stereoStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("stereoStripRecHits"); + + // get Inputs + edm::Handle<SiStripMatchedRecHit2DCollection> matchedRecHits; + e.getByLabel(matchedStripRecHitsInputTag ,matchedRecHits); + edm::Handle<SiStripRecHit2DCollection> rphiRecHits; + e.getByLabel(rphiStripRecHitsInputTag ,rphiRecHits); + edm::Handle<SiStripRecHit2DCollection> stereoRecHits; + e.getByLabel(stereoStripRecHitsInputTag ,stereoRecHits); + + // retrieve InputTag for pixel rechits + edm::InputTag pixelRecHitsInputTag = conf_.getParameter<edm::InputTag>("pixelRecHits"); + // special treatment for getting pixel collection // if collection exists in file, use collection from file // if collection does not exist in file, create empty collection const SiPixelRecHitCollection *pixelRecHitCollection = 0; - try { edm::Handle<SiPixelRecHitCollection> pixelRecHits; - e.getByLabel(recHitCollection, pixelRecHits); + e.getByLabel(pixelRecHitsInputTag, pixelRecHits); pixelRecHitCollection = pixelRecHits.product(); } catch (edm::Exception const& x) { if ( x.categoryCode() == edm::errors::ProductNotFound ) { if ( x.history().size() == 1 ) { - pixelRecHitCollection = new SiPixelRecHitCollection(); + static const SiPixelRecHitCollection s_empty; + pixelRecHitCollection = &s_empty; + edm::LogWarning("RoadSearch") << "Collection SiPixelRecHitCollection with InputTag " << pixelRecHitsInputTag << " cannot be found, using empty collection of same type. The RoadSearch algorithm is also fully functional without Pixel RecHits."; } } } - - // Step B: create empty output collection std::auto_ptr<RoadSearchCloudCollection> output(new RoadSearchCloudCollection); // Step C: Invoke the seed finding algorithm - roadSearchCloudMakerAlgorithm_.run(seeds,rphirecHits.product(), - stereorecHits.product(),matchedrecHits.product(),pixelRecHitCollection, - es,*output); + roadSearchCloudMakerAlgorithm_.run(seeds, + rphiRecHits.product(), + stereoRecHits.product(), + matchedRecHits.product(), + pixelRecHitCollection, + es, + *output); // Step D: write output to file e.put(output); diff --git a/RecoTracker/RoadSearchSeedFinder/src/RoadSearchSeedFinder.cc b/RecoTracker/RoadSearchSeedFinder/src/RoadSearchSeedFinder.cc index b232d107eb0..fac877887a6 100644 --- a/RecoTracker/RoadSearchSeedFinder/src/RoadSearchSeedFinder.cc +++ b/RecoTracker/RoadSearchSeedFinder/src/RoadSearchSeedFinder.cc @@ -8,9 +8,9 @@ // Original Author: Oliver Gutsche, gutsche@fnal.gov // Created: Sat Jan 14 22:00:00 UTC 2006 // -// $Author: tboccali $ -// $Date: 2006/07/24 19:44:42 $ -// $Revision: 1.6 $ +// $Author: noeding $ +// $Date: 2006/08/12 00:30:32 $ +// $Revision: 1.7 $ // #include <iostream> @@ -27,6 +27,8 @@ #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/ParameterSet/interface/InputTag.h" + RoadSearchSeedFinder::RoadSearchSeedFinder(edm::ParameterSet const& conf) : roadSearchSeedFinderAlgorithm_(conf) , conf_(conf) @@ -43,32 +45,37 @@ RoadSearchSeedFinder::~RoadSearchSeedFinder() { } void RoadSearchSeedFinder::produce(edm::Event& e, const edm::EventSetup& es) { - // retrieve producer name of input SiStripRecHit2DCollection - std::string recHitProducer = conf_.getParameter<std::string>("RecHitProducer"); + // retrieve InputTags for strip rechits + edm::InputTag matchedStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("matchedStripRecHits"); + edm::InputTag rphiStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("rphiStripRecHits"); + edm::InputTag stereoStripRecHitsInputTag = conf_.getParameter<edm::InputTag>("stereoStripRecHits"); // get Inputs edm::Handle<SiStripMatchedRecHit2DCollection> matchedRecHits; - e.getByLabel(recHitProducer,"matchedRecHit" ,matchedRecHits); + e.getByLabel(matchedStripRecHitsInputTag ,matchedRecHits); edm::Handle<SiStripRecHit2DCollection> rphiRecHits; - e.getByLabel(recHitProducer,"rphiRecHit" ,rphiRecHits); + e.getByLabel(rphiStripRecHitsInputTag ,rphiRecHits); edm::Handle<SiStripRecHit2DCollection> stereoRecHits; - e.getByLabel(recHitProducer,"stereoRecHit" ,stereoRecHits); + e.getByLabel(stereoStripRecHitsInputTag ,stereoRecHits); + // retrieve InputTag for pixel rechits + edm::InputTag pixelRecHitsInputTag = conf_.getParameter<edm::InputTag>("pixelRecHits"); + // special treatment for getting pixel collection // if collection exists in file, use collection from file // if collection does not exist in file, create empty collection const SiPixelRecHitCollection *pixelRecHitCollection = 0; - try { edm::Handle<SiPixelRecHitCollection> pixelRecHits; - //e.getByLabel(pixelRecHitProducer, pixelRecHits); - e.getByLabel(recHitProducer, pixelRecHits); + e.getByLabel(pixelRecHitsInputTag, pixelRecHits); pixelRecHitCollection = pixelRecHits.product(); } catch (edm::Exception const& x) { if ( x.categoryCode() == edm::errors::ProductNotFound ) { if ( x.history().size() == 1 ) { - pixelRecHitCollection = new SiPixelRecHitCollection(); + static const SiPixelRecHitCollection s_empty; + pixelRecHitCollection = &s_empty; + edm::LogWarning("RoadSearch") << "Collection SiPixelRecHitCollection with InputTag " << pixelRecHitsInputTag << " cannot be found, using empty collection of same type. The RoadSearch algorithm is also fully functional without Pixel RecHits."; } } } diff --git a/RecoTracker/SiTrackerMRHTools/doc/html/index.html b/RecoTracker/SiTrackerMRHTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/SiTrackerMRHTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/SiTrackerMRHTools/doc/html/overview.html b/RecoTracker/SiTrackerMRHTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/SiTrackerMRHTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/SpecialSeedGenerators/doc/html/index.html b/RecoTracker/SpecialSeedGenerators/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/SpecialSeedGenerators/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/SpecialSeedGenerators/doc/html/overview.html b/RecoTracker/SpecialSeedGenerators/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/SpecialSeedGenerators/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/TkSeedGenerator/BuildFile b/RecoTracker/TkSeedGenerator/BuildFile index 546ef143e76..3f3e308fd69 100644 --- a/RecoTracker/TkSeedGenerator/BuildFile +++ b/RecoTracker/TkSeedGenerator/BuildFile @@ -15,7 +15,6 @@ <use name=DataFormats/DetId> <use name=DataFormats/SiStripDetId> <use name=RecoTracker/TkHitPairs> -<use name=RecoPixelVertexing/PixelTriplets> <use name=RecoTracker/TkTrackingRegions> <use name=TrackingTools/PatternTools> <use name=MagneticField/Records> @@ -46,5 +45,4 @@ <use name=MagneticField/Engine> <use name=TrackingTools/KalmanUpdators> <use name=RecoTracker/TransientTrackingRecHit> - <use name=RecoPixelVertexing/PixelTriplets> </export> diff --git a/RecoTracker/TkSeedGenerator/interface/SeedGeneratorForCosmics.h b/RecoTracker/TkSeedGenerator/interface/SeedGeneratorForCosmics.h index 06a95ad18aa..08bf349d442 100644 --- a/RecoTracker/TkSeedGenerator/interface/SeedGeneratorForCosmics.h +++ b/RecoTracker/TkSeedGenerator/interface/SeedGeneratorForCosmics.h @@ -20,7 +20,6 @@ #include "TrackingTools/KalmanUpdators/interface/KFUpdator.h" #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h" -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicHitTripletGenerator.h" class PixelSeedLayerPairs; class SeedGeneratorForCosmics : public SeedGeneratorFromTrackingRegion { @@ -43,8 +42,7 @@ class SeedGeneratorForCosmics : public SeedGeneratorFromTrackingRegion { private: edm::ParameterSet conf_; GlobalTrackingRegion region; - CosmicHitPairGenerator* thePairGenerator; - CosmicHitTripletGenerator* theTripletGenerator; + CosmicHitPairGenerator* thePairGenerator; edm::ESHandle<MagneticField> magfield; edm::ESHandle<TrackerGeometry> tracker; TrajectoryStateTransform transformer; @@ -54,9 +52,7 @@ class SeedGeneratorForCosmics : public SeedGeneratorFromTrackingRegion { const TransientTrackingRecHitBuilder *TTTRHBuilder; std::string builderName; std::string geometry; - std::string hitsforseeds; OrderedHitPairs HitPairs; - OrderedHitTriplets HitTriplets; }; #endif diff --git a/RecoTracker/TkSeedGenerator/src/SeedGeneratorForCosmics.cc b/RecoTracker/TkSeedGenerator/src/SeedGeneratorForCosmics.cc index d3bf9f276b0..c6ece6de956 100644 --- a/RecoTracker/TkSeedGenerator/src/SeedGeneratorForCosmics.cc +++ b/RecoTracker/TkSeedGenerator/src/SeedGeneratorForCosmics.cc @@ -2,14 +2,12 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "RecoTracker/TkHitPairs/interface/CosmicLayerPairs.h" -#include "RecoPixelVertexing/PixelTriplets/interface/CosmicLayerTriplets.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "Geometry/CommonDetAlgo/interface/GlobalError.h" #include "RecoTracker/TkSeedGenerator/interface/SeedFromConsecutiveHits.h" #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" #include "TrackingTools/Records/interface/TransientRecHitRecord.h" -#include "RecoTracker/TkSeedGenerator/interface/FastHelix.h" void SeedGeneratorForCosmics::init(const SiStripRecHit2DCollection &collstereo, const SiStripRecHit2DCollection &collrphi , @@ -29,24 +27,12 @@ SeedGeneratorForCosmics::init(const SiStripRecHit2DCollection &collstereo, iSetup.get<TransientRecHitRecord>().get(builderName,theBuilder); TTTRHBuilder = theBuilder.product(); - LogDebug("CosmicSeedFinder")<<" Hits built with "<<hitsforseeds<<" hits"; - - CosmicLayerPairs cosmiclayers; - - cosmiclayers.init(collstereo,collrphi,collmatched,geometry,iSetup); - thePairGenerator=new CosmicHitPairGenerator(cosmiclayers,iSetup); - HitPairs.clear(); - if ((hitsforseeds=="pairs")||(hitsforseeds=="pairsandtriplets")){ - thePairGenerator->hitPairs(region,HitPairs,iSetup); - } - CosmicLayerTriplets cosmiclayers2; - cosmiclayers2.init(collstereo,collrphi,collmatched,geometry,iSetup); - theTripletGenerator=new CosmicHitTripletGenerator(cosmiclayers2,iSetup); - HitTriplets.clear(); - if ((hitsforseeds=="triplets")||(hitsforseeds=="pairsandtriplets")){ - theTripletGenerator->hitTriplets(region,HitTriplets,iSetup); - } + CosmicLayerPairs cosmiclayers; + cosmiclayers.init(collstereo,collrphi,collmatched,geometry,iSetup); + thePairGenerator=new CosmicHitPairGenerator(cosmiclayers,iSetup); + HitPairs.clear(); + thePairGenerator->hitPairs(region,HitPairs,iSetup); } SeedGeneratorForCosmics::SeedGeneratorForCosmics(edm::ParameterSet const& conf): SeedGeneratorFromTrackingRegion(conf), @@ -61,7 +47,7 @@ SeedGeneratorForCosmics::SeedGeneratorForCosmics(edm::ParameterSet const& conf): geometry=conf_.getUntrackedParameter<std::string>("GeometricStructure","STANDARD"); region=GlobalTrackingRegion(ptmin,originradius, halflength,originz); - hitsforseeds=conf_.getUntrackedParameter<std::string>("HitsForSeeds","pairs"); + edm::LogInfo("SeedGeneratorForCosmics")<<" PtMin of track is "<<ptmin<< " The Radius of the cylinder for seeds is "<<originradius <<"cm" ; @@ -76,76 +62,16 @@ void SeedGeneratorForCosmics::run(TrajectorySeedCollection &output,const edm::Ev void SeedGeneratorForCosmics::seeds(TrajectorySeedCollection &output, const edm::EventSetup& iSetup, const TrackingRegion& region){ - LogDebug("CosmicSeedFinder")<<"Number of triplets "<<HitTriplets.size(); - LogDebug("CosmicSeedFinder")<<"Number of pairs "<<HitPairs.size(); - - for (uint it=0;it<HitTriplets.size();it++){ - GlobalPoint inner = tracker->idToDet(HitTriplets[it].inner()-> - geographicalId())->surface(). - toGlobal(HitTriplets[it].inner()->localPosition()); - GlobalPoint middle = tracker->idToDet(HitTriplets[it].middle()-> - geographicalId())->surface(). - toGlobal(HitTriplets[it].middle()->localPosition()); - GlobalPoint outer = tracker->idToDet(HitTriplets[it].outer()-> - geographicalId())->surface(). - toGlobal(HitTriplets[it].outer()->localPosition()); - - TransientTrackingRecHit::ConstRecHitPointer outrhit=TTTRHBuilder->build(HitTriplets[it].outer()); - edm::OwnVector<TrackingRecHit> hits; - hits.push_back(HitTriplets[it].outer()->clone()); - FastHelix helix(inner, middle, outer,iSetup); - GlobalVector gv=helix.stateAtVertex().parameters().momentum(); - float ch=helix.stateAtVertex().parameters().charge(); - if (gv.y()>0){ - gv=-1.*gv; - ch=-1.*ch; - } - - GlobalTrajectoryParameters Gtp(outer, - gv,int(ch), - &(*magfield)); - FreeTrajectoryState CosmicSeed(Gtp, - CurvilinearTrajectoryError(AlgebraicSymMatrix(5,1))); - if((outer.y()-inner.y())>0){ - const TSOS outerState = - thePropagatorAl->propagate(CosmicSeed, - tracker->idToDet(HitTriplets[it].outer()->geographicalId())->surface()); - if ( outerState.isValid()) { - LogDebug("CosmicSeedFinder") <<"outerState "<<outerState; - const TSOS outerUpdated= theUpdator->update( outerState,*outrhit); - if ( outerUpdated.isValid()) { - LogDebug("CosmicSeedFinder") <<"outerUpdated "<<outerUpdated; - - PTrajectoryStateOnDet *PTraj= - transformer.persistentState(outerUpdated, HitTriplets[it].outer()->geographicalId().rawId()); - - TrajectorySeed *trSeed=new TrajectorySeed(*PTraj,hits,alongMomentum); - output.push_back(*trSeed); - } - } - } else { - const TSOS outerState = - thePropagatorOp->propagate(CosmicSeed, - tracker->idToDet(HitTriplets[it].outer()->geographicalId())->surface()); - if ( outerState.isValid()) { - LogDebug("CosmicSeedFinder") <<"outerState "<<outerState; - const TSOS outerUpdated= theUpdator->update( outerState,*outrhit); - if ( outerUpdated.isValid()) { - LogDebug("CosmicSeedFinder") <<"outerUpdated "<<outerUpdated; - - PTrajectoryStateOnDet *PTraj= - transformer.persistentState(outerUpdated, HitTriplets[it].outer()->geographicalId().rawId()); - - TrajectorySeed *trSeed=new TrajectorySeed(*PTraj,hits,oppositeToMomentum); - output.push_back(*trSeed); - } - } - } - } + + + + // if(HitPairs.size()>0){ for(uint is=0;is<HitPairs.size();is++){ + // stable_sort(HitPairs.begin(),HitPairs.end(),CompareHitPairsY(iSetup)); + GlobalPoint inner = tracker->idToDet(HitPairs[is].inner()->geographicalId())->surface().toGlobal(HitPairs[is].inner()->localPosition()); GlobalPoint outer = tracker->idToDet(HitPairs[is].outer()->geographicalId())->surface().toGlobal(HitPairs[is].outer()->localPosition()); diff --git a/RecoTracker/TkSeedingLayers/doc/html/index.html b/RecoTracker/TkSeedingLayers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoTracker/TkSeedingLayers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoTracker/TkSeedingLayers/doc/html/overview.html b/RecoTracker/TkSeedingLayers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoTracker/TkSeedingLayers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h b/RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h index da5e751dd59..6d253d5cef8 100644 --- a/RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h +++ b/RecoTracker/TrackProducer/interface/TrackProducerAlgorithm.h @@ -8,7 +8,7 @@ // // Original Author: Giuseppe Cerati // Created: Thu Mar 9 17:29:31 CET 2006 -// $Id: TrackProducerAlgorithm.h,v 1.8 2006/07/28 15:17:29 cerati Exp $ +// $Id: TrackProducerAlgorithm.h,v 1.7 2006/07/28 14:42:42 cerati Exp $ // #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "FWCore/Framework/interface/Event.h" @@ -33,8 +33,7 @@ class TrackProducerAlgorithm { public: TrackProducerAlgorithm(const edm::ParameterSet& conf) : - conf_(conf), - numberOfTrackParameters_(conf_.getParameter<int>("numberOfTrackParameters")) + conf_(conf) { } ~TrackProducerAlgorithm() {} @@ -65,7 +64,6 @@ class TrackProducerAlgorithm { private: edm::ParameterSet conf_; - int numberOfTrackParameters_; }; #endif diff --git a/RecoTracker/TrackProducer/src/TrackProducer.cc b/RecoTracker/TrackProducer/src/TrackProducer.cc index 9bfd7825bc3..8eeadafacde 100644 --- a/RecoTracker/TrackProducer/src/TrackProducer.cc +++ b/RecoTracker/TrackProducer/src/TrackProducer.cc @@ -17,6 +17,8 @@ TrackProducer::TrackProducer(const edm::ParameterSet& iConfig): setConf(iConfig); setSrc( iConfig.getParameter<std::string>( "src" )); setAlias( iConfig.getParameter<std::string>( "@module_label" ) ); +// string a = alias_; +// a.erase(a.size()-6,a.size()); //register your products produces<reco::TrackCollection>().setBranchAlias( alias_ + "Tracks" ); produces<reco::TrackExtraCollection>().setBranchAlias( alias_ + "TrackExtras" ); diff --git a/RecoTracker/TrackProducer/src/TrackProducerAlgorithm.cc b/RecoTracker/TrackProducer/src/TrackProducerAlgorithm.cc index 842858d9ab8..8f9ef3bc3fd 100644 --- a/RecoTracker/TrackProducer/src/TrackProducerAlgorithm.cc +++ b/RecoTracker/TrackProducer/src/TrackProducerAlgorithm.cc @@ -65,7 +65,7 @@ void TrackProducerAlgorithm::runWithCandidate(const TrackingGeometry * theG, } - ndof = ndof - numberOfTrackParameters_; + ndof = ndof - 5; //build Track LogDebug("TrackProducer") << "going to buildTrack"<< "\n"; @@ -111,7 +111,7 @@ void TrackProducerAlgorithm::runWithTrack(const TrackingGeometry * theG, } - ndof = ndof - numberOfTrackParameters_; + ndof = ndof - 5; //SORT RECHITS ALONGMOMENTUM TransientTrackingRecHit::ConstRecHitPointer firstHit; diff --git a/RecoTracker/TrackProducer/test/analyze.C b/RecoTracker/TrackProducer/test/analyze.C deleted file mode 100644 index 4797e8952cf..00000000000 --- a/RecoTracker/TrackProducer/test/analyze.C +++ /dev/null @@ -1,31 +0,0 @@ -{ - // book histograms - TFile histofile("track_hists.root","RECREATE"); - TH1F* h_chisqtr = new TH1F("chisqtr","Track chisq",100,0.,10.); - TH1F* h_pttr = new TH1F("pttr","Track pT (GeV)",100,8.0,12.0); - TH1F* h_nhittr = new TH1F("nhittr","Number of Hits",31,-0.5,30.5); - - TTree *tree = (TTree*)file.Get("Events"); - - std::vector<reco::Track> trackCollection; - - TBranch *branch = tree->GetBranch("recoTracks_ctfWithMaterialTracks__RecoTracks.obj"); - branch->SetAddress(&trackCollection); - - for ( unsigned int index = 0; index < tree->GetEntries(); ++index ) { - std::cout << "Event: " << index << std::endl; - branch->GetEntry(index); - for ( unsigned int bindex = 0; bindex < trackCollection.size(); ++bindex ) { - reco::Track* track = (reco::Track*)trackCollection[bindex]; - h_chisqtr->Fill(track->normalizedChi2()); - double pT = sqrt(track->px()*track->px()+track->py()*track->py()); - h_pttr->Fill(pT); - - h_nhittr->Fill(track->found()); - } - } - - // save histograms - histofile.Write(); - histofile.Close(); -} diff --git a/RecoTracker/TrackProducer/test/analyze_HZZ.C b/RecoTracker/TrackProducer/test/analyze_HZZ.C deleted file mode 100644 index a75ce7a392f..00000000000 --- a/RecoTracker/TrackProducer/test/analyze_HZZ.C +++ /dev/null @@ -1,105 +0,0 @@ -{ - // book histograms - TFile histofile("HZZ.root","RECREATE"); - TH1F* h_chisqtr = new TH1F("chisqtr","Track chisq",100,0.,40.); - TH1F* h_pttr = new TH1F("pttr","Track pT (GeV)",100,0.0,200.0); - TH1F* h_pxtr = new TH1F("pxtr","Track px (GeV)",100,0.0,200.0); - TH1F* h_pytr = new TH1F("pytr","Track py (GeV)",100,0.0,200.0); - TH1F* h_pztr = new TH1F("pztr","Track pz (GeV)",100,0.0,200.0); - TH1F* h_etatr = new TH1F("etatr","Track#eta",60,-3.0,3.0); - TH1F* h_chargetr = new TH1F("chargetr","Track charge",6,-3.0,3.0); - TH1F* h_mmumu = new TH1F("mmumu","mu+mu- mass (GeV)",100,0.0,200.0); - TH1F* h_noz = new TH1F("noz","num of reco Z",10,0.0,10.0); - TH1F* h_mzz = new TH1F("mzz","Z0Z0 mass (GeV)",100,100.0,300.0); - TH1F* h_m4mu = new TH1F("m4mu","2mu+2mu- mass (GeV)",100,100.0,300.0); - - TTree *tree = (TTree*)file.Get("Events"); - - std::vector<reco::Track> trackCollection; - - TBranch *branch = tree->GetBranch("recoTracks_ctfWithMaterialTracks__RecoTracks.obj"); - branch->SetAddress(&trackCollection); - - for ( unsigned int index = 0; index < tree->GetEntries(); ++index ) { - std::cout << "Event: " << index << std::endl; - branch->GetEntry(index); - double px4=0.0, py4=0.0, pz4=0.0, e4=0.0; - int q4=0, n4=0; - for ( unsigned int bindex = 0; bindex < trackCollection.size(); ++bindex ) { - reco::Track* track = (reco::Track*)trackCollection[bindex]; - h_chisqtr->Fill(track->normalizedChi2()); - double pT = sqrt(track->px()*track->px()+track->py()*track->py()); - h_pttr->Fill(pT); - h_pxtr->Fill(track->px()); - h_pytr->Fill(track->py()); - h_pztr->Fill(track->pz()); - h_etatr->Fill(track->eta()); - h_chargetr->Fill(track->charge()); - n4++; - if (track->charge()>0.0){q4++;}else{q4--;} - px4+=track->px(); - py4+=track->py(); - pz4+=track->pz(); - e4+=sqrt(track->px()*track->px()+track->py()*track->py() - +track->pz()*track->pz()+0.011163691); - } - double ptot = sqrt( px4*px4 + py4*py4 + pz4*pz4 ); - double mz = sqrt((e4+ptot)*(e4-ptot)); - if ((4==n4)&&(0==q4))h_m4mu->Fill(mz); - std::vector<double> Zpx; - std::vector<double> Zpy; - std::vector<double> Zpz; - std::vector<double> Ze; - std::vector<int> Zpart1; - std::vector<int> Zpart2; - if (trackCollection.size() >1){ - for ( unsigned int bindex = 0; bindex < trackCollection.size()-1; ++bindex ) { - reco::Track* track1 = (reco::Track*)trackCollection[bindex]; - for ( unsigned int cindex = bindex+1; cindex < trackCollection.size(); ++cindex ) { - reco::Track* track2 = (reco::Track*)trackCollection[cindex]; - if (track1->charge()*track2->charge() < 0.0){ - double e1 = sqrt((track1->px()*track1->px()) - +(track1->py()*track1->py()) - +(track1->pz()*track1->pz())+0.011163691); - double e2 = sqrt((track2->px()*track2->px()) - +(track2->py()*track2->py()) - +(track2->pz()*track2->pz())+0.011163691); - double etot = e1+e2; - double pxtot = track1->px()+track2->px(); - double pytot = track1->py()+track2->py(); - double pztot = track1->pz()+track2->pz(); - double ptot = sqrt( pxtot*pxtot + pytot*pytot + pztot*pztot ); - double mz = sqrt((etot+ptot)*(etot-ptot)); - h_mmumu->Fill(mz); - if ((mz>80.0)&&(mz<100.0)){ - Zpx.push_back(pxtot); Zpy.push_back(pytot); Zpz.push_back(pztot); - Ze.push_back(etot); Zpart1.push_back(bindex); Zpart2.push_back(cindex); - } - }//tracks opposite charge - }//end track2 - }//end track1 - }//end got >1 trk - h_noz->Fill( Zpx.size() ); - if (Zpx.size() >1){ - for ( unsigned int bindex = 0; bindex < Zpx.size()-1; ++bindex ) { - for ( unsigned int cindex = bindex+1; cindex < Zpx.size(); ++cindex ) { - if ((Zpart1[bindex]!=Zpart1[cindex])&&(Zpart1[bindex]!=Zpart2[cindex]) - &&(Zpart2[bindex]!=Zpart1[cindex])&&(Zpart2[bindex]!=Zpart2[cindex])){ - double etot = Ze[bindex]+Ze[cindex]; - double pxtot = Zpx[bindex]+Zpx[cindex]; - double pytot = Zpy[bindex]+Zpy[cindex]; - double pztot = Zpz[bindex]+Zpz[cindex]; - double ptot = sqrt( pxtot*pxtot + pytot*pytot + pztot*pztot ); - double mh = sqrt((etot+ptot)*(etot-ptot)); - h_mzz->Fill(mh); - } - } - } - } - }//end evt loop - - - // save histograms - histofile.Write(); - histofile.Close(); -} diff --git a/RecoTracker/TrackProducer/test/analyze_HZZ_head.C b/RecoTracker/TrackProducer/test/analyze_HZZ_head.C deleted file mode 100644 index cf62f81ed4c..00000000000 --- a/RecoTracker/TrackProducer/test/analyze_HZZ_head.C +++ /dev/null @@ -1,7 +0,0 @@ -{ - - gSystem->Load("libFWCoreFWLite.so"); - AutoLibraryLoader::enable(); - TFile file("../../../higgs.root"); - -} diff --git a/RecoTracker/TrackProducer/test/analyze_head.C b/RecoTracker/TrackProducer/test/analyze_head.C deleted file mode 100644 index c80c6f22f9f..00000000000 --- a/RecoTracker/TrackProducer/test/analyze_head.C +++ /dev/null @@ -1,7 +0,0 @@ -{ - - gSystem->Load("libFWCoreFWLite.so"); - AutoLibraryLoader::enable(); - TFile file("recoTracks.root"); - -} diff --git a/RecoVZero/VZeroFinding/src/VZeroFinder.cc b/RecoVZero/VZeroFinding/src/VZeroFinder.cc index 07732085a68..0de5d5ca1a8 100644 --- a/RecoVZero/VZeroFinding/src/VZeroFinder.cc +++ b/RecoVZero/VZeroFinding/src/VZeroFinder.cc @@ -1,6 +1,6 @@ #include "RecoVZero/VZeroFinding/interface/VZeroFinder.h" -#include "Geometry/Vector/interface/GlobalVector.h" +#include "DataFormats/Math/interface/Vector3D.h" /*****************************************************************************/ VZeroFinder::VZeroFinder diff --git a/RecoVertex/AdaptiveVertexFinder/BuildFile b/RecoVertex/AdaptiveVertexFinder/BuildFile deleted file mode 100644 index d0847a2daf1..00000000000 --- a/RecoVertex/AdaptiveVertexFinder/BuildFile +++ /dev/null @@ -1,8 +0,0 @@ -<export> - <lib name=RecoVertexAdaptiveVertexFinder> - <use name=RecoVertex/AdaptiveVertexFit> - <use name=RecoVertex/KalmanVertexFit> -</export> - -<use name=RecoVertex/AdaptiveVertexFit> -<use name=RecoVertex/KalmanVertexFit> diff --git a/RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h b/RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h deleted file mode 100644 index 2e468243ba1..00000000000 --- a/RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef _AdaptiveVertexReconstructor_H_ -#define _AdaptiveVertexReconstructor_H_ - -#include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" -#include <set> - -class AdaptiveVertexReconstructor : public VertexReconstructor { -public: - - /*** - * - * \paramname primcut sigma_cut for the first iteration - * (primary vertex) - * \paramname seccut sigma_cut for all subsequent vertex fits. - * \paramname min_weight the minimum weight for a track to - * stay in a fitted vertex - */ - AdaptiveVertexReconstructor( float primcut = 3.0, float seccut = 15.0, - float min_weight = 0.5 ); - - std::vector<TransientVertex> vertices(const std::vector<reco::TransientTrack> & v ) const; - - virtual AdaptiveVertexReconstructor * clone() const { - return new AdaptiveVertexReconstructor( * this ); - } - - /** - * tracks with a weight < 10^-8 are moved from vertex - * to remainingtrks container. - */ - TransientVertex cleanUp ( const TransientVertex & old ) const; - -private: - - /** - * contrary to what its name has you believe, ::erase removes all - * newvtx.originalTracks() above theMinWeight from remainingtrks. - */ - void erase ( const TransientVertex & newvtx, - std::set < reco::TransientTrack > & remainingtrks ) const; - -private: - float thePrimCut; - float theSecCut; - float theMinWeight; -}; - -#endif diff --git a/RecoVertex/AdaptiveVertexFinder/src/AdaptiveVertexReconstructor.cc b/RecoVertex/AdaptiveVertexFinder/src/AdaptiveVertexReconstructor.cc deleted file mode 100644 index 4900333f700..00000000000 --- a/RecoVertex/AdaptiveVertexFinder/src/AdaptiveVertexReconstructor.cc +++ /dev/null @@ -1,110 +0,0 @@ -#include "RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h" -#include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h" -#include "RecoVertex/VertexTools/interface/GeometricAnnealing.h" -#include <algorithm> - -using namespace std; - -void AdaptiveVertexReconstructor::erase ( - const TransientVertex & newvtx, - std::set < reco::TransientTrack > & remainingtrks ) const -{ - /* - * Erase tracks that are in newvtx from remainingtrks */ - const std::vector < reco::TransientTrack > & origtrks = newvtx.originalTracks(); - bool erased=false; - for ( std::vector< reco::TransientTrack >::const_iterator i=origtrks.begin(); - i!=origtrks.end(); ++i ) - { - double weight = newvtx.trackWeight ( *i ); - if ( weight > theMinWeight ) - { - remainingtrks.erase ( *i ); - erased=true; - }; - }; -} - -AdaptiveVertexReconstructor::AdaptiveVertexReconstructor( - float primcut, float seccut, float min_weight ) : thePrimCut ( primcut ), - theSecCut ( seccut ), theMinWeight ( min_weight ) -{} - -TransientVertex AdaptiveVertexReconstructor::cleanUp ( const TransientVertex & old ) const -{ - if ( old.hasPrior() ) - { - std::cout << "[AdaptiveVertexReconstructor] WARNING prior is discarded!" << std::endl; - } - // TransientVertex ret ( old ); - vector < reco::TransientTrack > trks = old.originalTracks(); - vector < reco::TransientTrack > newtrks; - TransientVertex::TransientTrackToFloatMap mp; - for ( vector< reco::TransientTrack >::const_iterator i=trks.begin(); - i!=trks.end() ; ++i ) - { - if ( old.trackWeight ( *i ) > 1.e-8 ) - { - newtrks.push_back ( *i ); - mp[*i]=old.trackWeight ( *i ); - } - } - TransientVertex ret ( old.vertexState(), newtrks, - old.totalChiSquared(), old.degreesOfFreedom() ); - ret.weightMap ( mp ); - return ret; -} - -std::vector<TransientVertex> AdaptiveVertexReconstructor::vertices ( - const std::vector<reco::TransientTrack> & tracks ) const -{ - std::vector < TransientVertex > ret; - std::set < reco::TransientTrack > remainingtrks; - for ( vector< reco::TransientTrack >::const_iterator i=tracks.begin(); - i!=tracks.end() ; ++i ) - { - remainingtrks.insert ( *i ); - } - int ctr=0; - unsigned int n_tracks = remainingtrks.size(); - try { - while ( remainingtrks.size() > 1 ) - { - ctr++; - float cut = theSecCut; - if ( ret.size() == 0 ) - { - cut = thePrimCut; - }; - GeometricAnnealing ann ( cut ); - AdaptiveVertexFitter fitter ( ann ); - vector < reco::TransientTrack > fittrks; - fittrks.reserve ( remainingtrks.size() ); - for ( set < reco::TransientTrack >::const_iterator i=remainingtrks.begin(); - i!=remainingtrks.end() ; ++i ) - { - fittrks.push_back ( *i ); - } - TransientVertex newvtx = cleanUp ( fitter.vertex ( fittrks ) ); - ret.push_back ( newvtx ); - erase ( newvtx, remainingtrks ); - if ( n_tracks == remainingtrks.size() ) - { - cout << "[AdaptiveVertexReconstructor] warning: all tracks (" << n_tracks - << ") would be recycled for next fit." << endl; - cout << " breaking after reconstruction of " - << ret.size() << " vertices." << endl; - break; - }; - n_tracks = remainingtrks.size(); - }; - } catch ( exception & e ) { - // Will catch all (not enough significant tracks exceptions. - // in this case, the iteration can safely terminate. - - // cout << "[AdaptiveVertexReconstructor] exception: " << e.what() << endl; - } catch ( ... ) { - // cout << "[AdaptiveVertexReconstructor] exception" << endl; - }; - return ret; -} diff --git a/RecoVertex/ConfigurableVertexReco/BuildFile b/RecoVertex/ConfigurableVertexReco/BuildFile deleted file mode 100644 index 0f5cdb7435b..00000000000 --- a/RecoVertex/ConfigurableVertexReco/BuildFile +++ /dev/null @@ -1,14 +0,0 @@ -<export> - <lib name=RecoVertexConfigurableVertexReco> - <use name=RecoVertex/AdaptiveVertexFit> - <use name=RecoVertex/TrimmedKalmanVertexFinder> - <use name=RecoVertex/AdaptiveVertexFinder> - <use name=DataFormats/Math> - <use name=FWCore/ParameterSet> -</export> - -<use name=FWCore/ParameterSet> -<use name=RecoVertex/AdaptiveVertexFit> -<use name=RecoVertex/TrimmedKalmanVertexFinder> -<use name=RecoVertex/AdaptiveVertexFinder> -<use name=DataFormats/Math> diff --git a/RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h b/RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h deleted file mode 100644 index 3d9f190f86a..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _AbstractConfReconstructor_H_ -#define _AbstractConfReconstructor_H_ - -#include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -/** - * An abstract configurable reconstructor. - * must be configurable via ::configure - */ - -class AbstractConfReconstructor : public VertexReconstructor -{ - public: - - /** The configure method configures the vertex reconstructor. - * It also should also write all its applied defaults back into the map, - */ - virtual void configure ( const edm::ParameterSet & ) = 0; - virtual edm::ParameterSet defaults() const = 0; - virtual ~AbstractConfReconstructor() {}; - AbstractConfReconstructor * clone() const = 0; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h b/RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h deleted file mode 100644 index 943437fe919..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifndef _ConfRecoBuilder_H_ -#define _ConfRecoBuilder_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h" - -/*! @class ConfRecoBuilder - * template class that registers an AbstractConfReconstructor - */ - -template < class O > class ConfRecoBuilder { -public: - ConfRecoBuilder < O > ( const std::string & name, const std::string & description ) - { - VertexRecoManager::Instance().registerReconstructor ( name, new O(), description ); - } -}; - -#endif // _ConfRecoBuilder_H_ diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h deleted file mode 100644 index 301473869ff..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef _ConfigurableAdaptiveFitter_H_ -#define _ConfigurableAdaptiveFitter_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableAdaptiveFitter : public AbstractConfReconstructor -{ - public: - /** - * Values that are respected: - * sigmacut: The sqrt(chi2_cut) criterion. Default: 3.0 - * ratio: The annealing ratio. Default: 0.25 - * Tini: The initial temparature. Default: 256 - */ - ConfigurableAdaptiveFitter (); - void configure ( const edm::ParameterSet & ); - ConfigurableAdaptiveFitter ( const ConfigurableAdaptiveFitter & o ); - ~ConfigurableAdaptiveFitter(); - ConfigurableAdaptiveFitter * clone () const; - std::vector < TransientVertex > vertices ( - const std::vector < reco::TransientTrack > & t ) const; - edm::ParameterSet defaults() const; - private: - const VertexReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h deleted file mode 100644 index 81bc827c250..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _ConfigurableAdaptiveReconstructor_H_ -#define _ConfigurableAdaptiveReconstructor_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableAdaptiveReconstructor : public AbstractConfReconstructor -{ - public: - ConfigurableAdaptiveReconstructor (); - void configure ( const edm::ParameterSet & ); - ConfigurableAdaptiveReconstructor ( const ConfigurableAdaptiveReconstructor & o ); - ~ConfigurableAdaptiveReconstructor(); - ConfigurableAdaptiveReconstructor * clone () const; - std::vector < TransientVertex > vertices ( - const std::vector < reco::TransientTrack > & t ) const; - edm::ParameterSet defaults() const; - private: - const VertexReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h deleted file mode 100644 index a4b54328144..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _ConfigurableKalmanFitter_H_ -#define _ConfigurableKalmanFitter_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableKalmanFitter : public AbstractConfReconstructor -{ - public: - ConfigurableKalmanFitter (); - void configure ( const edm::ParameterSet & ); - ConfigurableKalmanFitter ( const ConfigurableKalmanFitter & o ); - ~ConfigurableKalmanFitter(); - ConfigurableKalmanFitter * clone () const; - edm::ParameterSet defaults() const; - std::vector < TransientVertex > vertices ( - const std::vector < reco::TransientTrack > & t ) const; - private: - const VertexReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h deleted file mode 100644 index a776137fe6e..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _ConfigurableLinPtFinder_H_ -#define _ConfigurableLinPtFinder_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableLinPtFinder : public AbstractConfReconstructor -{ - public: - ConfigurableLinPtFinder (); - void configure ( const edm::ParameterSet & ); - ConfigurableLinPtFinder ( const ConfigurableLinPtFinder & o ); - ~ConfigurableLinPtFinder(); - ConfigurableLinPtFinder * clone () const; - std::vector < TransientVertex > vertices ( - const std::vector < reco::TransientTrack > & t ) const; - edm::ParameterSet defaults() const; - private: - const VertexReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h deleted file mode 100644 index 499e467114a..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h +++ /dev/null @@ -1,25 +0,0 @@ -#ifndef _ConfigurableTrimmedKalmanFinder_H_ -#define _ConfigurableTrimmedKalmanFinder_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableTrimmedKalmanFinder : public AbstractConfReconstructor -{ - public: - ConfigurableTrimmedKalmanFinder (); - void configure ( const edm::ParameterSet & ); - ConfigurableTrimmedKalmanFinder ( const ConfigurableTrimmedKalmanFinder & o ); - ~ConfigurableTrimmedKalmanFinder(); - ConfigurableTrimmedKalmanFinder * clone () const; - std::vector < TransientVertex > vertices ( - const std::vector < reco::TransientTrack > & t ) const; - edm::ParameterSet defaults() const; - private: - const VertexReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h b/RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h deleted file mode 100644 index b98885d5746..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef _ConfigurableVertexReconstructor_H_ -#define _ConfigurableVertexReconstructor_H_ - -#include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" -#include <string> -#include <map> - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ConfigurableVertexReconstructor : public VertexReconstructor -{ - public: - ConfigurableVertexReconstructor ( const edm::ParameterSet & ); - ConfigurableVertexReconstructor ( const ConfigurableVertexReconstructor & o ); - ~ConfigurableVertexReconstructor(); - - std::vector < TransientVertex > vertices ( const std::vector < reco::TransientTrack > & ) const; - - ConfigurableVertexReconstructor * clone () const; - - private: - AbstractConfReconstructor * theRector; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h b/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h deleted file mode 100644 index ed83664299b..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _ReconstructorFromFitter_H_ -#define _ReconstructorFromFitter_H_ - -#include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" -#include "RecoVertex/VertexPrimitives/interface/VertexFitter.h" - -/** - * Wrap any VertexFitter into the VertexReconstructor interface - */ - -class ReconstructorFromFitter : public VertexReconstructor -{ - public: - ReconstructorFromFitter ( const VertexFitter &, int verbose=0 ); - ReconstructorFromFitter ( const ReconstructorFromFitter & o ); - ~ReconstructorFromFitter(); - std::vector < TransientVertex > vertices ( const std::vector < reco::TransientTrack > & ) const; - - ReconstructorFromFitter * clone () const; - - private: - const VertexFitter * theFitter; - int theVerbosity; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h b/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h deleted file mode 100644 index c1c0550c5c6..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef _ReconstructorFromLinPtFinder_H_ -#define _ReconstructorFromLinPtFinder_H_ - -#include "RecoVertex/VertexPrimitives/interface/VertexReconstructor.h" -#include "RecoVertex/VertexTools/interface/LinearizationPointFinder.h" - -/** - * Wrap any LinearizationPointFinder into the VertexReconstructor interface - */ - -class ReconstructorFromLinPtFinder : public VertexReconstructor -{ - public: - ReconstructorFromLinPtFinder ( const LinearizationPointFinder &, int verbose=0 ); - ReconstructorFromLinPtFinder ( const ReconstructorFromLinPtFinder & o ); - ~ReconstructorFromLinPtFinder(); - std::vector < TransientVertex > vertices ( const std::vector < reco::TransientTrack > & ) const; - - ReconstructorFromLinPtFinder * clone () const; - - private: - const LinearizationPointFinder * theLinPtFinder; - int theVerbosity; -}; - -#endif diff --git a/RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h b/RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h deleted file mode 100644 index 290790925e5..00000000000 --- a/RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef _VertexRecoManager_H_ -#define _VertexRecoManager_H_ - -#include "RecoVertex/ConfigurableVertexReco/interface/AbstractConfReconstructor.h" -#include <map> -#include <string> - -/*! \class VertexRecoManager - * Class that manages the vertex reconstruction strategies - */ - -class VertexRecoManager { - -public: - static VertexRecoManager & Instance(); - void registerReconstructor ( const std::string & name, AbstractConfReconstructor * o, - const std::string & description ); - void setFileName ( const std::string & ); - std::string describe ( const std::string & ); - - AbstractConfReconstructor * get ( const std::string & ); - std::map < std::string, AbstractConfReconstructor * > get (); - - ~VertexRecoManager(); - VertexRecoManager * clone() const; - -private: - VertexRecoManager ( const VertexRecoManager & ); - VertexRecoManager (); - std::map < std::string, AbstractConfReconstructor * > theAbstractConfReconstructors; - std::map < std::string, std::string > theDescription; -}; - -#endif // _VertexRecoManager_H_ diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveFitter.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveFitter.cc deleted file mode 100644 index 111386de407..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveFitter.cc +++ /dev/null @@ -1,82 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveFitter.h" -#include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h" -#include "RecoVertex/AdaptiveVertexFit/interface/AdaptiveVertexFitter.h" -#include "RecoVertex/VertexTools/interface/GeometricAnnealing.h" -#include "RecoVertex/LinearizationPointFinders/interface/DefaultLinearizationPointFinder.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackCompatibilityEstimator.h" - -using namespace std; - -namespace { - edm::ParameterSet mydefaults() - { - edm::ParameterSet ret; - ret.addParameter<double>("sigmacut",3.0); - ret.addParameter<double>("Tini",256.0); - ret.addParameter<double>("ratio",0.25); - return ret; - } - - const AnnealingSchedule * schedule ( const edm::ParameterSet & m ) - { - return new GeometricAnnealing( - m.getParameter<double>("sigmacut"), - m.getParameter<double>("Tini"), - m.getParameter<double>("ratio") ); - } -} - -ConfigurableAdaptiveFitter::ConfigurableAdaptiveFitter() : - theRector( new ReconstructorFromFitter ( AdaptiveVertexFitter() ) ) -{} - -void ConfigurableAdaptiveFitter::configure( - const edm::ParameterSet & n ) -{ - edm::ParameterSet m = mydefaults(); - m.augment ( n ); - const AnnealingSchedule * ann = schedule ( m ); - DefaultLinearizationPointFinder linpt; - KalmanVertexUpdator updator; - DummyVertexSmoother smoother; - KalmanVertexTrackCompatibilityEstimator estimator; - - AdaptiveVertexFitter fitter ( *ann, linpt, updator, estimator, smoother ); - delete ann; - - if ( theRector ) delete theRector; - theRector = new ReconstructorFromFitter ( fitter ); -} - -ConfigurableAdaptiveFitter::~ConfigurableAdaptiveFitter() -{ - delete theRector; -} - -ConfigurableAdaptiveFitter::ConfigurableAdaptiveFitter - ( const ConfigurableAdaptiveFitter & o ) : - theRector ( o.theRector->clone() ) -{} - -ConfigurableAdaptiveFitter * ConfigurableAdaptiveFitter::clone() const -{ - return new ConfigurableAdaptiveFitter ( *this ); -} - -vector < TransientVertex > ConfigurableAdaptiveFitter::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - return theRector->vertices ( t ); -} - -edm::ParameterSet ConfigurableAdaptiveFitter::defaults() const -{ - return mydefaults(); -} - -#include "RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h" - -namespace { - ConfRecoBuilder < ConfigurableAdaptiveFitter > t ( "avf", "Adaptive Vertex Filter" ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveReconstructor.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveReconstructor.cc deleted file mode 100644 index af62a80f1e6..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableAdaptiveReconstructor.cc +++ /dev/null @@ -1,68 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableAdaptiveReconstructor.h" -#include "RecoVertex/AdaptiveVertexFinder/interface/AdaptiveVertexReconstructor.h" - -using namespace std; - -namespace { - edm::ParameterSet mydefaults() - { - edm::ParameterSet ret; - ret.addParameter<double>("primcut",2.0); - ret.addParameter<double>("seccut",2.0); - ret.addParameter<double>("minweight",0.5); - return ret; - } -} - -ConfigurableAdaptiveReconstructor::ConfigurableAdaptiveReconstructor() : - theRector( new AdaptiveVertexReconstructor() ) -{} - -void ConfigurableAdaptiveReconstructor::configure( - const edm::ParameterSet & n ) -{ - edm::ParameterSet m = mydefaults(); - m.augment ( n ); - if ( theRector ) delete theRector; - theRector = new AdaptiveVertexReconstructor( - m.getParameter<double>("primcut"), - m.getParameter<double>("seccut"), - m.getParameter<double>("minweight") ); -} - -ConfigurableAdaptiveReconstructor::~ConfigurableAdaptiveReconstructor() -{ - if ( theRector ) delete theRector; -} - -ConfigurableAdaptiveReconstructor::ConfigurableAdaptiveReconstructor - ( const ConfigurableAdaptiveReconstructor & o ) : - theRector ( o.theRector->clone() ) -{} - - -ConfigurableAdaptiveReconstructor * ConfigurableAdaptiveReconstructor::clone() const -{ - return new ConfigurableAdaptiveReconstructor ( *this ); -} - -vector < TransientVertex > ConfigurableAdaptiveReconstructor::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - if (!theRector) - { - } - return theRector->vertices ( t ); -} - -edm::ParameterSet ConfigurableAdaptiveReconstructor::defaults() const -{ - return mydefaults(); -} - -#include "RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h" - -namespace { - ConfRecoBuilder < ConfigurableAdaptiveReconstructor > t - ( "avr", "Adaptive Vertex Reconstructor [ = Iterative avf]" ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableKalmanFitter.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableKalmanFitter.cc deleted file mode 100644 index bee4a807279..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableKalmanFitter.cc +++ /dev/null @@ -1,58 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableKalmanFitter.h" -#include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexFitter.h" - -namespace { - edm::ParameterSet mydefaults() - { - edm::ParameterSet ret; - return ret; - } -} - -ConfigurableKalmanFitter::ConfigurableKalmanFitter() : - theRector( new ReconstructorFromFitter ( KalmanVertexFitter() ) ) -{} - -void ConfigurableKalmanFitter::configure( - const edm::ParameterSet & n ) -{ - edm::ParameterSet m = mydefaults(); - m.augment ( n ); - if ( theRector ) delete theRector; - theRector = new ReconstructorFromFitter ( KalmanVertexFitter() ); -} - -ConfigurableKalmanFitter::~ConfigurableKalmanFitter() -{ - if ( theRector ) delete theRector; -} - -ConfigurableKalmanFitter::ConfigurableKalmanFitter - ( const ConfigurableKalmanFitter & o ) : - theRector ( o.theRector->clone() ) -{} - - -ConfigurableKalmanFitter * ConfigurableKalmanFitter::clone() const -{ - return new ConfigurableKalmanFitter ( *this ); -} - -vector < TransientVertex > ConfigurableKalmanFitter::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - return theRector->vertices ( t ); -} - -edm::ParameterSet ConfigurableKalmanFitter::defaults() const -{ - return mydefaults(); -} - -#include "RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h" - -namespace { - ConfRecoBuilder < ConfigurableKalmanFitter > t ( "kalman", "Standard Kalman Filter" ); - ConfRecoBuilder < ConfigurableKalmanFitter > s ( "default", "Standard Kalman Filter" ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableLinPtFinder.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableLinPtFinder.cc deleted file mode 100644 index c1d0f99b4d2..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableLinPtFinder.cc +++ /dev/null @@ -1,61 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableLinPtFinder.h" -#include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h" -#include "RecoVertex/LinearizationPointFinders/interface/DefaultLinearizationPointFinder.h" - -using namespace std; - -namespace { - edm::ParameterSet mydefaults() - { - edm::ParameterSet ret; -// ret.addParameter<string>("name","default"); - return ret; - } -} - - -ConfigurableLinPtFinder::ConfigurableLinPtFinder() : - theRector( new ReconstructorFromLinPtFinder ( DefaultLinearizationPointFinder() ) ) -{} - -void ConfigurableLinPtFinder::configure( - const edm::ParameterSet & n ) -{ - edm::ParameterSet m = mydefaults(); - m.augment ( n ); - if ( theRector ) delete theRector; - theRector = new ReconstructorFromLinPtFinder ( DefaultLinearizationPointFinder() ); -} - -ConfigurableLinPtFinder::~ConfigurableLinPtFinder() -{ - if ( theRector ) delete theRector; -} - -ConfigurableLinPtFinder::ConfigurableLinPtFinder - ( const ConfigurableLinPtFinder & o ) : - theRector ( o.theRector->clone() ) -{} - - -ConfigurableLinPtFinder * ConfigurableLinPtFinder::clone() const -{ - return new ConfigurableLinPtFinder ( *this ); -} - -vector < TransientVertex > ConfigurableLinPtFinder::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - return theRector->vertices ( t ); -} - -edm::ParameterSet ConfigurableLinPtFinder::defaults() const -{ - return mydefaults(); -} - -#include "RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h" - -namespace { - ConfRecoBuilder < ConfigurableLinPtFinder > t ( "linpt", "LinearizationPointFinder" ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableTrimmedKalmanFinder.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableTrimmedKalmanFinder.cc deleted file mode 100644 index ba0fcbede81..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableTrimmedKalmanFinder.cc +++ /dev/null @@ -1,65 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableTrimmedKalmanFinder.h" -#include "RecoVertex/TrimmedKalmanVertexFinder/interface/KalmanTrimmedVertexFinder.h" - -namespace { - edm::ParameterSet mydefaults () - { - edm::ParameterSet ret; - ret.addParameter<double>("ptcut",0.); - ret.addParameter<double>("trkcutpv",0.05); - ret.addParameter<double>("trkcutsv",0.01); - ret.addParameter<double>("vtxcut",0.01); - return ret; - } -} - -ConfigurableTrimmedKalmanFinder::ConfigurableTrimmedKalmanFinder() : - theRector( new KalmanTrimmedVertexFinder() ) -{} - -void ConfigurableTrimmedKalmanFinder::configure( - const edm::ParameterSet & n ) -{ - if ( theRector ) delete theRector; - edm::ParameterSet m = mydefaults(); - m.augment ( n ); - KalmanTrimmedVertexFinder * tmp = new KalmanTrimmedVertexFinder(); - tmp->setPtCut ( m.getParameter<double>("ptcut") ); - tmp->setTrackCompatibilityCut ( m.getParameter<double>("trkcutpv") ); - tmp->setTrackCompatibilityToSV ( m.getParameter<double>("trkcutsv") ); - tmp->setVertexFitProbabilityCut ( m.getParameter<double>( "vtxcut" ) ); - theRector = tmp; -} - -ConfigurableTrimmedKalmanFinder::~ConfigurableTrimmedKalmanFinder() -{ - if ( theRector ) delete theRector; -} - -ConfigurableTrimmedKalmanFinder::ConfigurableTrimmedKalmanFinder - ( const ConfigurableTrimmedKalmanFinder & o ) : - theRector ( o.theRector->clone() ) -{} - - -ConfigurableTrimmedKalmanFinder * ConfigurableTrimmedKalmanFinder::clone() const -{ - return new ConfigurableTrimmedKalmanFinder ( *this ); -} - -vector < TransientVertex > ConfigurableTrimmedKalmanFinder::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - return theRector->vertices ( t ); -} - -edm::ParameterSet ConfigurableTrimmedKalmanFinder::defaults() const -{ - return mydefaults(); -} - -#include "RecoVertex/ConfigurableVertexReco/interface/ConfRecoBuilder.h" - -namespace { - ConfRecoBuilder < ConfigurableTrimmedKalmanFinder > t ( "tkf", "Trimmed Kalman Vertex Finder" ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ConfigurableVertexReconstructor.cc b/RecoVertex/ConfigurableVertexReco/src/ConfigurableVertexReconstructor.cc deleted file mode 100644 index 1c9387ec067..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ConfigurableVertexReconstructor.cc +++ /dev/null @@ -1,43 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ConfigurableVertexReconstructor.h" -#include "RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h" - -using namespace std; - -ConfigurableVertexReconstructor::ConfigurableVertexReconstructor ( - const edm::ParameterSet & p ) : theRector ( 0 ) -{ - string finder=p.getParameter<string>("finder"); - theRector = VertexRecoManager::Instance().get ( finder ); - if (!theRector) - { - cout << "[ConfigurableVertexReconstructor] got no reconstructor for \"" - << finder << "\"" << endl; - exit(0); - } - theRector->configure ( p ); - // theRector = theRector->clone(); - // theRector = new ReconstructorFromFitter ( KalmanVertexFitter() ); -} - -ConfigurableVertexReconstructor::~ConfigurableVertexReconstructor() -{ -// delete theRector; -} - -ConfigurableVertexReconstructor::ConfigurableVertexReconstructor - ( const ConfigurableVertexReconstructor & o ) : - theRector ( o.theRector->clone() ) -{} - - -ConfigurableVertexReconstructor * ConfigurableVertexReconstructor::clone() const -{ - return new ConfigurableVertexReconstructor ( *this ); -} - - -vector < TransientVertex > ConfigurableVertexReconstructor::vertices ( - const std::vector < reco::TransientTrack > & t ) const -{ - return theRector->vertices ( t ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromFitter.cc b/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromFitter.cc deleted file mode 100644 index f73e10d5add..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromFitter.cc +++ /dev/null @@ -1,42 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromFitter.h" - -using namespace std; - -ReconstructorFromFitter::ReconstructorFromFitter ( const VertexFitter & f, int verbose ) : - theFitter ( f.clone() ), theVerbosity ( verbose ) -{} - -vector < TransientVertex > ReconstructorFromFitter::vertices - ( const vector < reco::TransientTrack > & t ) const -{ - vector < TransientVertex > ret; - try { - CachingVertex tmp = theFitter->vertex ( t ); - ret.push_back ( tmp ); - } catch ( exception & e ) { - if ( theVerbosity ) - { - cout << "[ReconstructorFromFitter] exception caught: " << e.what() << endl; - } - } catch ( ... ) { - if ( theVerbosity ) - { - cout << "[ReconstructorFromFitter] unidentified exception caught." << endl; - } - } - return ret; -} - -ReconstructorFromFitter::~ReconstructorFromFitter() -{ - delete theFitter; -} - -ReconstructorFromFitter::ReconstructorFromFitter ( const ReconstructorFromFitter & o ) : - theFitter ( o.theFitter->clone() ), theVerbosity ( o.theVerbosity ) -{} - -ReconstructorFromFitter * ReconstructorFromFitter::clone () const -{ - return new ReconstructorFromFitter ( *this ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromLinPtFinder.cc b/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromLinPtFinder.cc deleted file mode 100644 index 6e3b3e660cf..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/ReconstructorFromLinPtFinder.cc +++ /dev/null @@ -1,44 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/ReconstructorFromLinPtFinder.h" - -using namespace std; - -ReconstructorFromLinPtFinder::ReconstructorFromLinPtFinder ( - const LinearizationPointFinder & f, int verbose ) : - theLinPtFinder ( f.clone() ), theVerbosity ( verbose ) -{} - -vector < TransientVertex > ReconstructorFromLinPtFinder::vertices - ( const vector < reco::TransientTrack > & t ) const -{ - vector < TransientVertex > ret; - try { - GlobalPoint pt = theLinPtFinder->getLinearizationPoint ( t ); - TransientVertex tmp ( pt, GlobalError(), vector<reco::TransientTrack>(), -1.0 ); - ret.push_back ( tmp ); - } catch ( exception & e ) { - if ( theVerbosity ) - { - cout << "[ReconstructorFromLinPtFinder] exception caught: " << e.what() << endl; - } - } catch ( ... ) { - if ( theVerbosity ) - { - cout << "[ReconstructorFromLinPtFinder] unidentified exception caught." << endl; - } - } - return ret; -} - -ReconstructorFromLinPtFinder::~ReconstructorFromLinPtFinder() -{ - delete theLinPtFinder; -} - -ReconstructorFromLinPtFinder::ReconstructorFromLinPtFinder ( const ReconstructorFromLinPtFinder & o ) : - theLinPtFinder ( o.theLinPtFinder->clone() ), theVerbosity ( o.theVerbosity ) -{} - -ReconstructorFromLinPtFinder * ReconstructorFromLinPtFinder::clone () const -{ - return new ReconstructorFromLinPtFinder ( *this ); -} diff --git a/RecoVertex/ConfigurableVertexReco/src/VertexRecoManager.cc b/RecoVertex/ConfigurableVertexReco/src/VertexRecoManager.cc deleted file mode 100644 index 049ada56274..00000000000 --- a/RecoVertex/ConfigurableVertexReco/src/VertexRecoManager.cc +++ /dev/null @@ -1,66 +0,0 @@ -#include "RecoVertex/ConfigurableVertexReco/interface/VertexRecoManager.h" - -using namespace std; - -void VertexRecoManager::registerReconstructor ( - const string & name, AbstractConfReconstructor * o, const string & d ) -{ - theAbstractConfReconstructors[name]=o; - theDescription[name]=d; -} - -VertexRecoManager::~VertexRecoManager() -{ - for ( map < string, AbstractConfReconstructor * >::iterator i=theAbstractConfReconstructors.begin(); - i!=theAbstractConfReconstructors.end() ; ++i ) - { - delete i->second; - } -} - -std::string VertexRecoManager::describe ( const std::string & d ) -{ - return theDescription[d]; -} - -VertexRecoManager * VertexRecoManager::clone() const -{ - return new VertexRecoManager ( * this ); -} - -VertexRecoManager::VertexRecoManager ( const VertexRecoManager & o ) -{ - std::cout << "[VertexRecoManager] copy constructor! Error!" << std::endl; - exit(0); - /* - for ( map < string, AbstractConfReconstructor * >::const_iterator i=o.theAbstractConfReconstructors.begin(); - i!=o.theAbstractConfReconstructors.end() ; ++i ) - { - theAbstractConfReconstructors[ i->first ] = i->second->clone(); - } - - theIsEnabled=o.theIsEnabled; - */ -} - -VertexRecoManager & VertexRecoManager::Instance() -{ - static VertexRecoManager singleton; - return singleton; -} - -AbstractConfReconstructor * VertexRecoManager::get ( const string & s ) -{ - return theAbstractConfReconstructors[s]; -} - -map < string, AbstractConfReconstructor * > VertexRecoManager::get() -{ - return theAbstractConfReconstructors; -} - -void VertexRecoManager::setFileName ( const std::string & s ) -{} - -VertexRecoManager::VertexRecoManager() -{} diff --git a/RecoVertex/GhostTrackFitter/doc/html/index.html b/RecoVertex/GhostTrackFitter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/GhostTrackFitter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/GhostTrackFitter/doc/html/overview.html b/RecoVertex/GhostTrackFitter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/GhostTrackFitter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/KinematicFit/BuildFile b/RecoVertex/KinematicFit/BuildFile deleted file mode 100644 index b8d42ce0a9e..00000000000 --- a/RecoVertex/KinematicFit/BuildFile +++ /dev/null @@ -1,6 +0,0 @@ -<export> - <lib name=RecoVertexKinematicFit> - <use name=RecoVertex/KinematicFitPrimitives> -</export> - -<use name=RecoVertex/KinematicFitPrimitives> diff --git a/RecoVertex/KinematicFit/doc/html/index.html b/RecoVertex/KinematicFit/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/KinematicFit/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/KinematicFit/doc/html/overview.html b/RecoVertex/KinematicFit/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/KinematicFit/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h b/RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h deleted file mode 100644 index a2831029ebc..00000000000 --- a/RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef BackToBackKinematicConstraint_H -#define BackToBackKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - -/** - * Class implementing the back-to-back geometry - * constraints for 2 KinematicParticles. Current version - * does not implement an actual back-to-back. - * Current class forces 2 tracks to have the opposite direction, - * bud does not force them to emerge from the single point. - *Coorect version to be implemented later. - * - * This is just - * an illustrative piece of code, showing possible approach to - * constraint application on multiple tracks. - * - * Kirill Prokofiev, July 2004 - */ - -class BackToBackKinematicConstraint:public KinematicConstraint -{ -public: - - BackToBackKinematicConstraint() {} - - ~BackToBackKinematicConstraint() {} - -/** - * Derivatives and value calculated at given expansion point - * Vector should always be of size 14 (2 particles) - */ -virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Derivatives and values calculated at expansion point, taken - * at current state of input particles. Number of input particles - * should be always equal to 2 - */ -virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - -virtual AlgebraicVector deviations(int nStates) const; - -virtual int numberOfEquations() const; - -virtual KinematicConstraint * clone() const; - -private: - - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/ChildUpdator.h b/RecoVertex/KinematicFit/interface/ChildUpdator.h deleted file mode 100644 index 7beea14cdec..00000000000 --- a/RecoVertex/KinematicFit/interface/ChildUpdator.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef ChildUpdator_H -#define ChildUpdator_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" - -/** - * Abstract Base Class to update the - * daughter particles after the parent - * particle was refitted. Implementation Returns the - * refitted virtual particle with the pointers - * to updated child particles - * - * Kirill Prokofiev, December 2002 - */ - -class ChildUpdator -{ -public: - - ChildUpdator(){} - - virtual ~ChildUpdator(){} -/** - * Method updating particles - * and vertices inside the tree - * below the constrained particle - * The tree pointer should be set on - * particle just updated by ParentParticleFitter - * Class to be used by KinematicParticleFitter only. - */ - virtual RefCountedKinematicTree update(RefCountedKinematicTree tree) const=0; - - virtual vector<RefCountedKinematicTree> update(vector<RefCountedKinematicTree> trees) const=0; - - virtual ChildUpdator * clone() const = 0; - -private: - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h b/RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h deleted file mode 100644 index fbf585efdf5..00000000000 --- a/RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef ConstrainedTreeBuilder_H -#define ConstrainedTreeBuilder_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" - -/** - * Class constructing te final output tree for the constrained vertex fitter. - * To be used by corresponding fitter only. Tree builders are scheduled for - * generalization: They should be inherited from the single generic class - * in the next version of the library. - */ - -class ConstrainedTreeBuilder -{ - -public: - - ConstrainedTreeBuilder(); - - ~ConstrainedTreeBuilder(); - -/** - * Method constructing tree out of set of refitted particles, vertex, and - * full vertex - all tracks covariance matrix. Particles (not states!) are - * passed since only particle "knows" how to construct itself out of refitted state - * (which factory/propagator should be used). - */ - RefCountedKinematicTree buildTree(vector<RefCountedKinematicParticle> prt, - RefCountedKinematicVertex vtx,const AlgebraicMatrix& fCov) const; - -private: -//Metod reconstructing the full covariance matrix of -//resulting particle. Matrix is returned in two parts: -//first component of vector is p_p covariance; -//the second one is p_x covariance - AlgebraicMatrix momentumPart(vector<RefCountedKinematicParticle> rPart, - const AlgebraicVector& newPar, - const AlgebraicMatrix& fitCov)const; - - VirtualKinematicParticleFactory * pFactory; - KinematicVertexFactory * vFactory; -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/FinalTreeBuilder.h b/RecoVertex/KinematicFit/interface/FinalTreeBuilder.h deleted file mode 100644 index 0af0de5ddaf..00000000000 --- a/RecoVertex/KinematicFit/interface/FinalTreeBuilder.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef FinalTreeBuilder_H -#define FinalTreeBuilder_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" -#include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h" -#include "RecoVertex/VertexPrimitives/interface/CachingVertex.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h" - -/** - * Class building a resulting output - * tree out of the information provided - * by KinematicParticleVertexFitter. - */ -class FinalTreeBuilder{ - -public: - FinalTreeBuilder(); - - ~FinalTreeBuilder(); - - RefCountedKinematicTree buildTree(const CachingVertex& vtx, - vector<RefCountedKinematicParticle> input) const; - -private: - -//internal calculation and helper methods - AlgebraicMatrix momentumPart(vector<KinematicRefittedTrackState *> rStates, - const CachingVertex& vtx, - const AlgebraicVector& par)const; - - KinematicVertexFactory * kvFactory; - VirtualKinematicParticleFactory * pFactory; -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h b/RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h deleted file mode 100644 index 7bfee9e8300..00000000000 --- a/RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef FourMomentumKinematicConstraint_H -#define FourMomentumKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" - -/** - * 4-Momentum track constraint class provides a way to compute the - * matrix of derivatives and the vector of values for 4-Momentum - * constraint on for given KinematicParticle. Current version does - * not allow working with multiple tracks - * - * Kirill Prokofiev March 2003 - * MultiState version: July 2004 - */ - -class FourMomentumKinematicConstraint : public KinematicConstraint -{ - -public: - -/** - * Constructor with desired 4-momentum vector and - * vector of deviations to be used forcovariance matrix as - * arguments - */ - FourMomentumKinematicConstraint(const AlgebraicVector& momentum, - const AlgebraicVector& deviation); - -/** - * Vector of values and matrix of derivatives - * calculated at given 7*NumberOfStates expansion point - */ -virtual pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - - -/** - * Vector of values and matrix of derivatives calculated using - * current state as an expansion point - */ -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - -virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - - -/** - * Returns number of constraint equations used for fitting. Method is relevant for proper NDF - * calculations. - */ -virtual int numberOfEquations() const; - -virtual AlgebraicVector deviations(int nStates) const; - -virtual FourMomentumKinematicConstraint * clone() const - {return new FourMomentumKinematicConstraint(*this);} - -private: - -AlgebraicVector mm; -AlgebraicVector dd; - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/InputSort.h b/RecoVertex/KinematicFit/interface/InputSort.h deleted file mode 100644 index a04ac3e60a3..00000000000 --- a/RecoVertex/KinematicFit/interface/InputSort.h +++ /dev/null @@ -1,29 +0,0 @@ -#ifndef InputSort_H -#define InputSort_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" - -/** - * Helper class checking the - * input of Kinematic Vertex Fitters - * If some of particles provided have - * trees after them, makes sure that - * only top tree particles are used in the fit. - */ - -class InputSort{ - -public: - - InputSort(){} - ~InputSort(){} - - pair<vector<RefCountedKinematicParticle>, vector<FreeTrajectoryState> > - sort(vector<RefCountedKinematicParticle> particles) const; - - vector<RefCountedKinematicParticle> sort(vector<RefCountedKinematicTree> trees) const; - -private: - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h b/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h deleted file mode 100644 index 7e69ff93a02..00000000000 --- a/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef KinematicConstrainedVertexFitter_H -#define KinematicConstrainedVertexFitter_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" -#include "RecoVertex/VertexTools/interface/LinearizationPointFinder.h" -#include "RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h" -#include "RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h" -#include "RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h" - -/** - * Class fitting the veretx out - * of set of tracks via usual LMS - * with Lagrange multipliers. - * Additional constraints can be applyed - * to the tracks during the vertex fit - * (solves non-factorizabele cases) - * Example: Vertex fit with collinear tracks.. - * - * Kirill Prokofiev September 2003. - */ - -class KinematicConstrainedVertexFitter{ - -public: - -/** - * Default constructor using LMSLinearizationPointFinder - */ - KinematicConstrainedVertexFitter(); - -/** - * Constructor with user-provided LinearizationPointFinder - */ - KinematicConstrainedVertexFitter(const LinearizationPointFinder& fnd); - - ~KinematicConstrainedVertexFitter(); - -/** - * If multitrack constraint is empty, - * the output will be just a simple - * vertex fit performed by LMS with - * Lagrange multipliers method. - */ - RefCountedKinematicTree fit(vector<RefCountedKinematicParticle> part, - MultiTrackKinematicConstraint * cs) const; - -private: - -//method to deal with simple configurable parameters: -//number of iterations and stopping condition - void readParameters(); - float theMaxDiff; - int theMaxStep; - LinearizationPointFinder * finder; - KinematicConstrainedVertexUpdator * updator; - VertexKinematicConstraint * vCons; - ConstrainedTreeBuilder * tBuilder; -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h b/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h deleted file mode 100644 index d00a2dfbb5d..00000000000 --- a/RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h +++ /dev/null @@ -1,48 +0,0 @@ -#ifndef KinematicConstrainedVertexUpdator_H -#define KinematicConstrainedVertexUpdator_H - -#include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" -#include "RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h" - -/** - * Class caching the math part for - * KinematicConstrainedVertexFitter - */ - -class KinematicConstrainedVertexUpdator -{ -public: - -/** - * Default constructor and destructor - */ - KinematicConstrainedVertexUpdator(); - - ~KinematicConstrainedVertexUpdator(); - -/** - * Method updating the states. Takes a vector of full parameters: - * (x,y,z,particle_1,...,particle_n), corresponding linearization - * point: vector of states and GlobalPoint, - * and constraint to be applied during the vertex fit. - * Returns refitted vector of 7n+3 parameters and corresponding - * covariance matrix, where n - number of tracks. - */ - pair<pair<vector<KinematicState>, AlgebraicMatrix >, RefCountedKinematicVertex > - update(const AlgebraicVector& inState, const AlgebraicMatrix& inCov, vector<KinematicState> lStates, - const GlobalPoint& lPoint,MultiTrackKinematicConstraint * cs)const; - -private: -//Method calculating all vertex constraint - related parameters -//To be moved later to the specific constraint class -/* - pair<pair<AlgebraicMatrix, AlgebraicMatrix>, AlgebraicVector> - derivativesAndValue(const vector<KinematicState> states, - const GlobalPoint& point)const; -*/ - - KinematicVertexFactory * vFactory; - VertexKinematicConstraint * vConstraint; -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/KinematicParticleFitter.h b/RecoVertex/KinematicFit/interface/KinematicParticleFitter.h deleted file mode 100644 index 5f0768ef4b0..00000000000 --- a/RecoVertex/KinematicFit/interface/KinematicParticleFitter.h +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef KinematicParticleFitter_H -#define KinematicParticleFitter_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/KinematicFit/interface/ParentParticleFitter.h" -#include "RecoVertex/KinematicFit/interface/ChildUpdator.h" - -/** - * Class making kinematic fit of the particle inside the - * KinematicTree. The daughter states of the tree get - * automathically refitted according to the changes - * done to mother state. Mechanism is split in 2 parts: - * ParentParticleFitter to fit the mother particle and - * ChildUpdator to update the states of daughter particles. - * Child updator is currently not implemented. - * Fitter is designed to use any user provided algorithm - * for state refit. - */ - -class KinematicParticleFitter -{ -public: - -/** - * Default constructor using LMS with Lagrange - * multipliers for particle refit. - */ - KinematicParticleFitter(); - -/** - * Constructor allowing use of any - * fitter-updator pair implemented - */ - KinematicParticleFitter(const ParentParticleFitter& fitter, const ChildUpdator& updator); - - ~KinematicParticleFitter(); - -/** - * Method applying the constraint to - * the _TOP_ particle inside the - * Kinematic Tree. Tree containing the - * refitted state is returned. The - * initial state of the particle and - * constraint applyed are stored in - * particle's corresponding data memebers - */ - - vector<RefCountedKinematicTree> fit(KinematicConstraint * cs , - vector<RefCountedKinematicTree> trees)const; - - -/** - * Method refitting a top particle of the single tree. - * for backup compatibility and constraints not allowing - * multiple track refits. - */ - RefCountedKinematicTree fit(KinematicConstraint * cs , - RefCountedKinematicTree tree)const; -private: - - ParentParticleFitter * parentFitter; - ChildUpdator * cUpdator; -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h b/RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h deleted file mode 100644 index 677c6f34f11..00000000000 --- a/RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h +++ /dev/null @@ -1,62 +0,0 @@ -#ifndef KinematicParticleVertexFitter_H -#define KinematicParticleVertexFitter_H - -#include "RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/VertexTools/interface/LinearizationPointFinder.h" -#include "RecoVertex/VertexTools/interface/VertexTrackFactory.h" -#include "RecoVertex/KinematicFit/interface/InputSort.h" - -/** - * Class creating a kinematic particle out - * of set of daughter particles. Daughter - * particles are supposed to come from a - * common vertex. Arbitrary VerexFitter - * can be used to fit the common vertex - * and refit the daughter particles with the - * knowledge of vertex. The Kinematic Vertex is also - * created and the resulting KinematicParticle points - * on it. - * - * Kirill Prokofiev, December 2002 - */ - -class KinematicParticleVertexFitter -{ - -public: - -/** - * Constructor with LMSLinearizationPointFinder used as default. - * - */ - KinematicParticleVertexFitter(); - - -/** - * Constructor with the LinearizationPointFinder - * Linearization point finder should have an - * ability to find point out of set of FreeTrajectoryStates - * LMSLinearizationPointFinder is used as default. - */ - KinematicParticleVertexFitter(const LinearizationPointFinder& finder); - - ~KinematicParticleVertexFitter(); - -/** - * Fit method taking set of particles, fitting them to the - * common vertex and creating tree out of them. - * Input particles can belong to kinmaticTrees. - * In such a case it should be TOP particle of - * corresponding tree. - */ - RefCountedKinematicTree fit(vector<RefCountedKinematicParticle> particles) const; - -private: - -//widely used common tools - SequentialKinematicVertexFitter * fitter; - LinearizationPointFinder * pointFinder; - VertexTrackFactory * vFactory; -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h b/RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h deleted file mode 100644 index 230f42f2e06..00000000000 --- a/RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef LagrangeChildUpdator_H -#define LagrangeChildUpdator_H - -#include "RecoVertex/KinematicFit/interface/ChildUpdator.h" - -/** - * This is the space for daughter particle - * update after the lagrange multipliers refit. - * Current class is not yet implemented. - * Return the input unchanged for the moment. - */ - -class LagrangeChildUpdator:public ChildUpdator -{ -public: - - LagrangeChildUpdator(){} - ~LagrangeChildUpdator(){} - - RefCountedKinematicTree update(RefCountedKinematicTree tree) const; - - vector<RefCountedKinematicTree> update(vector<RefCountedKinematicTree> trees) const; - - LagrangeChildUpdator * clone() const - {return new LagrangeChildUpdator(*this);} - -private: - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h b/RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h deleted file mode 100644 index f296d1f955d..00000000000 --- a/RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef LagrangeParentParticleFitter_H -#define LagrangeParentParticleFitter_H - -#include "RecoVertex/KinematicFit/interface/ParentParticleFitter.h" - -/** - * KinematicParticle refit via LMS minimization with Lagrange multipliers - * method. Tunable for number of iterations and stopping condition. - * Corresponding SimpleConfigurables are provided. Every next iteration - * takes the result of previous iteration as a linearization point. - * This is only needed in case of nonlinear constraints. In the - * linear case result will be reached after the first step. - * Stopping condition at the moment: sum of abs. constraint - * equations values at given point - */ - -class LagrangeParentParticleFitter:public ParentParticleFitter -{ - -public: - - LagrangeParentParticleFitter(); - - ~LagrangeParentParticleFitter(){} - -/** - * Refit method taking KinematicConstraint and vector - * of trees as imput. Only top particles of corresponding trees are - * refitted, vertex is not created. Number of trees should be one - * (single track refit) or greater (multiple track refit). Some - * constraints may not work with single tracks (back to back for ex.) - */ - vector<RefCountedKinematicTree> fit(vector<RefCountedKinematicTree> trees, - KinematicConstraint * cs)const; - - LagrangeParentParticleFitter * clone() const - {return new LagrangeParentParticleFitter(*this);} - -private: - -//tunable parameters and their read method - void readParameters(); - float theMaxDiff; - int theMaxStep; -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/MassKinematicConstraint.h b/RecoVertex/KinematicFit/interface/MassKinematicConstraint.h deleted file mode 100644 index 37969eb9b93..00000000000 --- a/RecoVertex/KinematicFit/interface/MassKinematicConstraint.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef MassKinematicConstraint_H -#define MassKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" - -/** - * Mass track constraint class. Provides a way to compute derivative - * matrix and vector of values for mass constraint on the single trajectory. - * This class does not have the multistate version, since vertex definition - * needed to calculate a joint mass of several particles. - * - * Kirill Prokofiev December 2002 - * Multitrack interface: July 2004 - */ - -class MassKinematicConstraint:public KinematicConstraint -{ - -public: - -/** - * Constructor with mass to be used as constraint value - */ - MassKinematicConstraint(const ParticleMass& m, const float sigma); - - -/** - * Vector of values and matrix of derivatives - * calculated at given 7xNumberOfStates point - */ -virtual pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives calculated - * using current state parameters as expansion point - */ -virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - -/** - * Returns number of constraint equations used - * for fitting. Method is relevant for proper NDF - * calculations. - */ -virtual int numberOfEquations() const; - -virtual AlgebraicVector deviations(int nStates) const; - -virtual MassKinematicConstraint * clone() const - {return new MassKinematicConstraint(*this);} - -private: - ParticleMass mass; - AlgebraicVector dd; -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h b/RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h deleted file mode 100644 index 48b5c55eb51..00000000000 --- a/RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef MomentumKinematicConstraint_H -#define MomentumKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - - -/** - * Class constraining total 3-momentum of the particle (p_x,p_y,p_z) - * This constraint can not be implemented on multiple particles, - * without fitting the vertex. Current version supports one state - * refit only. - * - * Kirill Prokofiev, October 2003 - * MultiState version: July 2004 - */ -class MomentumKinematicConstraint : public KinematicConstraint -{ - -public: - -/** - * Constructor with the 4-momentum vector as - * an argument - */ -MomentumKinematicConstraint(const AlgebraicVector& momentum, - const AlgebraicVector& dev); - -/** - * Vector of values and matrix of derivatives - * calculated at given expansion 7xNumberOfStates point - */ -virtual pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives calculated using current - * state parameters as expansion point - */ -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - -virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - -virtual AlgebraicVector deviations(int nStates) const; - -/** - * Returns number of constraint equations used for fitting. - * Method is relevant for proper NDF calculations. - */ -virtual int numberOfEquations() const; - -virtual MomentumKinematicConstraint * clone() const - {return new MomentumKinematicConstraint(*this);} - -private: - -AlgebraicVector mm; -AlgebraicVector dd; - -}; - - -#endif diff --git a/RecoVertex/KinematicFit/interface/ParentParticleFitter.h b/RecoVertex/KinematicFit/interface/ParentParticleFitter.h deleted file mode 100644 index 4f10e074186..00000000000 --- a/RecoVertex/KinematicFit/interface/ParentParticleFitter.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef ParentParticleFitter_H -#define ParentParticleFitter_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - -/** - * Abstract Base class for mechanism - * updating top tree particle with given - * constraint. To be used by KinematicParticleFitter - * only. - */ - -class ParentParticleFitter{ - -public: - - ParentParticleFitter(){} - - virtual ~ParentParticleFitter(){} -/** - * Takes a kinematic tree as an input - * The top tree particle get constrained - */ -// virtual RefCountedKinematicTree fit(RefCountedKinematicTree tree, KinematicConstraint * cs) const =0; - - - virtual vector<RefCountedKinematicTree> fit(vector<RefCountedKinematicTree> trees, - KinematicConstraint * cs) const =0; - -/** - * Clone method - */ - virtual ParentParticleFitter * clone() const =0; - -private: - -}; - - -#endif diff --git a/RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h b/RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h deleted file mode 100644 index 8654586c22f..00000000000 --- a/RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef PointingKinematicConstraint_H -#define PointingKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - - -/** - * Topological constraint making a momentum vector to point to - * the given location in space. - * Example: if b-meson momentum is reconstructed at b-meson decay position - * (secondary vertex), making reconstructed momentum pointing the the primary - * vertex - * - * Multiple track refit is not supported in current version - * - * Kirill Prokofiev, March 2004 - * MultiState version: July 2004 - */ - - -class PointingKinematicConstraint : public KinematicConstraint -{ - public: - - PointingKinematicConstraint(const GlobalPoint& ref):refPoint(ref) - {} - -/** - * Vector of values and matrix of derivatives - * calculated at given expansion 7xNumberOfStates point - */ - virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const; - - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives calculated using current - * state parameters as expansion point - */ - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - - virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - - virtual AlgebraicVector deviations(int nStates) const; - -/** - * Returns number of constraint equations used - * for fitting. Method is relevant for proper NDF - * calculations. - */ - virtual int numberOfEquations() const; - - virtual PointingKinematicConstraint * clone() const - {return new PointingKinematicConstraint(*this);} - - private: - - pair<AlgebraicVector,AlgebraicVector> makeValue(const AlgebraicVector& exPoint)const ; - pair<AlgebraicMatrix, AlgebraicVector> makeDerivative(const AlgebraicVector& exPoint) const; - - GlobalPoint refPoint; - -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h b/RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h deleted file mode 100644 index 34b853a76e8..00000000000 --- a/RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef SequentialKinematicVertexFitter_H -#define SequentialKinematicVertexFitter_H - -#include "RecoVertex/VertexTools/interface/SequentialVertexFitter.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/VertexPrimitives/interface/VertexSmoother.h" -#include "RecoVertex/VertexPrimitives/interface/VertexUpdator.h" - -/** - * Analog of SequentialVertexFitter, using the - * same algorithm and notation, but working - * with KinematicFit objects: - * For internal KinematicFit library needs - * WARNING: no inherited methods should be - * called from this class: it may lead to - * usage of unapropriate type of - * LinearizedTrackState. - * - * Kirill Prokofiev, Mai 2003 - */ - -class SequentialKinematicVertexFitter -{ -public: - -/** - * Constructor with user selected updator and smoother - */ - SequentialKinematicVertexFitter(const VertexUpdator& theUpdator, const VertexSmoother& theSmoother); - - ~SequentialKinematicVertexFitter(); - -/** - * Reconstruct a KinematicVertex out of set - * of given VertexTracks. Here VertexTracks are - * created out of KinematicLinearizedTrackStates - */ - CachingVertex vertex(const vector<RefCountedVertexTrack> & tracks) const; - -private: - -/** - * Reading simple configurable parameters - */ - void readParameters(); - -/** - * Construct new a container of VertexTrack with a new linearization point - * and vertex seed, from an existing set of VertexTrack, from which only the - * recTracks will be used. - * \param tracks The original container of VertexTracks, from which the TransientTracks - * will be extracted. - * \param seed The seed to use for the VertexTracks. This position will - * also be used as the new linearization point. - * \return The container of VertexTracks which are to be used in the next fit. - */ - vector<RefCountedVertexTrack> reLinearizeTracks(const vector<RefCountedVertexTrack> & tracks, - const VertexState seed) const; - - CachingVertex fit(const vector<RefCountedVertexTrack> & tracks, - const VertexState state, bool withPrior) const; - -//configurable data - float theMaxShift; - int theMaxStep; - VertexUpdator * updator; - VertexSmoother * smoother; - VertexTrackFactory vTrackFactory; -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/SimplePointingConstraint.h b/RecoVertex/KinematicFit/interface/SimplePointingConstraint.h deleted file mode 100644 index 330f4084be8..00000000000 --- a/RecoVertex/KinematicFit/interface/SimplePointingConstraint.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef SimplePointingConstraint_H -#define SimplePointingConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - - -/** - * Topological constraint making a momentum vector to point to - * the given location in space. - * Example: if b-meson momentum is reconstructed at b-meson decay position - * (secondary vertex), making reconstructed momentum pointing the the primary - * vertex - * - * Multiple track refit is not supported in current version - * - * Kirill Prokofiev, March 2004 - * MultiState version: July 2004 - */ - - -class SimplePointingConstraint : public KinematicConstraint -{ - public: - - SimplePointingConstraint(const GlobalPoint& ref):refPoint(ref) - {} - -/** - * Vector of values and matrix of derivatives - * calculated at given expansion 7xNumberOfStates point - */ - virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const; - - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives calculated using current - * state parameters as expansion point - */ - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - - virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - - virtual AlgebraicVector deviations(int nStates) const; - -/** - * Returns number of constraint equations used - * for fitting. Method is relevant for proper NDF - * calculations. - */ - virtual int numberOfEquations() const; - - virtual SimplePointingConstraint * clone() const - {return new SimplePointingConstraint(*this);} - - private: - - pair<AlgebraicVector,AlgebraicVector> makeValue(const AlgebraicVector& exPoint)const ; - pair<AlgebraicMatrix, AlgebraicVector> makeDerivative(const AlgebraicVector& exPoint) const; - - GlobalPoint refPoint; - -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/SmartPointingConstraint.h b/RecoVertex/KinematicFit/interface/SmartPointingConstraint.h deleted file mode 100644 index 8c0c40965e4..00000000000 --- a/RecoVertex/KinematicFit/interface/SmartPointingConstraint.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef SmartPointingConstraint_H -#define SmartPointingConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - - -/** - * Topological constraint making a momentum vector to point to - * the given location in space. - * Example: if b-meson momentum is reconstructed at b-meson decay position - * (secondary vertex), making reconstructed momentum pointing the the primary - * vertex - * - * Multiple track refit is not supported in current version - * - * Kirill Prokofiev, March 2004 - * MultiState version: July 2004 - */ - - -class SmartPointingConstraint : public KinematicConstraint -{ - public: - - SmartPointingConstraint(const GlobalPoint& ref):refPoint(ref) - {} - -/** - * Vector of values and matrix of derivatives - * calculated at given expansion 7xNumberOfStates point - */ - virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const; - - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives calculated using current - * state parameters as expansion point - */ - virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - - virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - - virtual AlgebraicVector deviations(int nStates) const; - -/** - * Returns number of constraint equations used - * for fitting. Method is relevant for proper NDF - * calculations. - */ - virtual int numberOfEquations() const; - - virtual SmartPointingConstraint * clone() const - {return new SmartPointingConstraint(*this);} - - private: - - pair<AlgebraicVector,AlgebraicVector> makeValue(const AlgebraicVector& exPoint)const ; - pair<AlgebraicMatrix, AlgebraicVector> makeDerivative(const AlgebraicVector& exPoint) const; - - GlobalPoint refPoint; - -}; - -#endif diff --git a/RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h b/RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h deleted file mode 100644 index 0c6a7e14749..00000000000 --- a/RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef TwoTrackMassKinematicConstraint_H -#define TwoTrackMassKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" - -/** - * Class implementing the total mass - * of 2 tracks constraint. I.e. 2 first - * particles out of four passed form - * a given mass - * - * Warning: the tracks to constraint - * should be 1st and 2nd from the - * beginning of the vector. - * - */ - -class TwoTrackMassKinematicConstraint : public MultiTrackKinematicConstraint{ - -public: - TwoTrackMassKinematicConstraint(ParticleMass& ms):mass(ms) - {} - - -/** - * Returns a vector of values of constraint - * equations at the point where the input - * particles are defined. - */ -virtual AlgebraicVector value(const vector<KinematicState> states, - const GlobalPoint& point) const; - - -/** - * Returns a matrix of derivatives of - * constraint equations w.r.t. - * particle parameters - */ -virtual AlgebraicMatrix parametersDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const; - -/** - * Returns a matrix of derivatives of - * constraint equations w.r.t. - * vertex position - */ -virtual AlgebraicMatrix positionDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const; - -/** - * Number of equations per track used for the fit - */ -virtual int numberOfEquations() const; - -virtual TwoTrackMassKinematicConstraint * clone()const -{return new TwoTrackMassKinematicConstraint(*this);} - -private: - - ParticleMass mass; - -}; -#endif diff --git a/RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h b/RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h deleted file mode 100644 index 4c87c276e31..00000000000 --- a/RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef VertexKinematicConstraint_H -#define VertexKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h" -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" - -/** - * Class implementing the vertexing constraint - * for extended cartesian parametrization - * (x,y,z,p_x,p_y,p_z,m). The equations and - * derivatives in general follow the P.Avery's - * "Applied Fitting Theory-VI" CBX 98-37 - */ -class VertexKinematicConstraint:public MultiTrackKinematicConstraint -{ -public: - -VertexKinematicConstraint(); - -virtual ~VertexKinematicConstraint(); - -/** - * Returns a vector of values of constraint - * equations at the point where the input - * particles are defined. - */ -virtual AlgebraicVector value(const vector<KinematicState> states, - const GlobalPoint& point) const; - -/** - * Returns a matrix of derivatives of - * constraint equations w.r.t. - * particle parameters - */ -virtual AlgebraicMatrix parametersDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const; - -/** - * Returns a matrix of derivatives of - * constraint equations w.r.t. - * vertex position - */ -virtual AlgebraicMatrix positionDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const; -/** - * Number of equations per track used for the fit - */ -virtual int numberOfEquations() const; - -virtual VertexKinematicConstraint * clone()const -{return new VertexKinematicConstraint(*this);} - - -private: - -}; -#endif diff --git a/RecoVertex/KinematicFit/src/BackToBackKinematicConstraint.cc b/RecoVertex/KinematicFit/src/BackToBackKinematicConstraint.cc deleted file mode 100644 index 62628ce9504..00000000000 --- a/RecoVertex/KinematicFit/src/BackToBackKinematicConstraint.cc +++ /dev/null @@ -1,86 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/BackToBackKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -pair<AlgebraicVector, AlgebraicVector> BackToBackKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if(inSize != 14) throw VertexException("BackToBackKinematicConstraint::linearization point has a wrong dimension"); - AlgebraicVector pr = exPoint; - -//number of states should be always equal to 2 for such a constraint - AlgebraicVector vl(3,0); - vl(1) = pr(4)+pr(11); - vl(2) = pr(5)+pr(12); - vl(3) = pr(6)+pr(13); - return pair<AlgebraicVector, AlgebraicVector>(vl,pr); -} - -pair<AlgebraicMatrix, AlgebraicVector> BackToBackKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if(inSize != 14) throw VertexException("BackToBackKinematicConstraint::linearization point has a wrong dimension"); - AlgebraicVector pr = exPoint; - -//number of states should be always equal to 2 for such a constraint - AlgebraicMatrix dr(3,14,0); - dr(1,4) = 1.; - dr(1,11) = 1.; - dr(2,5) = 1; - dr(2,12) = 1; - dr(3,6) = 1; - dr(3,13) = 1; - return pair<AlgebraicMatrix, AlgebraicVector>(dr,pr); -} - -pair<AlgebraicVector, AlgebraicVector> BackToBackKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates != 2) throw VertexException("BackToBackKinematicConstraint::number of tracks is not equal to 2"); - AlgebraicVector point(14,0); - int co = 0; - for(vector<RefCountedKinematicParticle>::const_iterator i = par.begin(); i!=par.end(); i++) - { - AlgebraicVector cPar = (*i)->currentState().kinematicParameters().vector(); - for(int j = 1; j<8; j++){point((co-1)*7+j) = cPar(j);} - co++; - } - AlgebraicVector vl(3,0); - AlgebraicVector st1 = par[0]->currentState().kinematicParameters().vector(); - AlgebraicVector st2 = par[1]->currentState().kinematicParameters().vector(); - vl(1) = st1(4)+st2(4); - vl(2) = st1(5)+st2(5); - vl(3) = st1(6)+st2(6); - - return pair<AlgebraicVector, AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> BackToBackKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates != 2) throw VertexException("BackToBackKinematicConstraint::number of tracks is not equal to 2"); - AlgebraicVector point(14,0); - int co = 0; - for(vector<RefCountedKinematicParticle>::const_iterator i = par.begin(); i!=par.end(); i++) - { - AlgebraicVector cPar = (*i)->currentState().kinematicParameters().vector(); - for(int j = 1; j<8; j++){point((co-1)*7+j) = cPar(j);} - co++; - } - AlgebraicMatrix dr(3,14,0); - - return pair<AlgebraicMatrix, AlgebraicVector>(dr,point); -} - -AlgebraicVector BackToBackKinematicConstraint::deviations(int nStates) const -{ - AlgebraicVector dd(7*nStates,0); - return dd; -} - -int BackToBackKinematicConstraint::numberOfEquations() const -{return 3;} - -KinematicConstraint * BackToBackKinematicConstraint::clone() const -{return new BackToBackKinematicConstraint(*this);} diff --git a/RecoVertex/KinematicFit/src/ConstrainedTreeBuilder.cc b/RecoVertex/KinematicFit/src/ConstrainedTreeBuilder.cc deleted file mode 100644 index eea1f01dd68..00000000000 --- a/RecoVertex/KinematicFit/src/ConstrainedTreeBuilder.cc +++ /dev/null @@ -1,269 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/ConstrainedTreeBuilder.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -ConstrainedTreeBuilder::ConstrainedTreeBuilder() -{ - pFactory = new VirtualKinematicParticleFactory(); - vFactory = new KinematicVertexFactory(); -} - -ConstrainedTreeBuilder::~ConstrainedTreeBuilder() -{ - delete pFactory; - delete vFactory; -} - -RefCountedKinematicTree ConstrainedTreeBuilder::buildTree(vector<RefCountedKinematicParticle> prt, - RefCountedKinematicVertex vtx,const AlgebraicMatrix& fCov) const -{ - -//now making a new virtual particle out of refitted states - AlgebraicVector par(7,0); - par(1) = vtx->position().x(); - par(2) = vtx->position().y(); - par(3) = vtx->position().z(); - double ent = 0.; - int charge = 0; - for(vector<RefCountedKinematicParticle>::iterator i = prt.begin(); i != prt.end(); i++) - { - charge += (*i)->currentState().particleCharge(); -// GlobalVector rMom = (*i)->currentState().globalMomentum(); -// ParticleMass mm = (*i)->currentState().mass(); -//temporary hack - - GlobalVector rMom = (*i)->stateAtPoint(vtx->position()).globalMomentum(); - ParticleMass mm = (*i)->stateAtPoint(vtx->position()).mass(); - par(4) += rMom.x(); - par(5) += rMom.y(); - par(6) += rMom.z(); - ent += sqrt(mm*mm +rMom.x()*rMom.x() + rMom.y()*rMom.y() + rMom.z()*rMom.z()); - } - -//total reconstructed mass - double differ = ent*ent - (par(6)*par(6) + par(5)*par(5) + par(4)*par(4)); - if(differ>0.) - { - par(7) = sqrt(differ); - }else{ - cout<<"warning! current precision does not allow to calculate the mass"<<endl; - par(7) = 0.; - throw VertexException("warning! current precision does not allow to calculate the mass"); - - } - -//now making covariance matrix: - -// cout<<"fCov"<<fCov<<endl; - AlgebraicMatrix cov = momentumPart(prt,par,fCov); -// cout<<"Momentum part"<<cov<<endl; - -//covariance sym matrix - AlgebraicSymMatrix sCov(7,0); - for(int i = 1; i<8; i++) - { - for(int j = 1; j<8; j++) - {if(i<=j) sCov(i,j) = cov(i,j);} - } - KinematicParameters nP(par); - KinematicParametersError nE(sCov); - - KinematicState nState(nP,nE,charge); - -//new born kinematic particle - float chi2 = vtx->chiSquared(); - float ndf = vtx->degreesOfFreedom(); - KinematicParticle * zp = 0; - RefCountedKinematicParticle pPart = ReferenceCountingPointer<KinematicParticle>(zp); - RefCountedKinematicParticle nPart = pFactory->particle(nState,chi2,ndf,zp); - -//making a resulting tree: - RefCountedKinematicTree resTree = ReferenceCountingPointer<KinematicTree>(new KinematicTree()); - -//fake production vertex: - RefCountedKinematicVertex fVertex = vFactory->vertex(); - resTree->addParticle(fVertex,vtx,nPart); - -//adding final state - for(vector<RefCountedKinematicParticle>::const_iterator il = prt.begin(); il != prt.end(); il++) - { - if((*il)->previousParticle()->correspondingTree() != 0) - { - KinematicTree * tree = (*il)->previousParticle()->correspondingTree(); - tree->movePointerToTheTop(); - tree->replaceCurrentParticle(*il); - RefCountedKinematicVertex cdVertex = resTree->currentDecayVertex(); - resTree->addTree(cdVertex, tree); - }else{ - RefCountedKinematicVertex ffVertex = vFactory->vertex(); - resTree->addParticle(vtx,ffVertex,*il); - } - } - return resTree; -} - -AlgebraicMatrix ConstrainedTreeBuilder::momentumPart(vector<RefCountedKinematicParticle> rPart, - const AlgebraicVector& newPar, const AlgebraicMatrix& fitCov)const -{ -//constructing the full matrix using the simple fact -//that we have never broken the order of tracks -// during our fit. - - int size = rPart.size(); -//global propagation to the vertex position -//Jacobian is done for all the parameters together - AlgebraicMatrix jac(3+7*size,3+7*size,0); - jac(1,1) = 1; - jac(2,2) = 1; - jac(3,3) = 1; - int i_int=0; - for(vector<RefCountedKinematicParticle>::iterator i = rPart.begin(); i != rPart.end(); i++) - { - -//vertex position related components of the matrix - TrackCharge ch = (*i)->currentState().particleCharge(); - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter((*i)->currentState().globalPosition()).z(); - double a_i = -0.29979246*ch*field; - AlgebraicMatrix upper(3,7,0); - AlgebraicMatrix diagonal(7,7,0); - upper(1,1) = 1; - upper(2,2) = 1; - upper(3,3) = 1; - upper(2,4) = -a_i; - upper(1,5) = a_i; - jac.sub(1,4+i_int*7,upper); - - diagonal(4,4) = 1; - diagonal(5,5) = 1; - diagonal(6,6) = 1; - diagonal(7,7) = 1; - diagonal(2,4) = a_i; - diagonal(1,5) = -a_i; - jac.sub(4+i_int*7,4+i_int*7,diagonal); - i_int++; - } - -// jacobian is constructed in such a way, that -// right operation for transformation will be -// fitCov.similarityT(jac) -// WARNING: normal similarity operation is -// not valid in this case -//now making reduced matrix: - int vSize = rPart.size(); - AlgebraicSymMatrix fit_cov_sym(7*vSize+3,0); - for(int i = 1; i<7*vSize+4; ++i) - { - for(int j = 1; j<7*vSize+4; ++j) - {if(i<=j) fit_cov_sym(i,j) = fitCov(i,j);} - } - - - AlgebraicMatrix reduced(3+4*size,3+4*size,0); - AlgebraicMatrix transform = fit_cov_sym.similarityT(jac); - -//jacobian to add matrix components - AlgebraicMatrix jac_t(7,7+4*(size-1)); - jac_t(1,1) = 1.; - jac_t(2,2) = 1.; - jac_t(3,3) = 1.; - -//debug code: -//CLHEP bugs: avoiding the -// HepMatrix::sub method use - AlgebraicMatrix reduced_tm(7,7,0); - for(int i = 1; i<8;++i) - { - for(int j =1; j<8; ++j) - {reduced_tm(i,j) = transform(i+3, j+3);} - } - -//left top corner -// reduced.sub(1,1,transform.sub(4,10,4,10)); - -//debug code: -//CLHEP bugs: avoiding the -// HepMatrix::sub method use - reduced.sub(1,1,reduced_tm); - -// cout<<"reduced matrix"<<reduced<<endl; - int il_int = 0; - for(vector<RefCountedKinematicParticle>::const_iterator rs = rPart.begin(); - rs!=rPart.end();rs++) - { -//jacobian components: - AlgebraicMatrix jc_el(4,4,0); - jc_el(1,1) = 1.; - jc_el(2,2) = 1.; - jc_el(3,3) = 1.; - -//non-trival elements: mass correlations: - AlgebraicVector l_Par = (*rs)->currentState().kinematicParameters().vector(); - double energy_local = sqrt(l_Par(7)*l_Par(7) + l_Par(4)*l_Par(4) + l_Par(5)*l_Par(5) + l_Par(6)*l_Par(6)); - - double energy_global = sqrt(newPar(7)*newPar(7)+newPar(6)*newPar(6) + newPar(5)*newPar(5)+newPar(4)*newPar(4)); - - jc_el(4,4) = energy_global*l_Par(7)/(newPar(7)*energy_local); - jc_el(4,1) = ((energy_global*l_Par(4)/energy_local) - newPar(4))/newPar(7); - jc_el(4,2) = ((energy_global*l_Par(5)/energy_local) - newPar(5))/newPar(7); - jc_el(4,3) = ((energy_global*l_Par(6)/energy_local) - newPar(6))/newPar(7); - - jac_t.sub(4,il_int*4+4,jc_el); - il_int++; - } -// cout<<"jac_t"<<jac_t<<endl; -//debug code -//CLHEP bugs workaround -// cout<<"Transform matrix"<< transform<<endl; - - for(int i = 1; i<size; i++) - { - -//non-trival elements: mass correlations: -//upper row and right column - AlgebraicMatrix transform_sub1(3,4,0); - AlgebraicMatrix transform_sub2(4,3,0); - for(int l1 = 1; l1<4;++l1) - { - for(int l2 = 1; l2<5;++l2) - {transform_sub1(l1,l2) = transform(3+l1,6+7*i +l2);} - } - - for(int l1 = 1; l1<5;++l1) - { - for(int l2 = 1; l2<4;++l2) - {transform_sub2(l1,l2) = transform(6+7*i+l1,3+l2);} - } - - AlgebraicMatrix transform_sub3(4,4,0); - for(int l1 = 1; l1<5;++l1) - { - for(int l2 = 1; l2<5;++l2) - {transform_sub3(l1,l2) = transform(6+7*i+l1, 6+7*i+l2); } - } - - reduced.sub(1,4+4*i,transform_sub1); - reduced.sub(4+4*i,1,transform_sub2); - -//diagonal elements - reduced.sub(4+4*i,4+4*i,transform_sub3); - -//off diagonal elements - for(int j = 1; j<size; j++) - { - AlgebraicMatrix transform_sub4(4,4,0); - AlgebraicMatrix transform_sub5(4,4,0); - for(int l1 = 1; l1<5;++l1) - { - for(int l2 = 1; l2<5;++l2) - { - transform_sub4(l1,l2) = transform(6+7*(i-1)+l1,6+7*j+l2); - transform_sub5(l1,l2) = transform(6+7*j+l1, 6+7*(i-1)+l2); - } - } - reduced.sub(4+4*(i-1),4+4*j,transform_sub4); - reduced.sub(4+4*j,4+4*(i-1),transform_sub5); - } - } - - return jac_t*reduced*jac_t.T(); -} diff --git a/RecoVertex/KinematicFit/src/FinalTreeBuilder.cc b/RecoVertex/KinematicFit/src/FinalTreeBuilder.cc deleted file mode 100644 index 0ce6657c87b..00000000000 --- a/RecoVertex/KinematicFit/src/FinalTreeBuilder.cc +++ /dev/null @@ -1,237 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/FinalTreeBuilder.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -//#include "Vertex/KinematicFitPrimitives/interface/KinematicLinearizedTrackState.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -FinalTreeBuilder::FinalTreeBuilder() -{ - kvFactory = new KinematicVertexFactory(); - KinematicStatePropagator * ksp = 0; - pFactory = new VirtualKinematicParticleFactory(ksp); -} - -FinalTreeBuilder::~FinalTreeBuilder() -{ - delete kvFactory; - delete pFactory; -} - -RefCountedKinematicTree FinalTreeBuilder::buildTree(const CachingVertex& vtx, - vector<RefCountedKinematicParticle> input) const -{ -//creating resulting kinematic particle - AlgebraicVector par(7,0); - AlgebraicMatrix cov(7,7,0); - par(1) = vtx.position().x(); - par(2) = vtx.position().y(); - par(3) = vtx.position().z(); - double en = 0.; - int ch = 0; - -//new particle momentum calculation and refitted kinematic states - vector<KinematicRefittedTrackState *> rStates; - vector<RefCountedVertexTrack> refTracks = vtx.tracks(); - for(vector<RefCountedVertexTrack>::const_iterator i = refTracks.begin();i !=refTracks.end();++i) - { - KinematicRefittedTrackState * rs = dynamic_cast<KinematicRefittedTrackState *>(&(*((*i)->refittedState()))); - AlgebraicVector f_mom = rs->kinematicMomentumVector(); - par(4) += f_mom(1); - par(5) += f_mom(2); - par(6) += f_mom(3); - en += sqrt(f_mom(1)*f_mom(1)+f_mom(2)*f_mom(2)+f_mom(3)*f_mom(3) + f_mom(4)*f_mom(4)); - ch += (*i)->linearizedTrack()->charge(); - rStates.push_back(rs); - } - -//math precision check (numerical stability) - double differ = en*en - (par(4)*par(4)+par(5)*par(5)+par(6)*par(6)); - if(differ>0.) - { - par(7) = sqrt(differ); - }else{ - cout<<"warning! current precision does not allow to calculate the mass"<<endl; - throw VertexException("warning! current precision does not allow to calculate the mass"); - - par(7) = 0.; - } - -// covariance matrix calculation: momentum-momentum components part (4x4) -// and position-momentum components part: - AlgebraicMatrix m_all = momentumPart(rStates,vtx,par); - -//position-position components part (3x3) - AlgebraicMatrix x_X = vtx.error().matrix(); - -//making new matrix itself - cov.sub(1,1,m_all); - -//covariance sym matrix - AlgebraicSymMatrix sCov(7,0); - for(int i = 1; i<8; i++) - { - for(int j = 1; j<8; j++) - { - if(i<=j) sCov(i,j) = cov(i,j); - } - } - -//valid decay vertex for our resulting particle - RefCountedKinematicVertex dVrt = kvFactory->vertex(vtx); - -//invalid production vertex for our resulting particle - RefCountedKinematicVertex pVrt = kvFactory->vertex(); - -//new born kinematic particle - KinematicParameters kPar(par); - KinematicParametersError kEr(sCov); - KinematicState nState(kPar, kEr, ch); - -//invalid previous particle and empty constraint: - KinematicParticle * zp = 0; - RefCountedKinematicParticle pPart = ReferenceCountingPointer<KinematicParticle>(zp); - - float vChi = vtx.totalChiSquared(); - float vNdf = vtx.degreesOfFreedom(); - RefCountedKinematicParticle nPart = pFactory->particle(nState, vChi, vNdf, pPart); - -//adding top particle to the tree - RefCountedKinematicTree resTree = ReferenceCountingPointer<KinematicTree>(new KinematicTree()); - resTree->addParticle(pVrt,dVrt,nPart); - -//making refitted kinematic particles and putting them to the tree - vector<RefCountedKinematicParticle> rrP; - - vector<RefCountedKinematicParticle>::const_iterator j; - vector<RefCountedVertexTrack>::const_iterator i; - for(j=input.begin(), i=refTracks.begin(); j !=input.end(), i !=refTracks.end();++j, ++i) - { - RefCountedLinearizedTrackState lT = (*i)->linearizedTrack(); - RefCountedRefittedTrackState rS = (*i)->refittedState(); - AlgebraicVector lPar = rS->parameters(); - KinematicParameters lkPar(lPar); - AlgebraicSymMatrix lCov = rS->covariance(); - KinematicParametersError lkCov(lCov); - TrackCharge lch = lT->charge(); - KinematicState nState(lkPar,lkCov,lch); - RefCountedKinematicParticle nPart = (*j)->refittedParticle(nState,vChi,vNdf); - rrP.push_back(nPart); - if((*j)->correspondingTree() != 0) - { - -//here are the particles having trees after them - KinematicTree * tree = (*j)->correspondingTree(); - tree->movePointerToTheTop(); - tree->replaceCurrentParticle(nPart); - RefCountedKinematicVertex cdVertex = resTree->currentDecayVertex(); - resTree->addTree(cdVertex, tree); - }else{ - -//here are just particles fitted to this tree - RefCountedKinematicVertex nV = kvFactory->vertex(); - resTree->addParticle(dVrt,nV,nPart); - } - } - return resTree; -} - -//method returning the full covariance matrix -//of new born kinematic particle -AlgebraicMatrix FinalTreeBuilder::momentumPart(vector<KinematicRefittedTrackState *> rStates, - const CachingVertex& vtx, const AlgebraicVector& par)const -{ - vector<RefCountedVertexTrack> refTracks = vtx.tracks(); - int size = rStates.size(); - AlgebraicMatrix cov(7+4*(size-1),7+4*(size-1)); - AlgebraicMatrix jac(7,7+4*(size-1)); - jac(1,1) = 1.; - jac(2,2) = 1.; - jac(3,3) = 1.; - vector<KinematicRefittedTrackState *>::const_iterator rs; - vector<RefCountedVertexTrack>::const_iterator rt_i; - int i_int = 0; - for(rs = rStates.begin(), rt_i = refTracks.begin(); rs != rStates.end(), rt_i != refTracks.end(); rs++, rt_i++) - { - AlgebraicMatrix jc_el(4,4,0); - jc_el(1,1) = 1.; - jc_el(2,2) = 1.; - jc_el(3,3) = 1.; - -//non-trival elements: mass correlations: - AlgebraicVector l_Par = (*rs)->parameters(); - double energy_local = sqrt(l_Par(7)*l_Par(7) + l_Par(4)*l_Par(4) + l_Par(5)*l_Par(5) + l_Par(6)*l_Par(6)); - - double energy_global = sqrt(par(7)*par(7)+par(6)*par(6) + par(5)*par(5)+par(4)*par(4)); - - jc_el(4,4) = energy_global*l_Par(7)/(par(7)*energy_local); - - jc_el(4,1) = ((energy_global*l_Par(4)/energy_local) - par(4))/par(7); - jc_el(4,2) = ((energy_global*l_Par(5)/energy_local) - par(5))/par(7); - jc_el(4,3) = ((energy_global*l_Par(6)/energy_local) - par(6))/par(7); - - jac.sub(4,i_int*4+4,jc_el); - -//top left corner elements - if(i_int == 0) - { - cov.sub(1,1,(*rs)->covariance()); - }else{ -//4-momentum corellatons: diagonal elements of the matrix - AlgebraicMatrix m_m_cov = (*rs)->covariance().sub(4,7); - -//position momentum and momentum position corellations - AlgebraicMatrix xpcov = (*rs)->covariance(); - AlgebraicMatrix p_x_cov(4,3); - AlgebraicMatrix x_p_cov(3,4); - - for(int l1 = 1; l1<5; ++l1) - { - for(int l2 = 1; l2<4; ++l2) - {p_x_cov(l1,l2) = xpcov(3+l1,l2);} - } - - for(int l1 = 1; l1<4; ++l1) - { - for(int l2 = 1; l2<5; ++l2) - {x_p_cov(l1,l2) = xpcov(l1,3+l2);} - } - - -// AlgebraicMatrix p_x_cov = xpcov.sub(4,7,1,3); -// AlgebraicMatrix x_p_cov = xpcov.sub(1,3,4,7); - -//here the clhep must be worken around -// cout<<"p_x_cov"<< p_x_cov<<endl; -// cout<<"x_p_cov"<< x_p_cov<<endl; - -//putting everything to the joint covariance matrix: -//diagonal momentum-momentum elements: - cov.sub(i_int*4 + 4, i_int*4 + 4,m_m_cov); - -//position momentum elements: - cov.sub(1,i_int*4 + 4,x_p_cov); - cov.sub(i_int*4 + 4,1,p_x_cov); - -//off diagonal elements: corellations -// track momentum - track momentum - } - int j_int = 0; - for(vector<RefCountedVertexTrack>::const_iterator rt_j = refTracks.begin(); rt_j != refTracks.end(); rt_j++) - { - if(i_int < j_int) - { - AlgebraicMatrix i_k_cov_m = vtx.tkToTkCovariance((*rt_i),(*rt_j)); -// cout<<"i_k_cov_m"<<i_k_cov_m <<endl; - cov.sub(i_int*4 + 4, j_int*4 + 4,i_k_cov_m); - cov.sub(j_int*4 + 4, i_int*4 + 4,i_k_cov_m); - } - j_int++; - } - i_int++; - } -// cout<<"jac"<<jac<<endl; -// cout<<"cov"<<cov<<endl; - - return jac*cov*jac.T(); -} diff --git a/RecoVertex/KinematicFit/src/FourMomentumKinematicConstraint.cc b/RecoVertex/KinematicFit/src/FourMomentumKinematicConstraint.cc deleted file mode 100644 index 063686a84ff..00000000000 --- a/RecoVertex/KinematicFit/src/FourMomentumKinematicConstraint.cc +++ /dev/null @@ -1,112 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/FourMomentumKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - - -FourMomentumKinematicConstraint::FourMomentumKinematicConstraint(const AlgebraicVector& momentum, - const AlgebraicVector& deviation) -{ - if((momentum.num_row() != 4)||(deviation.num_row() != 4)) - throw VertexException("FourMomentumKinematicConstraint::vector of wrong size passed as 4-Momentum or Deviations"); - mm = momentum; - AlgebraicVector deviation_l(7,0); - deviation_l(6) = momentum(3); - deviation_l(5) = momentum(2); - deviation_l(4) = momentum(1); - - double mass_sq = momentum(4)*momentum(4) - momentum(3)*momentum(3) - -momentum(2)*momentum(2) - momentum(1)*momentum(1); - - if(mass_sq == 0.)throw VertexException("FourMomentumKinematicConstraint::the constraint vector passed corresponds to 0 mass"); -//deviation for mass calculated from deviations -//of momentum - deviation_l(7) = momentum(4)*momentum(4)*deviation(4)/mass_sq - + momentum(3)*momentum(3)*deviation(3)/mass_sq - + momentum(2)*momentum(2)*deviation(2)/mass_sq - + momentum(1)*momentum(1)*deviation(1)/mass_sq; -//mass sigma because of the energy - - dd = deviation_l; -} - -pair<AlgebraicVector,AlgebraicVector> FourMomentumKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("FourMomentumKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("FourMomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("FourMomentumKinematicConstraint::Multi particle refit is not supported in this version"); - AlgebraicVector pr = exPoint; - AlgebraicVector vl(4,0); - vl(1) += (pr(4) - mm(1)); - vl(2) += (pr(5) - mm(2)); - vl(3) += (pr(6) - mm(3)); - vl(7) += (sqrt(pr(4)*pr(4)+pr(5)*pr(5)+pr(6)*pr(6)+pr(7)*pr(7)) - mm(4)); - - return pair<AlgebraicVector,AlgebraicVector>(vl,pr); -} - -pair<AlgebraicMatrix, AlgebraicVector> FourMomentumKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0) throw VertexException("FourMomentumKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("FourMomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("FourMomentumKinematicConstraint::Multi particle refit is not supported in this version"); - AlgebraicVector pr = exPoint; - AlgebraicMatrix dr(4,7,0); - - dr(1,4) = 1.; - dr(2,5) = 1.; - dr(3,6) = 1.; - dr(4,7) = pr(7)/ sqrt(pr(4)*pr(4)+pr(5)*pr(5)+pr(6)*pr(6)+pr(7)*pr(7)); - - return pair<AlgebraicMatrix,AlgebraicVector>(dr,pr); -} - -pair<AlgebraicVector, AlgebraicVector> FourMomentumKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("FourMomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("FourMomentumKinematicConstraint::Multi particle refit is not supported in this version"); - AlgebraicVector pr = par.front()->currentState().kinematicParameters().vector(); - AlgebraicVector vl(4,0); - - vl(1) = pr(4) - mm(1); - vl(2) = pr(5) - mm(2); - vl(3) = pr(6) - mm(3); - vl(7) = sqrt(pr(4)*pr(4)+pr(5)*pr(5)+pr(6)*pr(6)+pr(7)*pr(7)) - mm(4); - - return pair<AlgebraicVector,AlgebraicVector>(vl,pr); -} - -pair<AlgebraicMatrix, AlgebraicVector> FourMomentumKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("FourMomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("FourMomentumKinematicConstraint::Multi particle refit is not supported in this version"); - AlgebraicMatrix dr(4,7,0); - - AlgebraicVector pr = par.front()->currentState().kinematicParameters().vector(); - dr(1,4) = 1.; - dr(2,5) = 1.; - dr(3,6) = 1.; - dr(4,7) = - pr(7)/sqrt(pr(4)*pr(4)+pr(5)*pr(5)+pr(6)*pr(6)+pr(7)*pr(7)); - - return pair<AlgebraicMatrix,AlgebraicVector>(dr,pr); -} - -AlgebraicVector FourMomentumKinematicConstraint::deviations(int nStates) const -{ - if(nStates == 0) throw VertexException("FourMomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("FourMomentumKinematicConstraint::Multi particle refit is not supported in this version"); - AlgebraicVector res = dd; - return res; -} - -int FourMomentumKinematicConstraint::numberOfEquations() const -{return 4;} - diff --git a/RecoVertex/KinematicFit/src/InputSort.cc b/RecoVertex/KinematicFit/src/InputSort.cc deleted file mode 100644 index 184679e25d2..00000000000 --- a/RecoVertex/KinematicFit/src/InputSort.cc +++ /dev/null @@ -1,38 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/InputSort.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -pair<vector<RefCountedKinematicParticle>, vector<FreeTrajectoryState> > - InputSort::sort(vector<RefCountedKinematicParticle> particles) const -{ - if(particles.size()==0) throw VertexException("Sorting particles for vertex fitter::number of particles = 0"); - vector<RefCountedKinematicParticle> sortedParticles; - vector<FreeTrajectoryState> sortedStates; - -//checking that only top particles of the tree are passed by user -//correcting them for the top ones otherwise - for(vector<RefCountedKinematicParticle>::const_iterator i = particles.begin(); i != particles.end(); i++) - { - if((*i)->correspondingTree() != 0) - { - sortedParticles.push_back((*i)->correspondingTree()->topParticle()); - sortedStates.push_back((*i)->correspondingTree()->topParticle()->currentState().freeTrajectoryState()); - }else{ - sortedParticles.push_back(*i); - sortedStates.push_back((*i)->currentState().freeTrajectoryState()); - } - } - return pair<vector<RefCountedKinematicParticle>, vector<FreeTrajectoryState> >(sortedParticles, sortedStates); -} - -vector<RefCountedKinematicParticle> InputSort::sort(vector<RefCountedKinematicTree> trees) const -{ - if(trees.size() ==0) throw VertexException("Input Sort::Zero vector of trees passed"); - vector<RefCountedKinematicParticle> res; - for(vector<RefCountedKinematicTree>::const_iterator i = trees.begin(); i!=trees.end(); i++) - { - (*i)->movePointerToTheTop(); - res.push_back((*i)->currentParticle()); - } - return res; -} diff --git a/RecoVertex/KinematicFit/src/KinematicConstrainedVertexFitter.cc b/RecoVertex/KinematicFit/src/KinematicConstrainedVertexFitter.cc deleted file mode 100644 index a25d2f5e785..00000000000 --- a/RecoVertex/KinematicFit/src/KinematicConstrainedVertexFitter.cc +++ /dev/null @@ -1,148 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/KinematicConstrainedVertexFitter.h" -#include "RecoVertex/KinematicFit/interface/InputSort.h" -// #include "Vertex/LinearizationPointFinders/interface/LMSLinearizationPointFinder.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" -// #include "Utilities/UI/interface/SimpleConfigurable.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - - - -KinematicConstrainedVertexFitter::KinematicConstrainedVertexFitter() -{ -//FIXME -// finder = new LMSLinearizationPointFinder(); - vCons = new VertexKinematicConstraint(); - updator = new KinematicConstrainedVertexUpdator(); - tBuilder = new ConstrainedTreeBuilder; - readParameters(); -} - -KinematicConstrainedVertexFitter:: KinematicConstrainedVertexFitter(const LinearizationPointFinder& fnd) -{ - - finder = fnd.clone(); - vCons = new VertexKinematicConstraint(); - updator = new KinematicConstrainedVertexUpdator(); - tBuilder = new ConstrainedTreeBuilder; - readParameters(); -} - -KinematicConstrainedVertexFitter::~KinematicConstrainedVertexFitter() -{ - delete finder; - delete vCons; - delete updator; - delete tBuilder; -} - -void KinematicConstrainedVertexFitter::readParameters() -{ -//FIXME -// static SimpleConfigurable<double> -// maxEquationValueConfigurable(0.01,"KinematicConstrainedVertexFitterVertexFitter:maximumValue"); -// theMaxDiff = maxEquationValueConfigurable.value(); -// -// static SimpleConfigurable<int> -// maxStepConfigurable(10,"KinematicConstrainedVertexFitter:maximumNumberOfIterations"); -// theMaxStep = maxStepConfigurable.value(); -} - -RefCountedKinematicTree KinematicConstrainedVertexFitter::fit(vector<RefCountedKinematicParticle> part, - MultiTrackKinematicConstraint * cs)const -{ - if(part.size()<2) throw VertexException("KinematicConstrainedVertexFitter::input states are less than 2"); - -//sorting out the input particles - InputSort iSort; - vector<RefCountedKinematicParticle> prt = iSort.sort(part).first; - vector<FreeTrajectoryState> fStates = iSort.sort(part).second; - -// linearization point: - GlobalPoint linPoint = finder->getLinearizationPoint(fStates); - -//initial parameters: - int vSize = prt.size(); - AlgebraicVector inPar(3 + 7*vSize,0); - -//final parameters - AlgebraicVector finPar(3 + 7*vSize,0); - -//initial covariance - AlgebraicMatrix inCov(3 + 7*vSize,3 + 7*vSize,0); - -//making initial vector of parameters and initial particle-related covariance - int nSt = 0; - vector<KinematicState> inStates; - for(vector<RefCountedKinematicParticle>::const_iterator i = prt.begin(); i!=prt.end(); i++) - { - AlgebraicVector prPar = (*i)->stateAtPoint(linPoint).kinematicParameters().vector(); - for(int j = 1; j<8; j++){inPar(3 + 7*nSt + j) = prPar(j);} - AlgebraicSymMatrix l_cov = (*i)->stateAtPoint(linPoint).kinematicParametersError().matrix(); - inCov.sub(4 + 7*nSt,4 + 7*nSt ,l_cov); - inStates.push_back((*i)->stateAtPoint(linPoint)); - ++nSt; - } - -//initial vertex error matrix components (huge error method) -//and vertex related initial vector components - double in_er = 100.; - inCov(1,1) = in_er; - inCov(2,2) = in_er; - inCov(3,3) = in_er; - - inPar(1) = linPoint.x(); - inPar(2) = linPoint.y(); - inPar(3) = linPoint.z(); - -//constraint equations value and number of iterations - double eq; - int nit = 0; - - vector<KinematicState> lStates = inStates; - GlobalPoint lPoint = linPoint; - RefCountedKinematicVertex rVtx; - AlgebraicMatrix refCCov; - -//iterarions over the updator: each time updated parameters -//are taken as new linearization point - do{ - eq = 0.; - pair< pair< vector<KinematicState>, AlgebraicMatrix >,RefCountedKinematicVertex> lRes = - updator->update(inPar,inCov,lStates,lPoint,cs); - lStates = lRes.first.first; - rVtx = lRes.second; - lPoint = rVtx->position(); - AlgebraicVector vValue = vCons->value(lStates, lPoint); - for(int i = 1; i<vValue.num_row();++i) - {eq += abs(vValue(i));} - if(cs !=0) - { - AlgebraicVector cVal = cs->value(lStates, lPoint); - for(int i = 1; i<cVal.num_row();++i) - {eq += abs(cVal(i));} - } - refCCov = lRes.first.second; - nit++; - }while(nit<theMaxStep && eq>theMaxDiff); - -// cout<<"number of relinearizations "<<nit<<endl; -// cout<<"value obtained: "<<eq<<endl; - -//making refitted particles out of refitted states. -//none of the operations above violates the order of particles - if(prt.size() != lStates.size()) throw VertexException("KinematicConstrainedVertexFitter::updator failure"); - vector<RefCountedKinematicParticle>::const_iterator i; - vector<KinematicState>::const_iterator j; - vector<RefCountedKinematicParticle> rParticles; - for(i = prt.begin(),j = lStates.begin(); i != prt.end(),j != lStates.end(); ++i,++j) - { - rParticles.push_back((*i)->refittedParticle((*j),rVtx->chiSquared(),rVtx->degreesOfFreedom())); - } - -// cout<<"Constrained Vertex Fitter covariance: "<<refCCov <<endl; - return tBuilder->buildTree(rParticles,rVtx,refCCov); -} - - - - diff --git a/RecoVertex/KinematicFit/src/KinematicConstrainedVertexUpdator.cc b/RecoVertex/KinematicFit/src/KinematicConstrainedVertexUpdator.cc deleted file mode 100644 index 7283ae01dbd..00000000000 --- a/RecoVertex/KinematicFit/src/KinematicConstrainedVertexUpdator.cc +++ /dev/null @@ -1,161 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/KinematicConstrainedVertexUpdator.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -KinematicConstrainedVertexUpdator::KinematicConstrainedVertexUpdator() -{ - vFactory = new KinematicVertexFactory(); - vConstraint = new VertexKinematicConstraint(); -} - -KinematicConstrainedVertexUpdator::~KinematicConstrainedVertexUpdator() -{ - delete vFactory; - delete vConstraint; -} - -pair<pair<vector<KinematicState>, AlgebraicMatrix >, RefCountedKinematicVertex > KinematicConstrainedVertexUpdator:: - update(const AlgebraicVector& inPar, const AlgebraicMatrix& inCov, vector<KinematicState> lStates, - const GlobalPoint& lPoint, MultiTrackKinematicConstraint * cs)const -{ - AlgebraicMatrix d_matrix = vConstraint->parametersDerivative(lStates, lPoint); - AlgebraicMatrix e_matrix = vConstraint->positionDerivative(lStates, lPoint); - AlgebraicVector val_s = vConstraint->value(lStates, lPoint); - int vSize = lStates.size(); - -//delta alpha - AlgebraicVector d_a(7*vSize + 3); - d_a(1) = lPoint.x(); - d_a(2) = lPoint.y(); - d_a(3) = lPoint.z(); - - int cst = 0; - for(vector<KinematicState>::const_iterator i = lStates.begin(); i != lStates.end(); i++) - { - AlgebraicVector lst_par = i->kinematicParameters().vector(); - for(int j = 1; j<lst_par.num_row()+1; j++) - {d_a(3+7*cst+j) = lst_par(j);} - cst++; - } - - - AlgebraicVector delta_alpha = inPar - d_a; - -// cout<<"delta_alpha"<<delta_alpha<<endl; -//resulting matrix of derivatives and vector of values. -//their size depends of number of tracks to analyze and number of -//additional constraints to apply - AlgebraicMatrix g; - AlgebraicVector val; - if(cs == 0) - { - -//unconstrained vertex fitter case - g = AlgebraicMatrix(2*vSize,7*vSize+3,0); - val = AlgebraicVector(2*vSize); - -//filling the derivative matrix - g.sub(1,1,e_matrix); - g.sub(1,4,d_matrix); - -//filling the vector of values - val = val_s; - }else{ - -//constrained vertex fitter case - int n_eq =cs->numberOfEquations(); - g = AlgebraicMatrix(n_eq + 2*vSize,7*vSize + 3,0); - val = AlgebraicVector(n_eq + 2*vSize); - AlgebraicMatrix n_x = cs->positionDerivative(lStates, lPoint); - AlgebraicMatrix n_alpha = cs->parametersDerivative(lStates, lPoint); - AlgebraicVector c_val = cs->value(lStates, lPoint); - -//filling the derivative matrix -// cout<<"n_x:"<<n_x<<endl; -// cout<<"n_alpha"<<n_alpha<<endl; - - g.sub(1,1,n_x); - g.sub(1,4,n_alpha); - g.sub(n_eq+1, 1, e_matrix); - g.sub(n_eq+1, 4, d_matrix); - -//filling the vector of values - for(int i = 1;i< n_eq+1; i++) - {val(i) = c_val(i);} - for(int i = 1; i<(2*vSize+1); i++) - {val(i+n_eq) = val_s(i);} - } - -//debug feature - AlgebraicSymMatrix in_cov_sym(7*vSize + 3,0); - - for(int i = 1; i<7*vSize+4; ++i) - { - for(int j = 1; j<7*vSize+4; ++j) - {if(i<=j) in_cov_sym(i,j) = inCov(i,j);} - } - -//debug code - AlgebraicSymMatrix v_g_sym = in_cov_sym.similarity(g); - - int ifl1 = 0; - v_g_sym.invert(ifl1); - if(ifl1 !=0) throw VertexException("KinematicConstrainedVertexFitter::unable to invert SYM gain matrix"); - - -// delta alpha is now valid! -//full math case now! - AlgebraicVector lambda = v_g_sym *(g*delta_alpha + val); - -//final parameters - AlgebraicVector finPar = inPar - in_cov_sym * g.T() * lambda; - -//covariance matrix business: - AlgebraicMatrix mFactor = in_cov_sym *(v_g_sym.similarityT(g))* in_cov_sym; - -//refitted covariance - AlgebraicMatrix rCov = in_cov_sym - mFactor; - -//symmetric covariance: - AlgebraicSymMatrix r_cov_sym(7*vSize+3,0); - for(int i = 1; i<7*vSize+4; ++i) - { - for(int j = 1; j<7*vSize+4; ++j) - {if(i<=j)r_cov_sym(i,j) = rCov(i,j);} - } - - AlgebraicSymMatrix pCov = r_cov_sym.sub(1,3); - -// chi2 - AlgebraicVector chi = lambda.T()*(g*delta_alpha + val); - -//this is ndf without significant prior -//vertex so -3 factor exists here - float ndf = 2*vSize - 3; - if(cs != 0){ndf += cs->numberOfEquations();} - - -//making resulting vertex - GlobalPoint vPos (finPar(1),finPar(2),finPar(3)); - VertexState st(vPos,GlobalError(pCov)); - RefCountedKinematicVertex rVtx = vFactory->vertex(st,chi(1),ndf); - -//making refitted states of Kinematic Particles - int i_int = 0; - vector<KinematicState> ns; - for(vector<KinematicState>::iterator i_st=lStates.begin(); i_st != lStates.end(); i_st++) - { - AlgebraicVector newPar(7,0); - for(int i =1; i<8; i++) - {newPar(i) = finPar(3 + i_int*7 + i);} - - AlgebraicSymMatrix nCovariance = r_cov_sym.sub(4 + i_int*7, 10 + i_int*7); - TrackCharge chl = i_st->particleCharge(); - KinematicParameters nrPar(newPar); - KinematicParametersError nrEr(nCovariance); - KinematicState newState(nrPar,nrEr,chl); - ns.push_back(newState); - i_int++; - } - pair<vector<KinematicState>, AlgebraicMatrix> ns_m(ns,rCov); - return pair<pair<vector<KinematicState>, AlgebraicMatrix>, RefCountedKinematicVertex >(ns_m,rVtx); -} diff --git a/RecoVertex/KinematicFit/src/KinematicParticleFitter.cc b/RecoVertex/KinematicFit/src/KinematicParticleFitter.cc deleted file mode 100644 index ace02851f73..00000000000 --- a/RecoVertex/KinematicFit/src/KinematicParticleFitter.cc +++ /dev/null @@ -1,39 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/KinematicParticleFitter.h" -#include "RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h" -#include "RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h" - -KinematicParticleFitter::KinematicParticleFitter() -{ - parentFitter = new LagrangeParentParticleFitter(); - cUpdator = new LagrangeChildUpdator(); -} - -KinematicParticleFitter::KinematicParticleFitter(const ParentParticleFitter& fitter, const ChildUpdator& updator) -{ - parentFitter = fitter.clone(); - cUpdator = updator.clone(); -} - -KinematicParticleFitter::~KinematicParticleFitter() -{ - delete parentFitter; - delete cUpdator; -} - -vector<RefCountedKinematicTree> KinematicParticleFitter::fit(KinematicConstraint * cs , - vector<RefCountedKinematicTree> trees)const -{ - vector<RefCountedKinematicTree> tr = parentFitter->fit(trees,cs); - tr = cUpdator->update(tr); - return tr; -} - -RefCountedKinematicTree KinematicParticleFitter::fit(KinematicConstraint * cs , - RefCountedKinematicTree tree)const -{ - vector<RefCountedKinematicTree> trees; - trees.push_back(tree); - vector<RefCountedKinematicTree> tr = parentFitter->fit(trees,cs); - tr = cUpdator->update(tr); - return tr.front(); -} diff --git a/RecoVertex/KinematicFit/src/KinematicParticleVertexFitter.cc b/RecoVertex/KinematicFit/src/KinematicParticleVertexFitter.cc deleted file mode 100644 index 9ca32623fc3..00000000000 --- a/RecoVertex/KinematicFit/src/KinematicParticleVertexFitter.cc +++ /dev/null @@ -1,86 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/KinematicParticleVertexFitter.h" -// #include "Vertex/LinearizationPointFinders/interface/LMSLinearizationPointFinder.h" -#include "RecoVertex/KinematicFit/interface/FinalTreeBuilder.h" -#include "RecoVertex/VertexTools/interface/SequentialVertexSmoother.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexUpdator.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanVertexTrackUpdator.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanSmoothedVertexChi2Estimator.h" -#include "RecoVertex/KalmanVertexFit/interface/KalmanTrackToTrackCovCalculator.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -KinematicParticleVertexFitter::KinematicParticleVertexFitter() -{ -//FIXME -// pointFinder = new LMSLinearizationPointFinder; - vFactory = new VertexTrackFactory(); - KalmanVertexTrackUpdator kvtu; - KalmanSmoothedVertexChi2Estimator est; - KalmanTrackToTrackCovCalculator cl; - SequentialVertexSmoother smoother(kvtu,est,cl); - KalmanVertexUpdator updator; - fitter = new SequentialKinematicVertexFitter(updator, smoother); -} - -KinematicParticleVertexFitter::KinematicParticleVertexFitter(const LinearizationPointFinder& finder) -{ - pointFinder = finder.clone(); - vFactory = new VertexTrackFactory(); - KalmanVertexTrackUpdator kvtu; - KalmanSmoothedVertexChi2Estimator est; - KalmanTrackToTrackCovCalculator cl; - SequentialVertexSmoother smoother(kvtu,est,cl); - KalmanVertexUpdator updator; - fitter = new SequentialKinematicVertexFitter(updator, smoother); -} - -KinematicParticleVertexFitter::~KinematicParticleVertexFitter() -{ - delete vFactory; - delete pointFinder; - delete fitter; -} - -RefCountedKinematicTree KinematicParticleVertexFitter::fit(vector<RefCountedKinematicParticle> particles) const -{ -//sorting the input - if(particles.size()<2) throw VertexException("KinematicParticleVertexFitter::input states are less than 2"); - InputSort iSort; - pair<vector<RefCountedKinematicParticle>, vector<FreeTrajectoryState> > input = iSort.sort(particles); - vector<RefCountedKinematicParticle> newPart = input.first; - vector<FreeTrajectoryState> freeStates = input.second; - -// LMSLinearizationPointFinder fnd; - GlobalPoint linPoint = pointFinder->getLinearizationPoint(freeStates); - -// cout<<"Linearization point found"<<endl; -//creating VertexTracks to make vertex - vector<RefCountedVertexTrack> vTracks; - -//making initial veretx seed with lin point as position and a fake error - AlgebraicSymMatrix we(3,1); - GlobalError error(we*10000); - VertexState state(linPoint, error); - -//vector of Vertex Tracks to fit - vector<RefCountedVertexTrack> ttf; - for(vector<RefCountedKinematicParticle>::const_iterator i = newPart.begin();i != newPart.end();i++) - {ttf.push_back(vFactory->vertexTrack((*i)->particleLinearizedTrackState(linPoint),state,1.));} - -//debugging code to check neutrals: - for(vector<RefCountedVertexTrack>::const_iterator i = ttf.begin(); i!=ttf.end(); i++) - { -// cout<<"predicted state momentum error"<<(*i)->linearizedTrack()->predictedStateMomentumError()<<endl; -// cout<<"Momentum jacobian"<<(*i)->linearizedTrack()->momentumJacobian() <<endl; - // cout<<"predicted state momentum "<<(*i)->linearizedTrack()->predictedStateMomentum()<<endl; -// cout<<"constant term"<<(*i)->linearizedTrack()->constantTerm()<<endl; - - } - - -//getting the vertex position and covariance matrix - CachingVertex vtx = fitter->vertex(ttf); -// cout<<"Caching vertex position "<<vtx.position()<<endl; -// cout<<"Caching vertex error "<<vtx.error().matrix()<<endl; - FinalTreeBuilder tBuilder; - return tBuilder.buildTree(vtx, newPart); -} diff --git a/RecoVertex/KinematicFit/src/LagrangeChildUpdator.cc b/RecoVertex/KinematicFit/src/LagrangeChildUpdator.cc deleted file mode 100644 index 3fa4f33b408..00000000000 --- a/RecoVertex/KinematicFit/src/LagrangeChildUpdator.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/LagrangeChildUpdator.h" - -RefCountedKinematicTree LagrangeChildUpdator::update(RefCountedKinematicTree tree) const -{ -//space for down update method -//now does nothing, supposed to -//update the states of daughter -//particles down the kinematic decay chain - - RefCountedKinematicTree nTree = tree; - return nTree; -} -vector<RefCountedKinematicTree> LagrangeChildUpdator::update(vector<RefCountedKinematicTree> trees) const -{ -//space for down update method -//now does nothing, supposed to -//update the states of daughter -//particles down the kinematic decay chain - - vector<RefCountedKinematicTree> nTree = trees; - - return nTree; -} diff --git a/RecoVertex/KinematicFit/src/LagrangeParentParticleFitter.cc b/RecoVertex/KinematicFit/src/LagrangeParentParticleFitter.cc deleted file mode 100644 index cf1c2cb0bd6..00000000000 --- a/RecoVertex/KinematicFit/src/LagrangeParentParticleFitter.cc +++ /dev/null @@ -1,283 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/LagrangeParentParticleFitter.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" -// #include "Utilities/UI/interface/SimpleConfigurable.h" -#include "RecoVertex/KinematicFit/interface/InputSort.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -LagrangeParentParticleFitter::LagrangeParentParticleFitter() -{readParameters();} - -/* -RefCountedKinematicTree LagrangeParentParticleFitter::fit(RefCountedKinematicTree tree, KinematicConstraint * cs) const -{ -//fitting top paticle only - tree->movePointerToTheTop(); - RefCountedKinematicParticle particle = tree->currentParticle(); - RefCountedKinematicVertex inVertex = tree->currentDecayVertex(); - -//parameters and covariance matrix of the particle to fit - AlgebraicVector par = particle->currentState().kinematicParameters().vector(); - AlgebraicSymMatrix cov = particle->currentState().kinematicParametersError().matrix(); - -//chi2 and ndf - float chi = 0.; - float ndf = 0.; - -//constraint -//here it is defined at 7-point -//taken just at current state parameters - AlgebraicVector vl; - AlgebraicMatrix dr; - AlgebraicVector dev; - -//initial expansion point - AlgebraicVector exPoint = particle->currentState().kinematicParameters().vector(); - -//refitted parameters and covariance matrix: -//simple and symmetric - AlgebraicVector refPar; - AlgebraicSymMatrix refCovS; - - int nstep = 0; - double df = 0.; - do{ - chi = particle->chiSquared(); - ndf = particle->degreesOfFreedom(); - df = 0.; - -//derivative and value at expansion point - vl = cs->value(exPoint).first; - dr = cs->derivative(exPoint).first; - dev = cs->deviations(); - -//residual between expansion and current parameters -//0 at the first step - AlgebraicVector delta_alpha = par - exPoint; - -//parameters needed for refit -// v_d = (D * V_alpha & * D.T)^(-1) - AlgebraicMatrix drt = dr.T(); - AlgebraicMatrix v_d = dr * cov * drt; - int ifail = 0; - v_d.invert(ifail); - if(ifail != 0) throw VertexException("ParentParticleFitter::error inverting covariance matrix"); - -//lagrangian multipliers -//lambda = V_d * (D * delta_alpha + d) - AlgebraicVector lambda = v_d * (dr*delta_alpha + vl); - -//refitted parameters - refPar = par - (cov * drt * lambda); - -//refitted covariance: simple and SymMatrix - refCovS = cov; - AlgebraicMatrix sPart = drt * v_d * dr; - AlgebraicMatrix covF = cov * sPart * cov; - AlgebraicSymMatrix sCovF(7,0); - - for(int i = 1; i<8; i++) - { - for(int j = 1; j<8; j++) - {if(i<=j) sCovF(i,j) = covF(i,j);} - } - refCovS -= sCovF; - - for(int i = 1; i < 8; i++) - {refCovS(i,i) += dev(i);} - -//chiSquared - chi += (lambda.T() * (dr*delta_alpha + vl))(1); - ndf += cs->numberOfEquations(); - -//new expansionPoint - exPoint = refPar; - AlgebraicVector vlp = cs->value(exPoint).first; - for(int i = 1; i< vl.num_row();i++) - {df += abs(vlp(i));} - nstep++; - }while(df>theMaxDiff && nstep<theMaxStep); - -//!!!!!!!!!!!!!!!here the math part is finished!!!!!!!!!!!!!!!!!!!!!! -//creating an output KinematicParticle -//and putting it on its place in the tree - KinematicParameters param(refPar); - KinematicParametersError er(refCovS); - KinematicState kState(param,er,particle->initialState().particleCharge()); - RefCountedKinematicParticle refParticle = particle->refittedParticle(kState,chi,ndf,cs->clone()); - tree->replaceCurrentParticle(refParticle); - -//replacing the vertex with its refitted version - GlobalPoint nvPos(param.vector()(1), param.vector()(2), param.vector()(3)); - AlgebraicSymMatrix nvMatrix = er.matrix().sub(1,3); - GlobalError nvError(nvMatrix); - VertexState vState(nvPos, nvError, 1.0); - KinematicVertexFactory vFactory; - RefCountedKinematicVertex nVertex = vFactory.vertex(vState, inVertex,chi,ndf); - tree->replaceCurrentVertex(nVertex); - - return tree; -} -*/ - -vector<RefCountedKinematicTree> LagrangeParentParticleFitter::fit(vector<RefCountedKinematicTree> trees, - KinematicConstraint * cs)const -{ - - InputSort iSort; - vector<RefCountedKinematicParticle> prt = iSort.sort(trees); - int nStates = prt.size(); - -//making full initial parameters and covariance - AlgebraicVector part(7*nStates,0); - AlgebraicSymMatrix cov(7*nStates,0); - - AlgebraicVector chi_in(nStates,0); - AlgebraicVector ndf_in(nStates,0); - int l_c=0; - for(vector<RefCountedKinematicParticle>::const_iterator i = prt.begin(); i != prt.end(); i++) - { - AlgebraicVector lp = (*i)->currentState().kinematicParameters().vector(); - for(int j = 1; j != 8; j++){part(7*l_c + j) = lp(j);} - AlgebraicSymMatrix lc= (*i)->currentState().kinematicParametersError().matrix(); - cov.sub(7*l_c+1,lc); - chi_in(l_c+1) = (*i)->chiSquared(); - ndf_in(l_c+1) = (*i)->degreesOfFreedom(); - l_c++; - } -//refitted parameters and covariance matrix: -//simple and symmetric - AlgebraicVector refPar; - AlgebraicSymMatrix refCovS; - -//constraint values, derivatives and deviations: - AlgebraicVector vl; - AlgebraicMatrix dr; - AlgebraicVector dev; - int nstep = 0; - double df = 0.; - AlgebraicVector exPoint = part; - -//this piece of code should later be refactored: -// The algorithm is the same as above, but the -// number of refitted particles is >1. Smart way of -// refactoring should be chosen for it. - AlgebraicVector chi; - AlgebraicVector ndf; -// cout<<"Starting the main loop"<<endl; - do{ - df = 0.; - chi = chi_in; - ndf = ndf_in; -// cout<<"Iterational linearization point: "<<exPoint<<endl; - vl = cs->value(exPoint).first; - dr = cs->derivative(exPoint).first; - dev = cs->deviations(nStates); - -// cout<<"The value : "<<vl<<endl; -// cout<<"The derivative: "<<dr<<endl; -// cout<<"deviations: "<<dev<<endl; -// cout<<"covariance "<<cov<<endl; - -//residual between expansion and current parameters -//0 at the first step - AlgebraicVector delta_alpha = part - exPoint; - -//parameters needed for refit -// v_d = (D * V_alpha & * D.T)^(-1) - AlgebraicMatrix drt = dr.T(); - AlgebraicMatrix v_d = dr * cov * drt; - int ifail = 0; - v_d.invert(ifail); - if(ifail != 0) throw VertexException("ParentParticleFitter::error inverting covariance matrix"); - -//lagrangian multipliers -//lambda = V_d * (D * delta_alpha + d) - AlgebraicVector lambda = v_d * (dr*delta_alpha + vl); - -//refitted parameters - refPar = part - (cov * drt * lambda); - -//refitted covariance: simple and SymMatrix - refCovS = cov; - AlgebraicMatrix sPart = drt * v_d * dr; - AlgebraicMatrix covF = cov * sPart * cov; - -//total covariance symmatrix - AlgebraicSymMatrix sCovF(nStates*7,0); - for(int i = 1; i< nStates*7 +1; ++i) - { - for(int j = 1; j< nStates*7 +1; j++) - {if(i<=j) sCovF(i,j) = covF(i,j);} - } - - refCovS -= sCovF; - -// cout<<"Fitter: refitted covariance "<<refCovS<<endl; - for(int i = 1; i < nStates+1; i++) - {for(int j = 1; j<8; j++){refCovS((i-1)+j,(i-1)+j) += dev(j);}} - -//chiSquared - for(int k =1; k<nStates+1; k++) - { - chi(k) += (lambda.T() * (dr*delta_alpha + vl))(1); - ndf(k) += cs->numberOfEquations(); - } -//new expansionPoint - exPoint = refPar; - AlgebraicVector vlp = cs->value(exPoint).first; - for(int i = 1; i< vl.num_row();i++) - {df += abs(vlp(i));} - nstep++; - }while(df>theMaxDiff && nstep<theMaxStep); -//here math and iterative part is finished, starting an output production -//creating an output KinematicParticle and putting it on its place in the tree - -//vector of refitted particles and trees - vector<RefCountedKinematicParticle> refPart; - vector<RefCountedKinematicTree> refTrees = trees; - - int j=1; - vector<RefCountedKinematicTree>::const_iterator tr = refTrees.begin(); - for(vector<RefCountedKinematicParticle>::const_iterator i = prt.begin(); i!= prt.end(); i++) - { - AlgebraicVector lRefPar(7,0); - for(int k = 1; k<8 ; k++) - {lRefPar(k) = refPar((j-1)*7+k);} - AlgebraicSymMatrix lRefCovS = refCovS.sub((j-1)*7 +1,(j-1)*7+7); - -//new refitted parameters and covariance - KinematicParameters param(lRefPar); - KinematicParametersError er(lRefCovS); - KinematicState kState(param,er,(*i)->initialState().particleCharge()); - RefCountedKinematicParticle refParticle = (*i)->refittedParticle(kState,chi(j),ndf(j),cs->clone()); - -//replacing particle itself - (*tr)->findParticle(*i); - RefCountedKinematicVertex inVertex = (*tr)->currentDecayVertex(); - (*tr)->replaceCurrentParticle(refParticle); - -//replacing the vertex with its refitted version - GlobalPoint nvPos(param.vector()(1), param.vector()(2), param.vector()(3)); - AlgebraicSymMatrix nvMatrix = er.matrix().sub(1,3); - GlobalError nvError(nvMatrix); - VertexState vState(nvPos, nvError, 1.0); - KinematicVertexFactory vFactory; - RefCountedKinematicVertex nVertex = vFactory.vertex(vState,inVertex,chi(j),ndf(j)); - (*tr)->replaceCurrentVertex(nVertex); - tr++; - j++; - } - return refTrees; -} - -void LagrangeParentParticleFitter::readParameters() -{ -//FIXME -// static SimpleConfigurable<double> -// maxEquationValueConfigurable(0.01,"LagrangeParentParticleFitter:maximumValue"); -// theMaxDiff = maxEquationValueConfigurable.value(); -// -// static SimpleConfigurable<int> -// maxStepConfigurable(10,"LagrangeParentParticleFitter:maximumNumberOfIterations"); -// theMaxStep = maxStepConfigurable.value(); -} diff --git a/RecoVertex/KinematicFit/src/MassKinematicConstraint.cc b/RecoVertex/KinematicFit/src/MassKinematicConstraint.cc deleted file mode 100644 index 3e097807907..00000000000 --- a/RecoVertex/KinematicFit/src/MassKinematicConstraint.cc +++ /dev/null @@ -1,85 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/MassKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -MassKinematicConstraint::MassKinematicConstraint(const ParticleMass& m, const float sigma) -{ - mass = m; - AlgebraicVector deviation_l(7,0); - deviation_l(7) = sigma * sigma; - dd = deviation_l; -} - -pair<AlgebraicVector, AlgebraicVector> MassKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ - -//we have only one equation and only one track, means the constraint value -//for track parameters is just a single number - if(exPoint.num_row() ==0 ) throw VertexException("MomentumKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates !=1) throw VertexException("MassKinematicConstraint::multiple state refit is not supported in this version"); - AlgebraicVector vl(1,0); - AlgebraicVector point = exPoint; - vl(1) = point(7) - mass; - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> MassKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() == 0) throw VertexException("MomentumKinematicConstraint::deriavtive requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates !=1) throw VertexException("MassKinematicConstraint::multiple state refit is not supported in this version"); - AlgebraicMatrix dr(1,7,0); - dr(1,7) = 1; - AlgebraicVector point = exPoint; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} - -pair<AlgebraicVector, AlgebraicVector> MassKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("MassKinematicConstraint::empty vector of particles passed"); - if(nStates !=1) throw VertexException("MassKinematicConstraint::multiple state refit is not supported in this version"); - - AlgebraicVector point = par.front()->currentState().kinematicParameters().vector(); - AlgebraicVector vl(1,0); - vl(1) = point(7) - mass; - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> MassKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("MassKinematicConstraint::empty vector of particles passed"); - if(nStates !=1) throw VertexException("MassKinematicConstraint::multiple state refit is not supported in this version"); - - AlgebraicVector point = par.front()->currentState().kinematicParameters().vector(); - AlgebraicMatrix dr(1,7,0); - dr(1,7) = 1; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} - -AlgebraicVector MassKinematicConstraint::deviations(int nStates) const -{ - if(nStates == 0) throw VertexException("MassKinematicConstraint::empty vector of particles passed"); - if(nStates !=1) throw VertexException("MassKinematicConstraint::multiple state refit is not supported in this version"); - AlgebraicVector res = dd; - return res; -} - -int MassKinematicConstraint::numberOfEquations() const -{return 1;} - - - - - - - diff --git a/RecoVertex/KinematicFit/src/MomentumKinematicConstraint.cc b/RecoVertex/KinematicFit/src/MomentumKinematicConstraint.cc deleted file mode 100644 index d5decceef51..00000000000 --- a/RecoVertex/KinematicFit/src/MomentumKinematicConstraint.cc +++ /dev/null @@ -1,89 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/MomentumKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - - -MomentumKinematicConstraint::MomentumKinematicConstraint(const AlgebraicVector& momentum, - const AlgebraicVector& dev) -{ - if((momentum.num_row() != 3) || (dev.num_row() != 3)) - throw VertexException("MomentumKinemticConstraint::Momentum or Deviation vector passed is not 3-dimensional"); - mm = momentum; - AlgebraicVector dev_l(7,0); - dev_l(4) = dev(1) * dev(1); - dev_l(5) = dev(2) * dev(2); - dev_l(6) = dev(3) * dev(3); - dd = dev_l; -} - -pair<AlgebraicVector,AlgebraicVector> MomentumKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("MomentumKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("MomentumKinematicConstraint::Multistate refit is not foreseen for this constraint"); - AlgebraicVector pr = exPoint; - AlgebraicVector vl(3,0); - vl(1) = pr(4) - mm(1); - vl(2) = pr(5) - mm(2); - vl(3) = pr(6) - mm(3); - return pair<AlgebraicVector,AlgebraicVector>(vl,pr); -} - -pair<AlgebraicMatrix, AlgebraicVector> MomentumKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("MomentumKinematicConstraint::derivative requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MomentumKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("MomentumKinematicConstraint::Multistate refit is not foreseen for this constraint"); - - AlgebraicVector pr = exPoint; - AlgebraicMatrix dr(3,7,0); - dr(1,4) = 1.; - dr(2,5) = 1.; - dr(3,6) = 1.; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,pr); -} - -pair<AlgebraicVector, AlgebraicVector> MomentumKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("MomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("MomentumKinematicConstraint::Multistate refit is not foreseen for this constraint"); - AlgebraicVector point = par.front()->currentState().kinematicParameters().vector(); - AlgebraicVector vl(3,0); - vl(1) = point(4) - mm(1); - vl(2) = point(5) - mm(2); - vl(3) = point(6) - mm(3); - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> MomentumKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("MomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("MomentumKinematicConstraint::Multistate refit is not foreseen for this constraint"); - AlgebraicVector point = par.front()->currentState().kinematicParameters().vector(); - AlgebraicMatrix dr(3,7,0); - dr(1,4) = 1.; - dr(2,5) = 1.; - dr(3,6) = 1.; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} - -AlgebraicVector MomentumKinematicConstraint::deviations(int nStates) const -{ - if(nStates == 0) throw VertexException("MomentumKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("MomentumKinematicConstraint::Multistate refit is not foreseen for this constraint"); - AlgebraicVector res = dd; - return res; -} - -int MomentumKinematicConstraint::numberOfEquations() const -{return 3;} - diff --git a/RecoVertex/KinematicFit/src/PointingKinematicConstraint.cc b/RecoVertex/KinematicFit/src/PointingKinematicConstraint.cc deleted file mode 100644 index 52fa6dc2583..00000000000 --- a/RecoVertex/KinematicFit/src/PointingKinematicConstraint.cc +++ /dev/null @@ -1,178 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/PointingKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - -pair<AlgebraicVector, AlgebraicVector> PointingKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicVector lPar = exPoint; - AlgebraicVector vl(2,0); - -//vector of values 1x2 for given particle - AlgebraicVector lValue = makeValue(lPar).first; - vl(1) =lValue(1); - vl(2) =lValue(2); - return pair<AlgebraicVector,AlgebraicVector>(vl,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> PointingKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector lPar = exPoint; - -//2x7 derivative matrix for given particle - AlgebraicMatrix lDeriv = makeDerivative(lPar).first; - AlgebraicMatrix dr(2,7,0); - dr.sub(1,1,lDeriv); - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> PointingKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicMatrix dr(2,7,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - -//2x7 derivative matrix for given state - AlgebraicMatrix lDeriv = makeDerivative(lPoint).first; - dr.sub(1,1,lDeriv); - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPoint); -} - -pair<AlgebraicVector, AlgebraicVector> PointingKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector vl(2,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - vl(1) = makeValue(lPoint).first(1); - vl(2) = makeValue(lPoint).first(2); - return pair<AlgebraicVector,AlgebraicVector>(vl,lPoint); -} - -pair<AlgebraicVector,AlgebraicVector> PointingKinematicConstraint::makeValue(const AlgebraicVector& exPoint)const -{ - AlgebraicVector vl(2,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - -// tangent solution -// vl(1) = dy/dx - py/px; -// vl(2) = dz/sqrt(dx*dx + dy*dy) - pz/sqrt(px*px + py*py); - - -//half angle solution - double sin_p = py/sqrt(px*px + py*py); - double cos_p = px/sqrt(px*px + py*py); - double sin_x = dy/sqrt(dx*dx + dy*dy); - double cos_x = dx/sqrt(dx*dx + dy*dy); - - double sin_pt = pz/sqrt(px*px + py*py + pz*pz); - double cos_pt = sqrt(px*px + py*py)/sqrt(px*px + py*py + pz*pz); - double sin_xt = dz/sqrt(dx*dx + dy*dy + dz*dz); - double cos_xt = sqrt(dx*dx + dy*dy)/sqrt(dx*dx + dy*dy + dz*dz); - - vl(1) = (1-cos_x)/sin_x - (1-cos_p)/sin_p; - vl(2) = (1-cos_xt)/sin_xt - (1-cos_pt)/sin_pt; - -//half angle corrected -// vl(1) = (sin_x/(1+cos_x)) - (sin_p/(1+cos_p)); -// vl(2) = (sin_xt/(1+cos_xt)) - (sin_pt/(1+cos_pt)); - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - - -pair<AlgebraicMatrix, AlgebraicVector> PointingKinematicConstraint:: makeDerivative(const AlgebraicVector& exPoint) const -{ - AlgebraicMatrix dr(2,7,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - -// double tr = px*px + py*py; -// double trd = dx*dx + dy*dy; -// double pr =1.5; -// double p_factor = pow(tr,pr); -// double x_factor = pow(trd,pr); - -//tangent solution -/* - dr(1,1) = -dy/(dx*dx); - dr(1,2) = 1/dx; - dr(1,3) = 0; - dr(1,4) = py/(px*px); - dr(1,5) = -1/px; - dr(1,6) = 0; - dr(1,7) = 0; - - dr(2,1) = -(dx*dz)/x_factor; - dr(2,2) = -(dy*dz)/x_factor; - dr(2,3) = 1/sqrt(dx*dx + dy*dy); - dr(2,4) = (px*pz)/p_factor; - dr(2,5) = (py*pz)/p_factor; - dr(2,6) = -1/sqrt(px*px + py*py); - dr(2,7) = 0.; -*/ -//half angle solution corrected -/* - dr(1,1) = - dy/(dx*dx+dy*dy+dx*sqrt(dx*dx+dy*dy)); - dr(1,2) = dx/(dx*dx+dy*dy+dx*sqrt(dx*dx+dy*dy)); - dr(1,3) = 0; - dr(1,4) = py/(px*px+py*py+px*sqrt(px*px+py*py)); - dr(1,5) = -px/(px*px+py*py+px*sqrt(px*px+py*py)); - dr(1,6) = 0; - dr(1,7) = 0; -*/ - -//half angle solution - dr(1,1) = dx/(dy*sqrt(dx*dx + dy*dy)) - 1/dy; - dr(1,2) = 1/sqrt(dx*dx+dy*dy) - sqrt(dx*dx+dy*dy)/(dy*dy)+ dx/(dy*dy); - dr(1,3) = 0; - dr(1,4) = -(px/(py*sqrt(px*px + py*py)) - 1/py); - dr(1,5) = -(1/sqrt(px*px+py*py) - sqrt(px*px+py*py)/(py*py)+ px/(py*py)); - dr(1,6) = 0; - dr(1,7) = 0; - - -//half angle solution - dr(2,1) = (dx/dz)*(1/sqrt(dx*dx + dy*dy + dz*dz) - 1/sqrt(dx*dx + dy*dy)); - dr(2,2) = (dy/dz)*(1/sqrt(dx*dx + dy*dy + dz*dz) - 1/sqrt(dx*dx + dy*dy)); - dr(2,3) = (1/(dz*dz))*(sqrt(dx*dx + dy*dy) - sqrt(dx*dx+dy*dy+dz*dz)) + 1/sqrt(dx*dx+dy*dy+dz*dz); - dr(2,4) = -(px/pz)*(1/sqrt(px*px + py*py + pz*pz) - 1/sqrt(px*px + py*py)); - dr(2,5) = -(py/pz)*(1/sqrt(px*px + py*py + pz*pz) - 1/sqrt(px*px + py*py)); - dr(2,6) = -((1/(pz*pz))*(sqrt(px*px + py*py) - sqrt(px*px+py*py+pz*pz)) + 1/sqrt(px*px+py*py+pz*pz)); - dr(2,7) = 0; - - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} - -AlgebraicVector PointingKinematicConstraint::deviations(int nStates) const -{return AlgebraicVector(7*nStates,0);} - -int PointingKinematicConstraint::numberOfEquations() const -{return 2;} diff --git a/RecoVertex/KinematicFit/src/SequentialKinematicVertexFitter.cc b/RecoVertex/KinematicFit/src/SequentialKinematicVertexFitter.cc deleted file mode 100644 index 4d64cb5ad09..00000000000 --- a/RecoVertex/KinematicFit/src/SequentialKinematicVertexFitter.cc +++ /dev/null @@ -1,111 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/SequentialKinematicVertexFitter.h" -// #include "Utilities/UI/interface/SimpleConfigurable.h" - -SequentialKinematicVertexFitter::SequentialKinematicVertexFitter(const VertexUpdator& theUpdator, - const VertexSmoother& theSmoother) -{ - smoother = theSmoother.clone(); - updator = theUpdator.clone(); - readParameters(); -} - -SequentialKinematicVertexFitter::~SequentialKinematicVertexFitter() -{ - delete updator; - delete smoother; -} - -CachingVertex SequentialKinematicVertexFitter::vertex - (const vector<RefCountedVertexTrack> & particles) const -{ - GlobalPoint linP = particles[1]->linearizedTrack()->linearizationPoint(); - AlgebraicSymMatrix we(3,1); - GlobalError error(we*10000); - VertexState state(linP, error); - return fit(particles, state, false); -} - -vector<RefCountedVertexTrack> SequentialKinematicVertexFitter::reLinearizeTracks - (const vector<RefCountedVertexTrack> & tracks, const VertexState seed) const -{ - GlobalPoint linP = seed.position(); - vector<RefCountedVertexTrack> finalTracks; - for(vector<RefCountedVertexTrack>::const_iterator i = tracks.begin(); i != tracks.end(); i++) - { - -//fist checking that we are given with real kinematic linearized tracks -//and not something esle - LinearizedTrackState * r_s = &(*(*i)->linearizedTrack()); - RefCountedLinearizedTrackState lTrData = r_s->stateWithNewLinearizationPoint(linP); - RefCountedVertexTrack vTrData = vTrackFactory.vertexTrack(lTrData,seed); - finalTracks.push_back(vTrData); - } - return finalTracks; -} - - -CachingVertex SequentialKinematicVertexFitter::fit(const vector<RefCountedVertexTrack> & tracks, - const VertexState priorSeed, bool withPrior) const -{ - vector<RefCountedVertexTrack> initialTracks; - GlobalPoint priorVertexPosition = priorSeed.position(); - GlobalError priorVertexError = priorSeed.error(); - CachingVertex returnVertex(priorVertexPosition,priorVertexError,initialTracks,0); - - if (withPrior) { - returnVertex = CachingVertex(priorVertexPosition,priorVertexError, - priorVertexPosition,priorVertexError,initialTracks,0); - } - CachingVertex initialVertex = returnVertex; - - vector<RefCountedVertexTrack> globalVTracks = tracks; - // main loop through all the VTracks - int step = 0; - GlobalPoint newPosition = priorVertexPosition; - GlobalPoint previousPosition; - do - { - CachingVertex fVertex = initialVertex; - -// make new linearized and vertex tracks for the next iteration - if(step != 0) globalVTracks = reLinearizeTracks(tracks, - returnVertex.vertexState()); - - // update sequentially the vertex estimate - for(vector<RefCountedVertexTrack>::const_iterator i = globalVTracks.begin(); - i != globalVTracks.end(); i++) - { - fVertex = updator->add(fVertex,*i); - } - previousPosition = newPosition; - newPosition = fVertex.position(); - - returnVertex = fVertex; - globalVTracks.clear(); - step++; - } while ( (step != theMaxStep) && - ((previousPosition - newPosition).transverse() > theMaxShift) ); - -//smoothing options -// CachingVertex r_l = returnVertex; - if (smoother != 0) - { - returnVertex = smoother->smooth(returnVertex); -// r_l = smoother->smooth(returnVertex); - } -// return r_l; - return returnVertex; -} - -void SequentialKinematicVertexFitter::readParameters() -{ -//FIXME -// static SimpleConfigurable<float> -// maxShiftSimTrackConfigurable(0.1,"SequentialKinematicVertexFitter:maximumDistance"); -// theMaxShift = maxShiftSimTrackConfigurable.value(); -// -// static SimpleConfigurable<int> -// maxStepConfigurable(10,"SequentiaKinematiclVertexFitter:maximumNumberOfIterations"); -// theMaxStep = maxStepConfigurable.value(); -} - diff --git a/RecoVertex/KinematicFit/src/SimplePointingConstraint.cc b/RecoVertex/KinematicFit/src/SimplePointingConstraint.cc deleted file mode 100644 index 7203bfcc5de..00000000000 --- a/RecoVertex/KinematicFit/src/SimplePointingConstraint.cc +++ /dev/null @@ -1,252 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/SimplePointingConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - - -pair<AlgebraicVector, AlgebraicVector> SimplePointingConstraint::value(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicVector lPar = exPoint; - AlgebraicVector vl(2,0); - -//vector of values 1x2 for given particle - AlgebraicVector lValue = makeValue(lPar).first; - vl(1) =lValue(1); - vl(2) =lValue(2); - return pair<AlgebraicVector,AlgebraicVector>(vl,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> SimplePointingConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector lPar = exPoint; - -//2x7 derivative matrix for given particle - AlgebraicMatrix lDeriv = makeDerivative(lPar).first; - AlgebraicMatrix dr(2,7,0); - dr.sub(1,1,lDeriv); - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> SimplePointingConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicMatrix dr(2,7,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - -//2x7 derivative matrix for given state - AlgebraicMatrix lDeriv = makeDerivative(lPoint).first; - dr.sub(1,1,lDeriv); -// cout<<"Derivative returned: "<<dr<<endl; -// cout<<"For the value: "<<lPoint<<endl; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPoint); -} - -pair<AlgebraicVector, AlgebraicVector> SimplePointingConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector vl(2,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - vl(1) = makeValue(lPoint).first(1); - vl(2) = makeValue(lPoint).first(2); -// cout<<"Value returned: "<<vl<<endl; -// cout<<"For the point: "<<lPoint<<endl; - - return pair<AlgebraicVector,AlgebraicVector>(vl,lPoint); -} - -AlgebraicVector SimplePointingConstraint::deviations(int nStates) const -{return AlgebraicVector(7*nStates,0);} - -int SimplePointingConstraint::numberOfEquations() const -{return 2;} - -pair<AlgebraicVector,AlgebraicVector> SimplePointingConstraint::makeValue(const AlgebraicVector& exPoint)const -{ -// cout<<"Make value called"<<endl; - AlgebraicVector vl(2,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - - -//half angle solution: sin((alpha - betha)/2) - double cos_phi_p = px/sqrt(px*px + py*py); - double cos_phi_x = dx/sqrt(dx*dx + dy*dy); -// cout<<"mom cos phi"<<cos_phi_p<<endl; -// cout<<"x cos phi"<<cos_phi_x<<endl; - - - double cos_theta_p = sqrt(px*px + py*py)/sqrt(px*px + py*py + pz*pz); - double cos_theta_x = sqrt(dx*dx + dy*dy)/sqrt(dx*dx + dy*dy + dz*dz); - - float feq = sqrt((1-cos_phi_p)*(1+cos_phi_x)) - sqrt((1+cos_phi_p)*(1-cos_phi_x)); - float seq = sqrt((1-cos_theta_p)*(1+cos_theta_x)) - sqrt((1+cos_theta_p)*(1-cos_theta_x)); - -// cout<<"First factor: "<<feq/2<<endl; -// cout<<"Second factor: "<<seq/2<<endl; - - vl(1) = feq/2; - vl(2) = seq/2; - -// cout<<"Value "<<vl<<endl; -//half angle corrected -// vl(1) = (sin_x/(1+cos_x)) - (sin_p/(1+cos_p)); -// vl(2) = (sin_xt/(1+cos_xt)) - (sin_pt/(1+cos_pt)); - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> SimplePointingConstraint::makeDerivative(const AlgebraicVector& exPoint) const -{ - AlgebraicMatrix dr(2,7,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - - -//half angle solution -//d/dx_i - dr(1,1) = (sqrt((1 + dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 - px/sqrt(pow(px,2) + pow(py,2)))) - - sqrt((1 - dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 + px/sqrt(pow(px,2) + pow(py,2)))))/2.; - - dr(1,2) = (((-(pow(dx,2)/pow(pow(dx,2) + pow(dy,2),1.5)) + 1/sqrt(pow(dx,2) + pow(dy,2)))* - (1 - px/sqrt(pow(px,2) + pow(py,2))))/ - (2.*sqrt((1 + dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 - px/sqrt(pow(px,2) + pow(py,2))))) - - ((pow(dx,2)/pow(pow(dx,2) + pow(dy,2),1.5) - 1/sqrt(pow(dx,2) + pow(dy,2)))* - (1 + px/sqrt(pow(px,2) + pow(py,2))))/ - (2.*sqrt((1 - dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 + px/sqrt(pow(px,2) + pow(py,2))))))/2.; - - - dr(1,3) = 0; - -//d/dp_i -//debug: x->p index xhange in denominator - dr(1,4) = (-(dx*dy*(1 - px/sqrt(pow(px,2) + pow(py,2))))/ - (2.*pow(pow(dx,2) + pow(dy,2),1.5)* - sqrt((1 + dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 - px/sqrt(pow(px,2) + pow(py,2))))) - - (dx*dy*(1 + px/sqrt(pow(px,2) + pow(py,2))))/ - (2.*pow(pow(dx,2) + pow(dy,2),1.5)* - sqrt((1 - dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 + px/sqrt(pow(px,2) + pow(py,2))))))/2.; - - - dr(1,5) = (((1 + dx/sqrt(pow(dx,2) + pow(dy,2)))*px*py)/ - (2.*pow(pow(px,2) + pow(py,2),1.5)* - sqrt((1 + dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 - px/sqrt(pow(px,2) + pow(py,2))))) + - ((1 - dx/sqrt(pow(dx,2) + pow(dy,2)))*px*py)/ - (2.*pow(pow(px,2) + pow(py,2),1.5)* - sqrt((1 - dx/sqrt(pow(dx,2) + pow(dy,2)))*(1 + px/sqrt(pow(px,2) + pow(py,2))))))/2.; - - - - dr(1,6) = 0; - dr(1,7) = 0; - -//2nd equation -//d/dx_i - - dr(2,1) =(((-((dx*sqrt(pow(dx,2) + pow(dy,2)))/pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)) + - dx/(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - - (((dx*sqrt(pow(dx,2) + pow(dy,2)))/pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5) - - dx/(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - dr(2,2) = (((-((dy*sqrt(pow(dx,2) + pow(dy,2)))/pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)) + - dy/(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - - (((dy*sqrt(pow(dx,2) + pow(dy,2)))/pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5) - - dy/(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - dr(2,3) = (-(sqrt(pow(dx,2) + pow(dy,2))*dz*(1 - sqrt(pow(px,2) + pow(py,2))/ - sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)* - sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - - (sqrt(pow(dx,2) + pow(dy,2))*dz*(1 + - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))/ - (2.*pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)* - sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - -//d/dp_i -//debug: x->p index xhange in denominator - - dr(2,4) = (((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - ((px*sqrt(pow(px,2) + pow(py,2)))/pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5) - - px/(sqrt(pow(px,2) + pow(py,2))*sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))/ - (2.*sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - - ((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (-((px*sqrt(pow(px,2) + pow(py,2)))/pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5)) + - px/(sqrt(pow(px,2) + pow(py,2))*sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))/ - (2.*sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - dr(2,5) = (((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - ((py*sqrt(pow(px,2) + pow(py,2)))/pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5) - - py/(sqrt(pow(px,2) + pow(py,2))*sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))/ - (2.*sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) - - ((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (-((py*sqrt(pow(px,2) + pow(py,2)))/pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5)) + - py/(sqrt(pow(px,2) + pow(py,2))*sqrt(pow(px,2) + pow(py,2) + pow(pz,2)))))/ - (2.*sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - dr(2,6) = (((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - sqrt(pow(px,2) + pow(py,2))*pz)/ - (2.*pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5)* - sqrt((1 + sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 - sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))) + - ((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - sqrt(pow(px,2) + pow(py,2))*pz)/ - (2.*pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5)* - sqrt((1 - sqrt(pow(dx,2) + pow(dy,2))/sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2)))* - (1 + sqrt(pow(px,2) + pow(py,2))/sqrt(pow(px,2) + pow(py,2) + pow(pz,2))))))/2.; - - - dr(2,7) = 0; - -// cout<<"derivative matrix "<<dr<<endl; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} diff --git a/RecoVertex/KinematicFit/src/SmartPointingConstraint.cc b/RecoVertex/KinematicFit/src/SmartPointingConstraint.cc deleted file mode 100644 index 13725109147..00000000000 --- a/RecoVertex/KinematicFit/src/SmartPointingConstraint.cc +++ /dev/null @@ -1,181 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/SmartPointingConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" - - -pair<AlgebraicVector, AlgebraicVector> SmartPointingConstraint::value(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicVector lPar = exPoint; - AlgebraicVector vl(2,0); - -//vector of values 1x2 for given particle - AlgebraicVector lValue = makeValue(lPar).first; - vl(1) =lValue(1); - vl(2) =lValue(2); - return pair<AlgebraicVector,AlgebraicVector>(vl,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> SmartPointingConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(exPoint.num_row() ==0 ) throw VertexException("PointingKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("PointingKinematicConstraint::linearization point has a wrong dimension"); - int nStates = inSize/7; - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector lPar = exPoint; - -//2x7 derivative matrix for given particle - AlgebraicMatrix lDeriv = makeDerivative(lPar).first; - AlgebraicMatrix dr(2,7,0); - dr.sub(1,1,lDeriv); - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPar); -} - -pair<AlgebraicMatrix, AlgebraicVector> SmartPointingConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - - AlgebraicMatrix dr(2,7,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - -//2x7 derivative matrix for given state - AlgebraicMatrix lDeriv = makeDerivative(lPoint).first; - dr.sub(1,1,lDeriv); -// cout<<"Derivative returned: "<<dr<<endl; -// cout<<"For the value: "<<lPoint<<endl; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,lPoint); -} - -pair<AlgebraicVector, AlgebraicVector> SmartPointingConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - int nStates = par.size(); - if(nStates == 0) throw VertexException("PointingKinematicConstraint::Empty vector of particles passed"); - if(nStates != 1) throw VertexException("PointingKinematicConstraint::Current version does not support the multistate refit"); - AlgebraicVector vl(2,0); - AlgebraicVector lPoint = par.front()->currentState().kinematicParameters().vector(); - vl(1) = makeValue(lPoint).first(1); - vl(2) = makeValue(lPoint).first(2); -// cout<<"Value returned: "<<vl<<endl; -// cout<<"For the point: "<<lPoint<<endl; - - return pair<AlgebraicVector,AlgebraicVector>(vl,lPoint); -} - -AlgebraicVector SmartPointingConstraint::deviations(int nStates) const -{return AlgebraicVector(7*nStates,0);} - -int SmartPointingConstraint::numberOfEquations() const -{return 2;} - -pair<AlgebraicVector,AlgebraicVector> SmartPointingConstraint::makeValue(const AlgebraicVector& exPoint)const -{ -// cout<<"Make value called"<<endl; - AlgebraicVector vl(2,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - - -//full angle solution: sin(alpha - betha) = 0 -//sign swap allowed - double cos_phi_p = px/sqrt(px*px + py*py); - double sin_phi_p = py/sqrt(px*px + py*py); - double cos_phi_x = dx/sqrt(dx*dx + dy*dy); - double sin_phi_x = dy/sqrt(dx*dx + dy*dy); - - double sin_theta_p = pz/sqrt(px*px + py*py + pz*pz); - double sin_theta_x = dz/sqrt(dx*dx + dy*dy + dz*dz); - - double cos_theta_p = sqrt(px*px + py*py)/sqrt(px*px + py*py + pz*pz); - double cos_theta_x = sqrt(dx*dx + dy*dy)/sqrt(dx*dx + dy*dy + dz*dz); - - float feq = sin_phi_p*cos_phi_x - cos_phi_p*sin_phi_x; - float seq = sin_theta_p* cos_theta_x - cos_theta_p * sin_theta_x; - - vl(1) = feq; - vl(2) = seq; - - return pair<AlgebraicVector,AlgebraicVector>(vl,point); -} - -pair<AlgebraicMatrix, AlgebraicVector> SmartPointingConstraint::makeDerivative(const AlgebraicVector& exPoint) const -{ - AlgebraicMatrix dr(2,7,0); - AlgebraicVector point = exPoint; - double dx = point(1) - refPoint.x(); - double dy = point(2) - refPoint.y(); - double dz = point(3) - refPoint.z(); - double px = point(4); - double py = point(5); - double pz = point(6); - -//angular functuions: - -//half angle solution -//d/dx_i - dr(1,1) = (dy*(dx*px + dy*py))/(pow(pow(dx,2) + pow(dy,2),1.5)*sqrt(pow(px,2) + pow(py,2))) ; - - dr(1,2) = -((dx*(dx*px + dy*py))/(pow(pow(dx,2) + pow(dy,2),1.5)*sqrt(pow(px,2) + pow(py,2)))) ; - - dr(1,3) = 0; - -//d/dp_i -//debug: x->p index xhange in denominator - dr(1,4) = -((py*(dx*px + dy*py))/(sqrt(pow(dx,2) + pow(dy,2))*pow(pow(px,2) + pow(py,2),1.5))); - - dr(1,5) = (px*(dx*px + dy*py))/(sqrt(pow(dx,2) + pow(dy,2))*pow(pow(px,2) + pow(py,2),1.5)); - - dr(1,6) = 0; - dr(1,7) = 0; - -//2nd equation -//d/dx_i - - dr(2,1) = (dx*dz*(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(px,2) + pow(py,2)) + dz*pz))/ - (sqrt(pow(dx,2) + pow(dy,2))*pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)* - sqrt(pow(px,2) + pow(py,2) + pow(pz,2))); - - dr(2,2) = (dy*dz*(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(px,2) + pow(py,2)) + dz*pz))/ - (sqrt(pow(dx,2) + pow(dy,2))*pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)* - sqrt(pow(px,2) + pow(py,2) + pow(pz,2))); - - - dr(2,3) = (-((pow(dx,2) + pow(dy,2))*sqrt(pow(px,2) + pow(py,2))) - sqrt(pow(dx,2) + pow(dy,2))*dz*pz)/ - (pow(pow(dx,2) + pow(dy,2) + pow(dz,2),1.5)*sqrt(pow(px,2) + pow(py,2) + pow(pz,2))); - - - -//d/dp_i -//debug: x->p index xhange in denominator - - dr(2,4) = -((px*pz*(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(px,2) + pow(py,2)) + dz*pz))/ - (sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))*sqrt(pow(px,2) + pow(py,2))* - pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5))); - - dr(2,5) = -((py*pz*(sqrt(pow(dx,2) + pow(dy,2))*sqrt(pow(px,2) + pow(py,2)) + dz*pz))/ - (sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))*sqrt(pow(px,2) + pow(py,2))* - pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5))) ; - - dr(2,6) = (sqrt(pow(dx,2) + pow(dy,2))*(pow(px,2) + pow(py,2)) + dz*sqrt(pow(px,2) + pow(py,2))*pz)/ - (sqrt(pow(dx,2) + pow(dy,2) + pow(dz,2))*pow(pow(px,2) + pow(py,2) + pow(pz,2),1.5)) ; - - dr(2,7) = 0; - -// cout<<"derivative matrix "<<dr<<endl; - return pair<AlgebraicMatrix,AlgebraicVector>(dr,point); -} diff --git a/RecoVertex/KinematicFit/src/TwoTrackMassKinematicConstraint.cc b/RecoVertex/KinematicFit/src/TwoTrackMassKinematicConstraint.cc deleted file mode 100644 index 2d80999d593..00000000000 --- a/RecoVertex/KinematicFit/src/TwoTrackMassKinematicConstraint.cc +++ /dev/null @@ -1,160 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/TwoTrackMassKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - - -AlgebraicVector TwoTrackMassKinematicConstraint::value(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - if(states.size()<2) throw VertexException("TwoTrackMassKinematicConstraint::<2 states passed"); - if(states[0].particleCharge() ==0. || states[1].particleCharge()==0) - throw VertexException("TwoTrackMassKinematicConstraint:: 0 charge states passed"); - AlgebraicVector res(1,0); - vector<KinematicState>::const_iterator i_st = states.begin(); - KinematicState p_1 = *i_st; - i_st++; - KinematicState p_2 = *i_st; - TrackCharge ch1 = p_1.particleCharge(); - TrackCharge ch2 = p_2.particleCharge(); - - double field1 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_1.globalPosition()).z(); - double a_1 = -0.29979246*ch1*field1; - double field2 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_2.globalPosition()).z(); - double a_2 = -0.29979246*ch2*field2; - - AlgebraicVector p1 = p_1.kinematicParameters().vector(); - AlgebraicVector p2 = p_2.kinematicParameters().vector(); - - double p1vx = p1(4) - a_1*(point.y() - p1(2)); - double p1vy = p1(5) + a_1*(point.x() - p1(1)); - double p1vz = p1(6); - ParticleMass m1 = p1(7); - - double p2vx = p2(4) - a_2*(point.y() - p2(2)); - double p2vy = p2(5) + a_2*(point.x() - p2(1)); - double p2vz = p2(6); - ParticleMass m2 = p2(7); - - double j_energy = sqrt(p1(4)*p1(4)+p1(5)*p1(5)+p1(6)*p1(6)+m1*m1)+ - sqrt(p2(4)*p2(4)+p2(5)*p2(5)+p2(6)*p2(6)+m2*m2) ; - - - double j_m = (p1vx+p2vx)*(p1vx+p2vx) + (p1vy+p2vy)*(p1vy+p2vy) + - (p1vz+p2vz)*(p1vz+p2vz); - - res(1) = j_energy*j_energy - j_m - mass*mass; - return res; -} - -AlgebraicMatrix TwoTrackMassKinematicConstraint::parametersDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - int n_st = states.size(); - if(n_st<2) throw VertexException("TwoTrackMassKinematicConstraint::<2 states passed"); - if(states[0].particleCharge()==0. || states[1].particleCharge()==0) - throw VertexException("TwoTrackMassKinematicConstraint:: 0 charge states passed"); - AlgebraicMatrix res(1,n_st*7,0); - - vector<KinematicState>::const_iterator i_st = states.begin(); - KinematicState p_1 = *i_st; - i_st++; - KinematicState p_2 = *i_st; - TrackCharge ch1 = p_1.particleCharge(); - TrackCharge ch2 = p_2.particleCharge(); - - double field1 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_1.globalPosition()).z(); - double a_1 = -0.29979246*ch1*field1; - double field2 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_2.globalPosition()).z(); - double a_2 = -0.29979246*ch2*field2; - - AlgebraicVector p1 = p_1.kinematicParameters().vector(); - AlgebraicVector p2 = p_2.kinematicParameters().vector(); - - double p1vx = p1(4) - a_1*(point.y() - p1(2)); - double p1vy = p1(5) + a_1*(point.x() - p1(1)); - double p1vz = p1(6); - ParticleMass m1 = p1(7); - - double p2vx = p2(4) - a_2*(point.y() - p2(2)); - double p2vy = p2(5) + a_2*(point.x() - p2(1)); - double p2vz = p2(6); - ParticleMass m2 = p2(7); - - double e1 = sqrt(p1(4)*p1(4) + p1(5)*p1(5) + p1(6)*p1(6) + m1*m1); - double e2 = sqrt(p2(4)*p2(4) + p2(5)*p2(5) + p2(6)*p2(6) + m2*m2); - - -//x1 and x2 derivatives: 1st and 8th elements - res(1,1) = 2*a_1*(p2vy + p1vy); - res(1,8) = 2*a_2*(p2vy + p1vy); - -//y1 and y2 derivatives: 2nd and 9th elements: - res(1,2) = -2*a_1*(p1vx + p2vx); - res(1,9) = -2*a_2*(p2vx + p1vx); - -//z1 and z2 components: 3d and 10th elmnets stay 0: - res(1,3) = 0.; - res(1,10) = 0.; - -//px1 and px2 components: 4th and 11th elements: - res(1,4) = 2*(1+e2/e1)*p1(4) - 2*(p1vx + p2vx); - res(1,11) = 2*(1+e1/e2)*p2(4) - 2*(p1vx + p2vx); - -//py1 and py2 components: 5th and 12 elements: - res(1,5) = 2*(1+e2/e1)*p1(5) - 2*(p1vy + p2vy); - res(1,12) = 2*(1+e1/e2)*p2(5) - 2*(p2vy + p1vy); - -//pz1 and pz2 components: 6th and 13 elements: - res(1,6) = 2*(1+e2/e1)*p1(6)- 2*(p1vz + p2vz); - res(1,13) = 2*(1+e1/e2)*p2(6)- 2*(p2vz + p1vz); - -//mass components: 7th and 14th elements: - res(1,7) = 2*m1*(1+e2/e1); - res(1,14) = 2*m1*(1+e1/e2); - - return res; -} - -AlgebraicMatrix TwoTrackMassKinematicConstraint::positionDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - AlgebraicMatrix res(1,3,0); - if(states.size()<2) throw VertexException("TwoTrackMassKinematicConstraint::<2 states passed"); - if(states[0].particleCharge() ==0. || states[1].particleCharge() ==0) - throw VertexException("TwoTrackMassKinematicConstraint:: 0 charge states passed"); - vector<KinematicState>::const_iterator i_st = states.begin(); - KinematicState p_1 = *i_st; - i_st++; - KinematicState p_2 = *i_st; - TrackCharge ch1 = p_1.particleCharge(); - TrackCharge ch2 = p_2.particleCharge(); - - double field1 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_1.globalPosition()).z(); - double a_1 = -0.29979246*ch1*field1; - double field2 = TrackingTools::FakeField::Field::inGeVPerCentimeter(p_2.globalPosition()).z(); - double a_2 = -0.29979246*ch2*field2; - - AlgebraicVector p1 = p_1.kinematicParameters().vector(); - AlgebraicVector p2 = p_2.kinematicParameters().vector(); - - double p1vx = p1(4) - a_1*(point.y() - p1(2)); - double p1vy = p1(5) + a_1*(point.x() - p1(1)); - - double p2vx = p2(4) - a_2*(point.y() - p2(2)); - double p2vy = p2(5) + a_2*(point.x() - p2(1)); - - -//xv component - res(1,1) = -2*(p1vy + p2vy)*(a_1+a_2); - -//yv component - res(1,2) = 2*(p1vx + p2vx)*(a_1+a_2); - -//zv component - res(1,3) = 0.; - - return res; -} - -int TwoTrackMassKinematicConstraint::numberOfEquations() const -{return 1;} diff --git a/RecoVertex/KinematicFit/src/VertexKinematicConstraint.cc b/RecoVertex/KinematicFit/src/VertexKinematicConstraint.cc deleted file mode 100644 index 433c0cb7705..00000000000 --- a/RecoVertex/KinematicFit/src/VertexKinematicConstraint.cc +++ /dev/null @@ -1,158 +0,0 @@ -#include "RecoVertex/KinematicFit/interface/VertexKinematicConstraint.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - -VertexKinematicConstraint::VertexKinematicConstraint() -{} - -VertexKinematicConstraint::~VertexKinematicConstraint() -{} - -AlgebraicVector VertexKinematicConstraint::value(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - int num = states.size(); - if(num<2) throw VertexException("VertexKinematicConstraint::<2 states passed"); - -//it is 2 equations per track - AlgebraicVector vl(2*num,0); - int num_r = 0; - for(vector<KinematicState>::const_iterator i = states.begin(); i != states.end(); i++) - { - TrackCharge ch = i->particleCharge(); - GlobalVector mom = i->globalMomentum(); - GlobalPoint pos = i->globalPosition(); - double d_x = point.x() - pos.x(); - double d_y = point.y() - pos.y(); - double d_z = point.z() - pos.z(); - double pt = mom.transverse(); - if(ch !=0) - { - -//charged particle - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(pos).z(); - double a_i = -0.29979246*ch*field; - double j = a_i*(d_x * mom.x() + d_y * mom.y())/(pt*pt); - -//vector of values - vl(num_r*2 +1) = d_y*mom.x() - d_x*mom.y() -a_i*(d_x*d_x + d_y*d_y)/2; - vl(num_r*2 +2) = d_z - mom.z()*asin(j)/a_i; - }else{ - -//neutral particle - vl(num_r*2 +1) = d_y*mom.x() - d_x*mom.y(); - vl(num_r*2 +2) = d_z - mom.z()*(d_x * mom.x() + d_y * mom.y())/(pt*pt); - } - num_r++; - } - return vl; -} - -AlgebraicMatrix VertexKinematicConstraint::parametersDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - int num = states.size(); - if(num<2) throw VertexException("VertexKinematicConstraint::<2 states passed"); - AlgebraicMatrix jac_d(2*num,7*num); - int num_r = 0; - for(vector<KinematicState>::const_iterator i = states.begin(); i != states.end(); i++) - { - AlgebraicMatrix el_part_d(2,7,0); - TrackCharge ch = i->particleCharge(); - GlobalVector mom = i->globalMomentum(); - GlobalPoint pos = i->globalPosition(); - double d_x = point.x() - pos.x(); - double d_y = point.y() - pos.y(); - double pt = mom.transverse(); - - if(ch !=0){ - -//charged particle - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(pos).z(); - double a_i = -0.29979246*ch*field; - double j = a_i*(d_x * mom.x() + d_y * mom.y())/(pt*pt); - double r_x = d_x - 2* mom.x()*(d_x*mom.x()+d_y*mom.y())/(pt*pt); - double r_y = d_x - 2* mom.y()*(d_x*mom.x()+d_y*mom.y())/(pt*pt); - double s = 1/(pt*pt*sqrt(1 - j*j)); - -//D Jacobian matrix - el_part_d(1,1) = mom.y() + a_i*d_x; - el_part_d(1,2) = -mom.x() + a_i*d_y; - el_part_d(2,1) = mom.x() * mom.z() * s; - el_part_d(2,2) = mom.y() * mom.z() * s; - el_part_d(2,3) = -1.; - el_part_d(1,4) = d_y; - el_part_d(1,5) = -d_x; - el_part_d(2,4) = -mom.z()*s*r_x; - el_part_d(2,5) = -mom.z()*s*r_y; - el_part_d(2,6) = -asin(j) /a_i; - jac_d.sub(num_r*2+1, num_r*7+1, el_part_d); - }else{ -//neutral particle - el_part_d(1,1) = mom.y(); - el_part_d(1,2) = -mom.x(); - el_part_d(2,1) = mom.x() * mom.z()/(pt*pt); - el_part_d(2,2) = mom.y() * mom.z()/(pt*pt); - el_part_d(2,3) = -1.; - el_part_d(1,4) = d_y; - el_part_d(1,5) = -d_x; - el_part_d(2,4) = 2*(d_x*mom.x()+d_y*mom.y())*mom.x()*mom.z()/(pt*pt*pt*pt) - mom.z()*d_x/(pt*pt); - el_part_d(2,5) = 2*(d_x*mom.x()+d_y*mom.y())*mom.y()*mom.z()/(pt*pt*pt*pt) - mom.z()*d_y/(pt*pt); - el_part_d(2,6) =-(d_x * mom.x() + d_y * mom.y())/(pt*pt); - jac_d.sub(num_r*2+1, num_r*7+1, el_part_d); - } - num_r++; - } - return jac_d; -} - -AlgebraicMatrix VertexKinematicConstraint::positionDerivative(const vector<KinematicState> states, - const GlobalPoint& point) const -{ - int num = states.size(); - if(num<2) throw VertexException("VertexKinematicConstraint::<2 states passed"); - AlgebraicMatrix jac_e(2*num,3); - int num_r = 0; - for(vector<KinematicState>::const_iterator i = states.begin(); i != states.end(); i++) - { - AlgebraicMatrix el_part_e(2,3,0); - TrackCharge ch = i->particleCharge(); - GlobalVector mom = i->globalMomentum(); - GlobalPoint pos = i->globalPosition(); - double d_x = point.x() - pos.x(); - double d_y = point.y() - pos.y(); - double pt = mom.transverse(); - - if(ch !=0 ) - { - -//charged particle - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(pos).z(); - double a_i = -0.29979246*ch*field; - double j = a_i*(d_x * mom.x() + d_y * mom.y())/(pt*pt); - double s = 1/(pt*pt*sqrt(1 - j*j)); - -//E jacobian matrix - el_part_e(1,1) = -(mom.y() + a_i*d_x); - el_part_e(1,2) = mom.x() - a_i*d_y; - el_part_e(2,1) = -mom.x()*mom.z()*s; - el_part_e(2,2) = -mom.y()*mom.z()*s; - el_part_e(2,3) = 1; - jac_e.sub(2*num_r+1,1,el_part_e); - }else{ - -//neutral particle - el_part_e(1,1) = - mom.y(); - el_part_e(1,2) = mom.x(); - el_part_e(2,1) = -mom.x()*mom.z()/(pt*pt); - el_part_e(2,2) = -mom.y()*mom.z()/(pt*pt); - el_part_e(2,3) = 1; - jac_e.sub(2*num_r+1,1,el_part_e); - } - num_r++; - } - return jac_e; -} - -int VertexKinematicConstraint::numberOfEquations() const -{return 2;} diff --git a/RecoVertex/KinematicFitPrimitives/BuildFile b/RecoVertex/KinematicFitPrimitives/BuildFile deleted file mode 100644 index 29562eebc99..00000000000 --- a/RecoVertex/KinematicFitPrimitives/BuildFile +++ /dev/null @@ -1,12 +0,0 @@ -<export> - <lib name=RecoVertexKinematicFitPrimitives> - <use name=RecoVertex/KalmanVertexFit> - <use name=RecoVertex/VertexPrimitives> - <use name=RecoVertex/VertexTools> - <use name=DataFormats/Math> -</export> - -<use name=RecoVertex/KalmanVertexFit> -<use name=RecoVertex/VertexPrimitives> -<use name=RecoVertex/VertexTools> -<use name=DataFormats/Math> diff --git a/RecoVertex/KinematicFitPrimitives/doc/html/index.html b/RecoVertex/KinematicFitPrimitives/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/KinematicFitPrimitives/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/KinematicFitPrimitives/doc/html/overview.html b/RecoVertex/KinematicFitPrimitives/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/KinematicFitPrimitives/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h b/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h deleted file mode 100644 index e27384d396f..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef ExtendedPerigeeTrajectoryError_H -#define ExtendedPerigeeTrajectoryError_H - -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" - -class ExtendedPerigeeTrajectoryError -{ -public: - ExtendedPerigeeTrajectoryError(): weightAvailable(false),vl(false) - {} - - ExtendedPerigeeTrajectoryError(const AlgebraicSymMatrix& covariance): - cov(covariance),weightAvailable(false), - vl(true) - {} - - -/** - * Access methods - */ - - bool isValid() const - {return vl;} - - bool weightIsAvailable() const - {return weightAvailable;} - - const AlgebraicSymMatrix & covarianceMatrix()const - {return cov;} - - const AlgebraicSymMatrix & weightMatrix()const - { - if(! weightIsAvailable()) - { - int ifail; -// cout<<"weight is requested for covariance:"<<cov<<endl; - weight = cov.inverse(ifail); - if(ifail != 0) throw VertexException("ExtendedPerigeeTrajectoryError::unable to invert covariance matrix"); - weightAvailable = true; - } - -// cout<<"and the weight is: "<< weight<<endl; - return weight; - } - -private: - AlgebraicSymMatrix cov; - mutable AlgebraicSymMatrix weight; - mutable bool weightAvailable; - mutable bool vl; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h b/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h deleted file mode 100644 index e0a09756a9a..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef ExtendedPerigeeTrajectoryParameters_H -#define ExtendedPerigeeTrajectoryParameters_H - -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" -#include "DataFormats/TrajectoryState/interface/TrackCharge.h" - - -/** - * This class represents simple extention of - * perigee trajectory parametrization: - * (rho, theta, phi,tr_im, z_im, mass) - */ - -class ExtendedPerigeeTrajectoryParameters -{ -public: - -ExtendedPerigeeTrajectoryParameters() -{vl = false;} - -ExtendedPerigeeTrajectoryParameters(const AlgebraicVector& param, - const TrackCharge& charge) -{ - vl = true; - par = param; - ch = charge; -} - -/** - * Access methods - */ - bool isValid() const - {return vl;} - - AlgebraicVector vector() const - {return par;} - - TrackCharge charge() const - {return ch;} - -private: - - bool vl; - AlgebraicVector par; - TrackCharge ch; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h deleted file mode 100644 index 7cfd4e946a9..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h +++ /dev/null @@ -1,82 +0,0 @@ -#ifndef KinematicConstraint_H -#define KinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" - -/** - * Pure abstract base class to implement different types - * of constraints for single tracks. - * Class caches the information about calculation of - * of constraint equation derivatives and values at given - * linearization 7-point (x,y,z,p_x,p_y,p_z,m)_0. Fitter - * usually takes current parameters as the first step point - * and the change it to the result of the first iteration. - * - * Kirill Prokofiev, December 2002 - * Change for multistate refit: July 2004 - */ - - -class KinematicConstraint{ - - -public: - -/** - * Default constructor and destructor - */ - -KinematicConstraint() {} - -virtual ~KinematicConstraint() {} - -/** - * Methods returning the constraint derivative matrix and value. - * The equation expansion is done at the 7-point specified by user: - * (x,y,z,p_x,p_y,p_z,m)_0. In case of multiple state refit - * vector should be of dimension 7xNumberOfStates - */ - -virtual pair<AlgebraicVector, AlgebraicVector> value(const AlgebraicVector& exPoint) const = 0; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const = 0; - - -/** - * Methods making value and derivative - * matrix using current state parameters - * as expansion 7-point. Constraint can be - * made equaly for single and multiple states - */ -virtual pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const = 0; - -virtual pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const = 0; - -/** - * Returns vector of sigma squared associated to the KinematicParameters - * of refitted particles - * Initial deviations are given by user for the constraining parameters - * (mass, momentum components etc). - * In case of multiple states exactly the same values are added to - * every particle parameters - */ -virtual AlgebraicVector deviations(int nStates) const = 0; - -/** - * Returns an actual number of equations in - * particular constraint (corresponds to - * the number of strings in constraint derivative matrix, - * for example) - */ -virtual int numberOfEquations() const = 0; - -/** - * Clone method - */ -virtual KinematicConstraint * clone() const = 0; - -}; - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h deleted file mode 100644 index 65f01feba4e..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef KinematicParameters_H -#define KinematicParameters_H - -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" - -/** - * Class to store the 7-vector of - * particle parameters: (x,y,z,p_x,p_y,p_z,m) - * - * Kirill Prokofiev Febrauary 2003 - */ - - -class KinematicParameters{ - -public: - KinematicParameters(): - vl(false) - {} - - KinematicParameters(const AlgebraicVector& pr): - par(pr),vl(true) - {} - -/** - * access methods - */ - - AlgebraicVector vector() const - {return par;} - - GlobalVector momentum() const; - - GlobalPoint position() const; - - bool isValid() const - {return vl;} - -private: - AlgebraicVector par; - bool vl; -}; - - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h deleted file mode 100644 index 7102bab6c5d..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef KinematicParametersError_H -#define KinematicParametersError_H - -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" -#include "RecoVertex/VertexPrimitives/interface/VertexException.h" -#include "TrackingTools/AnalyticalJacobians/interface/JacobianCartesianToCurvilinear.h" -#include "TrackingTools/AnalyticalJacobians/interface/JacobianCurvilinearToCartesian.h" - -/** - * Class to store the error matrix - * for (x,y,z,p_x,p_y,p_z,m) - * particle parametrization - * - * Kirill Prokofiev January 2003 - */ - - -class KinematicParametersError{ - -public: - KinematicParametersError() - {vl = false;} - - KinematicParametersError(const AlgebraicSymMatrix& er): - theCovMatrix(er) - {vl = true;} - -/** - * access methods - */ - - AlgebraicSymMatrix matrix() const - {return theCovMatrix;} - - - bool isValid() const - {return vl;} - -private: - AlgebraicSymMatrix theCovMatrix; - bool vl; -}; -#endif - diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h deleted file mode 100644 index 7800d024bc2..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h +++ /dev/null @@ -1,151 +0,0 @@ -#ifndef KinematicParticle_H -#define KinematicParticle_H - -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "RecoVertex/VertexPrimitives/interface/RefCountedLinearizedTrackState.h" - -#include "Geometry/Surface/interface/ReferenceCounted.h" - -/** - * Abstract base class for KinematicParticles - * created out of Physics objects of different types - * Common access methods are implemented here. - * All the virtual abstract methods should be - * implemented by user. - */ - -class KinematicConstraint; -class KinematicTree; - -class KinematicParticle : public ReferenceCounted -{ -public: - - friend class KinematicParticleVertexFitter; - friend class KinematicTree; - -/** - * Default constructor: does not create - * a valid particle. Method is needed for - * debugging purposes only. - */ - KinematicParticle(){} - - virtual ~KinematicParticle(){} - -/** - * Comparison by contents operators - * Returns TRUE if initial PhysicsObjects - * match(if they exist). If not, - * compares the initial KinematicStates - * Retunes true if they match. - * Should be implemented by user - */ - virtual bool operator==(const KinematicParticle& other)const = 0; - - virtual bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const = 0; - - virtual bool operator!=(const KinematicParticle& other) const = 0; - -/** - * Comparison by adress operator - * Has NO physical meaning - * To be used inside graph only - */ - virtual bool operator<(const KinematicParticle& other)const; - -/** - * Access to the kinematic state - * with which particle was first created - */ - virtual KinematicState initialState()const; - -/** - * Access to the last calculated kinematic state - */ - virtual KinematicState currentState()const; - -/** - * Access to KinematicState of particle - * at given point. The current state of particle - * does not change after this operation. - */ - virtual KinematicState stateAtPoint(const GlobalPoint& point)const = 0; - -/** - * Method producing new particle out of the current - * one and RefittedState obtained from kinematic fitting. - * To be used by Fitter classes only. Method should be - * implemented by used for every specific type of KinematicParticle - */ - virtual ReferenceCountingPointer<KinematicParticle> refittedParticle(const KinematicState& state, - float chi2, float ndf, KinematicConstraint * cons = 0) const = 0; - -/** - * Method returning LinearizedTrackState of the particle needed for - * Kalman flter vertex fit. Should be implemented by user. For track(helix)-like - * objects one can use the ParticleLinearizedTrackStateFactory class. - */ - virtual RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const = 0; - -/** - * Returns last constraint aplied to - * this particle. - */ - virtual KinematicConstraint * lastConstraint() const; - -/** - * Returns the state of Kinematic Particle before - * last constraint was aplied - */ - virtual ReferenceCountingPointer<KinematicParticle> previousParticle() const; - -/** - * Returns the pointer to the kinematic - * tree (if any) current particle belongs to - * 0 pointer - * returned in case not any tree is built yet - */ - virtual KinematicTree * correspondingTree() const; - -/** - * Access metods for chi2 and - * number of degrees of freedom - */ - virtual float chiSquared() const; - - virtual float degreesOfFreedom() const; - -protected: - - virtual void setTreePointer(KinematicTree * tr) const; - -/** - * Data members which should be initialized by user in - * derived classes - */ - -//pointer to the tree current -//particle belongs to - mutable KinematicTree * tree; - -//last constraint applied - mutable KinematicConstraint * lConstraint; - -//previous particle - mutable ReferenceCountingPointer<KinematicParticle> pState; - -//initial kinematic state of -//current particle - KinematicState initState; - -//particle state at point - mutable KinematicState cState; - -//chi2 and number of degrees of freedom - float chi2; - - float ndf; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h deleted file mode 100644 index a0654c2c677..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h +++ /dev/null @@ -1,79 +0,0 @@ -#ifndef KinematicParticleFactoryFromTransientTrack_h -#define KinematicParticleFactoryFromTransientTrack_h - -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" - -/** - *.Factory for KinematicParticle RefCountedPointers - */ - - -class KinematicParticleFactoryFromTransientTrack -{ - public: - -/** - * Default constructoru sing a TrackKinematicStatePropagator - */ - KinematicParticleFactoryFromTransientTrack(); - -/** - * Factory constructor taking a KinematicStatePropagator - */ - KinematicParticleFactoryFromTransientTrack(KinematicStatePropagator * pr); - -/** - * Default destructor - */ - ~KinematicParticleFactoryFromTransientTrack() - {delete propagator;} - -/** - * Particle constructed out of corresponding TransientTrack, - * mass guess and sigma, chi2 and ndf. KinematicState - * is created at the point where TransientTrack is defined. - */ - RefCountedKinematicParticle particle(const reco::TransientTrack& initialTrack, - const ParticleMass& massGuess, - float chiSquared, - float degreesOfFr, - float& m_sigma) const; - -/** - * Particle is constructed out of corresponding TransientTrack, - * mass_guess and sigma, chi2 and ndf. KinematicState is - * then propagated to the given point - */ - - RefCountedKinematicParticle particle(const reco::TransientTrack& initialTrack, - const ParticleMass& massGuess, - float chiSquared, - float degreesOfFr, - const GlobalPoint& expPoint, - float m_sigma) const; - -/** - * Particle is consructed directly from its KinematicState, - * chi2 and related information. If no previous provided, - * initial and currnt kinemtic states of the particle will match, - * othereise, initial state will be taken from previous particle. - */ - RefCountedKinematicParticle particle(const KinematicState& kineState, float& chiSquared, - float& ndf, ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicConstraint * lastConstraint = 0) const; - -private: - - KinematicStatePropagator * propagator; - TransientTrackKinematicStateBuilder builder; - -}; - - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h deleted file mode 100644 index 31a884287f0..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef KinematicPerigeeConversions_H -#define KinematicPerigeeConversions_h - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h" - -/** - * Helper class to simplify parameters - * conversions between kinematic - * and extended perigee parametrization - * - * Kirill Prokofiev, August 2003 - */ -class KinematicPerigeeConversions -{ -public: - - KinematicPerigeeConversions() - {} - - ExtendedPerigeeTrajectoryParameters extendedPerigeeFromKinematicParameters(const KinematicState& state, - const GlobalPoint& point) const; - - KinematicParameters kinematicParametersFromExPerigee(const ExtendedPerigeeTrajectoryParameters& pr, - const GlobalPoint& point )const; - - KinematicState kinematicState(const AlgebraicVector& momentum, const GlobalPoint& referencePoint, - const TrackCharge& charge, const AlgebraicMatrix& theCovarianceMatrix) const; - - AlgebraicVector momentumFromPerigee(const AlgebraicVector& momentum, - const GlobalPoint& referencePoint, const TrackCharge& ch)const; - -private: - /** - * Jacobians of tranformations from the parametrixation - * (x, y, z, transverse curvature, theta, phi,m) to kinematic - * parameters - */ -AlgebraicMatrix jacobianParameters2Kinematic(const AlgebraicVector& momentum, - const GlobalPoint& referencePoint, - const TrackCharge& charge)const; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h deleted file mode 100644 index 074e48d4fb4..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h +++ /dev/null @@ -1,72 +0,0 @@ -#ifndef KinematicRefittedTrackState_H -#define KinematicRefittedTrackState_H - -#include "RecoVertex/VertexPrimitives/interface/RefittedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h" - - -/** - * Refitted state for kinematic parameters - * To be used in KinematicParticleVertxFitter - * only. Class caches the refitted state of the - * particle and provide access to its - * parameters in both parametrizations: - * Kinemaic and extended Perigee. - * - * Several methods are done just to be - * consistent with present KalmanVertexFitter - * structure - */ - -class KinematicRefittedTrackState : public RefittedTrackState{ - -public: - - KinematicRefittedTrackState(const KinematicState& st); - -/** - * Access to Kinematic parameters - */ - AlgebraicVector parameters() const; - -/** - * Kinmatic covariance - */ - AlgebraicSymMatrix covariance() const ; - -/** - * FTS out of kinematic parameters - */ - FreeTrajectoryState freeTrajectoryState() const; - - GlobalPoint position() const; - -/** - * Kinematic momentum vector - */ - AlgebraicVector kinematicMomentumVector() const; - -/** - * Perigee momentum vector - */ - AlgebraicVector momentumVector() const; - - TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface & surface) const; - - TrajectoryStateOnSurface trajectoryStateOnSurface(const Surface & surface, - const Propagator & propagator) const; - - virtual double weight() const; - - virtual ReferenceCountingPointer<RefittedTrackState> stateWithNewWeight - (const double newWeight) const; - - virtual std::vector< ReferenceCountingPointer<RefittedTrackState> > components() const; - - -private: - - KinematicState state; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicState.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicState.h deleted file mode 100644 index 1678b0736b2..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicState.h +++ /dev/null @@ -1,77 +0,0 @@ -#ifndef KinematicState_H -#define KinematicState_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" -#include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" - -/** - * Class providing a state of particle needed - * for Kinematic Fit. - * - * Kirill Prokofiev, March 2003 - */ - - -class KinematicState{ - -public: - -/** - * Default constructor for internal - * KinematicFitPrimitives library needs - * only - */ - KinematicState() - {vl = false;} - -/** - * Constructor taking directly KinematicParameters - * KinematicError and Charge. To be used with - * proper KinematicStateBuilder. - */ - KinematicState(const KinematicParameters& parameters, const KinematicParametersError& error, - const TrackCharge& charge); - - bool operator==(const KinematicState& other) const; - -/** - * Access methods to parameters - * and private data - */ - ParticleMass mass() const; - - KinematicParameters kinematicParameters() const; - - KinematicParametersError kinematicParametersError() const; - - GlobalVector globalMomentum() const; - - GlobalPoint globalPosition() const; - - TrackCharge particleCharge() const; - -/** - * KinematicState -> FreeTrajectoryState - * converter - */ - FreeTrajectoryState freeTrajectoryState() const; - - bool isValid() const - {return vl;} - - - - -private: - - KinematicParameters param; - - KinematicParametersError err; - - TrackCharge ch; - - bool vl; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h deleted file mode 100644 index 13ee0e1c6a5..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef KinematicStatePropagator_H -#define KinematicStatePropagator_H - -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "Geometry/Surface/interface/Surface.h" - -/** - * Pure abstract base class to create - * KinematicStatePropagators - * - * Kirill Prokofiev, March 2003 - */ - - -class KinematicStatePropagator -{ -public: - - KinematicStatePropagator() - {} - - virtual ~KinematicStatePropagator(){} - -/** - * Method propagating the KinematicState to the point of - * closest approach at the transverse plane - */ - - virtual KinematicState propagateToTheTransversePCA(const KinematicState& state, const GlobalPoint& point) const = 0; - -/** - * Clone method - */ - virtual KinematicStatePropagator * clone() const = 0; - -private: - - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h deleted file mode 100644 index 75a7876cfc5..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef KinematicTree_H -#define KinematicTree_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" -#include "DetectorDescription/Core/interface/adjgraph.h" -#include "DetectorDescription/Core/interface/graphwalker.h" - -/** - * Class describing the decay - * chain inside the kinematic fit. - * Uses the boost graph based DDD - * library. KinematicVertices are - * vertices, kinemtaic particles become nodes. - * - * Kirill Prokofiev, April 2003 - */ -/** - * WARNING: before using any of these - * methods please make sure you _understand correctly_ - * what part of tree are you looking at now and - * where the pointer will be after the desiring - * operation. - * - * "Left" and "Right" notation reflects the order - * of creating a three: from bottom to top, - * from left to right - * EXAMPLE: Bs->J/Psi Phi -> mumu KK - * First creating a mumu branch, fit it to J/Psi, - * Then adding Phi->KK and reconstructing a Bs will - * look like: left bottom particle: muon, top of - * the tree is Bs, right bottom is K. - */ - -class KinematicTree : public ReferenceCounted -{ - public: - -/** - * Constructor initializing - * everything and setting all values to 0 - */ - KinematicTree(); - - - virtual ~KinematicTree(); - -/** - * Access methods - */ - bool isEmpty() const; - - -/** - * This method checks if the tree - * is consistent, i.e. the top vertex is - * only one. - */ - - bool isConsistent() const; - -/** - * Methods adding nodes and - * edges to the graph representation - * of the Kinematic Tree - */ - void addParticle(RefCountedKinematicVertex prodVtx, - RefCountedKinematicVertex decVtx, - RefCountedKinematicParticle part); - -/** - * Kinematic Tree navigation methods - */ - -/** - * Returns the complete vector of final state - * particles for the whole decay tree. - * Pointer is NOT moved after this operation - */ - vector<RefCountedKinematicParticle> finalStateParticles() const; - -/** - * Returns the top particle of - * decay. Pointer is moved to the - * TOP of the decay tree. - */ - RefCountedKinematicParticle topParticle() const; - -/** - * Returns a current decay vertex - * pointer is NOT moved - */ - RefCountedKinematicVertex currentDecayVertex() const; - -/** - * Returns a current production vertex - * pointer is NOT moved - */ - RefCountedKinematicVertex currentProductionVertex() const; - -/** - * Returns a current particle - * pointer is NOT moved - */ - RefCountedKinematicParticle currentParticle() const; - -/** - * Returns _true_ and state of mother particle - * if successfull, _false_ and state of current particle - * in case of failure - * Pointer is NOT moved. - */ - pair<bool,RefCountedKinematicParticle> motherParticle() const; - - -/** - * Returns a non-zero vector in case of success and - * 0 vector in case of failure - * Pointer is NOT moved - */ - vector<RefCountedKinematicParticle> daughterParticles() const; - -/** - * Puts the pointer to the top (root) - * of the tree. The Graph walker - * object gets recreated inside the tree. - */ - void movePointerToTheTop() const; - -/** - * Pointer goes to the mother - * particle (if any) with respest to - * the current one - */ - bool movePointerToTheMother() const; - -/** - * Pointer goes to the first - * child(if any) in the list - */ - bool movePointerToTheFirstChild() const; - -/** - * Pointer goes to the next - * child in the list (if any) - */ - bool movePointerToTheNextChild() const; - -/** - * Pointer goes to the needed - * particle inside the tree if - * found (true). Pointer goes - * to the top of the tree if not - * found (false) - */ - bool findParticle(RefCountedKinematicParticle part) const; - -/** - * Pointer goes to the particle - * for which the neede vertex will be - * the decay one (true case) - * Or pointer stays at the top of teh tree - * if search is unsuccessfull (false case). - */ - bool findDecayVertex(RefCountedKinematicVertex vert) const; - -/** - * Methods replacing Particles and Vertices - * inside the tree during the refit. Methods - * should used by corresponding KinematicFitter - * classe only. Replace the current track or - * current (decay) vertex - * WARNING: replace methods are not available - * at this version of KinematicFitPrimitives. - */ - void replaceCurrentParticle(RefCountedKinematicParticle newPart) const; - - -/** - * Replaces _decay_ vertex of the - * current particle with the given value - */ - void replaceCurrentVertex(RefCountedKinematicVertex newVert) const; - -/** - * Method adding a tree _tr_ to the vertex vtx - * of current tree in such a way, that vtx become a - * production vertex for the top particle of the _tr_. - * The whole contetnts of _tr_ is the rewritten to - * current tree. This method is purely technical - * and contains no mathematics. To be used by - * KinematicParticleVertexFitter after the corresponding fit. - */ - void addTree(RefCountedKinematicVertex vtx, KinematicTree * tr); -private: - -/** - * Private methods to walk around the tree: - * Needed to collect final state or - * particle search. - */ - - bool leftBranchSearch(RefCountedKinematicParticle part) const; - - bool leftBranchVertexSearch(RefCountedKinematicVertex vtx) const; - - bool leftFinalParticle() const; - - void leftBranchAdd(KinematicTree * otherTree, RefCountedKinematicVertex vtx); - - mutable bool empt; - - mutable graph<RefCountedKinematicVertex,RefCountedKinematicParticle> treeGraph; - mutable graphwalker<RefCountedKinematicVertex, RefCountedKinematicParticle> * treeWalker; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h deleted file mode 100644 index 35c30b63ab6..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h +++ /dev/null @@ -1,123 +0,0 @@ -#ifndef KinematicVertex_H -#define KinematicVertex_H - -#include "Geometry/Surface/interface/ReferenceCounted.h" -#include "RecoVertex/VertexPrimitives/interface/CachingVertex.h" -#include "RecoVertex/VertexPrimitives/interface/VertexState.h" - -/** - * Class representing a Decay Vertex - * Caches a vertex position, covariance - * matrix, chi squared and number of - * degrees of freedom. Class is usually - * created by KinematicParticleVertexFitter - * - * Kirill Prokofiev, December 2002 - */ - - -class KinematicVertex : public ReferenceCounted -{ -public: - - friend class KinematicTree; - -/** - * Empty default constructor - * for invalid vertices - */ - KinematicVertex(); - - -/** - * Constructor with vertex state, chi2 and ndf. - * Previous state of the vertex pointer is set to 0. - */ - KinematicVertex(const VertexState state, float totalChiSq, float degreesOfFr); - -/** - * Constructor with previous (before constraint) - * state of the vertex - */ - KinematicVertex(const VertexState state, - const ReferenceCountingPointer<KinematicVertex> prVertex, - float totalChiSq, float degreesOfFr); - -/** - * Direct transformation from caching vertex - */ - KinematicVertex(const CachingVertex& vertex); - - - virtual ~KinematicVertex(); - -/** - * Comparison by contents operator - * is _true_ if position AND - * covariance match - */ - bool operator==(const KinematicVertex& other)const; - - bool operator==(ReferenceCountingPointer<KinematicVertex> other)const; - -/** - * comparison by adress operator - * Has NO physical meaning - * To be used inside the graph only - */ - - bool operator<(const KinematicVertex& other)const; -/** - * Access methods - */ - -/** - * Checking the validity of the vertex - * Example: production vertex for the - * first decayed particle or decay vertices - * of final state particles can be invalid - * since we don't know them. - */ - bool vertexIsValid() const; - -/** - * Returns the pointer to the kinematic - * tree (if any) current vertex belongs to - * returned in case of not any tree build yet - */ - KinematicTree * correspondingTree() const; - -/** - * Previous (before constraint) state of the vertex - */ - ReferenceCountingPointer<KinematicVertex> vertexBeforeConstraint() const; - - - VertexState vertexState() const; - - GlobalPoint position() const; - - GlobalError error() const; - - float chiSquared() const; - - float degreesOfFreedom() const; - -private: - - void setTreePointer(KinematicTree * tr) const; - -//kinematic tree this -//vertex belongs to (can be 0) - mutable KinematicTree * tree; - mutable bool vl; - - VertexState theState; -// GlobalPoint theVertexPosition; -// GlobalError theVPositionError; - float theChiSquared; - float theNDF; - mutable ReferenceCountingPointer<KinematicVertex> pVertex; -}; - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexAssociator.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexAssociator.h deleted file mode 100644 index 4b4f34b3814..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexAssociator.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef KinematicVertexAssociator_H -#define KinematicVertexAssociator_H - -#include <vector> -#include "TrackerReco/TkEvent/interface/TkSimVertex.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -/** - * A prototype class for associators linking the - * KinematicVertices to the SimVertices. Must be generalized later, - * when KinematicVertex becomes an instance of the Vertex class. - * - * Kirill Prokofiev, October 2004 - */ - - -class TkSimVertex; -//class RefCountedKinematicVertex; - -class KinematicVertexAssociator { -public: - - typedef vector<RefCountedKinematicVertex> KinematicVertexContainer; - typedef vector<const TkSimVertex *> SimVertexPtrContainer; - typedef vector<const TkSimVertex> SimVertexContainer; - - virtual ~KinematicVertexAssociator() {} - - virtual SimVertexPtrContainer simVertices(const RefCountedKinematicVertex&) const = 0; - - virtual KinematicVertexContainer recVertices(const TkSimVertex&) const = 0; - - virtual KinematicVertexAssociator * clone() const = 0; - -}; - - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexDistance.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexDistance.h deleted file mode 100644 index 2dff24fd095..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexDistance.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef KinematicVertexDistance_H -#define KinematicVertexDistance_H - -/** - * Abstact class which defines a distance and compatibility between - * a SimVertex descendent and a kinematicVertex. - */ - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "TrackerReco/TkEvent/interface/TkSimVertex.h" - -class Measurement1D; - -class KinematicVertexDistance{ - -public: - - virtual ~KinematicVertexDistance() {} - - virtual Measurement1D distance(const RefCountedKinematicVertex, const TkSimVertex &) const = 0; - - virtual float compatibility (const RefCountedKinematicVertex, const TkSimVertex &) const = 0; - - virtual KinematicVertexDistance * clone() const = 0; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h b/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h deleted file mode 100644 index 28a0e301596..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef KinematicVertexFactory_H -#define KinematicVertexFactory_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" - -/** - * Factory to create Reference counting pointers - * to KinematicVertex objects. Can be used both - * to create object and pointers or simple - * pointers to existing object. - * - * Kirill Prokofiev December 2002 - */ - - - -class KinematicVertexFactory -{ -public: - - KinematicVertexFactory() - {} - -/** - * Constructor with vertex state, chi2 and ndf. - * Previous state of the vertex pointer is set to 0. - */ - RefCountedKinematicVertex vertex(const VertexState& state, float totalChiSq, float degreesOfFr) - { - return ReferenceCountingPointer<KinematicVertex>(new KinematicVertex(state,totalChiSq, - degreesOfFr)); - } - -/** - * Constructor with previous (before constraint) - * state of the vertex - */ - RefCountedKinematicVertex vertex(const VertexState state, - const ReferenceCountingPointer<KinematicVertex> pVertex, - float totalChiSq, float degreesOfFr) - { - return ReferenceCountingPointer<KinematicVertex>(new KinematicVertex(state, pVertex, - totalChiSq, degreesOfFr)); - } - - -/** - * Direct conversion from caching vertex - */ - RefCountedKinematicVertex vertex(const CachingVertex& vertex) - { - return ReferenceCountingPointer<KinematicVertex>(new KinematicVertex(vertex)); - } - -/** - * Method producing invalid kinematic vertices - * to mark top production and final state decay vertices - */ - RefCountedKinematicVertex vertex() - { - return ReferenceCountingPointer<KinematicVertex>(new KinematicVertex()); - } - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h b/RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h deleted file mode 100644 index ab85c78861c..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/MultiTrackKinematicConstraint.h +++ /dev/null @@ -1,61 +0,0 @@ -#ifndef MultiTrackKinematicConstraint_H -#define MultiTrackKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" -#include "Geometry/CommonDetAlgo/interface/AlgebraicObjects.h" - - -/** - * Pure abstract class implementing constraint application - * on multiple tracks (back to back, collinearity etc.) - * To be used by KinematicConstraindeVertexFitter only - * Class caches the information about calculation of - * of constraint equation derivatives and values at given - * linearization point. Point should be of 7*n+3 dimensions - * Where n - number of particles. 7 - parametrization for - * particles is (x,y,z,p_x,p_y,p_z,m), for vertex (x_v,y_v,z_v) - * Fitter usually takes current parameters as the first step point - * and the change it to the result of the first iteration. - * - * Kirill Prokofiev, October 2003 - */ - -class MultiTrackKinematicConstraint -{ -public: - -/** - * Default constructor and destructor - */ - -MultiTrackKinematicConstraint() {} - -virtual ~MultiTrackKinematicConstraint() {} - -/** - * Methods making vector of values - * and derivative matrices with - * respect to vertex position and - * particle parameters. - * Input paramters are put into one vector: - * (Vertex position, particle_parameters_1,..., particle_parameters_n) - */ -virtual AlgebraicVector value(const vector<KinematicState>, - const GlobalPoint& ) const = 0; - -virtual AlgebraicMatrix parametersDerivative(const vector<KinematicState>, - const GlobalPoint& ) const = 0; - - -virtual AlgebraicMatrix positionDerivative(const vector<KinematicState>, - const GlobalPoint& ) const = 0; - -virtual int numberOfEquations() const = 0; - -virtual MultiTrackKinematicConstraint * clone() const = 0; - -}; - - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h b/RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h deleted file mode 100644 index c0935daa735..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef MultipleKinematicConstraint_H -#define MultipleKinematicConstraint_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicConstraint.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h" - - -/** - * Class implementing constraint multiplication - * for single or multiple track refit. Multiple track - * refit does not include vertexing constraint: only refit - * of tarjectory parameters is usually done. - */ - -class MultipleKinematicConstraint : public KinematicConstraint -{ -public: - - MultipleKinematicConstraint() - {em = true;} - - -/** - * Vector of values and matrix of derivatives - * calculated at given 7xNumberOfStates linearization point - */ - pair<AlgebraicVector,AlgebraicVector> value(const AlgebraicVector& exPoint) const; - - pair<AlgebraicMatrix, AlgebraicVector> derivative(const AlgebraicVector& exPoint) const; - -/** - * Vector of values and matrix of derivatives, - * calu=culated at linearization point of current - * particle states - */ - pair<AlgebraicVector, AlgebraicVector> value(const vector<RefCountedKinematicParticle> par) const; - - pair<AlgebraicMatrix, AlgebraicVector> derivative(const vector<RefCountedKinematicParticle> par) const; - - int numberOfEquations() const; - -/** - * Method adding new constraint to the list of - * existing ones. - */ - void addConstraint(KinematicConstraint * newConst) const; - - AlgebraicVector deviations(int nStates) const; - - bool isEmpty() const - {return em;} - - MultipleKinematicConstraint * clone() const - {return new MultipleKinematicConstraint(*this);} - -private: - - mutable vector<KinematicConstraint *> cts; - - mutable bool em; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h b/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h deleted file mode 100644 index 75b65c5fc30..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h +++ /dev/null @@ -1,151 +0,0 @@ -#ifndef ParticleKinematicLinearizedTrackState_H -#define ParticleKinematicLinearizedTrackState_H - -#include "RecoVertex/VertexPrimitives/interface/LinearizedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -// #include "CommonReco/CommonVertex/interface/ImpactPointMeasurement.h" -// #include "CommonReco/CommonVertex/interface/ImpactPointMeasurementExtractor.h" -#include "RecoVertex/VertexPrimitives/interface/RefCountedRefittedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h" - -class ParticleKinematicLinearizedTrackState : public LinearizedTrackState{ - -public: - - friend class ParticleKinematicLinearizedTrackStateFactory; - - ParticleKinematicLinearizedTrackState() - {jacobiansAvailable = false;} - - /** - * Returns a new linearized state with respect to a new linearization point. - * A new object of the same type is returned, without change to the existing one. - */ - virtual ReferenceCountingPointer<LinearizedTrackState> stateWithNewLinearizationPoint - (const GlobalPoint & newLP) const; - - /** - * The point at which the track state has been linearized - */ - const GlobalPoint & linearizationPoint() const { return theLinPoint; } - - -/** Method returning the constant term of the Taylor expansion - * of measurement equation - */ - AlgebraicVector constantTerm() const; - -/** Method returning the Position Jacobian from the Taylor expansion - * (Matrix A) - */ - AlgebraicMatrix positionJacobian() const; - -/** Method returning the Momentum Jacobian from the Taylor expansion - * (Matrix B) - */ - AlgebraicMatrix momentumJacobian() const; - -/** Method returning the parameters of the Taylor expansion - */ - AlgebraicVector parametersFromExpansion() const; - -/** Method returning the track state at the point of closest approach - * to the linearization point, in the transverse plane (a.k.a. - * transverse impact point). - */ - -/** - * extended perigee predicted parameters - */ - AlgebraicVector predictedStateParameters() const; - -/** - * returns predicted 4-momentum in extended perigee parametrization - */ - AlgebraicVector predictedStateMomentumParameters() const; - -/** - * 4x4 error matrix ofe xtended perigee mometum components - */ - AlgebraicSymMatrix predictedStateMomentumError() const; - -/** - * Full predicted weight matrix - */ - AlgebraicSymMatrix predictedStateWeight() const; - -/** - * Full predicted error matrix - */ - AlgebraicSymMatrix predictedStateError() const; - -// /** -// * Method returning the impact point measurement -// */ -// ImpactPointMeasurement impactPointMeasurement() const; - - TrackCharge charge() const; - - RefCountedKinematicParticle particle() const; - - bool operator ==(LinearizedTrackState& other)const; - - bool hasError() const; - - RefCountedRefittedTrackState createRefittedTrackState( - const GlobalPoint & vertexPosition, - const AlgebraicVector & vectorParameters, - const AlgebraicSymMatrix & covarianceMatrix)const; - - - double weightInMixture() const; - - std::vector<ReferenceCountingPointer<LinearizedTrackState> > components() - const; - - virtual reco::TransientTrack track() const; - - -private: - -/** Constructor with the linearization point and the track. - * Private, can only be used by LinearizedTrackFactory. - */ - ParticleKinematicLinearizedTrackState(const GlobalPoint & linP, RefCountedKinematicParticle & prt) - : theLinPoint(linP), part(prt), jacobiansAvailable(false), - theCharge(prt->currentState().particleCharge()) ,impactPointAvailable(false) - - {} - -/** - * Method calculating the track parameters and the Jacobians. - */ - void computeJacobians() const; -/** - * Method calculating the track parameters and the Jacobians for charged particles. - */ - void computeChargedJacobians() const; - -/** - * Method calculating the track parameters and the Jacobians for neutral particles. - */ - void computeNeutralJacobians() const; - - - GlobalPoint theLinPoint; - RefCountedKinematicParticle part; - TransientTrackKinematicStateBuilder builder; - - mutable bool errorAvailable; - mutable bool jacobiansAvailable; - mutable AlgebraicMatrix thePositionJacobian, theMomentumJacobian; - mutable PerigeeKinematicState thePredState; - mutable AlgebraicVector theConstantTerm; - mutable AlgebraicVector theExpandedParams; - - TrackCharge theCharge; -// ImpactPointMeasurementExtractor theIPMExtractor; - mutable bool impactPointAvailable; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h b/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h deleted file mode 100644 index 05b252322a5..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef ParticleKinematicLinearizedTrackStateFactory_H -#define ParticleKinematicLinearizedTrackStateFactory_H - -#include "RecoVertex/VertexPrimitives/interface/RefCountedLinearizedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h" - -class ParticleKinematicLinearizedTrackStateFactory{ - -/** - * Class building LinearizedTrackState needed for - * Kalman based vertex fit out of track(helix like) KinematicParticle - */ - -public: - -/** - * Deafault constructor and desructor - */ - ParticleKinematicLinearizedTrackStateFactory(){} - - ~ParticleKinematicLinearizedTrackStateFactory(){} - -/** - * Method constructing KinearizedTrackState out of - * KinematicParticle and Linearization point. - */ - RefCountedLinearizedTrackState linearizedTrackState(const GlobalPoint & linP, - RefCountedKinematicParticle & prt) const; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h b/RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h deleted file mode 100644 index 94d19f3490e..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef ParticleMass_H -#define ParticleMass_H - - -typedef double ParticleMass; - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h b/RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h deleted file mode 100644 index c00be5f3521..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h +++ /dev/null @@ -1,102 +0,0 @@ -#ifndef PerigeeKinematicState_H -#define PerigeeKinematicState_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryParameters.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ExtendedPerigeeTrajectoryError.h" - -/** - * Class caching the "extended" - * perigee parametrization for - * vertex fitting inside the - * KinematicFit library. - * Extended parameters are: - * (epsilon, rho, phi, theta_p, z_p, m) - * (see TrajectoryStateClosestToPoint - * class for reference) - * - * Kirill Prokofiev, august 2003 - */ - -class PerigeeKinematicState -{ -public: - - PerigeeKinematicState() - { - vl = false; - errorIsAvailable = false; - } - - virtual ~PerigeeKinematicState(){} -/** - * Access methods - */ - bool hasError() const - { - if(!(isValid()))throw VertexException("PerigeeKinematicState::error is requested for the invalid state"); - return errorIsAvailable; - } - - bool isValid() const - {return vl;} - - const KinematicState theState() const - { - if(!isValid()) throw VertexException("PerigeeKinematicState::initial state is requested for the invalid state"); - return inState; - } - -/** - * Returns the reference point - */ - const GlobalPoint referencePoint() const - { - if(!isValid()) throw VertexException("PerigeeKinematicState::point is requested for the invalid state"); - return point; - } - -/** - * Returns the error matrix of extended - * perigee parametrization - */ - const ExtendedPerigeeTrajectoryError& perigeeError() const - { - if(!(isValid())) throw VertexException("PerigeeKinematicState::requesting perigee error for invalid state"); - if(!(hasError())) throw VertexException("PerigeeKinematicState::requesting perigee error when none available"); - return cov; - } - -/** - * Returns the extended perigee parameters - */ - const ExtendedPerigeeTrajectoryParameters & perigeeParameters() const - { - if(!(isValid())) throw VertexException("PerigeeKinematicState::requesting perigee parameters for invalid state"); - return par; - } - -private: - - friend class TransientTrackKinematicStateBuilder; - - - PerigeeKinematicState(const KinematicState& state, const GlobalPoint& pt); -/* - AlgebraicMatrix jacobianKinematicToExPerigee(const KinematicState& state, - const GlobalPoint& pt)const; - AlgebraicMatrix jacobianExPerigeeToKinematic(const ExtendedPerigeeTrajectoryParameters& state, - const GlobalPoint& point)const; -*/ - AlgebraicMatrix jacobianCurvilinear2Perigee(const FreeTrajectoryState& fts) const; - -private: - GlobalPoint point; - ExtendedPerigeeTrajectoryParameters par; - ExtendedPerigeeTrajectoryError cov; - KinematicState inState; - bool errorIsAvailable; - bool vl; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h b/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h deleted file mode 100644 index 135fa185eb3..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef RefCountedKinematicParticle_H -#define RefCountedKinematicParticle_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" -//#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h" - -typedef ReferenceCountingPointer<KinematicParticle> RefCountedKinematicParticle; - -//template<class T, class V> -// bool operator==(const ReferenceCountingPointer<T> & rh, const -// ReferenceCountingPointer<V> & lh) -// { return rh.get() == lh.get();} - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h b/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h deleted file mode 100644 index 99e8a2f536c..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicTree.h +++ /dev/null @@ -1,8 +0,0 @@ -#ifndef RefCountedKinematicTree_H -#define RefCountedKinematicTree_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h" - -typedef ReferenceCountingPointer<KinematicTree> RefCountedKinematicTree; - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h b/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h deleted file mode 100644 index be4d843fbc1..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicVertex.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef RefCountedKinematicVertex_H -#define RefCountedKinematicVertex_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h" -//#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" - -typedef ReferenceCountingPointer<KinematicVertex> RefCountedKinematicVertex; - -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h b/RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h deleted file mode 100644 index 7903cc150bb..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef TrackKinematicStatePropagator_H -#define TrackKinematicStatePropagator_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" -#include "Geometry/Vector/interface/GlobalTag.h" -#include "Geometry/Vector/interface/Point3DBase.h" -#include "Geometry/Vector/interface/Vector3DBase.h" -#include "TrackingTools/TrajectoryParametrization/interface/GlobalTrajectoryParameters.h" -#include "TrackingTools/GeomPropagators/interface/HelixBarrelPlaneCrossingByCircle.h" -#include "Geometry/Surface/interface/BoundPlane.h" - -/** - * Propagator for TransientTrack based KinematicStates. - * Does not include the material. - */ - - -class TrackKinematicStatePropagator : public KinematicStatePropagator -{ -public: - - TrackKinematicStatePropagator() {} - - virtual ~TrackKinematicStatePropagator() {} - - -/** - * Propagation to the point of closest approach in - * transverse plane to the given point - */ - virtual KinematicState propagateToTheTransversePCA(const KinematicState& state, const GlobalPoint& referencePoint) const; - - virtual std::pair<HelixBarrelPlaneCrossingByCircle,BoundPlane*> planeCrossing(const FreeTrajectoryState& par, - const GlobalPoint& point) const; - - /** - * Clone method reimplemented from - * abstract class - */ - virtual KinematicStatePropagator * clone() const - {return new TrackKinematicStatePropagator(*this);} - -private: - -/** - * Internal private methods, distinguishing between the propagation of neutrals - * and propagation of cahrged tracks. - */ - virtual KinematicState propagateToTheTransversePCACharged(const KinematicState& state, const GlobalPoint& referencePoint) const; - - virtual KinematicState propagateToTheTransversePCANeutral(const KinematicState& state, const GlobalPoint& referencePoint) const; - - typedef Point3DBase< double, GlobalTag> GlobalPointDouble; - typedef Vector3DBase< double, GlobalTag> GlobalVectorDouble; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h b/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h deleted file mode 100644 index c9bd66e7b3d..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef TransientTrackKinematicParticle_H -#define TransientTrackKinematicParticle_H - -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h" -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" - -/** - * Class representing KinematicParticle - * created fromTransientTrack. Uses specific - * KinematicState builders and propagators. - * Extends KinematicParticle class - * implementing its abstract methods and - * adding several new ones. - */ -class TransientTrackKinematicParticle : public KinematicParticle -{ -public: - -/** - * Constructor using KinematicState, Previous state of particle - * last constraint used and original TransientTrack, if any. - * All the pointers can be set to 0 if there's no such information - * available. Constructor should be use by specific factory only. - * Propagator for TransientTrack KinematicState is used. - */ - TransientTrackKinematicParticle(const KinematicState& kineState,float& chiSquared, - float& degreesOfFr,KinematicConstraint * lastConstraint, - ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicStatePropagator * pr,const reco::TransientTrack * initialTrack = 0); - - virtual ~TransientTrackKinematicParticle(); - -/** - * Comparison by contents operator - * Returns TRUE if initial TransientTracks - * match(if they exist). If not, - * compares the initial KinematicStates - * Retunes true if they match. - */ - bool operator==(const KinematicParticle& other)const; - - bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const; - - bool operator!=(const KinematicParticle& other)const; - -/** - * Access to KinematicState of particle - * at given point - */ - KinematicState stateAtPoint(const GlobalPoint& point)const; - -/** - * Access to initial TransientTrack (if any) - */ - const reco::TransientTrack * initialTransientTrack() const; - -/** - * Method producing new particle with refitted parameters. - * Current state is then shifted to previous state. - * RCP<TransientTrackKinematicParticle> is returned. - */ - ReferenceCountingPointer<KinematicParticle> refittedParticle(const KinematicState& state, - float chi2, float ndf, KinematicConstraint * cons = 0)const; - -/** - * Method returning LinearizedTrackState of the particle needed for - * Kalman flter vertex fit. This implementation uses the ParticleLinearizedTrackStateFactory class. - */ - RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const; - -private: - -//initial TransientTrack (if any) - const reco::TransientTrack * inTrack; - -//propagator for kinematic states - KinematicStatePropagator * propagator; - -//LinearizedTrackStateFactory specific for this -//type of particle - ParticleKinematicLinearizedTrackStateFactory linFactory; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h b/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h deleted file mode 100644 index c55fe4180ab..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h +++ /dev/null @@ -1,67 +0,0 @@ -#ifndef TransientTrackKinematicStateBuilder_H -#define TransientTrackKinematicStateBuilder_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h" -#include "TrackingTools/TransientTrack/interface/TransientTrack.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleMass.h" - -/** - * Kinematic State builder for TransientTrack based kinematic states. - * Uses TrackKinematicStatePropagator for state propagation. - */ - -class TransientTrackKinematicStateBuilder -{ - -public: - TransientTrackKinematicStateBuilder(){} - - ~TransientTrackKinematicStateBuilder(){} - -/** - * Operator creating a KinematcState at RecObj definition point - * with given mass guess and sigma - */ - KinematicState operator()(const reco::TransientTrack& track, const ParticleMass& m, float m_sigma) const ; - - - -/** - * Operator creating a KinematicState directly out of - * 7 state parameters and their covariance matrix - */ - KinematicState operator()(const KinematicParameters& par, const KinematicParametersError& er, - const TrackCharge& ch) const; - -/** - * Operator creating a KinematicState out of a RecObj - * and propagating it to the given point using propagator - * provided by user - */ - KinematicState operator()(const reco::TransientTrack& track, const GlobalPoint& point, const ParticleMass& m, - float m_sigma) const; - -/** - * Operator to create a particle state at point - * using the FreeTrajectoryState, charge and mass guess for the particle. The state will be - * created by propagating FTS to the transvese point of closest approach to the given point - */ - KinematicState operator()(const FreeTrajectoryState& state, const ParticleMass& mass, - float m_sigma, const GlobalPoint& point) const; - - PerigeeKinematicState operator()(const KinematicState& state, const GlobalPoint& point)const; - -private: - - KinematicState buildState(const FreeTrajectoryState & state, const ParticleMass& mass, - float m_sigma)const; - - - - - TrackKinematicStatePropagator propagator; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h b/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h deleted file mode 100644 index 45ca1161b0c..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h +++ /dev/null @@ -1,74 +0,0 @@ -#ifndef VirtualKinematicParticle_H -#define VirtualKinematicParticle_H - -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h" - -/** - * Class representing KinematicParticle - * created as a result of kinematic fit. - * uses the same state propagator as a - * TransientTrackKinematicParticle - */ -class VirtualKinematicParticle:public KinematicParticle -{ - public: - -/** - * Constructor using KinematicState, Previous state of particle - * and last constraint used . - * All the pointers can be set to 0 if there's no such information - * available. Constructor should be use by specific factory only. - * Propagator for TransientTrackKinematicState is used. - */ - VirtualKinematicParticle(const KinematicState& kineState,float& chiSquared, - float& degreesOfFr, KinematicConstraint * lastConstraint, - ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicStatePropagator * pr); - - virtual ~VirtualKinematicParticle(); - -/** - * Comparison by contents operator - * Returns TRUE if initial TransientTracks - * match(if they exist). If not, - * compares the initial KinematicStates - * Retunes true if they match. - */ - bool operator==(const KinematicParticle& other)const; - - bool operator==(const ReferenceCountingPointer<KinematicParticle>& other) const; - - bool operator!=(const KinematicParticle& other)const; - -/** - * Access to KinematicState of particle - * at given point - */ - KinematicState stateAtPoint(const GlobalPoint& point)const; - -/** - * Method producing new particle with refitted parameters. - * Current state is then shifted to previous state. - * RCP<VirtualKinematicParticle> is returned. - */ - RefCountedKinematicParticle refittedParticle(const KinematicState& state, - float chi2, float ndf, KinematicConstraint * cons = 0)const; - -/** - * Method returning LinearizedTrackState of the particle needed for - * Kalman flter vertex fit. This implementation uses the ParticleLinearizedTrackStateFactory class. - */ - RefCountedLinearizedTrackState particleLinearizedTrackState(const GlobalPoint& point)const; - - private: - -//propagator for kinematic states - KinematicStatePropagator * propagator; - -//LinearizedTrackStateFactory specific for this -//type of particle - ParticleKinematicLinearizedTrackStateFactory linFactory; -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h b/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h deleted file mode 100644 index d2b0f505bb8..00000000000 --- a/RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef VirtualKinematicParticleFactory_H -#define VirtualKinematicParticleFactory_H - -#include "RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h" -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h" -#include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h" -#include "RecoVertex/KinematicFitPrimitives/interface/RefCountedKinematicParticle.h" - -class VirtualKinematicParticleFactory -{ -public: - -/** - * Factory constructor taking a KinematicStatePropagator - */ - VirtualKinematicParticleFactory(); - -/** - * Factory constructor taking a KinematicStatePropagator - */ - VirtualKinematicParticleFactory(KinematicStatePropagator * pr); - -/** - * Default destructor - */ - ~VirtualKinematicParticleFactory() - {delete propagator;} - -/** - * Method building a particle out of new created kinematic state, - * chi2, number of degrees of freedom and history information - */ - RefCountedKinematicParticle particle(const KinematicState& kineState, float& chiSquared, - float& degreesOfFr, ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicConstraint * lastConstraint = 0)const; -private: - - KinematicStatePropagator * propagator; - const TransientTrackKinematicStateBuilder builder; - -}; -#endif diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicParameters.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicParameters.cc deleted file mode 100644 index f3f3479462e..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicParameters.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParameters.h" - -GlobalVector KinematicParameters::momentum() const -{return GlobalVector(par(4),par(5),par(6));} - -GlobalPoint KinematicParameters::position() const -{return GlobalPoint(par(1),par(2),par(3));} - diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicParametersError.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicParametersError.cc deleted file mode 100644 index 934bdc692a5..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicParametersError.cc +++ /dev/null @@ -1 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParametersError.h" diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicParticle.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicParticle.cc deleted file mode 100644 index 531f9f59024..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicParticle.cc +++ /dev/null @@ -1,33 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" - - -bool KinematicParticle::operator<(const KinematicParticle& other)const -{ - bool res = false; - if(this < &other) res=true; - return res; -} - -KinematicState KinematicParticle::initialState()const -{return initState;} - -KinematicState KinematicParticle::currentState()const -{return cState;} - -KinematicConstraint * KinematicParticle::lastConstraint()const -{return lConstraint;} - -ReferenceCountingPointer<KinematicParticle> KinematicParticle::previousParticle()const -{return pState;} - -KinematicTree * KinematicParticle::correspondingTree()const -{return tree;} - -float KinematicParticle::chiSquared()const -{return chi2;} - -float KinematicParticle::degreesOfFreedom()const -{return ndf;} - -void KinematicParticle::setTreePointer(KinematicTree * tr)const -{tree = tr;} diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicParticleFactoryFromTransientTrack.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicParticleFactoryFromTransientTrack.cc deleted file mode 100644 index 40ae9ee1af2..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicParticleFactoryFromTransientTrack.cc +++ /dev/null @@ -1,66 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticleFactoryFromTransientTrack.h" - -KinematicParticleFactoryFromTransientTrack::KinematicParticleFactoryFromTransientTrack() -{propagator = new TrackKinematicStatePropagator();} - - -KinematicParticleFactoryFromTransientTrack::KinematicParticleFactoryFromTransientTrack(KinematicStatePropagator * pr) -{ - if(pr != 0) - { - propagator = pr->clone(); - }else{ - propagator = new TrackKinematicStatePropagator(); - } -} - -RefCountedKinematicParticle KinematicParticleFactoryFromTransientTrack::particle(const reco::TransientTrack& initialTrack, - const ParticleMass& massGuess, - float chiSquared, - float degreesOfFr, - float& m_sigma) const -{ -// cout<<"calling the state builder"<<endl; - KinematicState initState = builder(initialTrack,massGuess, m_sigma); - const reco::TransientTrack * track = &initialTrack; - KinematicConstraint * lastConstraint = 0; - ReferenceCountingPointer<KinematicParticle> previousParticle = 0; - return ReferenceCountingPointer<KinematicParticle>(new TransientTrackKinematicParticle(initState, - chiSquared,degreesOfFr, lastConstraint, previousParticle, propagator, track)); -} - -RefCountedKinematicParticle KinematicParticleFactoryFromTransientTrack::particle(const reco::TransientTrack& initialTrack, - const ParticleMass& massGuess, - float chiSquared, - float degreesOfFr, - const GlobalPoint& expPoint, - float m_sigma) const -{ -// FreeTrajectoryState st(initialTrack.impactPointTSCP().theState()); - KinematicState initState = builder(initialTrack.impactPointTSCP().theState(), massGuess, m_sigma, expPoint); - const reco::TransientTrack * track = &initialTrack; - KinematicConstraint * lastConstraint = 0; - ReferenceCountingPointer<KinematicParticle> previousParticle = 0; - return ReferenceCountingPointer<KinematicParticle>(new TransientTrackKinematicParticle(initState, - chiSquared,degreesOfFr, lastConstraint, previousParticle, propagator, track)); -} - - -RefCountedKinematicParticle KinematicParticleFactoryFromTransientTrack::particle(const KinematicState& kineState, - float& chiSquared, - float& degreesOfFr, - ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicConstraint * lastConstraint) const -{ - const reco::TransientTrack * track; - KinematicParticle * prp = &(*previousParticle); -// FIXME -// if(previousParticle.isValid()){ - TransientTrackKinematicParticle * pr = dynamic_cast<TransientTrackKinematicParticle * >(prp); - if(pr == 0){ - throw VertexException("KinematicParticleFactoryFromTransientTrack::Previous particle passed is not TransientTrack based!"); - }else{track = pr->initialTransientTrack();} -// }else{track = 0;} - return ReferenceCountingPointer<KinematicParticle>(new TransientTrackKinematicParticle(kineState, - chiSquared, degreesOfFr, lastConstraint, previousParticle, propagator, track)); -} diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicPerigeeConversions.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicPerigeeConversions.cc deleted file mode 100644 index c6555a10d52..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicPerigeeConversions.cc +++ /dev/null @@ -1,147 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - - -ExtendedPerigeeTrajectoryParameters KinematicPerigeeConversions:: - extendedPerigeeFromKinematicParameters( - const KinematicState& state, - const GlobalPoint& point) const -{ -//making an extended perigee parametrization -//out of kinematic state and point defined - AlgebraicVector res(6); - res(6) = state.mass(); - AlgebraicVector par = state.kinematicParameters().vector(); - GlobalVector impactDistance = state.globalPosition() - point; - double theta = state.globalMomentum().theta(); - double phi = state.globalMomentum().phi(); - double pt = state.globalMomentum().transverse(); -// double field = MagneticField::inGeVPerCentimeter(state.globalPosition()).z(); - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(state.globalPosition()).z(); -// double signTC = -state.particleCharge(); -// double transverseCurvature = field/pt*signTC; - -//making a proper sign for epsilon - double positiveMomentumPhi = ((phi>0) ? phi : (2*M_PI + phi)); - double positionPhi = impactDistance.phi(); - double positivePositionPhi = - ( (positionPhi>0) ? positionPhi : (2*M_PI+positionPhi) ); - double phiDiff = positiveMomentumPhi - positivePositionPhi; - if (phiDiff<0.0) phiDiff+= (2*M_PI); - double signEpsilon = ( (phiDiff > M_PI) ? -1.0 : 1.0); - - double epsilon = signEpsilon * - sqrt(impactDistance.x()*impactDistance.x() + - impactDistance.y()*impactDistance.y()); - - double signTC = -state.particleCharge(); - bool isCharged = (signTC!=0); - - if (isCharged) - { - res(1) = field / pt*signTC; - }else{res(1) = 1 / pt;} - - res(2) = theta; - res(3) = phi; - res(4) = epsilon; - res(5) = impactDistance.z(); - return ExtendedPerigeeTrajectoryParameters(res,state.particleCharge()); -} - - KinematicParameters KinematicPerigeeConversions::kinematicParametersFromExPerigee( - const ExtendedPerigeeTrajectoryParameters& pr, - const GlobalPoint& point )const -{ - AlgebraicVector par(7); - AlgebraicVector theVector = pr.vector(); - double pt; - if(pr.charge() !=0){ - pt = std::abs(TrackingTools::FakeField::Field::inGeVPerCentimeter(point).z() / theVector(1)); - }else{pt = 1/theVector(1);} - par(7) = theVector(6); - par(1) = theVector[3]*sin(theVector[2])+point.x(); - par(2) = -theVector[3]*cos(theVector[2])+point.y(); - par(3) = theVector[4]+point.z(); - par(4) = cos(theVector[2]) * pt; - par(5) = sin(theVector[2]) * pt; - par(6) = pt/tan(theVector[1]); - - return KinematicParameters(par); -} - - -KinematicState KinematicPerigeeConversions::kinematicState(const AlgebraicVector& momentum, - const GlobalPoint& referencePoint, - const TrackCharge& charge, - const AlgebraicMatrix& theCovarianceMatrix) const -{ - AlgebraicMatrix param2cart = jacobianParameters2Kinematic - (momentum, referencePoint, charge); - AlgebraicSymMatrix kinematicErrorMatrix(7,0); - kinematicErrorMatrix.assign(param2cart*theCovarianceMatrix*param2cart.T()); - - KinematicParametersError kinematicParamError(kinematicErrorMatrix); - AlgebraicVector par(7); - AlgebraicVector mm = momentumFromPerigee(momentum, referencePoint, charge); - par(1) = referencePoint.x(); - par(2) = referencePoint.y(); - par(3) = referencePoint.z(); - par(4) = mm(1); - par(5) = mm(2); - par(6) = mm(3); - par(7) = mm(4); - KinematicParameters kPar(par); - return KinematicState(kPar, kinematicParamError, charge); -} - -AlgebraicMatrix KinematicPerigeeConversions::jacobianParameters2Kinematic(const AlgebraicVector& momentum, - const GlobalPoint& referencePoint, - const TrackCharge& charge)const -{ - double factor = 1; - if (charge != 0){ - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(referencePoint).z(); - factor = -field*charge; - } - AlgebraicMatrix frameTransJ(7, 7, 0); - frameTransJ[0][0] = 1; - frameTransJ[1][1] = 1; - frameTransJ[2][2] = 1; - frameTransJ[6][6] = 1; - frameTransJ[3][3] = - factor * cos(momentum[2]) / (momentum[0]*momentum[0]); - frameTransJ[4][3] = - factor * sin(momentum[2]) / (momentum[0]*momentum[0]); - frameTransJ[5][3] = - factor / tan(momentum[1]) / (momentum[0]*momentum[0]); - - frameTransJ[3][5] = - factor * sin(momentum[1]) / (momentum[0]); - frameTransJ[4][5] = factor * cos(momentum[1]) / (momentum[0]); - frameTransJ[5][4] = -factor/ (momentum[0]*sin(momentum[1])*sin(momentum[1])); - - return frameTransJ; - -} - - -AlgebraicVector KinematicPerigeeConversions::momentumFromPerigee(const AlgebraicVector& momentum, - const GlobalPoint& referencePoint, - const TrackCharge& ch)const -{ - AlgebraicVector mm(4); - double pt; - if(ch !=0){ -// pt = abs(MagneticField::inGeVPerCentimeter(referencePoint).z() / momentum[0]); - pt = std::abs(TrackingTools::FakeField::Field::inGeVPerCentimeter(referencePoint).z() / momentum[0]); - }else{pt = 1/ momentum[0];} - mm(1) = cos(momentum[2]) * pt; - mm(2) = sin(momentum[2]) * pt; - mm(3) = pt/tan(momentum[1]); - mm(4) = momentum(4); - return mm; -} - - - - - - - diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicRefittedTrackState.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicRefittedTrackState.cc deleted file mode 100644 index 40ad4d0b0ac..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicRefittedTrackState.cc +++ /dev/null @@ -1,89 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h" -#include "RecoVertex/VertexPrimitives/interface/RefCountedRefittedTrackState.h" -#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h" -#include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - - -KinematicRefittedTrackState::KinematicRefittedTrackState(const KinematicState& st) -{state = st;} - -AlgebraicVector KinematicRefittedTrackState::parameters() const -{return state.kinematicParameters().vector();} - -AlgebraicSymMatrix KinematicRefittedTrackState::covariance() const -{return state.kinematicParametersError().matrix();} - -FreeTrajectoryState KinematicRefittedTrackState::freeTrajectoryState() const -{ - return state.freeTrajectoryState(); -} - -GlobalPoint KinematicRefittedTrackState::position() const -{return state.globalPosition();} - -AlgebraicVector KinematicRefittedTrackState::kinematicMomentumVector() const -{ - GlobalVector mm = state.globalMomentum(); - AlgebraicVector mr(4); - mr(1) = mm.x(); - mr(2) = mm.y(); - mr(3) = mm.z(); - mr(4) = state.mass(); - return mr; -} - -AlgebraicVector KinematicRefittedTrackState::momentumVector() const -{ - - KinematicPerigeeConversions conv; - - ExtendedPerigeeTrajectoryParameters pState = - conv.extendedPerigeeFromKinematicParameters(state,state.globalPosition()); - - AlgebraicVector mr(4); - mr(4) = pState.vector()(6); - mr(1) = pState.vector()(1); - mr(2) = pState.vector()(2); - mr(3) = pState.vector()(3); - return mr; -} - - -TrajectoryStateOnSurface KinematicRefittedTrackState::trajectoryStateOnSurface(const Surface & surface) const -{ - AnalyticalPropagator thePropagator(TrackingTools::FakeField::Field::field(), - anyDirection); - return thePropagator.propagate(freeTrajectoryState(), surface); -} - -TrajectoryStateOnSurface KinematicRefittedTrackState::trajectoryStateOnSurface(const Surface & surface, - const Propagator & propagator) const -{ - std::auto_ptr<Propagator> thePropagator( propagator.clone()); - thePropagator->setPropagationDirection(anyDirection); - return thePropagator->propagate(freeTrajectoryState(), surface); -} - - double KinematicRefittedTrackState::weight() const -{ return 1.;} - -ReferenceCountingPointer<RefittedTrackState> KinematicRefittedTrackState::stateWithNewWeight - (const double newWeight) const -{ - std::cout<<"WARNING: Change weight for Kinematic state called, weigt will stay to be equal 1."<<std::endl; - return RefCountedRefittedTrackState( - const_cast<KinematicRefittedTrackState*>(this)); -} - -std::vector< ReferenceCountingPointer<RefittedTrackState> > KinematicRefittedTrackState::components() const -{ - std::vector<RefCountedRefittedTrackState> result; result.reserve(1); - result.push_back(RefCountedRefittedTrackState( - const_cast<KinematicRefittedTrackState*>(this))); - return result; -} - - - diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicState.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicState.cc deleted file mode 100644 index 2a10bd2c69e..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicState.cc +++ /dev/null @@ -1,56 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicState.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - -KinematicState::KinematicState(const KinematicParameters& parameters, - const KinematicParametersError& error, - const TrackCharge& charge): - param(parameters),err(error), ch(charge), vl(true) -{} - - -bool KinematicState::operator==(const KinematicState& other) const -{ - bool res = false; - if((kinematicParameters().vector() == other.kinematicParameters().vector())&& - (kinematicParametersError().matrix() == other.kinematicParametersError().matrix())) res = true; - return res; -} - -ParticleMass KinematicState::mass() const -{return param.vector()(7);} - -KinematicParameters KinematicState::kinematicParameters() const -{return param;} - -KinematicParametersError KinematicState::kinematicParametersError() const -{return err;} - -GlobalVector KinematicState::globalMomentum() const -{return param.momentum();} - -GlobalPoint KinematicState::globalPosition() const -{return param.position();} - -TrackCharge KinematicState::particleCharge() const -{return ch;} - -FreeTrajectoryState KinematicState::freeTrajectoryState() const -{ - GlobalTrajectoryParameters globalPar(globalPosition(),globalMomentum(),particleCharge(), - TrackingTools::FakeField::Field::field()); - AlgebraicSymMatrix cError = kinematicParametersError().matrix().sub(1,6); - CartesianTrajectoryError cartError(cError); -// cout<<"conversion called"<<endl; -// cout<<"parameters::position"<<globalPosition()<<endl; -// cout<<"parameters::momentum"<<globalMomentum()<<endl; -// cout<<"parameters::error"<<cError<<endl; - return FreeTrajectoryState(globalPar,cartError); -} -/* -AlgebraicSymMatrix KinematicState::weightMatrix() const -{ - GlobalTrajectoryParameters gtp = freeTrajectoryState().parameters(); - cout<<"curvilinear error is"<<freeTrajectoryState().curvilinearError().matrix()<<endl; - return err.weightMatrix(gtp); -} -*/ diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicTree.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicTree.cc deleted file mode 100644 index 09c1e05685a..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicTree.cc +++ /dev/null @@ -1,439 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicTree.h" - -KinematicTree::KinematicTree() -{ - empt = true; - treeWalker = 0; -} - - KinematicTree::~KinematicTree() -{ - delete treeWalker; -} - - -bool KinematicTree::isEmpty() const - {return empt;} - -bool KinematicTree::isConsistent() const -{ - movePointerToTheTop(); - bool des = false; - if(!treeWalker->nextSibling()) des = true; - return des; -} - -void KinematicTree::addParticle(RefCountedKinematicVertex prodVtx, - RefCountedKinematicVertex decVtx, - RefCountedKinematicParticle part) -{ - part->setTreePointer(this); - treeGraph.addEdge(prodVtx,decVtx,part); - empt = false; - movePointerToTheTop(); -} - -vector<RefCountedKinematicParticle> KinematicTree::finalStateParticles() const -{ - if(isEmpty() || !(isConsistent())) - { - throw VertexException("KinematicTree::finalStateParticles; tree is empty or not consistent"); - }else{ - RefCountedKinematicParticle initial = currentParticle(); - vector<RefCountedKinematicParticle> rs; - movePointerToTheTop(); - if(!(leftFinalParticle())) - { - cout<<"top particle has no daughters, empty vector returned"<<endl; - }else{ -//now pointer is at the most left final particle - rs.push_back(currentParticle()); - bool next_right = true; - bool down = true; - bool up = true; - do - { - next_right = movePointerToTheNextChild(); - if(next_right) - { -//if there's a way to the right, -//we go right and down possible - down = leftFinalParticle(); - rs.push_back(currentParticle()); - }else{ -//once there's no way to right anymore -//trying to find a way upper - up = movePointerToTheMother(); - } -//loop stops when we are at the top: -//no way up, no way to the right - }while(up); - } -//getting the pointer back - bool back = findParticle(initial); - if(!back) throw VertexException("KinematicTree::FinalStateParticles; error occured while getting back"); - return rs; - } -} - -bool KinematicTree::leftFinalParticle() const -{ - bool res = false; - if(movePointerToTheFirstChild()) - { - res = true; - bool next = true; - do - { - next = movePointerToTheFirstChild(); - }while(next); - }else{ - res =false; - } - return res; -} - - - RefCountedKinematicParticle KinematicTree::topParticle() const - { - if(isEmpty()) throw VertexException("KinematicTree::topParticle; tree is empty!"); -//putting pointer to the top of the tree - movePointerToTheTop(); - return treeWalker->current().second; - } - - - RefCountedKinematicVertex KinematicTree::currentDecayVertex() const - { - if(isEmpty()) throw VertexException("KinematicTree::currentDecayVertex; tree is empty!"); - return treeWalker->current().first; - } - - pair<bool,RefCountedKinematicParticle> KinematicTree::motherParticle() const - { - if(isEmpty()) throw VertexException("KinematicTree::motherParticle; tree is empty!"); - bool top = currentProductionVertex()->vertexIsValid(); - RefCountedKinematicParticle cr = treeWalker->current().second; - bool up = treeWalker->parent(); - pair<bool,RefCountedKinematicParticle> res; - if(up && top){ - RefCountedKinematicParticle pr = treeWalker->current().second; - -//now putting the pointer back - bool fc = treeWalker->firstChild(); - if(!fc) throw VertexException("KinematicTree::motherParticle; tree is incorrect!"); - if(*(treeWalker->current().second) != *cr) - { - do{ - bool nx = treeWalker->nextSibling(); - if(!nx) throw VertexException("KinematicTree::motherParticle; tree is incorrect!"); - }while(*(treeWalker->current().second) != *cr); - } - res = pair<bool,RefCountedKinematicParticle>(true,pr); - return res; - }else{ - RefCountedKinematicParticle fk; - return pair<bool,RefCountedKinematicParticle>(false,fk); - } - } - - vector<RefCountedKinematicParticle> KinematicTree::daughterParticles() const - { - if(isEmpty()) throw VertexException("KinematicTree::daughterParticles; tree is empty!"); - vector<RefCountedKinematicParticle> sResult; - RefCountedKinematicParticle initial = currentParticle(); - bool down = treeWalker->firstChild(); - if(down) - { - sResult.push_back(treeWalker->current().second); - bool sibling = true; - do - { - sibling = treeWalker->nextSibling(); - if(sibling) sResult.push_back(treeWalker->current().second); - }while(sibling); - } - -//getting the pointer back to the mother - bool back = findParticle(initial); - if(!back) throw VertexException("KinematicTree::daughterParticles; error occured while getting back"); - return sResult; - } - -void KinematicTree::movePointerToTheTop() const -{ - if(isEmpty()) throw VertexException("KinematicTree::movePointerToTheTop; tree is empty!"); - delete treeWalker; - treeWalker = new graphwalker<RefCountedKinematicVertex, - RefCountedKinematicParticle>(treeGraph); -//now pointer is a pair: fake vertex and -//icoming 0 pointer to the particle -//moving it to decayed particle - bool move = treeWalker->firstChild(); - if(!move) throw VertexException("KinematicTree::movePointerToTheTop; non consistent tree?"); -} - -RefCountedKinematicVertex KinematicTree::currentProductionVertex() const -{ - if(isEmpty()) throw VertexException("KinematicTree::currentProductionVertex; tree is empty!"); -//current particle - RefCountedKinematicParticle initial = currentParticle(); - - bool up; - bool down; - RefCountedKinematicVertex res; - up = movePointerToTheMother(); - - if(up) - { - res = treeWalker->current().first; - -//pointer moved so we going back - down = treeWalker->firstChild(); - -//_down_ variable is always TRUE here, if -//the tree is valid. - if(down){ - if(*initial == *treeWalker->current().second) - { - return res; - }else{ - bool next = true; - do - { - next = treeWalker->nextSibling(); - if(*treeWalker->current().second == *initial) next = false; - }while(next); - return res; - } - }else{throw VertexException("KinematicTree::Navigation failed, tree invalid?");} - }else - { -//very unprobable case. This efectively means that user is -//already out of the tree. Moving back to the top - delete treeWalker; - treeWalker = new graphwalker<RefCountedKinematicVertex, - RefCountedKinematicParticle> - (treeGraph); - res = treeWalker->current().first; -//now pointer is a pair: fake vertex and -//icoming 0 pointer to the particle -//moving it to decayed particle - bool move = treeWalker->firstChild(); - if(!move) throw VertexException("KinematicTree::movePointerToTheTop; non consistent tree?"); - return res; - } -} - -RefCountedKinematicParticle KinematicTree::currentParticle() const -{ - if(isEmpty()) throw VertexException("KinematicTree::currentParticle; tree is empty!"); - return treeWalker->current().second; -} - -bool KinematicTree::movePointerToTheMother() const -{ - if(isEmpty()) throw VertexException("KinematicTree::movePointerToTheMother; tree is empty!"); - bool up = treeWalker->parent(); - bool cr = treeWalker->current().first->vertexIsValid(); - return (up && cr); -} - -bool KinematicTree::movePointerToTheFirstChild() const -{ - if(isEmpty()) throw VertexException("KinematicTree::movePointerToTheFirstChild; tree is empty!"); - return treeWalker->firstChild(); -} - -bool KinematicTree::movePointerToTheNextChild() const -{ - if(isEmpty()) throw VertexException("KinematicTree::movePointerToTheNextChild; tree is empty!"); - bool res = treeWalker->nextSibling(); - return res; -} - -bool KinematicTree::findParticle(RefCountedKinematicParticle part) const -{ - if(isEmpty() || !(isConsistent())) - { - throw VertexException("KinematicTree::findParticle; tree is empty or not consistent"); - }else{ - bool res = false; - movePointerToTheTop(); - if(*(currentParticle()) == *part) - { - res = true; - }else if(leftBranchSearch(part)){ - res = true; - }else{ - bool found = false; - bool up = true; - bool next_right = false; - do - { -// if(*(currentParticle()) == *part) found = true; - next_right = movePointerToTheNextChild(); - if(next_right) - { - found = leftBranchSearch(part); - }else{ - up = movePointerToTheMother(); - if(*(currentParticle()) == *part) found = true; - } - }while(up && !found); - res = found; - } - return res; - } -} - - -bool KinematicTree::leftBranchSearch(RefCountedKinematicParticle part) const -{ - bool found = false; - bool next = true; - if(*(currentParticle()) == *part) - { - found = true; - }else{ - do - { - next = movePointerToTheFirstChild(); - if(*(currentParticle()) == *part) - { - found = true; - } - }while(next && !found); - } - return found; -} - -bool KinematicTree::findDecayVertex(RefCountedKinematicVertex vert)const -{ - if(isEmpty() || !(isConsistent())) - { - throw VertexException("KinematicTree::findParticle; tree is empty or not consistent"); - }else{ - bool res = false; - movePointerToTheTop(); - if(*(currentDecayVertex()) == *vert) - { - res = true; - }else if(leftBranchVertexSearch(vert)){ - res = true; - }else{ - bool up = true; - bool fnd = false; - do - { - if(movePointerToTheNextChild()) - { - fnd = leftBranchVertexSearch(vert); - }else{ - up=movePointerToTheMother(); - if(*(currentDecayVertex()) == *vert) fnd = true; - } - }while(up && !fnd); - res = fnd; - } - return res; - } -} - -bool KinematicTree::leftBranchVertexSearch(RefCountedKinematicVertex vtx) const -{ - bool found = false; - if(*(currentDecayVertex()) == *vtx) - { - found = true; - }else{ - bool next = true; - bool res = false; - do - { - next = movePointerToTheFirstChild(); - if(*(currentDecayVertex()) == *vtx) res = true; - }while(next && !res); - found = res; - } - return found; -} - -void KinematicTree::leftBranchAdd(KinematicTree * otherTree, RefCountedKinematicVertex vtx) -{ - RefCountedKinematicVertex previous_decay = otherTree->currentDecayVertex(); - -//children of current particle of the -//other tree: in the end the whole -//left branch should be added. - bool next = true; - do - { - next = otherTree->movePointerToTheFirstChild(); - if(next) - { - RefCountedKinematicParticle par = otherTree->currentParticle(); - RefCountedKinematicVertex current_decay = otherTree->currentDecayVertex(); - addParticle(previous_decay, current_decay, par); - previous_decay = current_decay; - } - }while(next); -} - -void KinematicTree::replaceCurrentParticle(RefCountedKinematicParticle newPart) const -{ - RefCountedKinematicParticle cDParticle = currentParticle(); - bool replace = treeGraph.replaceEdge(cDParticle,newPart); - if(!replace) throw VertexException("KinematicTree::Particle To Replace not found"); -} - -void KinematicTree::replaceCurrentVertex(RefCountedKinematicVertex newVert) const -{ - RefCountedKinematicVertex cDVertex = currentDecayVertex(); - bool replace = treeGraph.replace(cDVertex,newVert); - if(! replace) throw VertexException("KinematicTree::Vertex To Replace not found"); -} - - -void KinematicTree::addTree(RefCountedKinematicVertex vtx, KinematicTree * tr) -{ -//adding new tree to the existing one: - bool fnd = findDecayVertex(vtx); - if(!fnd) throw VertexException("KinematicTree::addTree; Current tree does not contain the vertex passed"); - tr->movePointerToTheTop(); - -// adding the root of the tree: - RefCountedKinematicParticle mP = tr->currentParticle(); - RefCountedKinematicVertex dec_vertex = tr->currentDecayVertex(); - addParticle(vtx,dec_vertex,mP); - -// adding the left branch if any - leftBranchAdd(tr,dec_vertex); - -//now the pointer is at the left down -//edge of the otherTree. -//current tree pointer is where the -//add operation was stoped last time. - bool right = true; - bool up = true; - do - { - right = tr->movePointerToTheNextChild(); - if(right) - { - -//production vertex is already at the current tree -//adding current partilce - RefCountedKinematicVertex prodVertex = tr->currentProductionVertex(); - RefCountedKinematicParticle cPart = tr->currentParticle(); - RefCountedKinematicVertex decVertex = tr->currentDecayVertex(); - addParticle(prodVertex, decVertex, cPart); - -//adding the rest of the branch - leftBranchAdd(tr,decVertex); - }else{ - up = tr->movePointerToTheMother(); - } - }while(up); -} - diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicVertex.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicVertex.cc deleted file mode 100644 index 4bcf6c5bddb..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicVertex.cc +++ /dev/null @@ -1,107 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertex.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicParticle.h" - -KinematicVertex::KinematicVertex() -{vl = false;} - -KinematicVertex::KinematicVertex(const VertexState state, float totalChiSq, - float degreesOfFr): - theState(state),theChiSquared(totalChiSq),theNDF(degreesOfFr) - -{ - vl = true; - tree = 0; - pVertex = 0; -} - -KinematicVertex::KinematicVertex(const CachingVertex& vertex) -{ -// theVertexPosition = vertex.position(); -// theVPositionError = vertex.error(); - vl = true; - theState = VertexState(vertex.position(), vertex.error()); - theChiSquared = vertex.totalChiSquared(); - theNDF = vertex.degreesOfFreedom(); - tree = 0; - pVertex = 0; -} - -KinematicVertex::KinematicVertex(const VertexState state, - const ReferenceCountingPointer<KinematicVertex> prVertex, - float totalChiSq, float degreesOfFr): - theState(state) , - theChiSquared(totalChiSq),theNDF(degreesOfFr) , pVertex(prVertex) -{ - vl = true; - tree = 0; -} - - - -bool KinematicVertex::operator==(const KinematicVertex& other)const -{ - bool res = false; - if(vertexIsValid()&& other.vertexIsValid()) - { - GlobalPoint cPos = this->position(); - GlobalPoint oPos = other.position(); - AlgebraicMatrix cCov = this->error().matrix(); - AlgebraicMatrix oCov = other.error().matrix(); - if((cPos.x()==oPos.x())&&(cPos.y()==oPos.y())&&(cPos.z()==oPos.z()) - &&(cCov==oCov)) - res = true; - }else if(!(vertexIsValid()) && !(other.vertexIsValid())){ - if(this == &other) res = true; - } - return res; -} - -bool KinematicVertex::operator==(ReferenceCountingPointer<KinematicVertex> other)const -{ - bool res = false; - if(*this == *other) res = true; - return res; -} - - -bool KinematicVertex::operator<(const KinematicVertex& other)const -{ - bool res = false; - if(this < &other) res=true; - return res; -} - -bool KinematicVertex::vertexIsValid() const -{return vl;} - -KinematicVertex::~KinematicVertex() -{} - -GlobalPoint KinematicVertex::position() const -{ - return theState.position(); -} - -GlobalError KinematicVertex::error() const -{ - return theState.error(); -} - -float KinematicVertex::chiSquared() const -{return theChiSquared;} - -float KinematicVertex::degreesOfFreedom() const -{return theNDF;} - -KinematicTree * KinematicVertex::correspondingTree() const -{return tree;} - -void KinematicVertex::setTreePointer(KinematicTree * tr) const -{tree = tr;} - -ReferenceCountingPointer<KinematicVertex> KinematicVertex::vertexBeforeConstraint() const -{return pVertex;} - -VertexState KinematicVertex:: vertexState() const -{return theState;} - diff --git a/RecoVertex/KinematicFitPrimitives/src/KinematicVertexFactory.cc b/RecoVertex/KinematicFitPrimitives/src/KinematicVertexFactory.cc deleted file mode 100644 index fc643c72dac..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/KinematicVertexFactory.cc +++ /dev/null @@ -1 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicVertexFactory.h" diff --git a/RecoVertex/KinematicFitPrimitives/src/MultipleKinematicConstraint.cc b/RecoVertex/KinematicFitPrimitives/src/MultipleKinematicConstraint.cc deleted file mode 100644 index e71d9754c90..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/MultipleKinematicConstraint.cc +++ /dev/null @@ -1,151 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/MultipleKinematicConstraint.h" - -void MultipleKinematicConstraint::addConstraint(KinematicConstraint * newConst) const -{ - if(newConst == 0)throw VertexException("MultipleKinematicConstraint::zero constraint pointer passed"); - cts.push_back(newConst); - em = false; -} - -pair<AlgebraicVector,AlgebraicVector> MultipleKinematicConstraint::value(const AlgebraicVector& exPoint) const -{ - if(cts.size() == 0)throw VertexException("MultipleKinematicConstraint::value requested for empty constraint"); - if(exPoint.num_row() ==0 ) throw VertexException("MultipleKinematicConstraint::value requested for zero Linearization point"); - -//looking for total number of states, represented by this point. -//Since this version only works with extended cartesian parametrization, -//we check whether the dimensionof he point is n*7 - AlgebraicVector expansion = exPoint; - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MultipleKinematicConstraint::linearization point has a wrong dimension"); - - int total = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - {total += (*i)->numberOfEquations();} - AlgebraicVector vl(total,0); - - int cr_size = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - { - AlgebraicVector vlc = (*i)->value(expansion).first; - int sz = vlc.num_row(); - for(int j = 1; j < sz+1; j++) - {vl(cr_size+j) = vlc(j);} - cr_size += sz; - } - return pair<AlgebraicVector, AlgebraicVector>(vl,expansion); -} - -pair<AlgebraicMatrix, AlgebraicVector> MultipleKinematicConstraint::derivative(const AlgebraicVector& exPoint) const -{ - if(cts.size() == 0) throw VertexException("MultipleKinematicConstraint::derivative requested for empty constraint"); - if(exPoint.num_row() ==0 ) throw VertexException("MultipleKinematicConstraint::value requested for zero Linearization point"); - -//security check for extended cartesian parametrization - AlgebraicVector expansion = exPoint; - int inSize = exPoint.num_row(); - if((inSize%7) !=0) throw VertexException("MultipleKinematicConstraint::linearization point has a wrong dimension"); - - - AlgebraicVector par = exPoint; - int total = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - {total += (*i)->numberOfEquations();} - -//Full derivative matrix: (numberOfConstraints x 7*numberOfStates) - AlgebraicMatrix dr(total,inSize); - - int cr_size = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - { -//matrix should be (nx7*NumberOfStates) - AlgebraicMatrix lConst = (*i)->derivative(par).first; - dr.sub(cr_size+1,1,lConst); - cr_size += (*i)->numberOfEquations(); - } - return pair<AlgebraicMatrix, AlgebraicVector>(dr,par); -} - -int MultipleKinematicConstraint::numberOfEquations() const -{ - int ne = 0; - if(cts.size() == 0) throw VertexException("MultipleKinematicConstraint::number of equations requested for empty constraint"); - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - {ne += (*i)->numberOfEquations();} - return ne; -} - -pair<AlgebraicVector, AlgebraicVector> MultipleKinematicConstraint::value(const vector<RefCountedKinematicParticle> par) const -{ - if(cts.size() == 0) throw VertexException("MultipleKinematicConstraint::derivative requested for empty constraint"); - int nStates = par.size(); - AlgebraicVector param(7*nStates,0); - int count = 1; - for(vector<RefCountedKinematicParticle>::const_iterator i = par.begin(); i!=par.end(); i++) - { - for(int j = 1; j<8; j++){param((count -1)*7+j) = (*i)->currentState().kinematicParameters().vector()(j);} - count++; - } - -//looking for total number of equations - int total = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - {total += (*i)->numberOfEquations();} - AlgebraicVector vl(total,0); - - int cr_size = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - { - AlgebraicVector vlc = (*i)->value(par).first; - int sz = vlc.num_row(); - for(int j = 1; j <= sz; j++) - {vl(cr_size+j) = vlc(j);} - cr_size += sz; - } - return pair<AlgebraicVector, AlgebraicVector>(vl,param); -} - -pair<AlgebraicMatrix, AlgebraicVector> MultipleKinematicConstraint::derivative(const vector<RefCountedKinematicParticle> par) const -{ - if(cts.size() == 0) throw VertexException("MultipleKinematicConstraint::derivative requested for empty constraint"); - int nStates = par.size(); - AlgebraicVector param(7*nStates,0); - - int count = 1; - for(vector<RefCountedKinematicParticle>::const_iterator i = par.begin(); i!=par.end(); i++) - { - for(int j = 1; j<8; j++){param((count -1)*7+j) = (*i)->currentState().kinematicParameters().vector()(j);} - count++; - } - int total = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - {total += (*i)->numberOfEquations();} - AlgebraicMatrix dr(total,7*nStates); - - int cr_size = 0; - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - { - -//matrix should be (TotalNumberOfEquations x 7* TotalNumberOfStates) -//Derivative matrix for given constraint - AlgebraicMatrix lConst = (*i)->derivative(param).first; - -//putting it into the appropriate line - dr.sub(cr_size+1,1,lConst); - cr_size += (*i)->numberOfEquations(); - } - return pair<AlgebraicMatrix, AlgebraicVector>(dr,param); -} - -AlgebraicVector MultipleKinematicConstraint::deviations(int nStates) const -{ - AlgebraicVector dev(nStates*7,0); - if(cts.size() == 0) throw VertexException("MultipleKinematicConstraint::deviations requested for empty constraint"); - for(vector<KinematicConstraint *>::const_iterator i = cts.begin(); i != cts.end(); i++) - { - AlgebraicVector dev_loc =(*i)->deviations(nStates); - for(int j = 1; j < nStates*7+1; j++){dev(j) = dev(j) + dev_loc(j);} - } - return dev; -} - diff --git a/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackState.cc b/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackState.cc deleted file mode 100644 index 2f467f7daed..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackState.cc +++ /dev/null @@ -1,338 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicRefittedTrackState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - -AlgebraicVector ParticleKinematicLinearizedTrackState::constantTerm() const -{ - if (!jacobiansAvailable) computeJacobians(); - return theConstantTerm; -} - -AlgebraicMatrix ParticleKinematicLinearizedTrackState::positionJacobian() const -{ - if (!jacobiansAvailable) computeJacobians(); - return thePositionJacobian; -} - -AlgebraicMatrix ParticleKinematicLinearizedTrackState::momentumJacobian() const -{ - if (!jacobiansAvailable)computeJacobians(); - return theMomentumJacobian; -} - -AlgebraicVector ParticleKinematicLinearizedTrackState::parametersFromExpansion() const -{ - if (!jacobiansAvailable) computeJacobians(); - return theExpandedParams; -} - -AlgebraicVector ParticleKinematicLinearizedTrackState::predictedStateParameters() const -{ - if(!jacobiansAvailable) computeJacobians(); -// cout<<"Kinematic predicted state parameters: "<<thePredState.perigeeParameters().vector()<<endl; - return thePredState.perigeeParameters().vector(); -} - -AlgebraicSymMatrix ParticleKinematicLinearizedTrackState::predictedStateWeight() const -{ - if(!jacobiansAvailable) computeJacobians(); - return thePredState.perigeeError().weightMatrix(); -} - -AlgebraicSymMatrix ParticleKinematicLinearizedTrackState::predictedStateError() const -{ - if(!jacobiansAvailable) computeJacobians(); - return thePredState.perigeeError().covarianceMatrix(); -} - -// ImpactPointMeasurement ParticleKinematicLinearizedTrackState::impactPointMeasurement() const -// { throw VertexException(" ParticleKinematicLinearizedTrackState::impact point measurement is not implemented for kinematic classes!");} - -TrackCharge ParticleKinematicLinearizedTrackState::charge() const -{return part->initialState().particleCharge();} - -RefCountedKinematicParticle ParticleKinematicLinearizedTrackState::particle() const -{return part;} - -bool ParticleKinematicLinearizedTrackState::operator ==(LinearizedTrackState& other)const -{ - const ParticleKinematicLinearizedTrackState* otherP = - dynamic_cast<const ParticleKinematicLinearizedTrackState*>(&other); - if (otherP == 0) { - throw VertexException(" ParticleKinematicLinearizedTrackState:: don't know how to compare myself to non-kinematic track state"); - } - return (*(otherP->particle()) == *part);} - -bool ParticleKinematicLinearizedTrackState::hasError() const -{ - if (!jacobiansAvailable) computeJacobians(); - return thePredState.isValid(); -} - - -// here we make a and b matrices of -// our measurement function expansion. -// marices will be almost the same as for -// classical perigee, but bigger: -// (6x3) and (6x4) respectivelly. -void ParticleKinematicLinearizedTrackState::computeJacobians() const -{ - GlobalPoint paramPt(theLinPoint); - thePredState = builder(part->currentState(), paramPt); - - - if (abs(theCharge)<1e-5) { - -//neutral track - computeNeutralJacobians(); - }else{ - -//charged track - computeChargedJacobians(); - } - jacobiansAvailable = true; -} -ReferenceCountingPointer<LinearizedTrackState> ParticleKinematicLinearizedTrackState::stateWithNewLinearizationPoint - (const GlobalPoint & newLP) const -{ - RefCountedKinematicParticle pr = part; - return new ParticleKinematicLinearizedTrackState(newLP, pr); -} - -RefCountedRefittedTrackState ParticleKinematicLinearizedTrackState::createRefittedTrackState( - const GlobalPoint & vertexPosition, - const AlgebraicVector & vectorParameters, - const AlgebraicSymMatrix & covarianceMatrix)const -{ - KinematicPerigeeConversions conversions; - KinematicState lst = conversions.kinematicState(vectorParameters,vertexPosition, - charge(),covarianceMatrix); - RefCountedRefittedTrackState rst = RefCountedRefittedTrackState(new KinematicRefittedTrackState(lst)); - return rst; -} - -AlgebraicVector ParticleKinematicLinearizedTrackState::predictedStateMomentumParameters() const -{ - if(!jacobiansAvailable) computeJacobians(); - AlgebraicVector res(4); - res(1) = thePredState.perigeeParameters().vector()(1); - res(2) = thePredState.perigeeParameters().vector()(2); - res(3) = thePredState.perigeeParameters().vector()(3); - res(4) = thePredState.perigeeParameters().vector()(6); - return res; -} - -AlgebraicSymMatrix ParticleKinematicLinearizedTrackState::predictedStateMomentumError() const -{ - if(!jacobiansAvailable) computeJacobians(); - AlgebraicSymMatrix res(4,0); - AlgebraicSymMatrix m3 = thePredState.perigeeError().weightMatrix().sub(1,3); - res.sub(1,m3); - res(4,4) = thePredState.perigeeError().weightMatrix()(6,6); - res(4,1) = thePredState.perigeeError().weightMatrix()(6,1); - res(4,2) = thePredState.perigeeError().weightMatrix()(6,2); - res(4,3) = thePredState.perigeeError().weightMatrix()(6,3); - return res; -} - -double ParticleKinematicLinearizedTrackState::weightInMixture() const -{return 1.;} - - -std::vector<ReferenceCountingPointer<LinearizedTrackState> > ParticleKinematicLinearizedTrackState::components()const -{ - std::vector<ReferenceCountingPointer<LinearizedTrackState> > res; - res.reserve(1); - res.push_back(RefCountedLinearizedTrackState( - const_cast< ParticleKinematicLinearizedTrackState*>(this))); - return res; -} - -void ParticleKinematicLinearizedTrackState::computeChargedJacobians() const -{ - GlobalPoint paramPt(theLinPoint); -// thePredState = builder(part->currentState(), paramPt); - - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(thePredState.theState().globalPosition()).z(); - double signTC = -part->currentState().particleCharge(); - - double thetaAtEP = thePredState.theState().globalMomentum().theta(); - double phiAtEP = thePredState.theState().globalMomentum().phi(); - double ptAtEP = thePredState.theState().globalMomentum().perp(); - double transverseCurvatureAtEP = field / ptAtEP*signTC; - - double x_v = thePredState.theState().globalPosition().x(); - double y_v = thePredState.theState().globalPosition().y(); - double z_v = thePredState.theState().globalPosition().z(); - double X = x_v - paramPt.x() - sin(phiAtEP) / transverseCurvatureAtEP; - double Y = y_v - paramPt.y() + cos(phiAtEP) / transverseCurvatureAtEP; - double SS = X*X + Y*Y; - double S = sqrt(SS); - -// The track parameters at the expansion point - AlgebraicVector trackParameterFromExpansionPoint(6); - trackParameterFromExpansionPoint[0] = transverseCurvatureAtEP; - trackParameterFromExpansionPoint[1] = thetaAtEP; - trackParameterFromExpansionPoint[3] = 1/transverseCurvatureAtEP - signTC * S; - - trackParameterFromExpansionPoint[5] = part->currentState().mass(); - - double phiFEP; - if (std::abs(X)>std::abs(Y)) { - double signX = (X>0.0? +1.0:-1.0); - phiFEP = -signTC * signX*acos(signTC*Y/S); - } else { - phiFEP = asin(-signTC*X/S); - if ((signTC*Y)<0.0) - phiFEP = M_PI - phiFEP; - } - if (phiFEP>M_PI) phiFEP-= 2*M_PI; - trackParameterFromExpansionPoint[2] = phiFEP; - trackParameterFromExpansionPoint[4] = z_v - paramPt.z() - - (phiAtEP - trackParameterFromExpansionPoint[2]) / tan(thetaAtEP)/transverseCurvatureAtEP; - - thePositionJacobian = AlgebraicMatrix(6,3,0); - thePositionJacobian[2][0] = - Y / (SS); - thePositionJacobian[2][1] = X / (SS); - thePositionJacobian[3][0] = - signTC * X / S; - thePositionJacobian[3][1] = - signTC * Y / S; - thePositionJacobian[4][0] = thePositionJacobian[2][0]/tan(thetaAtEP)/transverseCurvatureAtEP; - thePositionJacobian[4][1] = thePositionJacobian[2][1]/tan(thetaAtEP)/transverseCurvatureAtEP; - thePositionJacobian[4][2] = 1; - -//debug code - to be removed later -// cout<<"parameters for momentum jacobian: X "<<X<<endl; -// cout<<"parameters for momentum jacobian: Y "<<Y<<endl; -// cout<<"parameters for momentum jacobian: SS "<<SS<<endl; -// cout<<"parameters for momentum jacobian: PhiAtEP "<<phiAtEP<<endl; -// cout<<"parameters for momentum jacobian: curv "<<transverseCurvatureAtEP<<endl; -// cout<<"sin phi Atep "<<sin(phiAtEP)<<endl; -// cout<<"cos phi at EP "<<cos(phiAtEP)<<endl; -// cout<<"upper part is "<<X*cos(phiAtEP) + Y*sin(phiAtEP) <<endl; -// cout<<"lower part is"<<SS*transverseCurvatureAtEP*transverseCurvatureAtEP<<endl; - - theMomentumJacobian = AlgebraicMatrix(6,4,0); - theMomentumJacobian[0][0] = 1; - theMomentumJacobian[1][1] = 1; - - theMomentumJacobian[2][0] = - - (X*cos(phiAtEP) + Y*sin(phiAtEP))/ - (SS*transverseCurvatureAtEP*transverseCurvatureAtEP); - - theMomentumJacobian[2][2] = (Y*cos(phiAtEP) - X*sin(phiAtEP)) / - (SS*transverseCurvatureAtEP); - - theMomentumJacobian[3][0] = - (signTC * (Y*cos(phiAtEP) - X*sin(phiAtEP)) / S - 1)/ - (transverseCurvatureAtEP*transverseCurvatureAtEP); - - theMomentumJacobian[3][2] = signTC *(X*cos(phiAtEP) + Y*sin(phiAtEP))/ - (S*transverseCurvatureAtEP); - - theMomentumJacobian[4][0] = (phiAtEP - trackParameterFromExpansionPoint[2]) / - tan(thetaAtEP)/(transverseCurvatureAtEP*transverseCurvatureAtEP)+ - theMomentumJacobian[2][0] / tan(thetaAtEP)/transverseCurvatureAtEP; - - theMomentumJacobian[4][1] = (phiAtEP - trackParameterFromExpansionPoint[2]) * - (1 + 1/(tan(thetaAtEP)*tan(thetaAtEP)))/transverseCurvatureAtEP; - - theMomentumJacobian[4][2] = (theMomentumJacobian[2][2] - 1) / - tan(thetaAtEP)/transverseCurvatureAtEP; - - - theMomentumJacobian[5][3] = 1; - -// And finally the residuals: - AlgebraicVector expansionPoint(3); - expansionPoint[0] = thePredState.theState().globalPosition().x(); - expansionPoint[1] = thePredState.theState().globalPosition().y(); - expansionPoint[2] = thePredState.theState().globalPosition().z(); - AlgebraicVector momentumAtExpansionPoint(4); - momentumAtExpansionPoint[0] = transverseCurvatureAtEP; // Transverse Curv - momentumAtExpansionPoint[1] = thetaAtEP; - momentumAtExpansionPoint[2] = phiAtEP; - momentumAtExpansionPoint[3] = trackParameterFromExpansionPoint[5]; - theExpandedParams = trackParameterFromExpansionPoint; - - - theConstantTerm = AlgebraicVector( trackParameterFromExpansionPoint - - thePositionJacobian * expansionPoint - - theMomentumJacobian * momentumAtExpansionPoint ); -} - - -void ParticleKinematicLinearizedTrackState::computeNeutralJacobians() const -{ - GlobalPoint paramPt(theLinPoint); - double thetaAtEP = thePredState.theState().globalMomentum().theta(); - double phiAtEP = thePredState.theState().globalMomentum().phi(); - double ptAtEP = thePredState.theState().globalMomentum().perp(); - - - double x_v = thePredState.theState().globalPosition().x(); - double y_v = thePredState.theState().globalPosition().y(); - double z_v = thePredState.theState().globalPosition().z(); - double X = x_v - paramPt.x(); - double Y = y_v - paramPt.y(); - -// The track parameters at the expansion point - AlgebraicVector trackParameterFromExpansionPoint(6); - trackParameterFromExpansionPoint[0] = 1 / ptAtEP; - trackParameterFromExpansionPoint[1] = thetaAtEP; - trackParameterFromExpansionPoint[2] = phiAtEP; - trackParameterFromExpansionPoint[3] = X*sin(phiAtEP) - Y*cos(phiAtEP); - trackParameterFromExpansionPoint[4] = z_v - paramPt.z() - - (X*cos(phiAtEP) + Y*sin(phiAtEP)) / tan(thetaAtEP); - trackParameterFromExpansionPoint[5] = part->currentState().mass(); - -// The Jacobian: (all at the expansion point) -// [i,j] -// i = 0: rho = 1/pt , 1: theta, 2: phi_p, 3: epsilon, 4: z_p -// j = 0: x_v, 1: y_v, 2: z_v - thePositionJacobian = AlgebraicMatrix(6,3,0); - thePositionJacobian[3][0] = sin(phiAtEP); - thePositionJacobian[3][1] = - cos(phiAtEP); - thePositionJacobian[4][0] = - cos(phiAtEP)/tan(thetaAtEP); - thePositionJacobian[4][1] = - sin(phiAtEP)/tan(thetaAtEP); - thePositionJacobian[4][2] = 1; - -// [i,j] -// i = 0: rho = 1/pt , 1: theta, 2: phi_p, 3: epsilon, 4: z_p -// j = 0: rho = 1/pt , 1: theta, 2: phi_v - theMomentumJacobian = AlgebraicMatrix(6,4,0); - theMomentumJacobian[0][0] = 1; - theMomentumJacobian[1][1] = 1; - theMomentumJacobian[2][2] = 1; - - theMomentumJacobian[3][2] = X*cos(phiAtEP) + Y*sin(phiAtEP); - theMomentumJacobian[4][1] = theMomentumJacobian[3][2]* - (1 + 1/(tan(thetaAtEP)*tan(thetaAtEP))); - - theMomentumJacobian[4][2] = (X*sin(phiAtEP) - Y*cos(phiAtEP))/tan(thetaAtEP); - theMomentumJacobian[5][3] = 1; - -// And finally the residuals: - AlgebraicVector expansionPoint(3); - expansionPoint[0] = thePredState.theState().globalPosition().x(); - expansionPoint[1] = thePredState.theState().globalPosition().y(); - expansionPoint[2] = thePredState.theState().globalPosition().z(); - AlgebraicVector momentumAtExpansionPoint(4); - momentumAtExpansionPoint[0] = 1 / ptAtEP; - momentumAtExpansionPoint[1] = thetaAtEP; - momentumAtExpansionPoint[2] = phiAtEP; - momentumAtExpansionPoint[3] = trackParameterFromExpansionPoint[5]; - - theExpandedParams = trackParameterFromExpansionPoint; - theConstantTerm = AlgebraicVector( trackParameterFromExpansionPoint - - thePositionJacobian * expansionPoint - - theMomentumJacobian * momentumAtExpansionPoint ); -} - -reco::TransientTrack ParticleKinematicLinearizedTrackState::track() const -{ - throw VertexException(" ParticleKinematicLinearizedTrackState:: no TransientTrack to return"); -} - - - diff --git a/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackStateFactory.cc b/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackStateFactory.cc deleted file mode 100644 index 2e8e389aa01..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/ParticleKinematicLinearizedTrackStateFactory.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/ParticleKinematicLinearizedTrackStateFactory.h" - -RefCountedLinearizedTrackState -ParticleKinematicLinearizedTrackStateFactory::linearizedTrackState(const GlobalPoint & linP, - RefCountedKinematicParticle & prt) const -{ - return RefCountedLinearizedTrackState(new ParticleKinematicLinearizedTrackState(linP, prt)); -} diff --git a/RecoVertex/KinematicFitPrimitives/src/PerigeeKinematicState.cc b/RecoVertex/KinematicFitPrimitives/src/PerigeeKinematicState.cc deleted file mode 100644 index b0bc8c5b38e..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/PerigeeKinematicState.cc +++ /dev/null @@ -1,97 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/PerigeeKinematicState.h" -#include "RecoVertex/KinematicFitPrimitives/interface/KinematicPerigeeConversions.h" -#include "TrackingTools/AnalyticalJacobians/interface/JacobianCartesianToCurvilinear.h" -#include "TrackingTools/TrajectoryState/interface/PerigeeConversions.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - -PerigeeKinematicState::PerigeeKinematicState(const KinematicState& state, const GlobalPoint& pt): - point(pt), inState(state), errorIsAvailable(true),vl(true) -{ - if(!(state.isValid())) throw VertexException("PerigeeKinematicState::kinematic state passed is not valid!"); - -//working with parameters: - KinematicPerigeeConversions conversions; - par = conversions.extendedPerigeeFromKinematicParameters(state,pt); - -//creating the error - AlgebraicSymMatrix err = state.kinematicParametersError().matrix(); - -//making jacobian for curvilinear frame - JacobianCartesianToCurvilinear jj(state.freeTrajectoryState().parameters()); - AlgebraicMatrix ki2cu(6,7,0); - ki2cu.sub(1,1,jj.jacobian()); - ki2cu(6,7) = 1.; - AlgebraicMatrix cu2pe(6,6,0); - PerigeeConversions pc; - cu2pe.sub(1,1,pc.jacobianCurvilinear2Perigee(state.freeTrajectoryState())); - cu2pe(6,6) = 1.; - cu2pe = cu2pe*ki2cu; - err = err.similarity(cu2pe); - cov = ExtendedPerigeeTrajectoryError(err); -} - -/* -AlgebraicMatrix PerigeeKinematicState::jacobianKinematicToExPerigee(const KinematicState& state, - const GlobalPoint& pt)const -{ - - AlgebraicMatrix jac(6,7,0); - jac(6,7) = 1; - jac(5,3) = 1; - AlgebraicVector par = state.kinematicParameters().vector(); - GlobalVector impactDistance = state.globalPosition() - point; - double field = TrackingTools::FakeField::Field::inGeVPerCentimeter(state.globalPosition()).z(); - double signTC = -state.particleCharge(); - double theta = state.globalMomentum().theta(); - double phi = state.globalMomentum().phi(); - double ptr = state.globalMomentum().transverse(); - double transverseCurvature = field/ptr*signTC; -//making a proper sign for epsilon - double positiveMomentumPhi = ((phi>0) ? phi : (2*M_PI + phi)); - double positionPhi = impactDistance.phi(); - double positivePositionPhi = - ( (positionPhi>0) ? positionPhi : (2*M_PI+positionPhi) ); - double phiDiff = positiveMomentumPhi - positivePositionPhi; - if (phiDiff<0.0) phiDiff+= (2*M_PI); - double signEpsilon = ( (phiDiff > M_PI) ? -1.0 : 1.0); - - double epsilon = signEpsilon * - sqrt(impactDistance.x()*impactDistance.x() + - impactDistance.y()*impactDistance.y()); - -//jacobian corrections - -// jac(1,4) = -(field*signTC/(transverseCurvature*transverseCurvature))* cos(phi); -// jac(1,5) = -(field*signTC/(transverseCurvature*transverseCurvature))* sin(phi); -// jac(1,6) = -(field*signTC/(transverseCurvature*transverseCurvature))*tan(theta); - - jac(1,4) = (1/ptr*signTC) * cos(phi); - jac(1,5) = (1/ptr*signTC) * sin(phi); - jac(1,6) = (1/ptr*signTC) * tan(theta); - - jac(2,6) = (ptr)/(cos(theta) * cos(theta)); - jac(3,1) = - epsilon * cos(phi); - jac(3,2) = - epsilon * sin(phi); - - -// jac(3,4) = - jac(3,4) = - ptr * sin(phi); - jac(3,5) = ptr * cos(phi); - jac(4,1) = - sin(phi); - jac(4,2) = cos(phi); - return jac; - -} - - - -AlgebraicMatrix PerigeeKinematicState::jacobianExPerigeeToKinematic(const ExtendedPerigeeTrajectoryParameters& state, - const GlobalPoint& point)const -{ - - AlgebraicMatrix jac(7,6,0); - return jac; - -} -*/ -//temporary method move diff --git a/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicParticle.cc b/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicParticle.cc deleted file mode 100644 index 37d53194b50..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicParticle.cc +++ /dev/null @@ -1,95 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicParticle.h" -#include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" - -using namespace reco; - -TransientTrackKinematicParticle:: -TransientTrackKinematicParticle(const KinematicState& kineState,float& chiSquared, - float& degreesOfFr, KinematicConstraint * lastConstraint, - ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicStatePropagator * pr, const TransientTrack * initialTrack) -{ - if(previousParticle.get() == 0) - { - initState = kineState; -}else{initState = previousParticle->initialState();} - cState = kineState; - inTrack = initialTrack; - pState = previousParticle; - chi2 = chiSquared; - ndf = degreesOfFr; - lConstraint = lastConstraint; - if(pr!=0) - { - propagator = pr->clone(); - }else{ - propagator = new TrackKinematicStatePropagator(); - } - tree = 0; -} - -TransientTrackKinematicParticle::~TransientTrackKinematicParticle() -{delete propagator;} - -bool TransientTrackKinematicParticle::operator==(const KinematicParticle& other)const -{ - bool dc = false; - -//first looking if this is an object of the same type - const KinematicParticle * lp = &other; - const TransientTrackKinematicParticle * lPart = dynamic_cast<const TransientTrackKinematicParticle * >(lp); - if(lPart != 0){ - -//then comparing particle with their initial TransientTracks - if((initialTransientTrack())&&(lPart->initialTransientTrack())) - { - if(initialTransientTrack() == lPart->initialTransientTrack()) dc = true; - }else{if(initialState() == lPart->initialState()) dc = true;} - } - return dc; -} - -bool TransientTrackKinematicParticle::operator==(const ReferenceCountingPointer<KinematicParticle>& other) const -{ - bool res = false; - if(*this == *other) res = true; - return res; -} - -bool TransientTrackKinematicParticle::operator!=(const KinematicParticle& other)const -{ - if (*this == other){ - return false; - }else{return true;} -} - -KinematicState TransientTrackKinematicParticle::stateAtPoint(const GlobalPoint& point)const -{ - GlobalPoint iP = cState.kinematicParameters().position(); - if((iP.x() == point.x())&&(iP.y() == point.y())&&(iP.z() == point.z())) - { - return cState ; - }else{return propagator->propagateToTheTransversePCA(cState,point);} -} - -//FreeTrajectoryState TransientTrackKinematicParticle::initialStateFTS() const -//{return initState.freeTrajectoryState();} - -const TransientTrack * TransientTrackKinematicParticle::initialTransientTrack() const -{return inTrack;} - -ReferenceCountingPointer<KinematicParticle> TransientTrackKinematicParticle::refittedParticle(const KinematicState& state, - float chi2, float ndf, KinematicConstraint * cons)const -{ - TransientTrackKinematicParticle * ncp = const_cast<TransientTrackKinematicParticle * >(this); - return ReferenceCountingPointer<KinematicParticle>(new TransientTrackKinematicParticle(state,chi2,ndf,cons, - ReferenceCountingPointer<KinematicParticle>(ncp), propagator, initialTransientTrack())); -} - -RefCountedLinearizedTrackState TransientTrackKinematicParticle::particleLinearizedTrackState(const GlobalPoint& point)const -{ - TransientTrackKinematicParticle * cr = const_cast<TransientTrackKinematicParticle * >(this); - RefCountedKinematicParticle lp = ReferenceCountingPointer<KinematicParticle>(cr); - return linFactory.linearizedTrackState(point,lp); -} - diff --git a/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicStateBuilder.cc b/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicStateBuilder.cc deleted file mode 100644 index b23a267d663..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/RecTrackKinematicStateBuilder.cc +++ /dev/null @@ -1,70 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/TransientTrackKinematicStateBuilder.h" - -using namespace reco; - - -KinematicState TransientTrackKinematicStateBuilder::operator()(const TransientTrack& track, - const ParticleMass& m, float m_sigma) const -{ -// FreeTrajectoryState * recState = track.impactPointState().freeState(); - return buildState(*(track.impactPointState().freeState()), m, m_sigma); -} - -KinematicState TransientTrackKinematicStateBuilder::operator()(const KinematicParameters& par, - const KinematicParametersError& er, const TrackCharge& ch) const -{return KinematicState(par,er,ch);} - -KinematicState TransientTrackKinematicStateBuilder::operator()(const TransientTrack& track, - const GlobalPoint& point, const ParticleMass& m,float m_sigma) const -{ -// FreeTrajectoryState recState = track.trajectoryStateClosestToPoint(point).theState(); - return buildState( track.trajectoryStateClosestToPoint(point).theState(), m, m_sigma); -} - -KinematicState TransientTrackKinematicStateBuilder::operator()(const FreeTrajectoryState& state, - const ParticleMass& mass,float m_sigma, const GlobalPoint& point) const -{ -//building initial kinematic state - KinematicState res = buildState(state,mass,m_sigma); - -//and propagating it to given point if needed - GlobalPoint inPos = state.position(); - if((inPos.x() != point.x())||(inPos.y() != point.y())||(inPos.z() != point.z())) - {res = propagator.propagateToTheTransversePCA(res,point);} - return res; -} - -PerigeeKinematicState TransientTrackKinematicStateBuilder::operator()(const KinematicState& state, - const GlobalPoint& point)const -{ - KinematicState nState = propagator.propagateToTheTransversePCA(state, point); - return PerigeeKinematicState(nState, point); -} - -KinematicState TransientTrackKinematicStateBuilder::buildState(const FreeTrajectoryState & state, - const ParticleMass& mass, float m_sigma)const -{ - AlgebraicVector par(7); - AlgebraicSymMatrix cov(7,0); - par(1) = state.position().x(); - par(2) = state.position().y(); - par(3) = state.position().z(); - -//getting the state of TransientTrack at the point - par(4) = state.momentum().x(); - par(5) = state.momentum().y(); - par(6) = state.momentum().z(); - par(7) = mass; - -//cartesian covariance matrix (x,y,z,p_x,p_y,p_z) -//and mass-related components stays unchanged - if(!state.hasCartesianError()) throw VertexException("KinematicStateClosestToPointBuilder:: FTS passed has no error matrix!"); - AlgebraicSymMatrix cartCov = state.cartesianError().matrix(); - cov.sub(1,cartCov); - cov(7,7) = m_sigma * m_sigma; - -//making parameters & error - KinematicParameters wPar(par); - KinematicParametersError wEr(cov); - return KinematicState(wPar,wEr,state.charge()); -} diff --git a/RecoVertex/KinematicFitPrimitives/src/TrackKinematicStatePropagator.cc b/RecoVertex/KinematicFitPrimitives/src/TrackKinematicStatePropagator.cc deleted file mode 100644 index babb35060d7..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/TrackKinematicStatePropagator.cc +++ /dev/null @@ -1,213 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/TrackKinematicStatePropagator.h" -#include "TrackingTools/AnalyticalJacobians/interface/JacobianCartesianToCurvilinear.h" -#include "TrackingTools/AnalyticalJacobians/interface/JacobianCurvilinearToCartesian.h" -#include "TrackingTools/AnalyticalJacobians/interface/AnalyticalCurvilinearJacobian.h" -#include "Geometry/Surface/interface/BoundPlane.h" -#include "TrackingTools/TrajectoryState/interface/FakeField.h" - -using namespace std; - -KinematicState TrackKinematicStatePropagator::propagateToTheTransversePCA(const KinematicState& state, - const GlobalPoint& referencePoint) const -{ - if( state.particleCharge() == 0. ) { - return propagateToTheTransversePCANeutral(state, referencePoint); - } else { - return propagateToTheTransversePCACharged(state, referencePoint); - } -} - -pair<HelixBarrelPlaneCrossingByCircle,BoundPlane *> TrackKinematicStatePropagator::planeCrossing( - const FreeTrajectoryState& state, - const GlobalPoint& point) const -{ - GlobalPoint inPos = state.position(); - GlobalVector inMom = state.momentum(); - double kappa = state.transverseCurvature(); - double fac = 1./state.charge()/TrackingTools::FakeField::Field::inGeVPerCentimeter(point).z(); - - GlobalVectorDouble xOrig2Centre = GlobalVectorDouble(fac * inMom.y(), -fac * inMom.x(), 0.); - GlobalVectorDouble xOrigProj = GlobalVectorDouble(inPos.x(), inPos.y(), 0.); - GlobalVectorDouble xRefProj = GlobalVectorDouble(point.x(), point.y(), 0.); - GlobalVectorDouble deltax = xRefProj-xOrigProj-xOrig2Centre; - GlobalVectorDouble ndeltax = deltax.unit(); - - PropagationDirection direction = anyDirection; - Surface::PositionType pos(point); - -// Need to define plane with orientation as the ImpactPointSurface - GlobalVector X(ndeltax.x(), ndeltax.y(), ndeltax.z()); - GlobalVector Y(0.,0.,1.); - Surface::RotationType rot(X,Y); - BoundPlane* plane = new BoundPlane(pos,rot); - HelixBarrelPlaneCrossingByCircle - planeCrossing(HelixPlaneCrossing::PositionType(inPos.x(), inPos.y(), inPos.z()), - HelixPlaneCrossing::DirectionType(inMom.x(), inMom.y(), inMom.z()), - kappa, direction); - pair<bool,double> propResult = planeCrossing.pathLength(*plane); - if ( !propResult.first ) throw VertexException("KinematicStatePropagator without material::propagation failed!"); - return pair<HelixBarrelPlaneCrossingByCircle,BoundPlane *>(planeCrossing,plane); -} - - -KinematicState TrackKinematicStatePropagator::propagateToTheTransversePCACharged(const KinematicState& state, - const GlobalPoint& referencePoint) const -{ -//first use the existing FTS propagator to obtain parameters at PCA -//in transverse plane to the given point - -//final parameters and covariance - AlgebraicVector par(7,0); - AlgebraicSymMatrix cov(7,0); - -//initial parameters as class and vectors: - GlobalTrajectoryParameters inPar(state.globalPosition(),state.globalMomentum(), - state.particleCharge(), TrackingTools::FakeField::Field::field()); - ParticleMass mass = state.mass(); - GlobalVector inMom = state.globalMomentum(); - -//making a free trajectory state and looking -//for helix barrel plane crossing - FreeTrajectoryState fState = state.freeTrajectoryState(); - GlobalPoint iP = referencePoint; - pair<HelixBarrelPlaneCrossingByCircle, BoundPlane *> cros = planeCrossing(fState,iP); - - HelixBarrelPlaneCrossingByCircle planeCrossing = cros.first; - BoundPlane * plane = cros.second; - pair<bool,double> propResult = planeCrossing.pathLength(*plane); - double s = propResult.second; - - HelixPlaneCrossing::PositionType xGen = planeCrossing.position(s); - GlobalPoint nPosition(xGen.x(),xGen.y(),xGen.z()); - HelixPlaneCrossing::DirectionType pGen = planeCrossing.direction(s); - pGen *= inMom.mag()/pGen.mag(); - GlobalVector nMomentum(pGen.x(),pGen.y(),pGen.z()); - par(1) = nPosition.x(); - par(2) = nPosition.y(); - par(3) = nPosition.z(); - par(4) = nMomentum.x(); - par(5) = nMomentum.y(); - par(6) = nMomentum.z(); - par(7) = mass; - -//covariance matrix business -//elements of 7x7 covariance matrix responcible for the mass and -//mass - momentum projections corellations do change under such a transformation: -//special Jacobian needed - GlobalTrajectoryParameters fPar(nPosition, nMomentum, state.particleCharge(), - TrackingTools::FakeField::Field::field()); - - JacobianCartesianToCurvilinear cart2curv(inPar); - JacobianCurvilinearToCartesian curv2cart(fPar); - - AlgebraicMatrix ca2cu(6,7,0); - AlgebraicMatrix cu2ca(7,6,0); - ca2cu.sub(1,1,cart2curv.jacobian()); - cu2ca.sub(1,1,curv2cart.jacobian()); - ca2cu(6,7) = 1; - cu2ca(7,6) = 1; - -//now both transformation jacobians: cartesian to curvilinear and back are done -//We transform matrix to curv frame, then propagate it and translate it back to -//cartesian frame. - cov = state.kinematicParametersError().matrix().similarity(ca2cu); - -//propagation jacobian - AnalyticalCurvilinearJacobian prop(inPar,nPosition,nMomentum,s); - AlgebraicMatrix pr(6,6,0); - pr(6,6) = 1; - pr.sub(1,1,prop.jacobian()); - -//transportation - cov = cov.similarity(pr); - -//now geting back to 7-parametrization from curvilinear - cov = cov.similarity(cu2ca); - -//return parameters as a kiematic state - KinematicParameters resPar(par); - KinematicParametersError resEr(cov); - return KinematicState(resPar,resEr,state.particleCharge()); - } - -KinematicState TrackKinematicStatePropagator::propagateToTheTransversePCANeutral(const KinematicState& state, - const GlobalPoint& referencePoint) const -{ -//new parameters vector and covariance: - AlgebraicVector par(7,0); - AlgebraicSymMatrix cov(7,0); - - AlgebraicVector inStatePar = state.kinematicParameters().vector(); - GlobalTrajectoryParameters inPar(state.globalPosition(),state.globalMomentum(), - state.particleCharge(), TrackingTools::FakeField::Field::field()); - -//first making a free trajectory state and propagating it according -//to the algorithm provided by Thomas Speer and Wolfgang Adam - FreeTrajectoryState fState = state.freeTrajectoryState(); - - GlobalPoint xvecOrig = fState.position(); - double phi = fState.momentum().phi(); - double theta = fState.momentum().theta(); - double xOrig = xvecOrig.x(); - double yOrig = xvecOrig.y(); - double zOrig = xvecOrig.z(); - double xR = referencePoint.x(); - double yR = referencePoint.y(); - - double s2D = (xR - xOrig) * cos(phi) + (yR - yOrig) * sin(phi); - double s = s2D / sin(theta); - double xGen = xOrig + s2D*cos(phi); - double yGen = yOrig + s2D*sin(phi); - double zGen = zOrig + s2D/tan(theta); - GlobalPoint xPerigee = GlobalPoint(xGen, yGen, zGen); - -//new parameters - GlobalVector pPerigee = fState.momentum(); - par(1) = xPerigee.x(); - par(2) = xPerigee.y(); - par(3) = xPerigee.z(); - par(4) = pPerigee.x(); - par(5) = pPerigee.y(); - par(6) = pPerigee.z(); - par(7) = inStatePar(7); - -//covariance matrix business: -//everything lake it was before: jacobains are smart enouhg to -//distinguish between neutral and charged states themselves - - GlobalTrajectoryParameters fPar(xPerigee, pPerigee, state.particleCharge(), - TrackingTools::FakeField::Field::field()); - JacobianCartesianToCurvilinear cart2curv(inPar); - JacobianCurvilinearToCartesian curv2cart(fPar); - - AlgebraicMatrix ca2cu(6,7,0); - AlgebraicMatrix cu2ca(7,6,0); - ca2cu.sub(1,1,cart2curv.jacobian()); - cu2ca.sub(1,1,curv2cart.jacobian()); - ca2cu(6,7) = 1; - cu2ca(7,6) = 1; - -//now both transformation jacobians: cartesian to curvilinear and back are done -//We transform matrix to curv frame, then propagate it and translate it back to -//cartesian frame. - cov = state.kinematicParametersError().matrix().similarity(ca2cu); - -//propagation jacobian - AnalyticalCurvilinearJacobian prop(inPar,xPerigee,pPerigee,s); - AlgebraicMatrix pr(6,6,0); - pr(6,6) = 1; - pr.sub(1,1,prop.jacobian()); - -//transportation - cov = cov.similarity(pr); - -//now geting back to 7-parametrization from curvilinear - cov = cov.similarity(cu2ca); - -//return parameters as a kiematic state - KinematicParameters resPar(par); - KinematicParametersError resEr(cov); - return KinematicState(resPar,resEr,state.particleCharge()); -} - - diff --git a/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticle.cc b/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticle.cc deleted file mode 100644 index 053c115dc60..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticle.cc +++ /dev/null @@ -1,77 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticle.h" -#include "TrackingTools/TrajectoryState/interface/FreeTrajectoryState.h" - -VirtualKinematicParticle::VirtualKinematicParticle(const KinematicState& kineState,float& chiSquared, - float& degreesOfFr, KinematicConstraint * lastConstraint, - ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicStatePropagator * pr) -{ - if(previousParticle.get() == 0) - { - initState = kineState; - }else{initState = previousParticle->initialState();} - cState = kineState; - pState = previousParticle; - chi2 = chiSquared; - ndf = degreesOfFr; - lConstraint = lastConstraint; - if(pr != 0) - { - propagator = pr->clone(); - }else{ - propagator = new TrackKinematicStatePropagator(); - } - tree = 0; -} - -VirtualKinematicParticle::~VirtualKinematicParticle() -{delete propagator;} - -bool VirtualKinematicParticle::operator==(const KinematicParticle& other)const -{ - bool dc = false; - -//first looking if this is an object of the same type - const KinematicParticle * lp = &other; - const VirtualKinematicParticle * lPart = dynamic_cast<const VirtualKinematicParticle * >(lp); - if(lPart != 0 && initialState() == lPart->initialState()) dc = true; - return dc; -} - -bool VirtualKinematicParticle::operator==(const ReferenceCountingPointer<KinematicParticle>& other) const -{ - bool res = false; - if(*this == *other) res = true; - return res; -} - -bool VirtualKinematicParticle::operator!=(const KinematicParticle& other)const -{ - if (*this == other){ - return false; - }else{return true;} -} - -KinematicState VirtualKinematicParticle::stateAtPoint(const GlobalPoint& point)const -{ - GlobalPoint iP = cState.kinematicParameters().position(); - if((iP.x() == point.x())&&(iP.y() == point.y())&&(iP.z() == point.z())) - { - return cState ; - }else{return propagator->propagateToTheTransversePCA(cState,point);} } - -RefCountedKinematicParticle VirtualKinematicParticle::refittedParticle(const KinematicState& state, - float chi2, float ndf, KinematicConstraint * cons)const -{ - VirtualKinematicParticle * ncp = const_cast<VirtualKinematicParticle * >(this); - ReferenceCountingPointer<KinematicParticle> current = ReferenceCountingPointer<KinematicParticle>(ncp); - return ReferenceCountingPointer<KinematicParticle>(new VirtualKinematicParticle(state,chi2,ndf,cons,current, - propagator)); -} - -RefCountedLinearizedTrackState VirtualKinematicParticle::particleLinearizedTrackState(const GlobalPoint& point)const -{ - VirtualKinematicParticle * cr = const_cast<VirtualKinematicParticle * >(this); - RefCountedKinematicParticle lp = ReferenceCountingPointer<KinematicParticle>(cr); - return linFactory.linearizedTrackState(point,lp); -} diff --git a/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticleFactory.cc b/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticleFactory.cc deleted file mode 100644 index 04e4f9a3369..00000000000 --- a/RecoVertex/KinematicFitPrimitives/src/VirtualKinematicParticleFactory.cc +++ /dev/null @@ -1,29 +0,0 @@ -#include "RecoVertex/KinematicFitPrimitives/interface/VirtualKinematicParticleFactory.h" - - -VirtualKinematicParticleFactory::VirtualKinematicParticleFactory() -{propagator = new TrackKinematicStatePropagator();} - -VirtualKinematicParticleFactory::VirtualKinematicParticleFactory(KinematicStatePropagator * pr) -{ - if(pr!=0) - { - propagator = pr->clone(); - }else{ - propagator = new TrackKinematicStatePropagator(); - } -} - -RefCountedKinematicParticle VirtualKinematicParticleFactory::particle(const KinematicState& kineState, - float& chiSquared, float& degreesOfFr, ReferenceCountingPointer<KinematicParticle> previousParticle, - KinematicConstraint * lastConstraint)const -{ - if(previousParticle.get() != 0) - { - KinematicParticle * prp = &(*previousParticle); - VirtualKinematicParticle * pr = dynamic_cast<VirtualKinematicParticle * >(prp); - if(pr == 0){ throw VertexException("KinematicParticleFactoryFromTransientTrack::Previous particle passed is not TransientTrack based!");} - } - return ReferenceCountingPointer<KinematicParticle>(new VirtualKinematicParticle(kineState, chiSquared, degreesOfFr, - lastConstraint, previousParticle, propagator)); -} diff --git a/RecoVertex/NuclearInteractionProducer/doc/html/index.html b/RecoVertex/NuclearInteractionProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/NuclearInteractionProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/NuclearInteractionProducer/doc/html/overview.html b/RecoVertex/NuclearInteractionProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/NuclearInteractionProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/PrimaryVertexProducer/src/PrimaryVertexProducerAlgorithm.cc b/RecoVertex/PrimaryVertexProducer/src/PrimaryVertexProducerAlgorithm.cc index 37a64708cff..fa3e8da9a2e 100644 --- a/RecoVertex/PrimaryVertexProducer/src/PrimaryVertexProducerAlgorithm.cc +++ b/RecoVertex/PrimaryVertexProducer/src/PrimaryVertexProducerAlgorithm.cc @@ -121,12 +121,7 @@ PrimaryVertexProducerAlgorithm::vertices(const vector<reco::TransientTrack> & tr theTrackClusterizer.clusterize(seltks); if(fVerbose){ - cout << "PrimaryVertexProducerAlgorithm::vertices clusters =" << clusters.size() << endl; - int i=0; - for (vector< vector<reco::TransientTrack> >::const_iterator iclus - = clusters.begin(); iclus != clusters.end(); iclus++) { - cout << "PrimaryVertexProducerAlgorithm::vertices cluster " << i++ << ") tracks =" << (*iclus).size() << endl; - } + cout << "PrimaryVertexProducerAlgorithm::vertices clusters =" << clusters.size() << endl; } // look for primary vertices in each cluster @@ -155,25 +150,15 @@ PrimaryVertexProducerAlgorithm::vertices(const vector<reco::TransientTrack> & tr } */ - if( fUseBeamConstraint &&((*iclus).size()>0) ){ - if (fVerbose){cout << "constrained fit with "<< (*iclus).size() << " tracks" << endl;} + if(fUseBeamConstraint){ + //KalmanVertexFitter kvf; TransientVertex v = theFitter->vertex(*iclus, theBeamSpot.position(), theBeamSpot.error()); - - if (fVerbose){ - cout << "beamspot x="<< theBeamSpot.position().x() - << " y=" << theBeamSpot.position().y() - << " z=" << theBeamSpot.position().z() - << " dx=" << sqrt(theBeamSpot.error().cxx()) - << " dy=" << sqrt(theBeamSpot.error().cyy()) - << " dz=" << sqrt(theBeamSpot.error().czz()) - << std::endl; - cout << "x,y,z=" << v.position().x() <<" " << v.position().y() << " " << v.position().z() << endl; - } - pvCand.push_back(v); + pvCand.push_back(v); }else if((*iclus).size()>1){ - if (fVerbose){cout << "unconstrained fit with "<< (*iclus).size() << " tracks" << endl;} + cout << "unconstrained fit with "<< (*iclus).size() << " tracks" << endl; + //KalmanVertexFitter kvf; TransientVertex v = theFitter->vertex(*iclus); - if (fVerbose){cout << "x,y,z=" << v.position().x() <<" " << v.position().y() << " " << v.position().z() << endl;} + cout << "x,y,z=" << v.position().x() <<" " << v.position().y() << " " << v.position().z() << endl; pvCand.push_back(v); }else if (fVerbose){ cout << "cluster dropped" << endl; diff --git a/RecoVertex/PrimaryVertexProducer/src/TrackClusterizerInZ.cc b/RecoVertex/PrimaryVertexProducer/src/TrackClusterizerInZ.cc index ce9ca7fbdbf..06eec919225 100644 --- a/RecoVertex/PrimaryVertexProducer/src/TrackClusterizerInZ.cc +++ b/RecoVertex/PrimaryVertexProducer/src/TrackClusterizerInZ.cc @@ -22,7 +22,7 @@ TrackClusterizerInZ::clusterize(const vector<reco::TransientTrack> & tracks) { vector<reco::TransientTrack> tks = tracks; // copy to be sorted - + vector< vector<reco::TransientTrack> > clusters; if (tks.empty()) return clusters; @@ -46,8 +46,8 @@ TrackClusterizerInZ::clusterize(const vector<reco::TransientTrack> & tracks) // store current cluster, start new one clusters.push_back(currentCluster); currentCluster.clear(); - currentCluster.push_back(*it); it++; if (it == tks.end()) break; + currentCluster.push_back(*it); } } diff --git a/RecoVertex/TertiaryTracksVertexFinder/doc/html/index.html b/RecoVertex/TertiaryTracksVertexFinder/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/TertiaryTracksVertexFinder/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/TertiaryTracksVertexFinder/doc/html/overview.html b/RecoVertex/TertiaryTracksVertexFinder/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/TertiaryTracksVertexFinder/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/TrimmedVertexFit/doc/html/index.html b/RecoVertex/TrimmedVertexFit/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/TrimmedVertexFit/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/TrimmedVertexFit/doc/html/overview.html b/RecoVertex/TrimmedVertexFit/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/TrimmedVertexFit/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/V0Producer/doc/html/index.html b/RecoVertex/V0Producer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/RecoVertex/V0Producer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/RecoVertex/V0Producer/doc/html/overview.html b/RecoVertex/V0Producer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/RecoVertex/V0Producer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/RecoVertex/VertexPrimitives/interface/TransientVertex.h b/RecoVertex/VertexPrimitives/interface/TransientVertex.h index 6a8e5081523..1a052efd0be 100644 --- a/RecoVertex/VertexPrimitives/interface/TransientVertex.h +++ b/RecoVertex/VertexPrimitives/interface/TransientVertex.h @@ -171,7 +171,7 @@ public: * If this information has not been provided at construction, a weight of * 1.0 is assumed for all tracks used and present in the originalTracks() std::vector. */ - float trackWeight(const reco::TransientTrack & track) const; + float trackWeight(const reco::TransientTrack track) const; TransientTrackToFloatMap weightMap() const { return theWeightMap; } diff --git a/RecoVertex/VertexPrimitives/src/TransientVertex.cc b/RecoVertex/VertexPrimitives/src/TransientVertex.cc index 739eab5e834..923b14259fb 100644 --- a/RecoVertex/VertexPrimitives/src/TransientVertex.cc +++ b/RecoVertex/VertexPrimitives/src/TransientVertex.cc @@ -3,6 +3,9 @@ // #include "CommonReco/PatternTools/interface/RefittedRecTrack.h" #include "RecoVertex/VertexPrimitives/interface/ConvertError.h" #include <algorithm> +#include <Rtypes.h> +#include <Math/Cartesian3D.h> +#include <Math/Point3D.h> using namespace std; using namespace reco; @@ -126,8 +129,6 @@ void TransientVertex::weightMap(const TransientTrackToFloatMap & theMap) { theWeightMap = theMap; theWeightMapIsAvailable = true; - removeTracks(); // remove trackrefs from reco::Vertex - addTracks( theOriginalTracks ); } void TransientVertex::tkToTkCovariance(const TTtoTTmap covMap) @@ -136,7 +137,7 @@ void TransientVertex::tkToTkCovariance(const TTtoTTmap covMap) withPrior = true; } -float TransientVertex::trackWeight(const TransientTrack & track) const { +float TransientVertex::trackWeight(const TransientTrack track) const { if (!theWeightMapIsAvailable) { vector<TransientTrack>::const_iterator foundTrack = find(theOriginalTracks.begin(), theOriginalTracks.end(), track); @@ -187,7 +188,7 @@ void TransientVertex::addTracks(const vector<TransientTrack> & tracks) i != tracks.end(); ++i) { if ((*i).persistentTrackRef().isNonnull()) { - add((*i).persistentTrackRef(), trackWeight ( *i ) ); + add((*i).persistentTrackRef()); } } } diff --git a/SLHCUpgradeSimulations/Geometry/doc/html/index.html b/SLHCUpgradeSimulations/Geometry/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SLHCUpgradeSimulations/Geometry/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SLHCUpgradeSimulations/Geometry/doc/html/overview.html b/SLHCUpgradeSimulations/Geometry/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SLHCUpgradeSimulations/Geometry/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/index.html b/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/overview.html b/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SLHCUpgradeSimulations/L1CaloTrigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/index.html b/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/overview.html b/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SLHCUpgradeSimulations/L1TrackTrigger/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SUSYBSMAnalysis/Configuration/doc/html/index.html b/SUSYBSMAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SUSYBSMAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SUSYBSMAnalysis/Configuration/doc/html/overview.html b/SUSYBSMAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SUSYBSMAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SUSYBSMAnalysis/HSCP/doc/html/index.html b/SUSYBSMAnalysis/HSCP/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SUSYBSMAnalysis/HSCP/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SUSYBSMAnalysis/HSCP/doc/html/overview.html b/SUSYBSMAnalysis/HSCP/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SUSYBSMAnalysis/HSCP/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SUSYBSMAnalysis/Skimming/doc/html/index.html b/SUSYBSMAnalysis/Skimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SUSYBSMAnalysis/Skimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SUSYBSMAnalysis/Skimming/doc/html/overview.html b/SUSYBSMAnalysis/Skimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SUSYBSMAnalysis/Skimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimCalorimetry/CastorSim/doc/html/index.html b/SimCalorimetry/CastorSim/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimCalorimetry/CastorSim/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimCalorimetry/CastorSim/doc/html/overview.html b/SimCalorimetry/CastorSim/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimCalorimetry/CastorSim/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimCalorimetry/EcalElectronicsEmulation/doc/html/index.html b/SimCalorimetry/EcalElectronicsEmulation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimCalorimetry/EcalElectronicsEmulation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimCalorimetry/EcalElectronicsEmulation/doc/html/overview.html b/SimCalorimetry/EcalElectronicsEmulation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimCalorimetry/EcalElectronicsEmulation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimCalorimetry/EcalSelectiveReadoutAlgos/interface/EcalSelectiveReadoutSuppressor.h b/SimCalorimetry/EcalSelectiveReadoutAlgos/interface/EcalSelectiveReadoutSuppressor.h index 163d84352e1..7c30e0c5a1a 100644 --- a/SimCalorimetry/EcalSelectiveReadoutAlgos/interface/EcalSelectiveReadoutSuppressor.h +++ b/SimCalorimetry/EcalSelectiveReadoutAlgos/interface/EcalSelectiveReadoutSuppressor.h @@ -43,10 +43,6 @@ public: //for debugging EcalSelectiveReadout* getEcalSelectiveReadout(){return ecalSelectiveReadout;} - /// three methods I don't know how to implement - int accumulate(const EcalDataFrame & frame, bool & gain12saturated); - double energy(const EcalDataFrame & frame); - private: @@ -71,6 +67,10 @@ public: double barrelHighInterest, double endcapHighInterest); + /// three methods I don't know how to implement + double energy(const EBDataFrame & barrelDigi) const; + double energy(const EEDataFrame & endcapDigi) const; + double Et(const EcalTriggerPrimitiveDigi & trigPrim) const; /** Gets the integer weights used by the zero suppression * FIR filter. diff --git a/SimCalorimetry/EcalSelectiveReadoutAlgos/src/EcalSelectiveReadoutSuppressor.cc b/SimCalorimetry/EcalSelectiveReadoutAlgos/src/EcalSelectiveReadoutSuppressor.cc index 43fdbdcc846..a042bb65ff8 100644 --- a/SimCalorimetry/EcalSelectiveReadoutAlgos/src/EcalSelectiveReadoutSuppressor.cc +++ b/SimCalorimetry/EcalSelectiveReadoutAlgos/src/EcalSelectiveReadoutSuppressor.cc @@ -27,13 +27,11 @@ using namespace std; const int EcalSelectiveReadoutSuppressor::nFIRTaps = 6; -#include <iostream> -EcalSelectiveReadoutSuppressor::EcalSelectiveReadoutSuppressor(const edm::ParameterSet & params)//: - //firstFIRSample(params.getParameter<int>("ecalDccZs1stSample")), - //weights(params.getParameter<vector<double> >("dccNormalizedWeights")) + +EcalSelectiveReadoutSuppressor::EcalSelectiveReadoutSuppressor(const edm::ParameterSet & params): + firstFIRSample(params.getParameter<int>("ecalDccZs1stSample")), + weights(params.getParameter<vector<double> >("dccNormalizedWeights")) { - firstFIRSample = params.getParameter<int>("ecalDccZs1stSample"); - weights = params.getParameter<vector<double> >("dccNormalizedWeights"); double adcToGeV = params.getParameter<double>("ebDccAdcToGeV"); ebGeV2ADC = adcToGeV!=0?1./adcToGeV:0.; adcToGeV = params.getParameter<double>("eeDccAdcToGeV"); @@ -125,21 +123,22 @@ bool EcalSelectiveReadoutSuppressor::accept(const T& frame, throw cms::Exception("EcalSelectiveReadoutSuppressor: unexpected subdetector id in a dataframe. Only EB and EE data frame are expected."); } - double thr_ = threshold * eGeV2ADC * 4.; + double thr_ = lround(threshold * eGeV2ADC * 4.); //treating over- and underflows, threshold is coded on 11+1 signed bits //an underflow threshold is considered here as if NoRO DCC switch is on //an overflow threshold is considered here as if ForcedRO DCC switch in on //Beware that conparison must be done on a double type, because conversion //cast to an int of a double higher than MAX_INT is undefined. int thr; - if(thr_>=0x7FF+.5){ + if(thr_>0x7FF){ thr = numeric_limits<int>::max(); - } else if(thr_<=-0x7FF-.5){ + } else if(thr_<-0x7FF){ thr = -numeric_limits<int>::min(); } else{ - thr = lround(thr_); + thr = (int) thr_; } + //FIR filter weights: const vector<int>& w = getFIRWeigths(); @@ -181,53 +180,6 @@ bool EcalSelectiveReadoutSuppressor::accept(const T& frame, return result; } - -int EcalSelectiveReadoutSuppressor::accumulate(const EcalDataFrame & frame, - bool & gain12saturated) -{ - //FIR filter weights: - const vector<int>& w = getFIRWeigths(); - - int acc = 0; - gain12saturated = false; - const int gain12 = 0x01; - const int lastFIRSample = firstFIRSample + nFIRTaps - 1; - LogDebug("DccFir") << "DCC FIR operation: "; - for(int i=firstFIRSample-1; i<lastFIRSample; ++i){ - if(i>=0 && i < frame.size()){ - const EcalMGPASample& sample = frame[i]; - if(sample.gainId()!=gain12) gain12saturated = true; - LogTrace("DccFir") << (i>=firstFIRSample?"+":"") << sample.adc() - << "*(" << w[i] << ")"; - acc+=sample.adc()*w[i]; - } else{ - edm::LogWarning("DccFir") << __FILE__ << ":" << __LINE__ << - ": Not enough samples in data frame or 'ecalDccZs1stSample' module " - "parameter is not valid..."; - } - } - return acc; -} - - -double EcalSelectiveReadoutSuppressor::energy(const EcalDataFrame & frame) -{ - bool gain12saturated; - double acc = accumulate(frame, gain12saturated); - double adc2GeV; - switch(frame.id().subdetId()){ - case EcalBarrel: - adc2GeV = 1./ebGeV2ADC; - break; - case EcalEndcap: - adc2GeV = 1./eeGeV2ADC; - break; - } - acc *= (adc2GeV / (1<<10)); - return acc; -} - - void EcalSelectiveReadoutSuppressor::run(const edm::EventSetup& eventSetup, const EcalTrigPrimDigiCollection & trigPrims, EBDigiCollection & barrelDigis, @@ -392,7 +344,7 @@ void EcalSelectiveReadoutSuppressor::setTtFlags(const EcalTrigPrimDigiCollection // } // } -vector<int> EcalSelectiveReadoutSuppressor::getFIRWeigths() { +vector<int> EcalSelectiveReadoutSuppressor::getFIRWeigths(){ if(firWeights.size()==0){ firWeights = vector<int>(nFIRTaps, 0); //default weight: 0; const static int maxWeight = 0xEFF; //weights coded on 11+1 signed bits diff --git a/SimCalorimetry/HcalTrigPrimAlgos/doc/html/index.html b/SimCalorimetry/HcalTrigPrimAlgos/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimCalorimetry/HcalTrigPrimAlgos/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimCalorimetry/HcalTrigPrimAlgos/doc/html/overview.html b/SimCalorimetry/HcalTrigPrimAlgos/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimCalorimetry/HcalTrigPrimAlgos/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimCalorimetry/HcalTrigPrimProducers/doc/html/index.html b/SimCalorimetry/HcalTrigPrimProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimCalorimetry/HcalTrigPrimProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimCalorimetry/HcalTrigPrimProducers/doc/html/overview.html b/SimCalorimetry/HcalTrigPrimProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimCalorimetry/HcalTrigPrimProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/DigiSimLinks/doc/html/index.html b/SimDataFormats/DigiSimLinks/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/DigiSimLinks/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/DigiSimLinks/doc/html/overview.html b/SimDataFormats/DigiSimLinks/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/DigiSimLinks/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/GeneratorProducts/doc/html/index.html b/SimDataFormats/GeneratorProducts/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/GeneratorProducts/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/GeneratorProducts/doc/html/overview.html b/SimDataFormats/GeneratorProducts/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/GeneratorProducts/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/HcalTestBeam/src/PHcalTB04Info.cc b/SimDataFormats/HcalTestBeam/src/PHcalTB04Info.cc index 8570cf03eaf..15d0de4a5ad 100644 --- a/SimDataFormats/HcalTestBeam/src/PHcalTB04Info.cc +++ b/SimDataFormats/HcalTestBeam/src/PHcalTB04Info.cc @@ -8,7 +8,7 @@ // // Original Author: Sunanda Banerjee // Created: Sun May 14 10:25:44 CEST 2006 -// $Id: PHcalTB04Info.cc,v 1.2 2006/11/13 10:04:36 sunanda Exp $ +// $Id: PHcalTB04Info.cc,v 1.1 2006/05/15 10:18:48 sunanda Exp $ // // system include files @@ -208,7 +208,7 @@ void PHcalTB04Info::setVtxPrim(int evNum, int type, double x, double y, v1EvNum = evNum; v1Type = type; - double r= sqrt(x*x+y*y+z*z); + double r= std::sqrt(x*x+y*y+z*z); v1X = (float)(x); v1Y = (float)(y); v1Z = (float)(z); diff --git a/SimDataFormats/HiGenData/doc/html/index.html b/SimDataFormats/HiGenData/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/HiGenData/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/HiGenData/doc/html/overview.html b/SimDataFormats/HiGenData/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/HiGenData/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/JetMatching/doc/html/index.html b/SimDataFormats/JetMatching/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/JetMatching/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/JetMatching/doc/html/overview.html b/SimDataFormats/JetMatching/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/JetMatching/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/SLHC/doc/html/index.html b/SimDataFormats/SLHC/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/SLHC/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/SLHC/doc/html/overview.html b/SimDataFormats/SLHC/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/SLHC/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimDataFormats/ValidationFormats/doc/html/index.html b/SimDataFormats/ValidationFormats/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimDataFormats/ValidationFormats/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimDataFormats/ValidationFormats/doc/html/overview.html b/SimDataFormats/ValidationFormats/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimDataFormats/ValidationFormats/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimG4CMS/CherenkovAnalysis/doc/html/index.html b/SimG4CMS/CherenkovAnalysis/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimG4CMS/CherenkovAnalysis/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimG4CMS/CherenkovAnalysis/doc/html/overview.html b/SimG4CMS/CherenkovAnalysis/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimG4CMS/CherenkovAnalysis/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimG4CMS/Forward/src/classes.h b/SimG4CMS/Forward/src/classes.h deleted file mode 100644 index 98d49a552de..00000000000 --- a/SimG4CMS/Forward/src/classes.h +++ /dev/null @@ -1,5 +0,0 @@ -#include "SimG4CMS/Forward/interface/TotemTestHistoClass.h" - -namespace { - -} diff --git a/SimG4CMS/Forward/src/classes_def.xml b/SimG4CMS/Forward/src/classes_def.xml deleted file mode 100644 index cc5e4b824bf..00000000000 --- a/SimG4CMS/Forward/src/classes_def.xml +++ /dev/null @@ -1,5 +0,0 @@ -<lcgdict> - <class name="TotemTestHistoClass"/> - <class name="TotemTestHistoClass::Hit"/> - <class name="std::vector<TotemTestHistoClass::Hit>"/> -</lcgdict> diff --git a/SimG4CMS/ShowerLibraryProducer/doc/html/index.html b/SimG4CMS/ShowerLibraryProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimG4CMS/ShowerLibraryProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimG4CMS/ShowerLibraryProducer/doc/html/overview.html b/SimG4CMS/ShowerLibraryProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimG4CMS/ShowerLibraryProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimG4Core/CheckSecondary/doc/html/index.html b/SimG4Core/CheckSecondary/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimG4Core/CheckSecondary/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimG4Core/CheckSecondary/doc/html/overview.html b/SimG4Core/CheckSecondary/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimG4Core/CheckSecondary/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimG4Core/HelpfulWatchers/TagLog b/SimG4Core/HelpfulWatchers/TagLog new file mode 100644 index 00000000000..1f0219f4c06 --- /dev/null +++ b/SimG4Core/HelpfulWatchers/TagLog @@ -0,0 +1,6 @@ +** V01-01-00 [Tue Nov 29 19:58:44 2005] +Added BeginOfTrackCounter + +** V01-00-00 [Tue Nov 22 23:11:32 2005] +first tag + diff --git a/SimG4Core/PhysicsLists/doc/html/index.html b/SimG4Core/PhysicsLists/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimG4Core/PhysicsLists/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimG4Core/PhysicsLists/doc/html/overview.html b/SimG4Core/PhysicsLists/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimG4Core/PhysicsLists/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimG4Core/PrintGeomInfo/interface/PrintMaterialBudgetInfo.h b/SimG4Core/PrintGeomInfo/interface/PrintMaterialBudgetInfo.h index 598ffab6ed3..5f547a0a67a 100644 --- a/SimG4Core/PrintGeomInfo/interface/PrintMaterialBudgetInfo.h +++ b/SimG4Core/PrintGeomInfo/interface/PrintMaterialBudgetInfo.h @@ -33,8 +33,10 @@ private: void update(const BeginOfRun* run); void dumpHeader(std::ostream& out = std::cout); void dumpHierarchyLeaf(G4VPhysicalVolume* pv, G4LogicalVolume* lv, - uint leafDepth, std::ostream& out = std::cout); - void printInfo(G4VPhysicalVolume* pv, G4LogicalVolume* lv, uint leafDepth, std::ostream& out = std::cout); + uint leafDepth, std::ostream& weightOut); + void printInfo(G4VPhysicalVolume* pv, G4LogicalVolume* lv, + uint leafDepth, std::ostream& weightOut); + void dumpElementMassFraction(std::ostream& elementOut); private: std::string name; @@ -44,7 +46,11 @@ private: G4NavigationHistory fHistory; bool volumeFound; unsigned int levelFound; - std::ofstream outputFile; + std::ofstream weightOutputFile; + std::ofstream elementOutputFile; + std::vector<std::string> elementNames; + std::vector<double> elementTotalWeight; + std::vector<double> elementWeightFraction; }; #endif diff --git a/SimG4Core/PrintGeomInfo/src/PrintMaterialBudgetInfo.cc b/SimG4Core/PrintGeomInfo/src/PrintMaterialBudgetInfo.cc index 7e3a2a87e88..8c6dc07d984 100644 --- a/SimG4Core/PrintGeomInfo/src/PrintMaterialBudgetInfo.cc +++ b/SimG4Core/PrintGeomInfo/src/PrintMaterialBudgetInfo.cc @@ -35,9 +35,15 @@ PrintMaterialBudgetInfo::PrintMaterialBudgetInfo(const edm::ParameterSet& p) { name.assign(name,0,nchar); std::cout << "PrintMaterialBudget selected volume " << name << std::endl; volumeFound = false; - std::string fileName = name+".weight"; - outputFile.open( fileName.c_str() ); - std::cout << "PrintMaterialBudget output file " << fileName << std::endl; + std::string weightFileName = name+".weight"; + weightOutputFile.open( weightFileName.c_str() ); + std::string elementFileName = name+".element"; + elementOutputFile.open( elementFileName.c_str() ); + std::cout << "PrintMaterialBudget output file " << weightFileName << std::endl; + std::cout << "PrintMaterialBudget output file " << elementFileName << std::endl; + elementNames.clear(); + elementTotalWeight.clear(); + elementWeightFraction.clear(); } PrintMaterialBudgetInfo::~PrintMaterialBudgetInfo() {} @@ -49,9 +55,19 @@ void PrintMaterialBudgetInfo::update(const BeginOfRun* run) { // Logical Volume G4LogicalVolume* lv = theTopPV->GetLogicalVolume(); uint leafDepth = 0; - // - dumpHeader(outputFile); - dumpHierarchyLeaf(theTopPV, lv, leafDepth, outputFile); + // the first time fill the vectors of elements + if( elementNames.size()==0 && elementTotalWeight.size()==0 && elementWeightFraction.size()==0) { + for(unsigned int iElement = 0; + iElement < lv->GetMaterial()->GetElement(iElement)->GetElementTable()->size(); + iElement++) { // first element in table is 0 + elementNames.push_back("rr"); + elementTotalWeight.push_back(0); + elementWeightFraction.push_back(0); + } + } + dumpHeader(weightOutputFile); + dumpHierarchyLeaf(theTopPV, lv, leafDepth, weightOutputFile); + dumpElementMassFraction(elementOutputFile); // } @@ -75,10 +91,11 @@ void PrintMaterialBudgetInfo::dumpHeader(std::ostream& out ) { } void PrintMaterialBudgetInfo::dumpHierarchyLeaf(G4VPhysicalVolume* pv, G4LogicalVolume* lv, - uint leafDepth, std::ostream& out ) { + uint leafDepth, + std::ostream& weightOut = std::cout) { if( volumeFound && ( leafDepth <= levelFound ) ) return; - if( volumeFound && ( leafDepth > levelFound ) ) printInfo(pv, lv, leafDepth, out); + if( volumeFound && ( leafDepth > levelFound ) ) printInfo(pv, lv, leafDepth, weightOut); // choose mother volume std::string lvname = lv->GetName(); @@ -86,7 +103,7 @@ void PrintMaterialBudgetInfo::dumpHierarchyLeaf(G4VPhysicalVolume* pv, G4Logical if (lvname == name) { volumeFound = true; levelFound = leafDepth; - printInfo(pv, lv, leafDepth, out); + printInfo(pv, lv, leafDepth, weightOut); } //----- Get LV daughters from list of PV daughters @@ -108,15 +125,16 @@ void PrintMaterialBudgetInfo::dumpHierarchyLeaf(G4VPhysicalVolume* pv, G4Logical std::pair< mmlvpv::iterator, mmlvpv::iterator > mmER = lvpvDaughters.equal_range(*scite); //----- Dump daughters PV of this LV for (mmcite = mmER.first ; mmcite != mmER.second; mmcite++) - dumpHierarchyLeaf((*mmcite).second, *scite, leafDepth+1, out ); + dumpHierarchyLeaf((*mmcite).second, *scite, leafDepth+1, weightOut ); } } -void PrintMaterialBudgetInfo::printInfo(G4VPhysicalVolume* pv, G4LogicalVolume* lv, uint leafDepth, std::ostream & out) { +void PrintMaterialBudgetInfo::printInfo(G4VPhysicalVolume* pv, G4LogicalVolume* lv, uint leafDepth, + std::ostream& weightOut = std::cout) { double density = lv->GetMaterial()->GetDensity(); - double weight = lv->GetMass(); + double weight = lv->GetMass(false,false); std::string volumeName = lv->GetName(); if(volumeName.size()<8) volumeName.append("\t"); @@ -128,12 +146,57 @@ void PrintMaterialBudgetInfo::printInfo(G4VPhysicalVolume* pv, G4LogicalVolume* if(materialName.size()<8) materialName.append("\t"); //----- dump info - out << leafDepth << "\t" - << volumeName << "\t" - << pv->GetCopyNo() << "\t" - << solidName << "\t" - << materialName << "\t" - << G4BestUnit(density,"Volumic Mass") << "\t" - << G4BestUnit(weight,"Mass") << "\t" - << std::endl; + weightOut << leafDepth << "\t" + << volumeName << "\t" + << pv->GetCopyNo() << "\t" + << solidName << "\t" + << materialName << "\t" + << G4BestUnit(density,"Volumic Mass") << "\t" + << G4BestUnit(weight,"Mass") << "\t" + << std::endl; + for(unsigned int iElement = 0; iElement<(unsigned int)lv->GetMaterial()->GetNumberOfElements(); iElement++) { + // exclude Air in element weight fraction computation + if(materialName.find("Air")) { + std::string elementName = lv->GetMaterial()->GetElement(iElement)->GetName(); + double elementMassFraction = lv->GetMaterial()->GetFractionVector()[iElement]; + double elementWeight = weight*elementMassFraction; + unsigned int elementIndex = (unsigned int)lv->GetMaterial()->GetElement(iElement)->GetIndex(); + elementNames[elementIndex] = elementName; + elementTotalWeight[elementIndex] += elementWeight; + } + } +} + +void PrintMaterialBudgetInfo::dumpElementMassFraction(std::ostream& elementOut = std::cout ) { + // calculate mass fraction + double totalWeight = 0.0; + double totalFraction = 0.0; + for(unsigned int iElement = 0; iElement<(unsigned int)elementTotalWeight.size(); iElement++) { + totalWeight+=elementTotalWeight[iElement]; + } + // calculate element mass fractions + for(unsigned int iElement = 0; iElement<(unsigned int)elementTotalWeight.size(); iElement++) { + elementWeightFraction[iElement] = elementTotalWeight[iElement]/totalWeight; + totalFraction+=elementWeightFraction[iElement]; + } + // header + elementOut << "Element" << "\t\t" + << "Index" << "\t" + << "Total Mass" << "\t" + << "Mass Fraction " << "\t" + << std::endl; + // dump + for(unsigned int iElement = 0; iElement<(unsigned int)elementTotalWeight.size(); iElement++) { + if(elementNames[iElement]!="rr") { + if(elementNames[iElement].size()<8) elementNames[iElement].append("\t"); + elementOut << elementNames[iElement] << "\t" + << iElement << "\t" + << G4BestUnit(elementTotalWeight[iElement],"Mass") << "\t" + << elementWeightFraction[iElement] + << std::endl; + } + } + elementOut << "\n\t\tTotal Weight without Air " << G4BestUnit(totalWeight,"Mass") + << "\tTotal Fraction " << totalFraction + << std::endl; } diff --git a/SimG4Core/SaveSimTrackAction/doc/html/index.html b/SimG4Core/SaveSimTrackAction/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimG4Core/SaveSimTrackAction/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimG4Core/SaveSimTrackAction/doc/html/overview.html b/SimG4Core/SaveSimTrackAction/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimG4Core/SaveSimTrackAction/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimGeneral/Configuration/doc/html/index.html b/SimGeneral/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimGeneral/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimGeneral/Configuration/doc/html/overview.html b/SimGeneral/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimGeneral/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimGeneral/DataMixingModule/doc/html/index.html b/SimGeneral/DataMixingModule/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimGeneral/DataMixingModule/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimGeneral/DataMixingModule/doc/html/overview.html b/SimGeneral/DataMixingModule/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimGeneral/DataMixingModule/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimGeneral/GFlash/doc/html/index.html b/SimGeneral/GFlash/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimGeneral/GFlash/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimGeneral/GFlash/doc/html/overview.html b/SimGeneral/GFlash/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimGeneral/GFlash/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimGeneral/HepPDTESSource/test/HepPDTAnalyzer.cc b/SimGeneral/HepPDTESSource/test/HepPDTAnalyzer.cc index db9602ea1bd..20448bcf074 100644 --- a/SimGeneral/HepPDTESSource/test/HepPDTAnalyzer.cc +++ b/SimGeneral/HepPDTESSource/test/HepPDTAnalyzer.cc @@ -60,4 +60,4 @@ HepPDTAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) } //define this as a plug-in -DEFINE_FWK_MODULE(HepPDTAnalyzer) +DEFINE_FWK_MODULE(HepPDTAnalyzer); diff --git a/SimGeneral/NoiseGenerators/TagLog b/SimGeneral/NoiseGenerators/TagLog new file mode 100644 index 00000000000..31048d4be49 --- /dev/null +++ b/SimGeneral/NoiseGenerators/TagLog @@ -0,0 +1,6 @@ +** V00-00-01 [Fri Oct 28 16:10:39 2005] +Publish V00-00-01 + +** V00-00-00 [Wed Oct 26 18:08:17 2005] +Base tag on CMSSW_0_2_0_pre5 + diff --git a/SimGeneral/TrackingAnalysis/src/TrackingTruthProducer.cc b/SimGeneral/TrackingAnalysis/src/TrackingTruthProducer.cc index a43c2b17a2d..47c381f0fd5 100644 --- a/SimGeneral/TrackingAnalysis/src/TrackingTruthProducer.cc +++ b/SimGeneral/TrackingAnalysis/src/TrackingTruthProducer.cc @@ -179,6 +179,8 @@ void TrackingTruthProducer::produce(Event &event, const EventSetup &) { } } } + + tp.setMatchedHit(totsimhit); tp.addG4Track(*itP); if (genPart >= 0) { diff --git a/SimGeneral/TrackingAnalysis/src/classes.h b/SimGeneral/TrackingAnalysis/src/classes.h deleted file mode 100644 index 8b137891791..00000000000 --- a/SimGeneral/TrackingAnalysis/src/classes.h +++ /dev/null @@ -1 +0,0 @@ - diff --git a/SimGeneral/TrackingAnalysis/src/classes_def.xml b/SimGeneral/TrackingAnalysis/src/classes_def.xml deleted file mode 100644 index 27e9da8a8f9..00000000000 --- a/SimGeneral/TrackingAnalysis/src/classes_def.xml +++ /dev/null @@ -1,2 +0,0 @@ -<lcgdict> -</lcgdict> diff --git a/SimMuon/MCTruth/doc/html/index.html b/SimMuon/MCTruth/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimMuon/MCTruth/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimMuon/MCTruth/doc/html/overview.html b/SimMuon/MCTruth/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimMuon/MCTruth/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimMuon/Neutron/BuildFile b/SimMuon/Neutron/BuildFile deleted file mode 100644 index 7ee250675d5..00000000000 --- a/SimMuon/Neutron/BuildFile +++ /dev/null @@ -1,16 +0,0 @@ -<export> - <lib name=SimMuonNeutron> - <use name=SimDataFormats/TrackingHit> - <use name=FWCore/Framework> - <use name=FWCore/ParameterSet> - <use name=FWCore/MessageLogger> - <use name=CLHEP> - <use name=root> -</export> - -<use name=SimDataFormats/TrackingHit> -<use name=FWCore/Framework> -<use name=FWCore/ParameterSet> -<use name=FWCore/MessageLogger> -<use name=CLHEP> -<use name=root> diff --git a/SimMuon/Neutron/interface/SubsystemNeutronReader.h b/SimMuon/Neutron/interface/SubsystemNeutronReader.h deleted file mode 100644 index 377d6434580..00000000000 --- a/SimMuon/Neutron/interface/SubsystemNeutronReader.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef SimMuon_Neutron_SubsystemNeutronReader_h -#define SimMuon_Neutron_SubsystemNeutronReader_h -/** - \author Rick Wilkinson - Reads neutron events from a database - */ - -#include "SimDataFormats/TrackingHit/interface/PSimHit.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" -#include<vector> -class NeutronReader; - -class SubsystemNeutronReader -{ -public: - /// the hits will be distributed flat in time between startTime and endTime - /// eventOccupancy is the expected chamber occupancy from a single - /// min bias event for each chamber type - SubsystemNeutronReader(const edm::ParameterSet & pset); - virtual ~SubsystemNeutronReader(); - - /// this class makes sure the same chamberIndex isn't called twice - /// for an event - void generateChamberNoise(int chamberType, int chamberIndex, edm::PSimHitContainer & result); - - void clear() {theChambersDone.clear();} - -protected: - /// detector-specific way to get the global detector - /// ID, given the local one. - virtual int detId(int chamberIndex, int localDetId ) = 0; - - -private: - - NeutronReader * theHitReader; - - /// just makes sure chambers aren't done twice - std::vector<int> theChambersDone; - - - /// in units of 10**34, set by Muon:NeutronLuminosity - float theLuminosity; - float theStartTime; - float theEndTime; - /// how many collsions happened between theStartTime and theEndTime - float theEventsInWindow; - - std::vector<double> theEventOccupancy; // Placed here so ctor init list order OK - -}; - -#endif - diff --git a/SimMuon/Neutron/interface/SubsystemNeutronWriter.h b/SimMuon/Neutron/interface/SubsystemNeutronWriter.h deleted file mode 100644 index e391a235c00..00000000000 --- a/SimMuon/Neutron/interface/SubsystemNeutronWriter.h +++ /dev/null @@ -1,65 +0,0 @@ -#ifndef SubsystemNeutronWriter_h -#define SubsystemNeutronWriter_h - -/** theSubsystemNeutronWriter stores "events" - * which consist of a list of SimHits, - * grouped by detector type. These can then - * be read back to model neutron background - * int muon chambers. - * - * You can specify the cut on how long after the - * signal event to define something as a Neutron Event - * with the configurable Muon:NeutronTimeCut - */ - -#include <vector> -#include <map> -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "SimMuon/Neutron/src/NeutronWriter.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Framework/interface/EventSetup.h" - - -class SubsystemNeutronWriter : public edm::EDAnalyzer -{ -public: - - explicit SubsystemNeutronWriter(edm::ParameterSet const& pset); - - /// destructor prints statistics on number of events written - virtual ~SubsystemNeutronWriter(); - - void printStats(); - - virtual void analyze(edm::Event const& e, edm::EventSetup const& c); - - virtual int localDetId(int globalDetId) const = 0; - - virtual int chamberType(int globalDetId) const = 0; - - virtual int chamberId(int globalDetId) const = 0; - -protected: - - - virtual void writeHits(int chamberType, edm::PSimHitContainer & allSimHits); - - /// helper to add time offsets and local det ID - void adjust(PSimHit & h, float timeOffset); - - /// updates the counter - void updateCount(int chamberType); - -private: - NeutronWriter * theHitWriter; - edm::InputTag theInputTag; - double theNeutronTimeCut; - double theTimeWindow; - bool initialized; - std::map<int, int> theCountPerChamberType; -}; - -#endif - diff --git a/SimMuon/Neutron/src/AsciiNeutronReader.cc b/SimMuon/Neutron/src/AsciiNeutronReader.cc deleted file mode 100644 index b7e8da87096..00000000000 --- a/SimMuon/Neutron/src/AsciiNeutronReader.cc +++ /dev/null @@ -1,70 +0,0 @@ -#include "SimMuon/Neutron/src/AsciiNeutronReader.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/EDMException.h" -#include "FWCore/ParameterSet/interface/FileInPath.h" -#include <sstream> -#include<iostream> - -using namespace std; - -AsciiNeutronReader::AsciiNeutronReader(string fileNameBase, int nChamberTypes) : - theFileNameBase(fileNameBase), - theNumberOfChamberTypes(nChamberTypes), - theStreamPos(nChamberTypes+1, 0) -{ -} - - -void AsciiNeutronReader::readNextEvent(int chamberType, edm::PSimHitContainer & result) { - stringstream fileName; - fileName << theFileNameBase << chamberType; - ifstream fin(fileName.str().c_str(), ios::in); - if(!fin.is_open()) { - throw cms::Exception("NeutronReader") - << "Muon neutron noise file missing " << fileName.str(); - } - - int nhits = read_nhits(fin, chamberType); - for(int ihit = 0; ihit < nhits; ++ihit) { - float entryX, entryY, entryZ, exitX, exitY, exitZ; - float p, tof, eloss, theta, phi; - int type, layer, track; - - fin >> entryX >> entryY >> entryZ - >> exitX >> exitY >> exitZ - >> p >> tof >> eloss >> type >> layer >> track >> theta >> phi; - LocalPoint entry(entryX, entryY, entryZ); - LocalPoint exit (exitX, exitY, exitZ); - PSimHit phit(entry, exit, p, tof, eloss, type, layer, track, theta, phi); - result.push_back(phit); - } - theStreamPos[chamberType] = fin.tellg(); -} - - -int AsciiNeutronReader::read_nhits(ifstream & fin, int chamberType) { - int nhits = 0; - // go to the last saved place - fin.seekg(theStreamPos[chamberType]); - if(fin.eof()) { - resetStreampos(fin, chamberType); - } - LogDebug("NeutronReader") << "starting from pos " << theStreamPos[chamberType] - << " EOF " << fin.eof(); - fin >> nhits; - if(fin.eof()) { - resetStreampos(fin, chamberType); - fin >> nhits; - } - LogDebug("NeutronReader") << "returning nhits " << nhits; - return nhits; -} - - -void AsciiNeutronReader::resetStreampos(ifstream & fin, int chamberType) { - LogDebug("NeutronReader") << "reached EOF, resetting streampos "; - theStreamPos[chamberType] = 0; - fin.clear(); - fin.seekg(0, ios::beg); -} - diff --git a/SimMuon/Neutron/src/AsciiNeutronReader.h b/SimMuon/Neutron/src/AsciiNeutronReader.h deleted file mode 100755 index 024d7531db0..00000000000 --- a/SimMuon/Neutron/src/AsciiNeutronReader.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef AsciiNeutronReader_h -#define AsciiNeutronReader_h - -#include <iostream> -#include <string> -#include <vector> -#include <fstream> -#include "SimMuon/Neutron/src/NeutronReader.h" - -/** This reads patterns of neutron hits in muon chambers - * from an ASCII database, - * so they can be superimposed onto signal events. - * It reads the events sequentially, and loops - * back to the beginning when it reaches EOF - */ - -class AsciiNeutronReader : public NeutronReader -{ -public: - AsciiNeutronReader(std::string fileNameBase, int nChamberTypes); - - virtual void readNextEvent(int chamberType, edm::PSimHitContainer & result); - -private: - - int read_nhits(std::ifstream & fin, int chamberType); - void resetStreampos(std::ifstream & fin, int chamberType); - - std::string theFileNameBase; - int theNumberOfChamberTypes; - std::vector<std::streampos> theStreamPos; -}; - -#endif - diff --git a/SimMuon/Neutron/src/AsciiNeutronWriter.cc b/SimMuon/Neutron/src/AsciiNeutronWriter.cc deleted file mode 100644 index bfea6c2637d..00000000000 --- a/SimMuon/Neutron/src/AsciiNeutronWriter.cc +++ /dev/null @@ -1,37 +0,0 @@ -#include "SimMuon/Neutron/src/AsciiNeutronWriter.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include <sstream> -#include <fstream> - -using namespace std; - -AsciiNeutronWriter::AsciiNeutronWriter(string fileNameBase) : - theFileNameBase(fileNameBase) { -} - - -AsciiNeutronWriter::~AsciiNeutronWriter() { -} - - -void AsciiNeutronWriter::writeEvent(int chamberType, const edm::PSimHitContainer & hits) -{ - // open the correct file - stringstream s; - s << theFileNameBase << chamberType; - LogDebug("NeutronWriter") << "opening " << s.str(); - ofstream os; - os.open(s.str().c_str(), ofstream::app); - os << hits.size() << endl; - for(size_t i = 0; i < hits.size(); ++i) { - PSimHit h = hits[i]; - os << h.entryPoint().x() << " " << h.entryPoint().y() << " " - << h.entryPoint().z() << " " << h.exitPoint().x() << " " - << h.exitPoint().y() << " " << h.exitPoint().z() << " " - << h.pabs() << " " << " " << h.timeOfFlight() << " " - << h.energyLoss() << " " <<h.particleType() << " " - << h.detUnitId() << " " << h.trackId() << " " - << h.momentumAtEntry().theta() << " " << h.momentumAtEntry().phi() << endl; - } -} - diff --git a/SimMuon/Neutron/src/AsciiNeutronWriter.h b/SimMuon/Neutron/src/AsciiNeutronWriter.h deleted file mode 100755 index 0bd8cc5fcf2..00000000000 --- a/SimMuon/Neutron/src/AsciiNeutronWriter.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef AsciiNeutronWriter_h -#define AsciiNeutronWriter_h - -#include "SimMuon/Neutron/src/NeutronWriter.h" - -/** This writes the fields of a SimHit into an ASCII - * file, which can be read out later to add neutron - * hits to a muon chamber - */ - - -class AsciiNeutronWriter : public NeutronWriter -{ -public: - AsciiNeutronWriter(std::string fileNameBase); - virtual ~AsciiNeutronWriter(); - -protected: - virtual void writeEvent(int chamberType, const edm::PSimHitContainer & hits); - -private: - std::string theFileNameBase; -}; - -#endif - diff --git a/SimMuon/Neutron/src/LinkDef.h b/SimMuon/Neutron/src/LinkDef.h deleted file mode 100644 index 1afc8bef347..00000000000 --- a/SimMuon/Neutron/src/LinkDef.h +++ /dev/null @@ -1,6 +0,0 @@ -#include "SimMuon/Neutron/src/RootSimHit.h" - -#ifdef __CINT__ -#pragma link C++ class RootSimHit; -#endif - diff --git a/SimMuon/Neutron/src/NeutronReader.h b/SimMuon/Neutron/src/NeutronReader.h deleted file mode 100644 index 1fd5f01c04c..00000000000 --- a/SimMuon/Neutron/src/NeutronReader.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef NeutronReader_h -#define NeutronReader_h -/** - * interface to methods which return a set of SimHits in a chamber - \author Rick Wilkinson - */ - -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" -#include<vector> - -class NeutronReader -{ -public: - NeutronReader() {}; - virtual ~NeutronReader() {}; - - virtual void readNextEvent(int chamberType, edm::PSimHitContainer & result) = 0; -}; - -#endif - diff --git a/SimMuon/Neutron/src/NeutronWriter.h b/SimMuon/Neutron/src/NeutronWriter.h deleted file mode 100644 index a296bf1b380..00000000000 --- a/SimMuon/Neutron/src/NeutronWriter.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef NeutronWriter_h -#define NeutronWriter_h - -/** theNeutronWriter stores "events" - * which consist of a list of SimHits, - * grouped by detector type. These can then - * be read back to model neutron background - * int muon chambers. - * - */ - -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" - -class NeutronWriter { -public: - /// makes an "event" from a list of SimHits. Called by writeEvent - virtual void writeEvent(int detType, const edm::PSimHitContainer & simHits) = 0; - virtual ~NeutronWriter() {} - -}; - -#endif - diff --git a/SimMuon/Neutron/src/RootChamberReader.cc b/SimMuon/Neutron/src/RootChamberReader.cc deleted file mode 100644 index d433f529ed7..00000000000 --- a/SimMuon/Neutron/src/RootChamberReader.cc +++ /dev/null @@ -1,55 +0,0 @@ -#include "SimMuon/Neutron/src/RootChamberReader.h" -#include "SimMuon/Neutron/src/RootSimHit.h" -using namespace std; - -RootChamberReader::RootChamberReader() -: theTree(0), - theHits(0), - thePosition(0), - theSize(0) -{ -} - - -RootChamberReader::RootChamberReader(TFile * file, const std::string & treeName) -: theTree( (TTree *) file->Get(treeName.c_str()) ), - theHits(new TClonesArray("RootSimHit")), - thePosition(-1), - theSize(0) -{ - if(theTree != 0) - { - theTree->SetBranchAddress("Hits", &theHits); - theSize = theTree->GetEntries(); - } -} - - -RootChamberReader::~RootChamberReader() -{ -// delete theHits; -// delete theTree; -} - - -void RootChamberReader::read(edm::PSimHitContainer & hits) -{ - // if there's no tree, make no events - if(theTree != 0 && theSize != 0) - { - ++thePosition; - // start again from the beginning, if needed - if(thePosition >= theSize) thePosition = 0; - theTree->GetEntry(thePosition); - - TIter next(theHits); - RootSimHit * rootHit; - while( (rootHit = (RootSimHit *) next()) ) - { - hits.push_back(rootHit->get()); - } -std::cout << "Event " << thePosition << " OF " << theSize << " has " << hits.size() << " hits " << std::endl; - } -} - - diff --git a/SimMuon/Neutron/src/RootChamberReader.h b/SimMuon/Neutron/src/RootChamberReader.h deleted file mode 100644 index 175fed5f518..00000000000 --- a/SimMuon/Neutron/src/RootChamberReader.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef SimMuon_Neutron_RootChamberReader_h -#define SimMuon_Neutron_RootChamberReader_h - -#include <TFile.h> -#include <TTree.h> -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" - -class RootChamberReader -{ -public: - /// default ctor, for STL - RootChamberReader(); - RootChamberReader(TFile * file, const std::string & treeName); - /// writes the tree, and deletes everything - ~RootChamberReader(); - - void read(edm::PSimHitContainer & hits); - -private: - TTree * theTree; - TClonesArray * theHits; - int thePosition; - int theSize; -}; - -#endif - diff --git a/SimMuon/Neutron/src/RootChamberWriter.cc b/SimMuon/Neutron/src/RootChamberWriter.cc deleted file mode 100644 index e71ccb49c27..00000000000 --- a/SimMuon/Neutron/src/RootChamberWriter.cc +++ /dev/null @@ -1,34 +0,0 @@ -#include "SimMuon/Neutron/src/RootChamberWriter.h" -#include "SimMuon/Neutron/src/RootSimHit.h" -using namespace std; - -RootChamberWriter::RootChamberWriter(const std::string & treeName) -{ - theHits = new TClonesArray("RootSimHit"); - theTree = new TTree(treeName.c_str(), "Neutron Background"); - theTree->Bronch("Hits", "TClonesArray", &theHits); -} - - -RootChamberWriter::~RootChamberWriter() -{ -//std::cout << "WRITING " << theTree->GetEntries() << std::endl; -// theTree->Write(); - //delete theHits; - //delete theTree; -} - - -void RootChamberWriter::write(const edm::PSimHitContainer & hits) -{ -std::cout << "ENTRIES BEFORE " << theTree->GetEntries() << std::endl; - theHits->Delete(); - theHits->Expand(hits.size()); - for(unsigned int i = 0; i < hits.size(); ++i) - { - new((*theHits)[i]) RootSimHit(hits[i]); - } - theTree->Fill(); -std::cout << "ENTRIES AFTER " << theTree->GetEntries() << std::endl; -} - diff --git a/SimMuon/Neutron/src/RootChamberWriter.h b/SimMuon/Neutron/src/RootChamberWriter.h deleted file mode 100644 index ccb506c63b4..00000000000 --- a/SimMuon/Neutron/src/RootChamberWriter.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef SimMuon_Neutron_RootChamberWriter_h -#define SimMuon_Neutron_RootChamberWriter_h - -#include <TTree.h> -#include <TClonesArray.h> -#include "SimDataFormats/TrackingHit/interface/PSimHitContainer.h" - -class RootChamberWriter -{ -public: - /// default ctor, for STL - RootChamberWriter() : theTree(0), theHits(0) {} - RootChamberWriter(const std::string & treeName); - - /// writes the tree, and deletes everything - ~RootChamberWriter(); - - void write(const edm::PSimHitContainer & hits); - - TTree * tree() {return theTree;} - -private: - TTree * theTree; - TClonesArray * theHits; -}; - -#endif - diff --git a/SimMuon/Neutron/src/RootNeutronReader.cc b/SimMuon/Neutron/src/RootNeutronReader.cc deleted file mode 100644 index 04b302b7de1..00000000000 --- a/SimMuon/Neutron/src/RootNeutronReader.cc +++ /dev/null @@ -1,35 +0,0 @@ -#include "SimMuon/Neutron/src/RootNeutronReader.h" -#include <sstream> - -RootNeutronReader::RootNeutronReader(const std::string & fileName) -: theFile(new TFile(fileName.c_str())) -{ -} - - -RootChamberReader & RootNeutronReader::chamberReader(int chamberType) -{ - std::map<int, RootChamberReader>::iterator mapItr - = theChamberReaders.find(chamberType); - - if(mapItr != theChamberReaders.end()) - { - return mapItr->second; - } - else - { - // make a new one - std::ostringstream treeName; - treeName << "ChamberType" << chamberType; - theChamberReaders[chamberType] = RootChamberReader(theFile, treeName.str()); - return theChamberReaders[chamberType]; - } -} - - -void RootNeutronReader::readNextEvent(int chamberType, edm::PSimHitContainer & result) -{ - chamberReader(chamberType).read(result); -} - - diff --git a/SimMuon/Neutron/src/RootNeutronReader.h b/SimMuon/Neutron/src/RootNeutronReader.h deleted file mode 100644 index c2b0e0447b2..00000000000 --- a/SimMuon/Neutron/src/RootNeutronReader.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef RootNeutronReader_h -#define RootNeutronReader_h - -#include "SimMuon/Neutron/src/NeutronReader.h" -#include "SimMuon/Neutron/src/RootChamberReader.h" -#include <TFile.h> - -/** This reads patterns of neutron hits in muon chambers - * from an ROOT database, - * so they can be superimposed onto signal events. - * It reads the events sequentially, and loops - * back to the beginning when it reaches EOF - */ - -class RootNeutronReader : public NeutronReader -{ -public: - RootNeutronReader(const std::string & fileName); - - virtual void readNextEvent(int chamberType, edm::PSimHitContainer & result); - - RootChamberReader & chamberReader(int chamberType); - -private: - TFile * theFile; - std::map<int, RootChamberReader> theChamberReaders; -}; - -#endif - diff --git a/SimMuon/Neutron/src/RootNeutronWriter.cc b/SimMuon/Neutron/src/RootNeutronWriter.cc deleted file mode 100644 index 5e53c9f497a..00000000000 --- a/SimMuon/Neutron/src/RootNeutronWriter.cc +++ /dev/null @@ -1,49 +0,0 @@ -#include "SimMuon/Neutron/src/RootNeutronWriter.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" - -using namespace std; -#include <iostream> -RootNeutronWriter::RootNeutronWriter(const string & fileName) -{ - theFile = new TFile(fileName.c_str(),"update"); -} - - -RootNeutronWriter::~RootNeutronWriter() -{ - for(std::map<int, RootChamberWriter>::iterator mapItr = theChamberWriters.begin(); - mapItr != theChamberWriters.end(); ++mapItr) - { - mapItr->second.tree()->Print(); - // the tree will remember which file it's from - theFile = mapItr->second.tree()->GetCurrentFile(); - } - theFile->Write(); -// theFile->Close(); -} - - -RootChamberWriter & RootNeutronWriter::chamberWriter(int chamberType) -{ - std::map<int, RootChamberWriter>::iterator mapItr = theChamberWriters.find(chamberType); - if(mapItr != theChamberWriters.end()) - { - return mapItr->second; - } - else - { - // make a new one - ostringstream treeName; - treeName << "ChamberType" << chamberType; - theChamberWriters[chamberType] = RootChamberWriter(treeName.str()); - return theChamberWriters[chamberType]; - } -} - - -void RootNeutronWriter::writeEvent(int chamberType, const edm::PSimHitContainer & hits) -{ -std::cout << "ROOTNEUTRONWRITER " << chamberType << " HITS SIZE " << hits.size() <<std::endl; - chamberWriter(chamberType).write(hits); -} - diff --git a/SimMuon/Neutron/src/RootNeutronWriter.h b/SimMuon/Neutron/src/RootNeutronWriter.h deleted file mode 100644 index b20c3492f7c..00000000000 --- a/SimMuon/Neutron/src/RootNeutronWriter.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef SimMuon_Neutron_RootNeutronWriter_h -#define SimMuon_Neutron_RootNeutronWriter_h - -#include "SimMuon/Neutron/src/NeutronWriter.h" -#include "SimMuon/Neutron/src/RootChamberWriter.h" -#include <TFile.h> -#include <vector> -/** This writes the fields of a SimHit into an ASCII - * file, which can be read out later to add neutron - * hits to a muon chamber - */ - - -class RootNeutronWriter : public NeutronWriter -{ -public: - RootNeutronWriter(const std::string & fileName); - virtual ~RootNeutronWriter(); - - /// users should use this to create chamberwriters - /// for each chamber type just after creation - RootChamberWriter & chamberWriter(int chamberType); - - virtual void writeEvent(int chamberType, const edm::PSimHitContainer & hits); - -private: - std::map<int, RootChamberWriter> theChamberWriters; - TFile * theFile; -}; - -#endif - diff --git a/SimMuon/Neutron/src/RootSimHit.cc b/SimMuon/Neutron/src/RootSimHit.cc deleted file mode 100644 index 844a434c4bc..00000000000 --- a/SimMuon/Neutron/src/RootSimHit.cc +++ /dev/null @@ -1,32 +0,0 @@ -#include "SimMuon/Neutron/src/RootSimHit.h" -ClassImp(RootSimHit); - - -RootSimHit::RootSimHit(const PSimHit & hit) -: theEntryX(hit.entryPoint().x()), - theEntryY(hit.entryPoint().y()), - theEntryZ(hit.entryPoint().z()), - theExitX(hit.exitPoint().x()), - theExitY(hit.exitPoint().y()), - theExitZ(hit.exitPoint().z()), - thePabs(hit.pabs()), - theEnergyLoss(hit.energyLoss()), - theThetaAtEntry(hit.thetaAtEntry()), thePhiAtEntry(hit.phiAtEntry()), - theTof(hit.tof()), - theParticleType(hit.particleType()), theProcessType(hit.processType()), - theDetUnitId( hit.detUnitId()), theTrackId( hit.trackId()) -{ -} - - -PSimHit RootSimHit::get() const -{ - return PSimHit(Local3DPoint(theEntryX, theEntryY, theEntryZ), - Local3DPoint(theExitX, theExitY, theExitZ), - thePabs, theTof, - theEnergyLoss, theParticleType, theDetUnitId, theTrackId, - theThetaAtEntry, thePhiAtEntry, theProcessType); -} - - - diff --git a/SimMuon/Neutron/src/RootSimHit.h b/SimMuon/Neutron/src/RootSimHit.h deleted file mode 100644 index 4242db289cf..00000000000 --- a/SimMuon/Neutron/src/RootSimHit.h +++ /dev/null @@ -1,40 +0,0 @@ -#ifndef SimMuon_Neutron_RootSimHit_h -#define SimMuon_Neutron_RootSimHit_h - -#include "SimDataFormats/TrackingHit/interface/PSimHit.h" -#include <TObject.h> - -class RootSimHit : public TObject -{ -public: - RootSimHit() {} - RootSimHit(const PSimHit & hit); - PSimHit get() const; -private: - // properties -// Local3DPoint theEntryPoint; // position at entry -// Local3DPoint theExitPoint; // exitPos - float theEntryX; - float theEntryY; - float theEntryZ; - float theExitX; - float theExitY; - float theExitZ; - float thePabs; // momentum - float theEnergyLoss; // Energy loss - float theThetaAtEntry; - float thePhiAtEntry; - - float theTof; // Time Of Flight - short theParticleType; - unsigned short theProcessType; // ID of the process which created the track - // which created the PSimHit - - // association - unsigned int theDetUnitId; - unsigned int theTrackId; - ClassDef(RootSimHit, 1) -}; - -#endif - diff --git a/SimMuon/Neutron/src/SubsystemNeutronReader.cc b/SimMuon/Neutron/src/SubsystemNeutronReader.cc deleted file mode 100644 index cca02b1c82b..00000000000 --- a/SimMuon/Neutron/src/SubsystemNeutronReader.cc +++ /dev/null @@ -1,87 +0,0 @@ -#include "SimMuon/Neutron/interface/SubsystemNeutronReader.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/ParameterSet/interface/FileInPath.h" -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandPoisson.h" -#include "SimMuon/Neutron/src/NeutronReader.h" -#include "SimMuon/Neutron/src/RootNeutronReader.h" -#include "SimMuon/Neutron/src/AsciiNeutronReader.h" -#include <algorithm> - -using namespace std; - -SubsystemNeutronReader::SubsystemNeutronReader(const edm::ParameterSet & pset) -: theHitReader(0), - theLuminosity(pset.getParameter<double>("luminosity")), // in units of 10^34 - theStartTime(pset.getParameter<double>("startTime")), - theEndTime(pset.getParameter<double>("endTime")), - theEventOccupancy(pset.getParameter<vector<double> >("eventOccupancy")) -{ - // 17.3 collisions per live bx, 79.5% of bx live - float collisionsPerCrossing = 13.75 * theLuminosity; - int windowSize = (int)((theEndTime-theStartTime)/25.); - theEventsInWindow = collisionsPerCrossing * windowSize; - string reader = pset.getParameter<string>("reader"); - edm::FileInPath input = pset.getParameter<edm::FileInPath>("input"); - int nChamberTypes = pset.getParameter<int>("nChamberTypes"); - - if(reader == "ASCII") - { - theHitReader = new AsciiNeutronReader(input.fullPath(), nChamberTypes); - } - else if (reader == "ROOT") - { - theHitReader = new RootNeutronReader(input.fullPath()); - } -} - - -SubsystemNeutronReader::~SubsystemNeutronReader() { -std::cout << "DELETING NEUTRONREADER " << std::endl; - delete theHitReader; -} - - -void -SubsystemNeutronReader::generateChamberNoise(int chamberType, int chamberIndex, - edm::PSimHitContainer & result) -{ - // make sure this chamber hasn't been done before - if(find(theChambersDone.begin(), theChambersDone.end(), chamberIndex) - == theChambersDone.end()) - { - float meanNumberOfEvents = theEventOccupancy[chamberType] - * theEventsInWindow; - int nEventsToAdd = RandPoisson::shoot(meanNumberOfEvents); -// LogDebug("NeutronReader") << "Number of neutron events to add: " -std::cout << "Number of neutron events to add: " - << nEventsToAdd << " mean " << meanNumberOfEvents << std::endl; -// << nEventsToAdd << " mean " << meanNumberOfEvents; - - for(int i = 0; i < nEventsToAdd; ++i) { - // find the time for this event - float timeOffset = theStartTime - + RandFlat::shoot() * (theEndTime-theStartTime); - vector<PSimHit> neutronHits; - theHitReader->readNextEvent(chamberType, neutronHits); - - for( vector<PSimHit>::const_iterator neutronHitItr = neutronHits.begin(); - neutronHitItr != neutronHits.end(); ++neutronHitItr) - { - const PSimHit & rawHit = *neutronHitItr; - // do the time offset and local det id - int det = detId(chamberIndex, rawHit.detUnitId()); - PSimHit hit(rawHit.entryPoint(), rawHit.exitPoint(), rawHit.pabs(), - rawHit.tof()+timeOffset, - rawHit.energyLoss(), rawHit.particleType(), - det, rawHit.trackId(), - rawHit.thetaAtEntry(), rawHit.phiAtEntry(), rawHit.processType()); -std::cout << "NEWHIT " << hit << std::endl; - result.push_back(hit); - } - - } - theChambersDone.push_back(chamberIndex); - } -} - diff --git a/SimMuon/Neutron/src/SubsystemNeutronWriter.cc b/SimMuon/Neutron/src/SubsystemNeutronWriter.cc deleted file mode 100644 index 095d69f8ac8..00000000000 --- a/SimMuon/Neutron/src/SubsystemNeutronWriter.cc +++ /dev/null @@ -1,144 +0,0 @@ -#include "SimMuon/Neutron/interface/SubsystemNeutronWriter.h" -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/Utilities/interface/EDMException.h" -#include "SimMuon/Neutron/src/AsciiNeutronWriter.h" -#include "SimMuon/Neutron/src/RootNeutronWriter.h" -#include <algorithm> - -using namespace std; - -class SortByTime { -public: - bool operator()(const PSimHit & h1, const PSimHit & h2) { - return (h1.tof() < h2.tof()); - } -}; - - -SubsystemNeutronWriter::SubsystemNeutronWriter(edm::ParameterSet const& pset) -: theInputTag(pset.getParameter<edm::InputTag>("input")), - theNeutronTimeCut(pset.getParameter<double>("neutronTimeCut")), - theTimeWindow(pset.getParameter<double>("timeWindow")), - initialized(false) -{ - string writer = pset.getParameter<string>("writer"); - string output = pset.getParameter<string>("output"); - int nChamberTypes = pset.getParameter<int>("nChamberTypes"); - if(writer == "ASCII") - { - theHitWriter = new AsciiNeutronWriter(output); - } - else if (writer == "ROOT") - { - theHitWriter = new RootNeutronWriter(output); - } - else - { - throw cms::Exception("NeutronWriter") << "Bad writer: " - << writer; - } -} - - -SubsystemNeutronWriter::~SubsystemNeutronWriter() -{ - printStats(); - delete theHitWriter; -} - - -void SubsystemNeutronWriter::printStats() { - edm::LogInfo("SubsystemNeutronWriter") << "SubsystemNeutronWriter Statistics:\n"; - for(map<int,int>::iterator mapItr = theCountPerChamberType.begin(); - mapItr != theCountPerChamberType.end(); ++mapItr) { - edm::LogInfo("SubsystemNeutronWriter") << " theEventOccupancy[" << mapItr->first << "] = " - << mapItr->second << " / NEV / NCT \n"; - } -} - - -void SubsystemNeutronWriter::analyze(edm::Event const& e, edm::EventSetup const& c) -{ - edm::Handle<edm::PSimHitContainer> hits; - e.getByLabel(theInputTag, hits); - - // sort hits by chamber - map<int, edm::PSimHitContainer> hitsByChamber; - for(edm::PSimHitContainer::const_iterator hitItr = hits->begin(); - hitItr != hits->end(); ++hitItr) - { - int chamberIndex = chamberId(hitItr->detUnitId()); - hitsByChamber[chamberIndex].push_back(*hitItr); - } - - // now write out each chamber's contents - for(map<int, edm::PSimHitContainer>::iterator hitsByChamberItr = hitsByChamber.begin(); - hitsByChamberItr != hitsByChamber.end(); ++hitsByChamberItr) - { - int chambertype = chamberType(hitsByChamberItr->first); - writeHits(chambertype, hitsByChamberItr->second); - } -} - - -void SubsystemNeutronWriter::writeHits(int chamberType, edm::PSimHitContainer & input) -{ - - sort(input.begin(), input.end(), SortByTime()); - edm::PSimHitContainer current; - float startTime = -1000.; - for(size_t i = 0; i < input.size(); ++i) { - PSimHit hit = input[i]; -std::cout << hit << std::endl; - float tof = hit.tof(); - LogDebug("SubsystemNeutronWriter") << "found hit from part type " << hit.particleType() - << " at tof " << tof << " p " << hit.pabs() - << " on det " << hit.detUnitId() - << " chamber type " << chamberType; - if(tof > theNeutronTimeCut) { - if(tof > (startTime + theTimeWindow) ) { // 1st in cluster - startTime = tof; - if(!current.empty()) { - LogDebug("SubsystemNeutronWriter") << "filling old cluster"; - theHitWriter->writeEvent(chamberType, current); - updateCount(chamberType); - current.clear(); - } - LogDebug("SubsystemNeutronWriter") << "starting neutron cluster at time " << startTime - << " on detType " << chamberType; - } - // set the time to be 0 at start of event -std::cout << "ADJUST " << startTime << std::endl; - adjust(hit, -1.*startTime); - current.push_back( hit ); -std::cout << "NEXT HIT" << std::endl; - } - } -std::cout << "LOOPED OVER HITS " << theHitWriter << std::endl; - if(!current.empty()) { - theHitWriter->writeEvent(chamberType, current); - updateCount(chamberType); - } -} - - -void SubsystemNeutronWriter::adjust(PSimHit & h, float timeOffset) { - - h = PSimHit( h.entryPoint(), h.exitPoint(), h.pabs(), - h.timeOfFlight() + timeOffset, - h.energyLoss(), h.particleType(), - localDetId(h.detUnitId()), h.trackId(), - h.momentumAtEntry().theta(), - h.momentumAtEntry().phi() ); -} - - -void SubsystemNeutronWriter::updateCount(int chamberType) { - map<int,int>::iterator entry = theCountPerChamberType.find(chamberType); - if(entry == theCountPerChamberType.end()) { - theCountPerChamberType.insert( pair<int,int>(chamberType, 1) ); - } else { - ++(entry->second); - } -} - diff --git a/SimMuon/Neutron/test/AsciiNeutronTest.cpp b/SimMuon/Neutron/test/AsciiNeutronTest.cpp deleted file mode 100755 index db3f138ba09..00000000000 --- a/SimMuon/Neutron/test/AsciiNeutronTest.cpp +++ /dev/null @@ -1,45 +0,0 @@ -#include "Utilities/Configuration/interface/Architecture.h" -#include "Muon/MuonNeutrons/interface/AsciiNeutronHitWriter.h" -#include "Muon/MuonNeutrons/interface/AsciiNeutronHitReader.h" -#include "Profound/PersistentTrackingHits/interface/PSimHit.h" -#include "Muon/MuonNeutrons/test/DummySimHit.h" - - -/* - * should write: - * one event of one hit - * one event of two hits - * Then read out three events, so it loops back. - */ - -int main() { - AsciiNeutronHitWriter writer("NeutronsME"); - int detType = 10; - int nevent = 2; - int hitCount = 0; - for(int event = 1; event <= nevent; ++event) { - vector<PSimHit> hits; - int nhits = event; - for(int i = 0; i < nhits; ++i) { - int layer = i%6 + 1; - ++hitCount; - // leaks like crazy, but it's just a test - PSimHit * pSimHit = new PSimHit(LocalPoint(i, hitCount,-0.25), LocalPoint(i, hitCount,0.25), - 100., 300., 0.0001, 11, layer, 1, 0., 0.); - DummySimHit * simHit = new DummySimHit(pSimHit, 0., 1); - hits.push_back(writer.makePSimHit(simHit, layer)); - } - writer.writeEvent(detType, hits); - } - - AsciiNeutronHitReader reader("NeutronsME", 11); - for(int i = 0; i < 3; ++i) { - vector<PSimHit> hits = reader.readNextEvent(detType); - for(int i = 0; i != hits.size(); ++i) { - cout << "OVAL " << hits[i] << endl; - } - } -} - - - diff --git a/SimMuon/Neutron/test/AsciiNeutronTest.ref b/SimMuon/Neutron/test/AsciiNeutronTest.ref deleted file mode 100644 index 3ccb514c5bd..00000000000 --- a/SimMuon/Neutron/test/AsciiNeutronTest.ref +++ /dev/null @@ -1,4 +0,0 @@ -OVAL 1 (0,1,-0.25) 0 -OVAL 1 (0,2,-0.25) 0 -OVAL 2 (1,3,-0.25) 0 -OVAL 1 (0,1,-0.25) 0 diff --git a/SimMuon/Neutron/test/NeutronReaderTest.cpp b/SimMuon/Neutron/test/NeutronReaderTest.cpp deleted file mode 100644 index 1f1eef4b858..00000000000 --- a/SimMuon/Neutron/test/NeutronReaderTest.cpp +++ /dev/null @@ -1,46 +0,0 @@ -#include "SimMuon/Neutron/interface/SubsystemNeutronReader.h" -#include "TRandom.h" - - -class TestNeutronReader : public SubsystemNeutronReader -{ -public: - TestNeutronReader(const edm::ParameterSet & p) : SubsystemNeutronReader(p) - { - } - - virtual int detId(int chamberIndex, int localDetId ) {return 0;} -}; - - -int main() { - edm::ParameterSet p; - p.addParameter("luminosity", 1.); - p.addParameter("startTime", -50.); - p.addParameter("endTime", 150.); - p.addParameter("eventOccupancy", std::vector<double>(11, 0.01)); - p.addParameter("reader", std::string("ROOT")); - p.addParameter("output" , std::string("CSCNeutronHits.root")); - p.addParameter("nChamberTypes", 10); -std::cout << "BUILD " << std::endl; -try { - TestNeutronReader reader(p); -std::cout << "BUILT " << std::endl; - for(int ev = 0; ev < 10; ++ev) { - std::cout << "NEW EVENT " << std::endl; - reader.clear(); - for(int ch = 1; ch <= 10; ++ch) { - edm::PSimHitContainer cont; - reader.generateChamberNoise(ch, ch, cont); - std::cout << "This event has " << cont.size() << " SimHits " << std::endl; - } - } -} -catch (cms::Exception& x) -{ - std::cerr << "cms Exception caught, message follows\n" - << x.what(); -} - -} - diff --git a/SimMuon/Neutron/test/RootNeutronTest.cpp b/SimMuon/Neutron/test/RootNeutronTest.cpp deleted file mode 100755 index b67f360efb3..00000000000 --- a/SimMuon/Neutron/test/RootNeutronTest.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "SimMuon/Neutron/src/RootNeutronWriter.h" -#include "SimMuon/Neutron/src/RootNeutronReader.h" - - -/* - * should write: - * one event of one hit - * one event of two hits - * Then read out three events, so it loops back. - */ - -using namespace std; - -void testWriting() -{ - RootNeutronWriter writer("NeutronsME.root"); - - int nevent = 5; - int hitCount = 0; - for(int event = 1; event <= nevent; ++event) { - int detType = (rand() % 10) + 1; - vector<PSimHit> hits; - int nhits = event; - for(int i = 0; i < nhits; ++i) { - int layer = i%6 + 1; - ++hitCount; - PSimHit pSimHit(LocalPoint(i, hitCount,-0.25), LocalPoint(i, hitCount,0.25), - 100., 300., 0.0001, 11, layer, 1, 0., 0.); - hits.push_back(pSimHit); - } - writer.writeEvent(detType, hits); - } - -} - - -void testReading() -{ - RootNeutronReader reader("NeutronsME.root"); - for(int i = 0; i < 30; ++i) { - for(int detType = 1; detType <= 10; ++detType) - { - vector<PSimHit> hits; - reader.readNextEvent(detType, hits); - for(unsigned int i = 0; i != hits.size(); ++i) { - cout << "OVAL DET " << detType << " " << hits[i] << endl; - } - } - } - -} - - -int main() -{ - testWriting(); - testReading(); -} - - diff --git a/SimRomanPot/Configuration/doc/html/index.html b/SimRomanPot/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimRomanPot/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimRomanPot/Configuration/doc/html/overview.html b/SimRomanPot/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimRomanPot/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimRomanPot/SimFP420/doc/html/index.html b/SimRomanPot/SimFP420/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimRomanPot/SimFP420/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimRomanPot/SimFP420/doc/html/overview.html b/SimRomanPot/SimFP420/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimRomanPot/SimFP420/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTracker/Records/BuildFile b/SimTracker/Records/BuildFile index e8c7b905a67..f2ba8587ca5 100644 --- a/SimTracker/Records/BuildFile +++ b/SimTracker/Records/BuildFile @@ -2,7 +2,6 @@ <use name=root> <use name=clhep> <use name=FWCore/Framework> -<use name=FWCore/Utilities> <use name=MagneticField/Records> <export> @@ -11,7 +10,6 @@ <use name=root> <use name=clhep> <use name=FWCore/Framework> - <use name=FWCore/Utilities> <use name=MagneticField/Records> </export> diff --git a/SimTracker/SiPixelDigitizer/src/SiPixelDigitizerAlgorithm.cc b/SimTracker/SiPixelDigitizer/src/SiPixelDigitizerAlgorithm.cc index a8bb19153ba..1feaec0fe74 100644 --- a/SimTracker/SiPixelDigitizer/src/SiPixelDigitizerAlgorithm.cc +++ b/SimTracker/SiPixelDigitizer/src/SiPixelDigitizerAlgorithm.cc @@ -349,6 +349,7 @@ vector<PixelDigi> SiPixelDigitizerAlgorithm::digitize(PixelGeomDetUnit *det){ if((pixelInefficiency>0) && (_signal.size()>0)) pixel_inefficiency(); // Kill some pixels + delete pIndexConverter; } make_digis(); diff --git a/SimTracker/SiStripDigitizer/src/SiStripDigitizerAlgorithm.cc b/SimTracker/SiStripDigitizer/src/SiStripDigitizerAlgorithm.cc index 991e1062375..be21e57c72e 100644 --- a/SimTracker/SiStripDigitizer/src/SiStripDigitizerAlgorithm.cc +++ b/SimTracker/SiStripDigitizer/src/SiStripDigitizerAlgorithm.cc @@ -102,7 +102,7 @@ edm::DetSet<SiStripDigi>::collection_type SiStripDigitizerAlgorithm::run(const s vector<PSimHit>::const_iterator simHitIterEnd = input.end(); for (;simHitIter != simHitIterEnd; ++simHitIter) { - const PSimHit ihit = *simHitIter; + const PSimHit& ihit = *simHitIter; if ( abs(ihit.tof()) < tofCut && ihit.energyLoss()>0) { SiHitDigitizer::hit_map_type _temp = theSiHitDigitizer->processHit(ihit,*det,bfield); diff --git a/SimTracker/TrackHistory/doc/html/index.html b/SimTracker/TrackHistory/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTracker/TrackHistory/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTracker/TrackHistory/doc/html/overview.html b/SimTracker/TrackHistory/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTracker/TrackHistory/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTracker/TrackerFilters/doc/html/index.html b/SimTracker/TrackerFilters/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTracker/TrackerFilters/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTracker/TrackerFilters/doc/html/overview.html b/SimTracker/TrackerFilters/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTracker/TrackerFilters/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc b/SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc index b13948de335..952b5ec4113 100644 --- a/SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc +++ b/SimTracker/TrackerHitAssociation/src/TrackerHitAssociator.cc @@ -287,10 +287,7 @@ std::vector<unsigned int> TrackerHitAssociator::associateSimpleRecHit(const SiS simchg +=tmpchg[ii]; } simfraction = simchg/cluchg; - //cut at >50% - if(simfraction >0.5){ - temp_map.insert(std::pair<float, unsigned int> (simfraction,*i)); - } + temp_map.insert(std::pair<float, unsigned int> (simfraction,*i)); } } //sort the map ordered on the charge fraction diff --git a/SimTracker/TrackerMaterialAnalysis/doc/html/index.html b/SimTracker/TrackerMaterialAnalysis/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTracker/TrackerMaterialAnalysis/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTracker/TrackerMaterialAnalysis/doc/html/overview.html b/SimTracker/TrackerMaterialAnalysis/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTracker/TrackerMaterialAnalysis/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTracker/VertexAssociation/doc/html/index.html b/SimTracker/VertexAssociation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTracker/VertexAssociation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTracker/VertexAssociation/doc/html/overview.html b/SimTracker/VertexAssociation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTracker/VertexAssociation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTracker/VertexAssociatorESProducer/doc/html/index.html b/SimTracker/VertexAssociatorESProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTracker/VertexAssociatorESProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTracker/VertexAssociatorESProducer/doc/html/overview.html b/SimTracker/VertexAssociatorESProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTracker/VertexAssociatorESProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/SimTransport/HectorProducer/doc/html/index.html b/SimTransport/HectorProducer/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/SimTransport/HectorProducer/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/SimTransport/HectorProducer/doc/html/overview.html b/SimTransport/HectorProducer/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/SimTransport/HectorProducer/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TauAnalysis/MCEmbeddingTools/doc/html/index.html b/TauAnalysis/MCEmbeddingTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TauAnalysis/MCEmbeddingTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TauAnalysis/MCEmbeddingTools/doc/html/overview.html b/TauAnalysis/MCEmbeddingTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TauAnalysis/MCEmbeddingTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/Configuration/doc/html/index.html b/TopQuarkAnalysis/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/Configuration/doc/html/overview.html b/TopQuarkAnalysis/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/Examples/doc/html/index.html b/TopQuarkAnalysis/Examples/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/Examples/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/Examples/doc/html/overview.html b/TopQuarkAnalysis/Examples/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/Examples/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopEventProducers/doc/html/index.html b/TopQuarkAnalysis/TopEventProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopEventProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopEventProducers/doc/html/overview.html b/TopQuarkAnalysis/TopEventProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopEventProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopEventSelection/doc/html/index.html b/TopQuarkAnalysis/TopEventSelection/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopEventSelection/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopEventSelection/doc/html/overview.html b/TopQuarkAnalysis/TopEventSelection/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopEventSelection/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopJetCombination/doc/html/index.html b/TopQuarkAnalysis/TopJetCombination/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopJetCombination/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopJetCombination/doc/html/overview.html b/TopQuarkAnalysis/TopJetCombination/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopJetCombination/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopKinFitter/doc/html/index.html b/TopQuarkAnalysis/TopKinFitter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopKinFitter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopKinFitter/doc/html/overview.html b/TopQuarkAnalysis/TopKinFitter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopKinFitter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopObjectProducers/doc/html/index.html b/TopQuarkAnalysis/TopObjectProducers/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopObjectProducers/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopObjectProducers/doc/html/overview.html b/TopQuarkAnalysis/TopObjectProducers/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopObjectProducers/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopObjectResolutions/doc/html/index.html b/TopQuarkAnalysis/TopObjectResolutions/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopObjectResolutions/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopObjectResolutions/doc/html/overview.html b/TopQuarkAnalysis/TopObjectResolutions/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopObjectResolutions/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopPairBSM/doc/html/index.html b/TopQuarkAnalysis/TopPairBSM/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopPairBSM/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopPairBSM/doc/html/overview.html b/TopQuarkAnalysis/TopPairBSM/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopPairBSM/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopSkimming/doc/html/index.html b/TopQuarkAnalysis/TopSkimming/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopSkimming/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopSkimming/doc/html/overview.html b/TopQuarkAnalysis/TopSkimming/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopSkimming/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TopQuarkAnalysis/TopTools/doc/html/index.html b/TopQuarkAnalysis/TopTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TopQuarkAnalysis/TopTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TopQuarkAnalysis/TopTools/doc/html/overview.html b/TopQuarkAnalysis/TopTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TopQuarkAnalysis/TopTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TrackPropagation/Geant4e/interface/Geant4ePropagator.h b/TrackPropagation/Geant4e/interface/Geant4ePropagator.h index 8c646095cd7..f0a12d34d20 100644 --- a/TrackPropagation/Geant4e/interface/Geant4ePropagator.h +++ b/TrackPropagation/Geant4e/interface/Geant4ePropagator.h @@ -2,17 +2,15 @@ #define TrackPropagation_Geant4ePropagator_h -//CMS #include "TrackingTools/GeomPropagators/interface/Propagator.h" //Geant4e includes #include "G4eManager.hh" - - class Geant4eSteppingAction; + /** Propagator based on the Geant4e package. Uses the Propagator class * in the TrackingTools/GeomPropagators package to define the interface. * See that class for more details. @@ -113,7 +111,6 @@ class Geant4ePropagator: public Propagator { protected: - typedef std::pair<TrajectoryStateOnSurface, double> TsosPP; @@ -127,7 +124,8 @@ class Geant4ePropagator: public Propagator { G4eManager* theG4eManager; //A G4 stepping action to find out the track length - mutable Geant4eSteppingAction* theSteppingAction; + Geant4eSteppingAction* theSteppingAction; + }; diff --git a/TrackPropagation/Geant4e/src/Geant4ePropagator.cc b/TrackPropagation/Geant4e/src/Geant4ePropagator.cc index 2e989e2da40..6f0d6e07679 100644 --- a/TrackPropagation/Geant4e/src/Geant4ePropagator.cc +++ b/TrackPropagation/Geant4e/src/Geant4ePropagator.cc @@ -30,7 +30,9 @@ Geant4ePropagator::Geant4ePropagator(const MagneticField* field, theField(field), theParticleName(particleName), theG4eManager(G4eManager::GetG4eManager()), - theSteppingAction(0) { + theSteppingAction(new Geant4eSteppingAction) { + + theG4eManager->SetUserAction(theSteppingAction); } /** Destructor. @@ -51,12 +53,6 @@ TrajectoryStateOnSurface Geant4ePropagator::propagate (const FreeTrajectoryState& ftsStart, const Plane& pDest) const { - if (!theSteppingAction) { - theG4eManager->InitGeant4e(); - theSteppingAction = new Geant4eSteppingAction; - theG4eManager->SetUserAction(theSteppingAction); - } - /////////////////////////////// // Construct the target surface // @@ -83,7 +79,7 @@ Geant4ePropagator::propagate (const FreeTrajectoryState& ftsStart, << normalPlane << "\n" << "G4e -- Destination G4 plane normal : " << normalPlane; - LogDebug("Geant4e") << "G4e -- Distance from plane position to plane: " + LogDebug("Geant4e") << "G4e -- Distance from point to plane: " << pDest.localZ(posPlane); //DEBUG @@ -116,7 +112,7 @@ Geant4ePropagator::propagate (const FreeTrajectoryState& ftsStart, << " GeV\n" << "G4e -- Initial G4 momentum :" << g4InitMom << " MeV"; - LogDebug("Geant4e") << "G4e -- Distance from initial point to plane: " + LogDebug("Geant4e") << "G4e -- Distance from point to plane: " << pDest.localZ(cmsInitPos); //DEBUG @@ -185,7 +181,7 @@ Geant4ePropagator::propagate (const FreeTrajectoryState& ftsStart, << " GeV\n" << "G4e -- Final G4 momentum :" << momEnd << " MeV"; - LogDebug("Geant4e") << "G4e -- Distance from final point to plane: " + LogDebug("Geant4e") << "G4e -- Distance from point to plane: " << pDest.localZ(posEndGV); //DEBUG diff --git a/TrackPropagation/Geant4e/test/Geant4ePropagatorAnalyzer.cc b/TrackPropagation/Geant4e/test/Geant4ePropagatorAnalyzer.cc index af596c0418b..c6a80c4f2ae 100644 --- a/TrackPropagation/Geant4e/test/Geant4ePropagatorAnalyzer.cc +++ b/TrackPropagation/Geant4e/test/Geant4ePropagatorAnalyzer.cc @@ -53,8 +53,6 @@ using namespace std; -enum testMuChamberType {DT, RPC, CSC}; - class Geant4ePropagatorAnalyzer: public edm::EDAnalyzer { public: @@ -62,12 +60,8 @@ public: virtual ~Geant4ePropagatorAnalyzer() {} virtual void analyze(const edm::Event&, const edm::EventSetup&); - virtual void endJob(); + virtual void endJob() {} virtual void beginJob(edm::EventSetup const & iSetup); - void iterateOverHits(edm::Handle<edm::PSimHitContainer> simHits, - testMuChamberType muonChamberType, - unsigned int trkIndex, - const FreeTrajectoryState& ftsTrack); protected: @@ -76,18 +70,9 @@ protected: int theEvent; Propagator* thePropagator; - //std::auto_ptr<sim::FieldBuilder> theFieldBuilder; - - //Magnetic field + std::auto_ptr<sim::FieldBuilder> theFieldBuilder; edm::ParameterSet theMagneticFieldPSet; - //Geometry - edm::ESHandle<DTGeometry> theDTGeomESH; //DTs - edm::ESHandle<RPCGeometry> theRPCGeomESH; //RPC - edm::ESHandle<CSCGeometry> theCSCGeomESH; //CSC - - - }; @@ -105,11 +90,6 @@ void Geant4ePropagatorAnalyzer::beginJob(edm::EventSetup const & iSetup) { LogDebug("Geant4e") << "Nothing done in beginJob..."; } -void Geant4ePropagatorAnalyzer::endJob() { - - TimingReport::current()->dump(std::cout); -} - void Geant4ePropagatorAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { @@ -127,16 +107,19 @@ void Geant4ePropagatorAnalyzer::analyze(const edm::Event& iEvent, //Build geometry //- DT... - iSetup.get<MuonGeometryRecord>().get(theDTGeomESH); - LogDebug("Geant4e") << "Got DTGeometry"; + ESHandle<DTGeometry> dtGeomESH; + iSetup.get<MuonGeometryRecord>().get(dtGeomESH); + LogDebug("Geant4e") << "Got DTGeometry " << std::endl; //- CSC... - iSetup.get<MuonGeometryRecord>().get(theCSCGeomESH); - LogDebug("Geant4e") << "Got CSCGeometry"; + ESHandle<CSCGeometry> cscGeomESH; + iSetup.get<MuonGeometryRecord>().get(cscGeomESH); + LogDebug("Geant4e") << "Got CSCGeometry " << std::endl; //- RPC... - iSetup.get<MuonGeometryRecord>().get(theRPCGeomESH); - LogDebug("Geant4e") << "Got RPCGeometry"; + ESHandle<RPCGeometry> rpcGeomESH; + iSetup.get<MuonGeometryRecord>().get(rpcGeomESH); + LogDebug("Geant4e") << "Got RPCGeometry " << std::endl; /////////////////////////////////////// @@ -220,17 +203,10 @@ void Geant4ePropagatorAnalyzer::analyze(const edm::Event& iEvent, //DEBUG counter++; - LogDebug("Geant4e") << "G4e -- Iterating over " << counter - << " track. Number: " + LogDebug("Geant4e") << "Iterating over " << counter << " track. Number: " << simTracksIt->genpartIndex(); //DEBUG - int simTrackPDG = simTracksIt->type(); - if (abs(simTrackPDG) != 13 ) { - continue; - } - LogDebug("Geant4e") << "G4e -- Track PDG " << simTrackPDG; - //- Timing TimeMe tProp("Geant4ePropagatorAnalyzer::analyze::propagate"); @@ -263,6 +239,9 @@ void Geant4ePropagatorAnalyzer::analyze(const edm::Event& iEvent, } + //- Get index of generated particle. Used further down + //uint trkInd = simTracksIt->genpartIndex(); + //- Vertex fixes the starting point int vtxInd = simTracksIt->vertIndex(); GlobalPoint r3T(0.,0.,0.); @@ -290,145 +269,82 @@ void Geant4ePropagatorAnalyzer::analyze(const edm::Event& iEvent, FreeTrajectoryState ftsTrack(trackPars, covT); - //- Get index of generated particle. Used further down - unsigned int trkInd = simTracksIt->genpartIndex(); - - //////////////////////////////////////////////// - //- Iterate over Sim Hits in DT and check propagation - iterateOverHits(simHitsDT, DT, trkInd, ftsTrack); //////////////////////////////////////////////// - //- Iterate over Sim Hits in RPC and check propagation - iterateOverHits(simHitsRPC, RPC, trkInd, ftsTrack); - //////////////////////////////////////////////// - //- Iterate over Sim Hits in CSC and check propagation - iterateOverHits(simHitsCSC, CSC, trkInd, ftsTrack); - - - - } // <-- for over sim tracks -} - - -void -Geant4ePropagatorAnalyzer::iterateOverHits(edm::Handle<edm::PSimHitContainer> simHits, - testMuChamberType muonChamberType, - unsigned int trkIndex, - const FreeTrajectoryState& ftsTrack) { - - using namespace edm; - - if (muonChamberType == DT) - LogDebug("Geant4e") << "G4e -- Iterating over DT hits"; - else if (muonChamberType == RPC) - LogDebug("Geant4e") << "G4e -- Iterating over RPC hits"; - else if (muonChamberType == CSC) - LogDebug("Geant4e") << "G4e -- Iterating over CSC hits"; - - for (PSimHitContainer::const_iterator simHitIt = simHits->begin(); - simHitIt != simHits->end(); - simHitIt++){ - - /////////////// - // Skip if this hit does not belong to the track - if (simHitIt->trackId() != trkIndex ) { - LogDebug("Geant4e") << "Hit (in tr " << simHitIt->trackId() - << ") does not belong to track "<< trkIndex; - continue; - } - - LogDebug("Geant4e") << "G4e -- Hit belongs to track " << trkIndex; - - ////////////// - // Skip if it is not a muon (this is checked before also) - int trkPDG = simHitIt->particleType(); - if (abs(trkPDG) != 13) { - LogDebug("Geant4e") << "Associated track is not a muon: " << trkPDG; - continue; - } - LogDebug("Geant4e") << "G4e -- Found a hit corresponding to a muon " << trkPDG; - - ////////////////////////////////////////////////////////// - // Build the surface. This is different for DT, RPC, CSC - //const GeomDetUnit* layer = 0; - const GeomDet* layer = 0; - // * DT - if (muonChamberType == DT) { - DTWireId wId(simHitIt->detUnitId()); - layer = theDTGeomESH->layer(wId); - if (layer == 0){ - LogDebug("Geant4e") << "Failed to get detector unit"; - continue; - } - } - // * RPC - else if (muonChamberType == RPC) { - RPCDetId wId(simHitIt->detUnitId()); - layer = theRPCGeomESH->idToDet(wId); - if (layer == 0){ - LogDebug("Geant4e") << "Failed to get detector unit"; + //- Iterate over Hits in DT and check propagation + for (PSimHitContainer::const_iterator simHitDTIt = simHitsDT->begin(); + simHitDTIt != simHitsDT->end(); + simHitDTIt++){ + + //+ Skip if this hit does not belong to the track +// if (simHitDTIt->trackId() != trkInd ) { +// LogDebug("Geant4e") << "Hit (in tr " << simHitDTIt->trackId() +// << ") does not belong to track "<< trkInd; +// continue; +// } + +// LogDebug("Geant4e") << "Hit belongs to track"; + + //+ Skip if it is not a muon (this is checked before also) + if (abs(simHitDTIt->particleType()) != 13) { + LogDebug("Geant4e") << "Associated track is not a muon: " << trkPDG; continue; } - } + LogDebug("Geant4e") << "Found a hit corresponding to a muon " << trkPDG; - // * CSC - else if (muonChamberType ==CSC) { - CSCDetId wId(simHitIt->detUnitId()); - layer = theCSCGeomESH->idToDet(wId); + //+ Build the surface + DTWireId wId(simHitDTIt->detUnitId()); + const DTLayer* layer = dtGeomESH->layer(wId); if (layer == 0){ - LogDebug("Geant4e") << "Failed to get detector unit"; + LogDebug("Geant4e") << "Failed to get detector unit" << std::endl; continue; } + const Surface& surf = layer->surface(); + //==>DEBUG + const BoundPlane& bp = layer->surface(); + const Bounds& bounds = bp.bounds(); + LogDebug("Geant4e") << "Surface: length = " << bounds.length() + << ", thickness = " << bounds.thickness() + << ", width = " << bounds.width(); + //<==DEBUG + + //+ Discard hits with very low momentum ??? + GlobalVector p3Hit = surf.toGlobal(simHitDTIt->momentumAtEntry()); + if (p3Hit.mag() < 0.5 ) + continue; + GlobalPoint posHit = surf.toGlobal(simHitDTIt->localPosition()); + Point3DBase< float, GlobalTag > surfpos = surf.position(); + LogDebug("Geant4e") << "Sim Hit position R=" << posHit.mag() + << "\tTheta=" << posHit.theta()*TMath::RadToDeg() + << "\tPhi=" << posHit.phi()*TMath::RadToDeg() ; + LogDebug("Geant4e") << "Layer position R=" << surfpos.mag() + << "\tTheta=" << surfpos.theta()*TMath::RadToDeg() + << "\tPhi=" << surfpos.phi()*TMath::RadToDeg() ; + LogDebug("Geant4e") << "Sim Hit Momentum PT=" << p3Hit.mag() + << "\tTheta=" << p3Hit.theta()*TMath::RadToDeg() + << "\tPhi=" << p3Hit.phi()*TMath::RadToDeg() ; + - } - const Surface& surf = layer->surface(); - - //==>DEBUG - //const BoundPlane& bp = layer->surface(); - //const Bounds& bounds = bp.bounds(); - //LogDebug("Geant4e") << "Surface: length = " << bounds.length() - // << ", thickness = " << bounds.thickness() - // << ", width = " << bounds.width(); - //<==DEBUG - - //////////// - // Discard hits with very low momentum ??? - GlobalVector p3Hit = surf.toGlobal(simHitIt->momentumAtEntry()); - if (p3Hit.mag() < 0.5 ) - continue; - GlobalPoint posHit = surf.toGlobal(simHitIt->localPosition()); - Point3DBase< float, GlobalTag > surfpos = surf.position(); - LogDebug("Geant4e") << "Sim Hit position R=" << posHit.mag() - << "\tTheta=" << posHit.theta()*TMath::RadToDeg() - << "\tPhi=" << posHit.phi()*TMath::RadToDeg() ; - LogDebug("Geant4e") << "Layer position R=" << surfpos.mag() - << "\tTheta=" << surfpos.theta()*TMath::RadToDeg() - << "\tPhi=" << surfpos.phi()*TMath::RadToDeg() ; - LogDebug("Geant4e") << "Sim Hit Momentum PT=" << p3Hit.mag() - << "\tTheta=" << p3Hit.theta()*TMath::RadToDeg() - << "\tPhi=" << p3Hit.phi()*TMath::RadToDeg() ; - - - ///////////////////////////////////////// - // Propagate: Need to explicetely - TrajectoryStateOnSurface tSOSDest = - thePropagator->propagate(ftsTrack, surf); - - ///////////////////// - // Get hit position and extrapolation position to compare - GlobalPoint posExtrap = tSOSDest.freeState()->position(); - - LogDebug("Geant4e") << "G4e -- Difference between hit and final position: " - << (posExtrap - posHit).mag() << " cm."; - LogDebug("Geant4e") << "G4e -- Extrapolated position:" << posExtrap - << " cm\n" - << "G4e -- Hit position: " << posHit - << " cm"; - - - } //<== For over simhits + //+ Propagate: Need to explicetely + TrajectoryStateOnSurface tSOSDest = + thePropagator->propagate(ftsTrack, surf); + + //+ Get hit position and extrapolation position to compare + GlobalPoint posExtrap = tSOSDest.freeState()->position(); + + LogDebug("Geant4e") << "G4e -- Difference between hit and final position: " + << (posExtrap - posHit).mag() << " cm."; + LogDebug("Geant4e") << "G4e -- Extrapolated position:" << posExtrap + << " cm\n" + << "G4e -- Hit position: " << posHit + << " cm"; + } // <-- for over DT sim hits + + + } // <-- for over sim tracks } + //define this as a plug-in DEFINE_FWK_MODULE(Geant4ePropagatorAnalyzer); diff --git a/TrackPropagation/NavGeometry/BuildFile b/TrackPropagation/NavGeometry/BuildFile deleted file mode 100644 index be0fcf82fa8..00000000000 --- a/TrackPropagation/NavGeometry/BuildFile +++ /dev/null @@ -1,13 +0,0 @@ - -<use name=Geometry/Surface> -<use name=MagneticField/VolumeGeometry> -<use name=MagneticField/Interpolation> -<use name=TrackingTools/GeomPropagators> - -<export> - <lib name=TrackPropagationNavGeometry> - <use name=Geometry/Surface> - <use name=MagneticField/VolumeGeometry> - <use name=MagneticField/Interpolation> - <use name=TrackingTools/GeomPropagators> -</export> diff --git a/TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h b/TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h deleted file mode 100644 index 2d43e41c50f..00000000000 --- a/TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef LinearSearchNavSurfaceImpl_H -#define LinearSearchNavSurfaceImpl_H - -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include <vector> - -class NavVolume; -class Bounds; - -class LinearSearchNavSurfaceImpl { -public: - - const NavVolume* nextVolume( const NavSurface::LocalPoint& point, - SurfaceOrientation::Side side) const; - - const Bounds* bounds( const NavVolume* vol); - - void addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side); - -private: - - typedef std::pair< const NavVolume*, const Bounds*> VolumeAndBounds; - typedef std::vector< VolumeAndBounds> VolumeContainer; - - VolumeContainer thePosVolumes; - VolumeContainer theNegVolumes; - - const NavVolume* findVolume( const NavSurface::LocalPoint& point, - const VolumeContainer& volumes) const; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavCone.h b/TrackPropagation/NavGeometry/interface/NavCone.h deleted file mode 100644 index 13628061bcf..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavCone.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef NavCone_H -#define NavCone_H - -#include "Geometry/Surface/interface/Cone.h" -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" - -#include <vector> -class Bounds; - -class NavCone : public NavSurface { -public: - -/* NavCone( const PositionType& pos, const RotationType& rot, */ -/* const PositionType& vert, Geom::Theta<Scalar> angle) : */ -/* Surface( pos, rot), Cone( pos, rot, vert, angle), NavSurface( pos, rot) {} */ - - NavCone( const Cone* cone) : theSurfaceP(cone) {} - - // FIXME: restore covariant return type when gcc version upgraded - //virtual const Cone& surface() const {return *theSurfaceP;} - virtual const Surface& surface() const {return *theSurfaceP;} - - virtual const NavVolume* nextVolume( const NavSurface::LocalPoint& point, - SurfaceOrientation::Side side) const { - return theImpl.nextVolume( point,side); - } - - virtual TrajectoryStateOnSurface - propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual NavSurface::TSOSwithPath - propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);} - - virtual void addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side) { - theImpl.addVolume( vol, bounds, side); - } - - virtual std::pair<bool,double> - distanceAlongLine( const NavSurface::GlobalPoint& pos, const NavSurface::GlobalVector& dir) const; - -private: - - ConstReferenceCountingPointer<Cone> theSurfaceP; - LinearSearchNavSurfaceImpl theImpl; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavCylinder.h b/TrackPropagation/NavGeometry/interface/NavCylinder.h deleted file mode 100644 index 57102eb9eb3..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavCylinder.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef NavCylinder_H -#define NavCylinder_H - -#include "Geometry/Surface/interface/Cylinder.h" -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" - -#include <vector> -class Bounds; - -class NavCylinder : public NavSurface { -public: - -/* NavCylinder( const PositionType& pos, const RotationType& rot, Scalar radius) : */ -/* Surface( pos, rot), Cylinder( pos, rot, radius), NavSurface( pos, rot) {} */ - - NavCylinder( const Cylinder* cylinder) : theSurfaceP(cylinder) {} - - // FIXME: restore covariant return type when gcc version upgraded - //virtual const Cylinder& surface() const {return *theSurfaceP;} - virtual const Surface& surface() const {return *theSurfaceP;} - - virtual const NavVolume* nextVolume( const NavSurface::LocalPoint& point, - SurfaceOrientation::Side side) const { - return theImpl.nextVolume( point,side); - } - - virtual TrajectoryStateOnSurface - propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual NavSurface::TSOSwithPath - propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);} - - virtual void addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side) { - theImpl.addVolume( vol, bounds, side); - } - - virtual std::pair<bool,double> - distanceAlongLine( const NavSurface::GlobalPoint& pos, const NavSurface::GlobalVector& dir) const; - -private: - - ConstReferenceCountingPointer<Cylinder> theSurfaceP; - LinearSearchNavSurfaceImpl theImpl; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavPlane.h b/TrackPropagation/NavGeometry/interface/NavPlane.h deleted file mode 100644 index 87d53e9d21f..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavPlane.h +++ /dev/null @@ -1,57 +0,0 @@ -#ifndef NavPlane_H -#define NavPlane_H - -#include "Geometry/Surface/interface/Plane.h" -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" - -#include <vector> -class Bounds; - -class NavPlane : public NavSurface { -public: - -/* NavPlane( const PositionType& pos, const RotationType& rot) : */ -/* Surface( pos, rot), Plane( pos, rot), NavSurface( pos, rot) {} */ - - typedef ConstReferenceCountingPointer<Plane> PlanePointer; - - // NavPlane( const Plane* plane) : theSurfaceP(plane) {} - - NavPlane( PlanePointer plane) : theSurfaceP(plane) {} - - // FIXME: restore covariant return type when gcc version upgraded - //virtual const Plane& surface() const {return *theSurfaceP;} - virtual const Surface& surface() const {return *theSurfaceP;} - - virtual const NavVolume* nextVolume( const NavSurface::LocalPoint& point, - SurfaceOrientation::Side side) const{ - return theImpl.nextVolume( point,side); - - } - - virtual TrajectoryStateOnSurface - propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual NavSurface::TSOSwithPath - propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const; - - virtual const Bounds* bounds( const NavVolume* vol) { return theImpl.bounds(vol);} - - virtual void addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side) { - theImpl.addVolume( vol, bounds, side); - } - - virtual std::pair<bool,double> - distanceAlongLine( const NavSurface::GlobalPoint& pos, const NavSurface::GlobalVector& dir) const; - -private: - - PlanePointer theSurfaceP; - LinearSearchNavSurfaceImpl theImpl; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavSurface.h b/TrackPropagation/NavGeometry/interface/NavSurface.h deleted file mode 100644 index 4e774305620..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavSurface.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef NavSurface_H -#define NavSurface_H - -#include "Geometry/Surface/interface/Surface.h" - -#include <utility> - -class NavVolume; -class TrajectoryStateOnSurface; -class Propagator; -class Bounds; - -class NavSurface : public ReferenceCounted // : public virtual Surface -{ -public: - - // NavSurface( const PositionType& pos, const RotationType& rot) : Surface(pos,rot) {} - - typedef Surface::LocalPoint LocalPoint; - typedef Surface::LocalVector LocalVector; - typedef Surface::GlobalPoint GlobalPoint; - typedef Surface::GlobalVector GlobalVector; - typedef std::pair<TrajectoryStateOnSurface,double> TSOSwithPath; - - virtual ~NavSurface() {} - - /// Access to actual surface - virtual const Surface& surface() const = 0; - - virtual const NavVolume* nextVolume( const LocalPoint& point, - SurfaceOrientation::Side side) const = 0; - -/// hook for double dispatch to avoid propagation to generic surface. - virtual TrajectoryStateOnSurface - propagate( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0; - -/// hook for double dispatch to avoid propagation to generic surface. - virtual TSOSwithPath - propagateWithPath( const Propagator& prop, const TrajectoryStateOnSurface& startingState) const = 0; - -/// Bounds corresponding to a NavVolume if present - virtual const Bounds* bounds( const NavVolume* vol) = 0; - -/// NavVolumes are supposed to call this method to "register" with the NavSurface -// FIXME: should not be public... - virtual void addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side) = 0; - -/// Distance to surface from point pos along line dir. -/// If the half-line does not cross the surface the returned value is (false,undefined), -/// otherwise the returned value is (true,distance) - virtual std::pair<bool,double> - distanceAlongLine( const GlobalPoint& pos, const GlobalVector& dir) const = 0; - - ///Forwarding of part of surface interface for convenience - LocalPoint toLocal( const GlobalPoint& p) const {return surface().toLocal(p);} - LocalVector toLocal( const GlobalVector& p) const {return surface().toLocal(p);} - GlobalPoint toGlobal( const LocalPoint& p) const {return surface().toGlobal(p);} - GlobalVector toGlobal( const LocalVector& p) const {return surface().toGlobal(p);} - - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h b/TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h deleted file mode 100644 index c9b479401ad..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef NavSurfaceBuilder_H -#define NavSurfaceBuilder_H - -class NavSurface; -class Surface; - -/// helper: builde a NavSurface for a Surface -class NavSurfaceBuilder { -public: - - NavSurface* build( const Surface& surface) const; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavVolume.h b/TrackPropagation/NavGeometry/interface/NavVolume.h deleted file mode 100644 index dae23896da3..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavVolume.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef NavVolume_H -#define NavVolume_H - -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" -#include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" -#include "DetectorDescription/Core/interface/DDSolidShapes.h" - -#include "TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h" -#include "TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h" - -#include <vector> - -class NavSurface; -class Bounds; -class TrajectoryStateOnSurface; - -class NavVolume : public MagVolume { -public: - - NavVolume( const PositionType& pos, const RotationType& rot, - DDSolidShape shape, const MagneticFieldProvider<float> * mfp) : - MagVolume(pos,rot,shape,mfp) {} - - typedef std::vector<SurfaceAndBounds> Container; - //// typedef std::pair<const NavVolume*, TrajectoryStateOnSurface> VolumeCrossReturnType; - - - virtual ~NavVolume() {} - - virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, - PropagationDirection propDir = alongMomentum) const = 0; - - /// Same, giving lowest priority to the surface we are on now (=NotThisSurface) - virtual Container nextSurface( const LocalPoint& pos, const LocalVector& mom, double charge, - PropagationDirection propDir, - ConstReferenceCountingPointer<Surface> NotThisSurfaceP) const = 0; - - virtual VolumeCrossReturnType crossToNextVolume( const TrajectoryStateOnSurface& currentState, - const Propagator& prop) const = 0; - -}; - -#endif - diff --git a/TrackPropagation/NavGeometry/interface/NavVolume6Faces.h b/TrackPropagation/NavGeometry/interface/NavVolume6Faces.h deleted file mode 100644 index 5a5b3ad678c..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavVolume6Faces.h +++ /dev/null @@ -1,71 +0,0 @@ -#ifndef NavVolume6Faces_H -#define NavVolume6Faces_H - -#include "TrackPropagation/NavGeometry/interface/NavVolume.h" -#include "TrackPropagation/NavGeometry/interface/NavVolumeSide.h" - -#include <vector> - -class Bounds; -class Plane; -class TrajectoryStateOnSurface; - -class NavVolume6Faces : public NavVolume { -public: - - NavVolume6Faces( const PositionType& pos, const RotationType& rot, - DDSolidShape shape, const std::vector<NavVolumeSide>& faces, - const MagneticFieldProvider<float> * mfp); - - /// A NavVolume6Faces that corresponds exactly to a MagVolume - explicit NavVolume6Faces( const MagVolume& magvol); - - /// Give a sorted list of possible surfaces to propagate to - virtual Container nextSurface( const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom, - double charge, PropagationDirection propDir=alongMomentum) const; - - /// Same, giving lowest priority to the surface we are on now (=NotThisSurface) - virtual Container nextSurface( const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom, - double charge, PropagationDirection propDir, - ConstReferenceCountingPointer<Surface> NotThisSurfaceP) const; - - /// Cross this volume and point at the next - virtual VolumeCrossReturnType crossToNextVolume( const TrajectoryStateOnSurface& currentState, - const Propagator& prop) const; - - /// Access to volume faces - std::vector<VolumeSide> faces() const { - - - return theFaces; - } - - using MagVolume::inside; - bool inside( const GlobalPoint& gp, double tolerance) const; - -private: - - std::vector<VolumeSide> theFaces; - Container theNavSurfaces; - - void computeBounds(const std::vector<NavVolumeSide>& faces); - Bounds* computeBounds( int index, const std::vector<const Plane*>& bpc); - Bounds* computeBounds( int index, const std::vector<NavVolumeSide>& faces); - -}; - -/* bool NavVolume6Faces::inside( const GlobalPoint& gp, double tolerance) const -{ - - // check if the point is on the correct side of all delimiting surfaces - for (std::vector<VolumeSide>::const_iterator i=theFaces.begin(); i!=theFaces.end(); i++) { - Surface::Side side = i->surface().side( gp, tolerance); - if ( side != i->surfaceSide() && side != SurfaceOrientation::onSurface) return false; - } - return true; -} -*/ - -#endif diff --git a/TrackPropagation/NavGeometry/interface/NavVolumeSide.h b/TrackPropagation/NavGeometry/interface/NavVolumeSide.h deleted file mode 100644 index acbfd10db84..00000000000 --- a/TrackPropagation/NavGeometry/interface/NavVolumeSide.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef NavVolumeSide_H -#define NavVolumeSide_H - -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" - -/** Class for delimiding surface of a NavVolume. - * The additional information with respect to NavSurface that is needed - * to define <BR> - * a) which side of the Surface the volume is (enumerator Surface::Side) <BR> - * b) which face of the volume this surface represents (enumerator GlobalFace). - * Only 6 possible values for volume face are defined. - */ - -class NavVolumeSide { -public: - typedef SurfaceOrientation::GlobalFace GlobalFace; - typedef SurfaceOrientation::Side Side; - - typedef ReferenceCountingPointer<NavSurface> SurfacePointer; - - NavVolumeSide( NavSurface* surf, GlobalFace gSide, Side sSide) : - theSurface( surf), theGlobalFace( gSide), theSurfaceSide( sSide) {} - - NavVolumeSide( SurfacePointer surf, GlobalFace gSide, Side sSide) : - theSurface( surf), theGlobalFace( gSide), theSurfaceSide( sSide) {} - - NavSurface& mutableSurface() const {return *theSurface;} - - const NavSurface& surface() const {return *theSurface;} - - GlobalFace globalFace() const { return theGlobalFace;} - - Side surfaceSide() const {return theSurfaceSide;} - -private: - - SurfacePointer theSurface; - GlobalFace theGlobalFace; - Side theSurfaceSide; - -}; - - -#endif diff --git a/TrackPropagation/NavGeometry/interface/ShiftingMagneticFieldProvider.h b/TrackPropagation/NavGeometry/interface/ShiftingMagneticFieldProvider.h deleted file mode 100644 index 99bed2a3df1..00000000000 --- a/TrackPropagation/NavGeometry/interface/ShiftingMagneticFieldProvider.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef ShiftingMagneticFieldProvider_H -#define ShiftingMagneticFieldProvider_H - -#include "MagneticField/VolumeGeometry/interface/MagneticFieldProvider.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -template <class T> -class ShiftingMagneticFieldProvider : public MagneticFieldProvider<T> { -public: - - typedef typename MagneticFieldProvider<T>::LocalPointType LocalPointType; - typedef typename MagneticFieldProvider<T>::LocalVectorType LocalVectorType; - typedef typename MagneticFieldProvider<T>::GlobalPointType GlobalPointType; - typedef typename MagneticFieldProvider<T>::GlobalVectorType GlobalVectorType; - - - ShiftingMagneticFieldProvider( const MagVolume& magvol, - const MagVolume::PositionType& pos, - const MagVolume::RotationType& rot); - - virtual LocalVectorType valueInTesla( const LocalPointType& p) const; - -private: - - enum FrameRelation {sameFrame, sameOrientation, differentFrames}; - - GloballyPositioned<T> theFrame; - FrameRelation theFrameRelation; - const MagVolume& theMagVolume; - Basic3DVector<T> theShift; - -}; - -#include "TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc" - -#endif diff --git a/TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h b/TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h deleted file mode 100644 index bd024a40230..00000000000 --- a/TrackPropagation/NavGeometry/interface/SurfaceAndBounds.h +++ /dev/null @@ -1,49 +0,0 @@ -#ifndef SurfaceAndBounds_H -#define SurfaceAndBounds_H - -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" - -class NavSurface; -class Bounds; - -class SurfaceAndBounds { - - public: - - - typedef SurfaceOrientation::GlobalFace GlobalFace; - typedef SurfaceOrientation::Side Side; - typedef ConstReferenceCountingPointer<NavSurface> NavSurfacePointer; - - SurfaceAndBounds( const NavSurface* navsurf, const Bounds* bounds, Side side, GlobalFace face) : - theNavSurfaceP(navsurf) , theBoundsP(bounds) , theSide(side) , theGlobalFace(face) { }; - - // Default constructor needed in /usr/include/c++/3.2.3/bits/stl_map.h:225 --> to use SurfaceAndBounds in sorted container - // SurfaceAndBounds() : theNavSurfaceP(0) , theBoundsP(0) , - // theSide(SurfaceOrientation::onSurface) , theGlobalFace(SurfaceOrientation::outer) {}; - // - SurfaceAndBounds() {}; - - - /// Access to actual NavSurface pointer - const NavSurface& surface() const {return *theNavSurfaceP ;} - - /// Access to actual Bounds pointer - const Bounds& bounds() const {return *theBoundsP ;} - - /// Access to actual NavSurface pointer - const SurfaceOrientation::Side side() const {return theSide;} - - ~SurfaceAndBounds() {} - - - private: - - NavSurfacePointer theNavSurfaceP; - const Bounds* theBoundsP; - Side theSide; - GlobalFace theGlobalFace; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h b/TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h deleted file mode 100644 index 01478f54618..00000000000 --- a/TrackPropagation/NavGeometry/interface/VolumeCrossReturnType.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef VolumeCrossReturnType_H -#define VolumeCrossReturnType_H - -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" - -//class TrajectoryStateOnSurface; - -class VolumeCrossReturnType { - - public: - - typedef ConstReferenceCountingPointer<NavVolume> NavVolumePointer; - typedef TrajectoryStateOnSurface TSOS; - - VolumeCrossReturnType( const NavVolume* navvol, const TSOS& state, double path) : - theNavVolumeP(navvol) , bla(state) , thePathLength(path) { }; - - // Default constructor needed in /usr/include/c++/3.2.3/bits/stl_map.h:225 --> to use VolumeCrossReturnType in sorted container - // VolumeCrossReturnType() : theNavSurfaceP(0) , theBoundsP(0) , - // theSide(SurfaceOrientation::onSurface) , theGlobalFace(SurfaceOrientation::outer) {}; - // - VolumeCrossReturnType() {}; - - - /// Access to actual NavVolume pointer - const NavVolume * volume() const {return theNavVolumeP ;} - - /// Access to actual Bounds pointer - const TSOS& tsos() const {return bla ;} - - /// Access to actual NavSurface pointer - double path() const {return thePathLength;} - - ~VolumeCrossReturnType() {} - - - private: - - const NavVolume* theNavVolumeP; - TrajectoryStateOnSurface bla; - double thePathLength; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/src/LinearEquation3.h b/TrackPropagation/NavGeometry/src/LinearEquation3.h deleted file mode 100644 index 93592cfd034..00000000000 --- a/TrackPropagation/NavGeometry/src/LinearEquation3.h +++ /dev/null @@ -1,116 +0,0 @@ -#ifndef LinearEquation3_H -#define LinearEquation3_H - -#include "Geometry/Vector/interface/Basic3DVector.h" - -#include <algorithm> - -#ifdef DEBUG_SOLUTION -#include <iostream> -#endif - -template <class T> -class LinearEquation3 { -public: - - template <class U> - class Array3 { - public: - Array3() {} - Array3( U a0, U a1, U a2) { a_[0] = a0; a_[1] = a1; a_[2] = a2;} - Array3( const Basic3DVector<U>& v) { - a_[0] = v.x(); a_[1] = v.y(); a_[2] = v.z(); - } - - Array3& operator=( const Array3& other) { - a_[0] = other[0]; a_[1] = other[1]; a_[2] = other[2]; - return *this; - } - - Array3& operator=(const Basic3DVector<U>& v) { - a_[0] = v.x(); a_[1] = v.y(); a_[2] = v.z(); - return *this; - } - - U& operator[]( int i) { return a_[i];} - const U& operator[]( int i) const { return a_[i];} - void operator-=( const Array3& other) { - a_[0] -= other[0]; - a_[1] -= other[1]; - a_[2] -= other[2]; - } - - Array3 operator*( U t) const { - return Array3( a_[0]*t, a_[1]*t, a_[2]*t); - } - - void subtractScaled( const Array3& a, U c) { - a_[0] -= a[0]*c; a_[1] -= a[1]*c; a_[2] -= a[2]*c; - } - - private: - U a_[3]; - }; - - Basic3DVector<T> solution( const Basic3DVector<T>& row0, - const Basic3DVector<T>& row1, - const Basic3DVector<T>& row2, - const Basic3DVector<T>& rhsvec) const { - - // copy the input to internal "matrix" - Array3<T> row[3]; - row[0] = row0; - row[1] = row1; - row[2] = row2; - Array3<T> rhs(rhsvec); - - // no implicit pivoting - rows expected to be normalized already - - // find pivot 0, i.e. row with largest first element - int i0 = std::abs(row[0][0]) > std::abs(row[1][0]) ? 0 : 1; - if (std::abs(row[i0][0]) < std::abs(row[2][0])) i0 = 2; - - int i1 = (i0+1)%3; - int i2 = (i0+2)%3; - - // zero the first column of rows i1 and i2 - T c1 = row[i1][0] / row[i0][0]; - // row[i1] -= c1*row[i0]; - row[i1].subtractScaled( row[i0], c1); - rhs[i1] -= c1*rhs[i0]; - T c2 = row[i2][0] / row[i0][0]; - // row[i2] -= c2*row[i0]; - row[i2].subtractScaled( row[i0], c2); - rhs[i2] -= c2*rhs[i0]; - - // find pivot 1, i.e. which row (i1 or i2) has the largest second element - if (std::abs(row[i1][1]) < std::abs(row[i2][1])) std::swap( i1, i2); - - // zero the second column of row i2 - T c3 = row[i2][1] / row[i1][1]; - row[i2][1] -= c3 * row[i1][1]; - row[i2][2] -= c3 * row[i1][2]; - rhs[i2] -= c3*rhs[i1]; - - // compute the solution - T x2 = rhs[i2] / row[i2][2]; - T x1 = (rhs[i1] - x2*row[i1][2]) / row[i1][1]; - T x0 = (rhs[i0] - x1*row[i0][1] - x2*row[i0][2]) / row[i0][0]; - - return Basic3DVector<T>(x0, x1, x2); - } - -#ifdef DEBUG_SOLUTION -private: - typedef Array3<T> AT; - void dump(const AT row[]) const { - std::cout << " (" << row[0][0] << ',' << row[0][1] << ',' << row[0][2] << ") " << std::endl; - std::cout << " (" << row[1][0] << ',' << row[1][1] << ',' << row[1][2] << ") " << std::endl; - std::cout << " (" << row[2][0] << ',' << row[2][1] << ',' << row[2][2] << ") " << std::endl; - std::cout << std::endl; - } -#endif - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/src/LinearSearchNavSurfaceImpl.cc b/TrackPropagation/NavGeometry/src/LinearSearchNavSurfaceImpl.cc deleted file mode 100644 index e3f1160bf99..00000000000 --- a/TrackPropagation/NavGeometry/src/LinearSearchNavSurfaceImpl.cc +++ /dev/null @@ -1,50 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/LinearSearchNavSurfaceImpl.h" -#include "Geometry/Surface/interface/Bounds.h" - -const NavVolume* LinearSearchNavSurfaceImpl::nextVolume( const NavSurface::LocalPoint& point, - SurfaceOrientation::Side side) const -{ - if (side == SurfaceOrientation::positiveSide) { - return findVolume( point, thePosVolumes); - } - else if (side == SurfaceOrientation::negativeSide) { - return findVolume( point, theNegVolumes); - } - else return 0; // should not be called with SurfaceOrientation::onSurface -} - -const NavVolume* LinearSearchNavSurfaceImpl::findVolume( const NavSurface::LocalPoint& point, - const VolumeContainer& vols) const -{ -// simple linear search for volume who's bounds contain the point - -//MM:return 0 if no volume was defined on this side! - if (vols.size()==0) return 0; - - for (VolumeContainer::const_iterator i=vols.begin(); i!=vols.end(); i++) { - if (i->second->inside(point)) return i->first; - } - return 0; // if point outside of all bounds on this side -} - -const Bounds* LinearSearchNavSurfaceImpl::bounds( const NavVolume* vol) -{ - for (VolumeContainer::const_iterator i=thePosVolumes.begin(); i!=thePosVolumes.end(); i++) { - if (i->first == vol) return i->second; - } - for (VolumeContainer::const_iterator i=theNegVolumes.begin(); i!=theNegVolumes.end(); i++) { - if (i->first == vol) return i->second; - } - return 0; // if volume not found -} - -void LinearSearchNavSurfaceImpl::addVolume( const NavVolume* vol, const Bounds* bounds, - SurfaceOrientation::Side side) -{ - if (side == SurfaceOrientation::positiveSide) { - thePosVolumes.push_back( VolumeAndBounds( vol, bounds->clone())); - } - else { - theNegVolumes.push_back( VolumeAndBounds( vol, bounds->clone())); - } -} diff --git a/TrackPropagation/NavGeometry/src/NavCone.cc b/TrackPropagation/NavGeometry/src/NavCone.cc deleted file mode 100644 index d7a7d5895a0..00000000000 --- a/TrackPropagation/NavGeometry/src/NavCone.cc +++ /dev/null @@ -1,32 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavCone.h" -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/Surface/interface/Bounds.h" - -TrajectoryStateOnSurface -NavCone::propagate( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagate( startingState, *theSurfaceP); -} - -std::pair<TrajectoryStateOnSurface,double> -NavCone::propagateWithPath( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagateWithPath( startingState, *theSurfaceP); -} - -class NavConeNotImplementedDistanceAlongLine : public std::exception { -public: - NavConeNotImplementedDistanceAlongLine() throw() {} - virtual ~NavConeNotImplementedDistanceAlongLine() throw() {} -}; - -std::pair<bool,double> -NavCone::distanceAlongLine( const NavSurface::GlobalPoint& pos, - const NavSurface::GlobalVector& dir) const -{ - throw NavConeNotImplementedDistanceAlongLine(); - return std::pair<bool,double>(false,0); -} diff --git a/TrackPropagation/NavGeometry/src/NavCylinder.cc b/TrackPropagation/NavGeometry/src/NavCylinder.cc deleted file mode 100644 index 4ab7e7c1dcb..00000000000 --- a/TrackPropagation/NavGeometry/src/NavCylinder.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavCylinder.h" -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/Surface/interface/Bounds.h" -#include "TrackingTools/GeomPropagators/interface/StraightLineCylinderCrossing.h" - -TrajectoryStateOnSurface -NavCylinder::propagate( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagate( startingState, *theSurfaceP); -} - -std::pair<TrajectoryStateOnSurface,double> -NavCylinder::propagateWithPath( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagateWithPath( startingState, *theSurfaceP); -} - -std::pair<bool,double> -NavCylinder::distanceAlongLine( const NavSurface::GlobalPoint& pos, - const NavSurface::GlobalVector& dir) const -{ - StraightLineCylinderCrossing pc( toLocal(pos), toLocal(dir)); - return pc.pathLength(*theSurfaceP); -} diff --git a/TrackPropagation/NavGeometry/src/NavPlane.cc b/TrackPropagation/NavGeometry/src/NavPlane.cc deleted file mode 100644 index ecc7f7228f4..00000000000 --- a/TrackPropagation/NavGeometry/src/NavPlane.cc +++ /dev/null @@ -1,27 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavPlane.h" -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/Surface/interface/Bounds.h" -#include "TrackingTools/GeomPropagators/interface/StraightLinePlaneCrossing.h" - -TrajectoryStateOnSurface -NavPlane::propagate( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagate( startingState, *theSurfaceP); -} - -std::pair<TrajectoryStateOnSurface,double> -NavPlane::propagateWithPath( const Propagator& prop, - const TrajectoryStateOnSurface& startingState) const -{ - return prop.propagateWithPath( startingState, *theSurfaceP); -} - -std::pair<bool,double> -NavPlane::distanceAlongLine( const NavSurface::GlobalPoint& pos, - const NavSurface::GlobalVector& dir) const -{ - StraightLinePlaneCrossing pc( pos.basicVector(), dir.basicVector()); - return pc.pathLength(*theSurfaceP); -} diff --git a/TrackPropagation/NavGeometry/src/NavSurfaceBuilder.cc b/TrackPropagation/NavGeometry/src/NavSurfaceBuilder.cc deleted file mode 100644 index 578a71c798d..00000000000 --- a/TrackPropagation/NavGeometry/src/NavSurfaceBuilder.cc +++ /dev/null @@ -1,28 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h" -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "Geometry/Surface/interface/Plane.h" -#include "Geometry/Surface/interface/Cylinder.h" -#include "Geometry/Surface/interface/Cone.h" -#include "TrackPropagation/NavGeometry/interface/NavPlane.h" -#include "TrackPropagation/NavGeometry/interface/NavCylinder.h" -#include "TrackPropagation/NavGeometry/interface/NavCone.h" - -NavSurface* NavSurfaceBuilder::build( const Surface& surface) const -{ - const Plane* plane = dynamic_cast<const Plane*>(&surface); - if (plane != 0) { - return new NavPlane( plane); - } - - const Cylinder* cylinder = dynamic_cast<const Cylinder*>(&surface); - if (cylinder != 0) { - return new NavCylinder( cylinder); - } - - const Cone* cone = dynamic_cast<const Cone*>(&surface); - if (cone != 0) { - return new NavCone( cone); - } - - return 0; -} diff --git a/TrackPropagation/NavGeometry/src/NavVolume6Faces.cc b/TrackPropagation/NavGeometry/src/NavVolume6Faces.cc deleted file mode 100644 index f1261b1eecf..00000000000 --- a/TrackPropagation/NavGeometry/src/NavVolume6Faces.cc +++ /dev/null @@ -1,358 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavVolume6Faces.h" -#include "MagneticField/VolumeGeometry/interface/FourPointPlaneBounds.h" -#include "TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h" -#include "Geometry/Surface/interface/Plane.h" -#include "TrackingTools/GeomPropagators/interface/StraightLinePlaneCrossing.h" -#include "Geometry/Surface/interface/GeneralNSurfaceDelimitedBounds.h" -#include "TrackPropagation/NavGeometry/interface/NavSurface.h" -#include "TrackPropagation/NavGeometry/interface/NavSurfaceBuilder.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" - -#include "MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h" - -#include <map> - -SurfaceOrientation::Side oppositeSide( SurfaceOrientation::Side side = SurfaceOrientation::onSurface) { - if ( side == SurfaceOrientation::onSurface ) { - return side; - } else { - SurfaceOrientation::Side oppositeSide = ( side ==SurfaceOrientation::positiveSide ? SurfaceOrientation::negativeSide : SurfaceOrientation::positiveSide); - return oppositeSide; - } -} - - -NavVolume6Faces::NavVolume6Faces( const PositionType& pos, - const RotationType& rot, - DDSolidShape shape, - const std::vector<NavVolumeSide>& faces, - const MagneticFieldProvider<float> * mfp) : - NavVolume(pos,rot,shape,mfp) -{ - for (std::vector<NavVolumeSide>::const_iterator i=faces.begin(); - i != faces.end(); i++) { - theFaces.push_back( VolumeSide( const_cast<Surface*>(&(i->surface().surface())), - i->globalFace(), i->surfaceSide())); - // std::cout << " or actually this is where we have side " << i->surfaceSide() << " and face " << i->globalFace() << std::endl; - } - - - - computeBounds(faces); -} - -NavVolume6Faces::NavVolume6Faces( const MagVolume& magvol) : - NavVolume( magvol.position(), magvol.rotation(), magvol.shapeType(), magvol.provider()), - theFaces(magvol.faces()) -{ - std::vector<NavVolumeSide> navSides; - std::vector<VolumeSide> magSides( magvol.faces()); - NavSurfaceBuilder navBuilder; - - for (std::vector<VolumeSide>::const_iterator i=magSides.begin(); - i != magSides.end(); i++) { - NavSurface* navSurface = navBuilder.build( i->surface()); - navSides.push_back( NavVolumeSide( navSurface, i->globalFace(), i->surfaceSide())); - } - computeBounds(navSides); -} - - -bool NavVolume6Faces::inside( const GlobalPoint& gp, double tolerance) const -{ - // check if the point is on the correct side of all delimiting surfaces - for (std::vector<VolumeSide>::const_iterator i=theFaces.begin(); i!=theFaces.end(); i++) { - Surface::Side side = i->surface().side( gp, tolerance); - if ( side != i->surfaceSide() && side != SurfaceOrientation::onSurface) return false; - } - return true; -} - - - -void NavVolume6Faces::computeBounds(const std::vector<NavVolumeSide>& faces) -{ - bool allPlanes = true; - // bool allPlanes = false; // for TESTS ONLY!!! - std::vector<const Plane*> planes; - for (std::vector<NavVolumeSide>::const_iterator iface=faces.begin(); iface!=faces.end(); iface++) { - const Plane* plane = dynamic_cast<const Plane*>(&(iface->surface())); - if (plane != 0) { - planes.push_back(plane); - } - else allPlanes = false; - } - - for (unsigned int i=0; i<faces.size(); i++) { - - // FIXME: who owns the new NavSurface? memory leak??? - - NavSurface& navSurf = faces[i].mutableSurface(); - Bounds* myBounds = 0; - if (allPlanes) { - myBounds = computeBounds( i, planes); - } - else { - myBounds = computeBounds( i, faces); - } - navSurf.addVolume( this, myBounds, faces[i].surfaceSide()); - delete myBounds; // since navSurf now owns a copy - -// this is tricky: we want to avoid multiple copies of the Bounds; the NavSurface owns -// a copy of Bounds for each touching Volume (instantiated in the call to addVolume). -// We would like to keep a pointer to the same Bounds in the NavVolume, so we have to ASK -// the NavSurface for the Bounds* of the Bounds we just gave it! - //std::cout << "Adding a Volume Side with center " << navSurf.surface().position() << " side "<< faces[i].surfaceSide() << " and face " << faces[i].globalFace()<< std::endl; - theNavSurfaces.push_back( SurfaceAndBounds(&navSurf, navSurf.bounds(this), faces[i].surfaceSide(), faces[i].globalFace())); - } -} - -Bounds* NavVolume6Faces::computeBounds( int index, - const std::vector<const Plane*>& bpc) -{ - const Plane* plane( bpc[index]); - - // find the 4 intersecting planes - int startIndex = 2*(1+index/2); // 2, 4, 6 - std::vector<const Plane*> crossed; crossed.reserve(4); - for (int j = startIndex; j < startIndex+4; j++) { - crossed.push_back(bpc[j%6]); - } - - // compute intersection corners of the plane triplets - std::vector<GlobalPoint> corners; corners.reserve(4); - ThreePlaneCrossing crossing; - for ( int i=0; i<2; i++) { - for ( int j=2; j<4; j++) { - GlobalPoint corner( crossing.crossing( *plane, *crossed[i], *crossed[j])); - corners.push_back(corner); - -#ifdef DEBUG - cout << "Crossing of planes is " << corner << endl; - cout << "NormalVectors of the planes are " << plane->normalVector() - << " " << crossed[i]->normalVector() << " " << crossed[j]->normalVector() << endl; - cout << "Positions of planes are " << plane->position() - << " " << crossed[i]->position() << " " << crossed[j]->position() << endl; - if (plane->side( corner, 1.e-5) == SurfaceOrientation::onSurface && - crossed[i]->side( corner, 1.e-5) == SurfaceOrientation::onSurface && - crossed[j]->side( corner, 1.e-5) == SurfaceOrientation::onSurface) { - cout << "Crossing is really on all three surfaces" << endl; - } - else { - cout << "CROSSING IS NOT ON SURFACES!!!" << endl; - cout << plane->localZ(corner) << endl; - cout << crossed[i]->localZ(corner) << endl; - cout << crossed[j]->localZ(corner) << endl; - } -#endif - - } - } - - // put corners in cyclic sequence (2 and 3 swapped) - return new FourPointPlaneBounds( plane->toLocal( corners[0]), plane->toLocal( corners[1]), - plane->toLocal( corners[3]), plane->toLocal( corners[2])); -} - -Bounds* NavVolume6Faces::computeBounds( int index, const std::vector<NavVolumeSide>& faces) -{ - typedef GeneralNSurfaceDelimitedBounds::SurfaceAndSide SurfaceAndSide; - typedef GeneralNSurfaceDelimitedBounds::SurfaceContainer SurfaceContainer; - - // find the 4 intersecting surfaces - int startIndex = 2*(1+index/2); // 2, 4, 6 - SurfaceContainer crossed; crossed.reserve(4); - for (int j = startIndex; j < startIndex+4; j++) { - const NavVolumeSide& face(faces[j%6]); - crossed.push_back( SurfaceAndSide(&(face.surface().surface()), face.surfaceSide())); - } - return new GeneralNSurfaceDelimitedBounds( &(faces[index].surface().surface()), crossed); -} - - -NavVolume::Container -NavVolume6Faces::nextSurface( const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom, - double charge, PropagationDirection propDir) const -{ - typedef std::map<double,SurfaceAndBounds> SortedContainer; - - GlobalPoint gpos( toGlobal(pos)); - GlobalVector gmom( toGlobal(mom)); - GlobalVector gdir = (propDir == alongMomentum ? gmom : -gmom); - - SortedContainer sortedSurfaces; - Container verycloseSurfaces; // reachable surface with dist < epsilon !! - Container unreachableSurfaces; - - double epsilon = 0.01; // should epsilon be hard-coded or a variable in NavVolume? - - for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) { - std::pair<bool,double> dist = i->surface().distanceAlongLine( gpos, gdir); - if (dist.first) { - if (dist.second > epsilon) sortedSurfaces[dist.second] = *i; - else verycloseSurfaces.push_back(*i); - } - else unreachableSurfaces.push_back(*i); - } - NavVolume::Container result; - for (SortedContainer::const_iterator i=sortedSurfaces.begin(); i!=sortedSurfaces.end(); ++i) { - result.push_back(i->second); - } - result.insert( result.end(), unreachableSurfaces.begin(), unreachableSurfaces.end()); - result.insert( result.end(), verycloseSurfaces.begin(), verycloseSurfaces.end()); - return result; -} - -NavVolume::Container -NavVolume6Faces::nextSurface( const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom, - double charge, PropagationDirection propDir, - ConstReferenceCountingPointer<Surface> NotThisSurfaceP) const -{ - typedef std::map<double,SurfaceAndBounds> SortedContainer; - - GlobalPoint gpos( toGlobal(pos)); - GlobalVector gmom( toGlobal(mom)); - GlobalVector gdir = (propDir == alongMomentum ? gmom : -gmom); - - SortedContainer sortedSurfaces; - Container verycloseSurfaces; // reachable surface with dist < epsilon (if 6-surface check fails) - Container unreachableSurfaces; - - double epsilon = 0.01; // should epsilon be hard-coded or a variable in NavVolume? - bool surfaceMatched = false; - - for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) { - if (&(i->surface().surface()) == NotThisSurfaceP) surfaceMatched = true; - } - - for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) { - std::pair<bool,double> dist = i->surface().distanceAlongLine( gpos, gdir); - if (dist.first) { - if ( &(i->surface().surface()) == NotThisSurfaceP || !surfaceMatched && dist.second < epsilon) - verycloseSurfaces.push_back(*i); - else sortedSurfaces[dist.second] = *i; - } - else unreachableSurfaces.push_back(*i); - } - - NavVolume::Container result; - for (SortedContainer::const_iterator i=sortedSurfaces.begin(); i!=sortedSurfaces.end(); ++i) { - result.push_back(i->second); - } - result.insert( result.end(), unreachableSurfaces.begin(), unreachableSurfaces.end()); - result.insert( result.end(), verycloseSurfaces.begin(), verycloseSurfaces.end()); - return result; -} - -VolumeCrossReturnType -NavVolume6Faces::crossToNextVolume( const TrajectoryStateOnSurface& startingState, const Propagator& prop ) const -{ - typedef TrajectoryStateOnSurface TSOS; - typedef std::pair<TSOS,double> TSOSwithPath; - - NavVolume::Container nsc = nextSurface( toLocal( startingState.globalPosition()), - toLocal( startingState.globalMomentum()), -1, - alongMomentum, &(startingState.surface())); - int itry = 0; - VolumeCrossReturnType VolumeCrossResult( 0, startingState, 0.0); - - for (NavVolume::Container::const_iterator isur = nsc.begin(); isur!=nsc.end(); isur++) { - - std::cout << "crossToNextVolume: trying Surface no. " << itry << std::endl; - TSOSwithPath state; - - try { - state = isur->surface().propagateWithPath( prop, startingState); - } - catch (MagVolumeOutsideValidity& except) { - std::cout << "Ohoh... failed to stay inside magnetic field !! skip this surface " << std::endl; - ++itry; - continue; - } - - if (!state.first.isValid()) { - ++itry; - continue; - } - - std::cout << "crossToNextVolume: reached Valid State at Surface no. " << itry << std::endl; - std::cout << " --> local position of Valid state is " << state.first.localPosition() << std::endl; - std::cout << " --> global position of Valid state is " << state.first.globalPosition() << std::endl; - - if (isur->bounds().inside(state.first.localPosition())) { - //std::cout << "crossToNextVolume: Surface containing destination point found at try " << itry << std::endl; - // Found the exit surface !! Get pointer to next volume and save exit state: - //VolumeCrossResult.first = isur->surface().nextVolume(state.localPosition(),oppositeSide(isur->side())); - //VolumeCrossResult.second = state; - // exitSurface = &( isur->surface().surface() ); - //if(VolumeCrossResult.path() < 0.01) { - // std::cout << " Stuck at " << state.first.globalPosition() << std::endl; - //} - return VolumeCrossReturnType ( isur->surface().nextVolume(state.first.localPosition(), oppositeSide(isur->side())), - state.first, state.second ); - - break; - } - else { - std::cout << "crossToNextVolume: BUT not inside the Bounds !! " << std::endl; - ++itry; - } - } - - return VolumeCrossResult; -} - -/* -std::pair<bool,double> -NavVolume6Faces::linearDistance( const NavSurface& surf, const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom) const -{ - const Plane* plane = dynamic_cast<const Plane*>(&surf); - if (plane != 0) { - - -} -*/ - -/* -NavVolume::Container -NavVolume6Faces::nextSurface( const NavVolume::LocalPoint& pos, - const NavVolume::LocalVector& mom, - double charge, PropagationDirection propDir) const -{ - StraightLinePlaneCrossing pc( toGlobal(pos).basicVector(), toGlobal(mom).basicVector(), propDir); - Container approaching; - Container movingaway; - SurfaceAndBounds bestGuess; - - for (Container::const_iterator i=theNavSurfaces.begin(); i!=theNavSurfaces.end(); i++) { - const Plane& plane = dynamic_cast<const Plane&>(*(i->first)); - std::pair<bool,StraightLinePlaneCrossing::PositionType> crossed = pc.position( plane); - if (crossed.first) { - -#ifdef DEBUG - cout << "Plane crossed at global point " << crossed.second - << " local point " << plane.toLocal( Plane::GlobalPoint(crossed.second)) << endl; -#endif - - if ( i->second->inside( plane.toLocal( Plane::GlobalPoint(crossed.second)))) { - bestGuess = SurfaceAndBounds( i->first, i->second); - } - else { - // momentm is pointing towards the plane - approaching.push_back( SurfaceAndBounds( i->first, i->second)); - } - } - else { - movingaway.push_back( SurfaceAndBounds( i->first, i->second)); - } - } - - NavVolume::Container result(1,bestGuess); result.reserve(theNavSurfaces.size()); - result.insert(result.end(), approaching.begin(), approaching.end()); - result.insert(result.end(), movingaway.begin(), movingaway.end()); - return result; -} -*/ diff --git a/TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc b/TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc deleted file mode 100644 index 3b51d49ad43..00000000000 --- a/TrackPropagation/NavGeometry/src/ShiftingMagneticFieldProvider.icc +++ /dev/null @@ -1,56 +0,0 @@ - -template <class T> -ShiftingMagneticFieldProvider<T>:: -ShiftingMagneticFieldProvider( const MagVolume& magvol, - const MagVolume::PositionType& pos, - const MagVolume::RotationType& rot) : - theFrame(pos,rot), - theMagVolume(magvol) -{ - const float epsilon = 5.0e-7; - LocalVectorType localZ(0,0,1); - LocalVectorType localX(1,0,0); - - GlobalVectorType myZ( theFrame.toGlobal( localZ)); - GlobalVectorType magZ( theMagVolume.toGlobal( localZ)); - GlobalVectorType crossZ = myZ.cross(magZ); - if (crossZ.mag() > epsilon || myZ.dot(magZ) < 0) { - theFrameRelation = differentFrames; - } - else { - GlobalVectorType myX( theFrame.toGlobal( localX)); - GlobalVectorType magX( theMagVolume.toGlobal( localX)); - GlobalVectorType crossX = myX.cross(magX); - if (crossX.mag() > epsilon || myX.dot(magX) < 0) { - theFrameRelation = differentFrames; - } - else { - // the orientations of the two frames are identical within tolerance - MagVolume::PositionType magpos( theMagVolume.position()); - if ( (pos - magpos).mag() > epsilon) { - theFrameRelation = sameOrientation; - theShift = (pos - magpos).basicVector(); - } - else{ - theFrameRelation = sameFrame; - } - } - } -} - -template <class T> -typename ShiftingMagneticFieldProvider<T>::LocalVectorType -ShiftingMagneticFieldProvider<T>::valueInTesla( const LocalPointType& p) const -{ - if (theFrameRelation == sameFrame) { - return theMagVolume.fieldInTesla(p); - } - else if (theFrameRelation == sameOrientation) { - Basic3DVector<T> shiftedP = p.basicVector() + theShift; - return theMagVolume.fieldInTesla( LocalPointType(shiftedP)); - } - else { - return theMagVolume.fieldInTesla( theMagVolume.toLocal( theFrame.toGlobal(p))); - } - -} diff --git a/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.cc b/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.cc deleted file mode 100644 index 634d7f6d16d..00000000000 --- a/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include "TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h" -#include "TrackPropagation/NavGeometry/src/LinearEquation3.h" - -Plane::GlobalPoint -ThreePlaneCrossing::crossing( const Plane& a, const Plane& b, - const Plane& c) const -{ - typedef Plane::Scalar T; - - const GlobalVector n1g( a.normalVector()); - const GlobalVector n2g( b.normalVector()); - const GlobalVector n3g( c.normalVector()); - - Basic3DVector<T> n1(n1g.basicVector()); - Basic3DVector<T> n2(n2g.basicVector()); - Basic3DVector<T> n3(n3g.basicVector()); - Basic3DVector<T> rhs( n1.dot( a.position().basicVector()), - n2.dot( b.position().basicVector()), - n3.dot( c.position().basicVector())); - LinearEquation3<T> solver; - Plane::GlobalPoint result( solver.solution( n1, n2, n3, rhs)); - return result; -} diff --git a/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h b/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h deleted file mode 100644 index aedb4bfb0d5..00000000000 --- a/TrackPropagation/NavGeometry/src/ThreePlaneCrossing.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef ThreePlaneCrossing_H -#define ThreePlaneCrossing_H - -#include "Geometry/Surface/interface/Plane.h" - -class ThreePlaneCrossing { -public: - - - Plane::GlobalPoint crossing( const Plane& a, const Plane& b, - const Plane& c) const; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/test/DoubleVolumeTest.cpp b/TrackPropagation/NavGeometry/test/DoubleVolumeTest.cpp deleted file mode 100644 index 33efcd5305c..00000000000 --- a/TrackPropagation/NavGeometry/test/DoubleVolumeTest.cpp +++ /dev/null @@ -1,379 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavVolume6Faces.h" -#include "TrackPropagation/NavGeometry/interface/NavPlane.h" - -#include "MagneticField/VolumeGeometry/interface/MagVolume6Faces.h" - -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" - -#include "TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h" -#include "TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h" -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInS.h" -#include "TH1.h" -#include "TH2.h" -#include "TFile.h" - - -#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/VolumeGeometry/interface/MagneticFieldProvider.h" -#include <vector> - -using namespace std; - -class MyMagneticField : public MagneticField -{ - public: - virtual GlobalVector inTesla ( const GlobalPoint& ) const {return GlobalVector(0,0,4);} -}; - -class ConstantMagneticFieldProvider4T : public MagneticFieldProvider<float> { -public: - virtual LocalVectorType valueInTesla( const LocalPointType& p) const {return LocalVectorType(0,0,4.);} -}; - -class ConstantMagVolume4T : public MagVolume { -public: - ConstantMagVolume4T( const PositionType& pos, const RotationType& rot, - DDSolidShape shape, const MagneticFieldProvider<float> * mfp) : - MagVolume( pos, rot, shape, mfp) {} - - virtual bool inside( const GlobalPoint& gp, double tolerance=0.) const {return true;} - - /// Access to volume faces - virtual std::vector<VolumeSide> faces() const {return std::vector<VolumeSide>();} -}; - - - - - -NavPlane* navPlane( ReferenceCountingPointer<BoundPlane> p) { - return new NavPlane(p.get()); -} - -SurfaceOrientation::Side oppositeSide( SurfaceOrientation::Side side = SurfaceOrientation::onSurface) { - if ( side == SurfaceOrientation::onSurface ) { - return side; - } else { - SurfaceOrientation::Side oppositeSide = ( side ==SurfaceOrientation::positiveSide ? SurfaceOrientation::negativeSide : SurfaceOrientation::positiveSide); - return oppositeSide; - } -} - - -int main() -{ - - - TFile* theFile; - TH1F* HistDx; - TH1F* HistDy; - TH1F* HistDz; - TH1F* HistDp; - TH2F* HistXY; - TH2F* HistXY2; - - theFile = new TFile("DoubleVolumeTest.root","RECREATE"); - theFile->SetCompressionLevel(2); - HistDx = new TH1F("Dx","",500,-.01,.01); - HistDy = new TH1F("Dy","",500,-.01,.01); - HistDz = new TH1F("Dz","",500,-.01,.01); - HistDp = new TH1F("Dp","",500,-.01,.01); - HistXY = new TH2F("XY","",500,-15.,15.,500,-15.,35.); - HistXY2 = new TH2F("XY2","",500,-15.,15.,500,-15.,35.); - // HistNsuccesRK = new TH1F("DE","",,-1.,1.); - // HistNsuccesOld = new TH1F("DE","",50,-1.,1.); - - typedef TrajectoryStateOnSurface TSOS; - - RandomPlaneGeneratorByAxis planeGenerator; - planeGenerator.setTilt(0.1); - - GlobalVector globalX(1,0,0); - GlobalVector globalY(0,1,0); - GlobalVector globalZ(0,0,1); - - - float xSize = 10.; - float ySize = 10.; - float zSize = 10.; - float xPos = 0.; - float yPos = 0.; - float zPos = 0.; - - GlobalPoint zMinus( xPos, yPos, zPos - zSize); - GlobalPoint zPlus( xPos, yPos, zPos + zSize); - GlobalPoint phiMinus( xPos - xSize, yPos, zPos); - GlobalPoint phiPlus( xPos + xSize, yPos, zPos); - GlobalPoint rMinus( xPos, yPos - ySize, zPos); - GlobalPoint rPlus( xPos, yPos + ySize, zPos); - GlobalPoint rPlus2( xPos, yPos + 3 * ySize, zPos); - - //RandomPlaneGenerator::PlanePtr zMinusPlane = planeGenerator(zMinus,globalZ); - //RandomPlaneGenerator::PlanePtr zPlusPlane = planeGenerator(zPlus,globalZ); - //RandomPlaneGenerator::PlanePtr phiMinusPlane = planeGenerator(phiMinus,globalX); - //RandomPlaneGenerator::PlanePtr phiPlusPlane = planeGenerator(phiPlus,globalX); - //RandomPlaneGenerator::PlanePtr rMinusPlane = planeGenerator(rMinus,globalY); - //RandomPlaneGenerator::PlanePtr rPlusPlane = planeGenerator(rPlus,globalY); - - ReferenceCountingPointer<BoundPlane> zMinusPlane = planeGenerator(zMinus,globalZ); - ReferenceCountingPointer<BoundPlane> zPlusPlane = planeGenerator(zPlus,globalZ); - ReferenceCountingPointer<BoundPlane> phiMinusPlane = planeGenerator(phiMinus,globalX); - ReferenceCountingPointer<BoundPlane> phiPlusPlane = planeGenerator(phiPlus,globalX); - ReferenceCountingPointer<BoundPlane> rMinusPlane = planeGenerator(rMinus,globalY); - ReferenceCountingPointer<BoundPlane> rPlusPlane = planeGenerator(rPlus,globalY); - ReferenceCountingPointer<BoundPlane> rPlus2Plane = planeGenerator(rPlus2,globalY); - - GlobalPoint volumePos( xPos, yPos, zPos); - GlobalPoint volumePos2( xPos, yPos + 2 * ySize , zPos); - Surface::RotationType volumeRot; // unit matrix - - vector<NavVolumeSide> MyNavVolumeSides; - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( rMinusPlane), SurfaceOrientation::inner, - rMinusPlane->side(volumePos,0))); - - NavPlane* CommonSideP = navPlane( rPlusPlane); - - MyNavVolumeSides.push_back( NavVolumeSide(CommonSideP, SurfaceOrientation::outer, - rPlusPlane->side(volumePos,0))); - // MyNavVolumeSides.push_back( NavVolumeSide( navPlane( rPlusPlane), SurfaceOrientation::outer, - // rPlusPlane->side(volumePos,0))); - - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( zMinusPlane), SurfaceOrientation::zminus, - zMinusPlane->side(volumePos,0))); - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( zPlusPlane), SurfaceOrientation::zplus, - zPlusPlane->side(volumePos,0))); - - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( phiMinusPlane), SurfaceOrientation::phiminus, - phiMinusPlane->side(volumePos,0))); - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( phiPlusPlane), SurfaceOrientation::phiplus, - phiPlusPlane->side(volumePos,0))); - - - vector<NavVolumeSide> MyNavVolumeSides2; - MyNavVolumeSides2.push_back( NavVolumeSide( CommonSideP , SurfaceOrientation::inner, - rPlusPlane->side(volumePos2,0))); - MyNavVolumeSides2.push_back( NavVolumeSide( navPlane( rPlus2Plane), SurfaceOrientation::outer, - rPlus2Plane->side(volumePos2,0))); - - MyNavVolumeSides2.push_back( NavVolumeSide( navPlane( zMinusPlane), SurfaceOrientation::zminus, - zMinusPlane->side(volumePos2,0))); - MyNavVolumeSides2.push_back( NavVolumeSide( navPlane( zPlusPlane), SurfaceOrientation::zplus, - zPlusPlane->side(volumePos2,0))); - - MyNavVolumeSides2.push_back( NavVolumeSide( navPlane( phiMinusPlane), SurfaceOrientation::phiminus, - phiMinusPlane->side(volumePos2,0))); - MyNavVolumeSides2.push_back( NavVolumeSide( navPlane( phiPlusPlane), SurfaceOrientation::phiplus, - phiPlusPlane->side(volumePos2,0))); - - for (vector<NavVolumeSide>::const_iterator iv=MyNavVolumeSides.begin(); iv!=MyNavVolumeSides.end(); iv++) { - - const Plane& plane = dynamic_cast<const Plane&>(iv->surface().surface()); - - cout << "TEST: surface " - // << iv->volumeSides.begin() - // << " at position " - << iv->surface().surface().position() - // << " and with rotation " - // << iv->surface().surface().rotation() - - << " normal vector " << plane.normalVector() - << " side " << iv->surfaceSide() - << " face " << iv->globalFace() << endl; - - } - - try { - ConstantMagneticFieldProvider4T theProvider; - ConstantMagVolume4T theMagVolume( MagVolume::PositionType(0,0,0), MagVolume::RotationType(), - ddshapeless, &theProvider); - - - NavVolume6Faces vol( volumePos, volumeRot, ddshapeless, MyNavVolumeSides, 0); - NavVolume6Faces vol2( volumePos2, volumeRot, ddshapeless, MyNavVolumeSides2, 0); - - cout << "check if starting point is inside volume 1 : " << vol.inside(GlobalPoint(xPos, yPos, zPos),0.1) << endl; - cout << "check if starting point is inside volume 2 : " << vol2.inside(GlobalPoint(xPos, yPos, zPos),0.1) << endl; - - UniformMomentumGenerator momentumGenerator; - //MM: Added MyTestField needed for Analytical Propagator - // and added MyTestField to AnalyticalPropagator and GlobalTrajectoryParameters initialisers - MyMagneticField MyTestField; - AnalyticalPropagator propagator ( &MyTestField, alongMomentum ); - - // Propagator* oldPropagator = new RKPropagatorInS( theMagVolume, alongMomentum); - RKPropagatorInS RKprop ( theMagVolume, alongMomentum ); - - - - for (int i=0; i<50000; i++) { - GlobalVector gStartMomentum( momentumGenerator()); - - cout << "************* NEXT TEST 'EVENT' *****" << endl; - // cout << "Start momentum is " << gStartMomentum << endl;; - - GlobalTrajectoryParameters gtp( GlobalPoint(xPos, yPos, zPos), - gStartMomentum, -1, &MyTestField ); - - RandomPlaneGenerator::PlanePtr startingPlane = planeGenerator(gtp.position(), - gtp.momentum()); - const BoundPlane& sp(*startingPlane); - FreeTrajectoryState fts(gtp); - TSOS startingState( fts, sp); - - TSOS CurrentRKState = startingState; - TSOS FinalAnalyticalState = startingState; - - // - //// - ////// TEST CrossToNextVolume Function: - //// - // - - // - /// VolumeCrossReturnType is std::pair<const NavVolume*, TrajectoryStateOnSurface> - // - - - - VolumeCrossReturnType VolumeCrossResult = vol.crossToNextVolume(startingState, RKprop); - - - CurrentRKState = VolumeCrossResult.tsos(); - double TotalPathLength = VolumeCrossResult.path(); - cout << "Oh pathlenght was : " << TotalPathLength << endl; - // if (TotalPathLength > 20) - // HistXY->Fill(CurrentRKState.globalPosition().x(),CurrentRKState.globalPosition().y()); - - if (TotalPathLength > 20) - HistXY2->Fill(CurrentRKState.globalPosition().x(),CurrentRKState.globalPosition().y()); - else - HistXY->Fill(CurrentRKState.globalPosition().x(),CurrentRKState.globalPosition().y()); - - if (VolumeCrossResult.volume() != 0) { - cout << "YES !!! Found next volume with position: " << VolumeCrossResult.volume()->position() << endl; - cout << "Do a second Iteration step !" << endl; - - VolumeCrossReturnType VolumeCrossResult2 = VolumeCrossResult.volume()->crossToNextVolume(VolumeCrossResult.tsos(), RKprop); - if (VolumeCrossResult2.volume() != 0) { - cout << "crossToNextVolume: Succeeded to find THIRD volume with pos, mom, " << - VolumeCrossResult2.tsos().globalPosition() << ", " << VolumeCrossResult2.tsos().globalMomentum() << endl; - } else { - cout << "crossToNextVolume: Failed to find THIRD volume " << endl; - } - CurrentRKState = VolumeCrossResult2.tsos(); - TotalPathLength += VolumeCrossResult2.path(); - if (TotalPathLength > 20) - HistXY2->Fill(CurrentRKState.globalPosition().x(),CurrentRKState.globalPosition().y()); - else - HistXY->Fill(CurrentRKState.globalPosition().x(),CurrentRKState.globalPosition().y()); - } else { - cout << "crossToNextVolume: NO !!!!!!!! Nothing on other side" << endl; - } - - cout << " - - - - - - That was crossToNextVolume, now compare to conventional result: " << endl; - - - - // - //// - ////// OK - - - NavVolume::Container nsc = vol.nextSurface( vol.toLocal( gtp.position()), - vol.toLocal( gtp.momentum()), -1); - // cout << "nextSurface size " << nsc.size() << endl; - - - int itry = 0; - const NavVolume* nextVol = 0; - const Surface* exitSurface = 0; - - for (NavVolume::Container::const_iterator isur = nsc.begin(); isur!=nsc.end(); isur++) { - TSOS state = isur->surface().propagate( propagator, startingState); - if (!state.isValid()) { - ++itry; - continue; - } - if (isur->bounds().inside(state.localPosition())) { - cout << "Surface containing destination point found at try " << itry << endl; - nextVol = isur->surface().nextVolume(state.localPosition(),oppositeSide(isur->side())); - - cout << "Looking for next Volume on other side of surface with center " << isur->surface().surface().position() << endl; - startingState = state; - FinalAnalyticalState = state; - exitSurface = &( isur->surface().surface() ); - break; - } - else { - ++itry; - } - } - - - if (nextVol != 0) { - cout << "YES !!! Found next volume with position: " << nextVol->position() << endl; - cout << "Do a second Iteration step !" << endl; - - // NavVolume::Container nsc2 = nextVol->nextSurface( nextVol->toLocal( startingState.globalPosition()+0.01*startingState.globalMomentum()), - // nextVol->toLocal( startingState.globalMomentum()), -1); - NavVolume::Container nsc2 = nextVol->nextSurface( nextVol->toLocal( startingState.globalPosition()), - nextVol->toLocal( startingState.globalMomentum()), -1, alongMomentum, exitSurface ); - - - for (NavVolume::Container::const_iterator isur = nsc2.begin(); isur!=nsc2.end(); isur++) { - TSOS state = isur->surface().propagate( propagator, startingState); - if (!state.isValid()) { - ++itry; - continue; - } - if (isur->bounds().inside(state.localPosition())) { - cout << "** SECOND ** Surface containing destination point found at try " << itry << endl; - cout << "Position and momentum after first step: " << startingState.globalPosition() << ", " << startingState.globalMomentum() << endl; - cout << "Position and momentum after second step: " << state.globalPosition() << ", " << state.globalMomentum() << endl; - - nextVol = isur->surface().nextVolume(state.localPosition(),oppositeSide(isur->side())); - - cout << "Looking for ** NEXT ** next Volume on other side of surface with center " << isur->surface().surface().position() << endl; - FinalAnalyticalState = state; - break; - } - else { - ++itry; - } - } - if (nextVol != 0) { - cout << "Succeeded to find THIRD volume with pos, mom, " << startingState.globalPosition() << ", " << startingState.globalMomentum() << endl; - } else { - cout << "Failed to find THIRD volume " << endl; - } - } else { - cout << "NO !!!!!!!! Nothing on other side" << endl; - - - } - - HistDx->Fill(1000.*(CurrentRKState.globalPosition().x()-FinalAnalyticalState.globalPosition().x())); - HistDy->Fill(1000.*(CurrentRKState.globalPosition().y()-FinalAnalyticalState.globalPosition().y())); - HistDz->Fill(1000.*(CurrentRKState.globalPosition().z()-FinalAnalyticalState.globalPosition().z())); - HistDp->Fill(1000.*(CurrentRKState.globalMomentum().mag()-FinalAnalyticalState.globalMomentum().mag())); - - - } - } - catch (std::exception& ex) { - cout << "Oops, got an exception: " << ex.what() << endl; - return 1; - } - HistDx->Write(); - HistDy->Write(); - HistDz->Write(); - HistDp->Write(); - HistXY->Write(); - HistXY2->Write(); - // HistNsuccesOld->Write(); - // HistNsuccesRK->Write(); -} - diff --git a/TrackPropagation/NavGeometry/test/PropagatorTestInTrackerVolume.cpp b/TrackPropagation/NavGeometry/test/PropagatorTestInTrackerVolume.cpp deleted file mode 100644 index c1a46a67f9b..00000000000 --- a/TrackPropagation/NavGeometry/test/PropagatorTestInTrackerVolume.cpp +++ /dev/null @@ -1,470 +0,0 @@ - -#include "TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h" -///#include "CommonReco/PatternTestTools/interface/StraightLinePropagationTestGenerator.h" -#include "TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h" -#include "TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h" -#include "TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h" -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInS.h" - -///#include "CommonReco/GeomPropagators/test/OldGtfPropagator.cc" - -#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h" -//#include "CommonReco/MaterialEffects/interface/PropagatorWithMaterial.h" -//#include "CommonDet/PatternPrimitives/interface/MediumProperties.h" -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandGauss.h" -//#include "Utilities/UI/interface/SimpleConfigurable.h" - -#include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" -#include "MagneticField/VolumeGeometry/interface/MagneticFieldProvider.h" - -#include <iostream> -#include <iomanip> - -class ConstantMagneticField4T : public MagneticField { -public: - GlobalVector inTesla( const GlobalPoint& gp) const {return GlobalVector(0,0,4.);} -}; - -class ConstantMagneticFieldProvider4T : public MagneticFieldProvider<float> { -public: - virtual LocalVectorType valueInTesla( const LocalPointType& p) const {return LocalVectorType(0,0,4.);} -}; - -class ConstantMagVolume4T : public MagVolume { -public: - ConstantMagVolume4T( const PositionType& pos, const RotationType& rot, - DDSolidShape shape, const MagneticFieldProvider<float> * mfp) : - MagVolume( pos, rot, shape, mfp) {} - - virtual bool inside( const GlobalPoint& gp, double tolerance=0.) const {return true;} - - /// Access to volume faces - virtual std::vector<VolumeSide> faces() const {return std::vector<VolumeSide>();} -}; - - -using namespace std; - -//#include "MagneticField/BaseMagneticField/interface/CMSMagneticFieldFactory.h" - -//#include "MagneticField/BaseMagneticField/interface/CMSMagneticFieldLoader.h" - -//#include "Utilities/GenUtil/interface/CMSexception.h" -//static CMSMagneticFieldSimpleFactory<CMSMagneticFieldLoader> localFactory; - -// -// Compare two propagators by generating random helices. Step forward up -// to the boundaries of the tracker volume and back to the origin. A -// plane, smeared around the local normal plane to the helix, is created -// at each step and trajectory states propagated to it. -// -int main (int argc, char* argv[]) { - // Capri::Init cinit(argc,argv); - - typedef long double ExtendedDouble; - // try { - // ((CMSMagneticFieldLoader*)(localFactory.singleton()))->load(); - // } - // catch (Genexception & cexp) { - // cout << cexp.what() << endl; - // return 8; - // } - MagneticField* theField = new ConstantMagneticField4T; - - // - // nr. of events, maximum step length, maximum tilt of planes, - // limits of the volume (in r and z) - // - // SimpleConfigurable<int> maxEvents_conf(10000,"PropagatorTestInTrackerVolume:maxEvents"); - // int theMaxEvents = maxEvents_conf.value(); - int theMaxEvents = 100; - - // SimpleConfigurable<float> maxStep_conf(50.,"PropagatorTestInTrackerVolume:maxStep"); - // float theMaxStep = maxStep_conf.value(); - float theMaxStep = 50.; - - // SimpleConfigurable<float> maxTilt_conf(0.5,"PropagatorTestInTrackerVolume:maxTilt"); - // float theMaxTilt = maxTilt_conf.value(); - float theMaxTilt = 0.5; - - // SimpleConfigurable<float> maxR_conf(120.,"PropagatorTestInTrackerVolume:maxRadius"); - // float theMaxR = maxR_conf.value(); - float theMaxR = 120.; - - // SimpleConfigurable<float> maxZ_conf(300.,"PropagatorTestInTrackerVolume:maxZ"); - // float theMaxZ = maxZ_conf.value(); - float theMaxZ = 300.; - - // SimpleConfigurable<string> planeType_conf("","PropagatorTestInTrackerVolume:planeType"); - // if ( planeType_conf.value()!="" ) - // cout << "Configurable PropagatorTestInTrackerVolume:planeType is obsolete !!!" << endl; - - // SimpleConfigurable<string> - // surfaceType_conf("arbitrary","PropagatorTestInTrackerVolume:surfaceType"); - // string theSurfaceType = surfaceType_conf.value(); - string theSurfaceType = "arbitrary"; - - // SimpleConfigurable<bool> useHelix_conf(1,"PropagatorTestInTrackerVolume:useHelix"); - // bool theUseHelix = useHelix_conf.value(); - bool theUseHelix = true; - - // SimpleConfigurable<bool> - // anyDirection_conf(false,"PropagatorTestInTrackerVolume:anyDirection"); - // bool theAnyDirection = anyDirection_conf.value(); - bool theAnyDirection = false; - - // SimpleConfigurable<bool> - // errorPropagation_conf(false,"PropagatorTestInTrackerVolume:propagateErrors"); - // bool theErrorPropagation = errorPropagation_conf.value(); - bool theErrorPropagation = false; - - // SimpleConfigurable<bool> - // materialEffects_conf(false,"PropagatorTestInTrackerVolume:materialEffects"); - // bool theMaterialEffects = materialEffects_conf.value(); - - // SimpleConfigurable<float> - // radLength_conf(0.01,"PropagatorTestInTrackerVolume:radLen"); - // float theRadLength = radLength_conf.value(); - float theRadLength = 0.01; - - // SimpleConfigurable<float> xi_conf(0.01,"PropagatorTestInTrackerVolume:xi"); - // float theXi = xi_conf.value(); - float theXi = 0.01; - - // if ( theMaterialEffects ) - // cout << " Rad.Length / Xi = " << theRadLength << "/" << theXi << endl; - // - // Timing - // - // - // Histogram class and propagators - // - PropagatorTestTree theHistogrammer; - - ConstantMagneticFieldProvider4T theProvider; - ConstantMagVolume4T theMagVolume( MagVolume::PositionType(0,0,0), MagVolume::RotationType(), - ddshapeless, &theProvider); - - Propagator* oldPropagator = new RKPropagatorInS( theMagVolume, alongMomentum); - - Propagator* newPropagator; - // if ( theMaterialEffects ) - // newPropagator = new PropagatorWithMaterial(alongMomentum); - // else - newPropagator = new AnalyticalPropagator(theField, alongMomentum); - if ( theAnyDirection ) - newPropagator->setPropagationDirection(anyDirection); - // - // helix generator (values now defined via .orcarc) - // - PropagationTestGenerator* trajectoryGenerator; - ///if ( theUseHelix ) - trajectoryGenerator = new HelixPropagationTestGenerator(theField); - /// else - ///trajectoryGenerator = new StraightLinePropagationTestGenerator(); - // - // random plane generator - // - RandomCylinderGenerator* cylinderGenerator(0); - RandomPlaneGeneratorByAxis* planeGenerator(0); - bool surfaceIsPlane; - if ( theSurfaceType=="cylinder" ) { - cylinderGenerator = new RandomCylinderGenerator(theMaxZ); - surfaceIsPlane = false; - } - else { - planeGenerator = new RandomPlaneGeneratorByAxis(theMaxTilt); - if ( theSurfaceType=="forward" ) - planeGenerator->setType(RandomPlaneGeneratorByAxis::forward); - else if ( theSurfaceType=="strictForward" ) - planeGenerator->setType(RandomPlaneGeneratorByAxis::strictForward); - else if ( theSurfaceType=="barrel" ) - planeGenerator->setType(RandomPlaneGeneratorByAxis::barrel); - else if ( theSurfaceType=="strictBarrel" ) - planeGenerator->setType(RandomPlaneGeneratorByAxis::strictBarrel); - else - planeGenerator->setType(RandomPlaneGeneratorByAxis::arbitrary); - surfaceIsPlane = true; - } - - for ( int ievt=0; ievt<theMaxEvents; ievt++ ) { - // - // generate helix, get starting point and define plane - // - ExtendedDouble stot; - ExtendedDouble stot0(0.); - trajectoryGenerator->generateStartValues(); - GlobalPoint xStart = trajectoryGenerator->position(); - GlobalVector pStart = trajectoryGenerator->momentum(); - if ( !surfaceIsPlane ) { - // for cylinders: do one first step (cylindrical geometry - // is ill defined at origin) - stot0 = trajectoryGenerator->randomStepForward(theMaxStep); - xStart = trajectoryGenerator->position(); - pStart = trajectoryGenerator->momentum(); - // check, if still inside volume - if ( xStart.perp()>theMaxR || fabs(xStart.z())>theMaxZ ) continue; - } - cout << " starting at x = " << xStart << endl; - cout << " p = " << pStart << endl; - // RandomPlaneGenerator::PlanePtr startPlane = (*surfaceGenerator)(xStart,pStart); - RandomPlaneGenerator::PlanePtr startPlane(0); - RandomCylinderGenerator::CylinderPtr startCylinder(0); - if ( surfaceIsPlane ) - startPlane = (*planeGenerator)(xStart,pStart); - else - startCylinder = (*cylinderGenerator)(xStart,pStart); - // if ( theMaterialEffects && theSurfaceType!="cylinder" ) { - // startPlane->setMediumProperties(new MediumProperties(theRadLength,theXi)); - // } - if ( surfaceIsPlane ) { - cout << "generated Plane at " << startPlane->position() << endl; - cout << startPlane->rotation() << endl; - } - else { - cout << "generated Cylinder at r = " << startCylinder->radius() << endl; - } - // fill helix parameters into ntuple - GlobalPoint center(0.,0.,0.); - if ( theUseHelix ) { - HelixPropagationTestGenerator* helixGenerator = - dynamic_cast<HelixPropagationTestGenerator*>(trajectoryGenerator); - center = helixGenerator->center(); - } - theHistogrammer.fillHelix(xStart,pStart,center, - trajectoryGenerator->transverseCurvature(), - trajectoryGenerator->charge()); - // - // define trajectory state at start - // - GlobalTrajectoryParameters aux(xStart,pStart,trajectoryGenerator->charge(),theField); - TrajectoryStateOnSurface simState; - if ( theErrorPropagation ) { - AlgebraicSymMatrix matrix(5,0); - // 1% relative on 1/p, 1mRad on theta/phi, 100um on x/y - matrix[0][0] = 0.01/pStart.mag(); - matrix[1][1] = matrix[2][2] = 0.001; - matrix[3][3] = matrix[4][4] = 100.e-4; - if ( surfaceIsPlane ) - simState = TrajectoryStateOnSurface(aux, - CurvilinearTrajectoryError(matrix), - *startPlane); - else - simState = TrajectoryStateOnSurface(aux, - CurvilinearTrajectoryError(matrix), - *startCylinder); - } - else { - if ( surfaceIsPlane ) - simState = TrajectoryStateOnSurface(aux,*startPlane); - else - simState = TrajectoryStateOnSurface(aux,*startCylinder); - } - TrajectoryStateOnSurface tsosOld,tsosNew; - tsosOld = tsosNew = simState; - // if ( tsosOld.hasError() ) - // cout << "Errors at start = " << tsosOld.localError().matrix() << endl; - // - // First part: forward propagation towards limits of the tracker volume - // - oldPropagator->setPropagationDirection(alongMomentum); - if ( !theAnyDirection ) newPropagator->setPropagationDirection(alongMomentum); - GlobalPoint xGen; - GlobalVector pGen; - do { - // - // make one step and get "true" position / direction and create plane - // - stot = trajectoryGenerator->randomStepForward(theMaxStep) - stot0; - xGen = trajectoryGenerator->position(); - pGen = trajectoryGenerator->momentum(); - // cout << " stepped to x = " << xGen << endl; - // cout << " p = " << pGen << endl; - // RandomPlaneGenerator::PlanePtr currentPlane = (*surfaceGenerator)(xGen,pGen); - RandomPlaneGenerator::PlanePtr currentPlane(0); - RandomCylinderGenerator::CylinderPtr currentCylinder(0); - if ( surfaceIsPlane ) - currentPlane = (*planeGenerator)(xGen,pGen); - else - currentCylinder = (*cylinderGenerator)(xGen,pGen); - // if ( theMaterialEffects && theSurfaceType!="cylinder" ) { - // currentPlane->setMediumProperties(new MediumProperties(theRadLength,theXi)); - // } - // continue propagation of states by propagator 1 - if ( tsosOld.isValid() ) { - if ( surfaceIsPlane ) - tsosOld = oldPropagator->propagate(tsosOld,*currentPlane); - else - tsosOld = oldPropagator->propagate(tsosOld,*currentCylinder); - if ( !tsosOld.isValid() ) cout << " tsosOld is invalid" << endl; - } - // continue propagation of states by propagator 2 - if ( tsosNew.isValid() ) { - if ( surfaceIsPlane ) - tsosNew = newPropagator->propagate(tsosNew,*currentPlane); - else - tsosNew = newPropagator->propagate(tsosNew,*currentCylinder); - if ( !tsosNew.isValid() ) cout << " tsosNew is invalid" << endl; - // else cout << tsosNew.localParameters().position() << " " - // << tsosNew.localParameters().momentum() << " " - // << tsosNew.localParameters().charge() << " " - // << tsosNew.localParameters().pzSign() << endl; - } - // add results to ntuple - if ( surfaceIsPlane ) - theHistogrammer.addStep(stot,xGen,pGen, - currentPlane->position(), - currentPlane->toGlobal(LocalVector(0.,0.,1.)), - tsosOld,tsosNew); - else { - GlobalPoint pos = currentCylinder->position(); - float radius = currentCylinder->radius(); - theHistogrammer.addStep(stot,xGen,pGen, - GlobalPoint(pos.x(),pos.y(),radius), - GlobalVector(xGen.x(),xGen.y(),0.).unit(), - tsosOld,tsosNew); - } - // terminate loop if current point is outside volume - } while ( xGen.perp()<theMaxR && fabs(xGen.z())<theMaxZ ); - // // errors - // if ( tsosOld.isValid() ) { - // cout << "Old state outside = " << tsosOld.localPosition() - // << " " << tsosOld.localMomentum() << endl; - // if ( tsosOld.hasError() ) - // cout << "Old errors at outside = " << tsosOld.localError().matrix() << endl; - // } - // if ( tsosNew.isValid() ) { - // cout << "New state outside = " << tsosNew.localPosition() - // << " " << tsosNew.localMomentum() << endl; - // if ( tsosNew.hasError() ) - // cout << "New errors at outside = " << tsosNew.localError().matrix() << endl; - // } - // - // Second part: backward propagation towards the origin - // - cout << "Changing direction" << endl; - oldPropagator->setPropagationDirection(oppositeToMomentum); - if ( !theAnyDirection ) - newPropagator->setPropagationDirection(oppositeToMomentum); - while ( true ) { - // - // Make one step, use pathlength to check if starting point was passed. - // Get true position / direction and generate plane. - // - if ( (stot=(trajectoryGenerator->randomStepBackward(theMaxStep)-stot0))<0. ) break; - xGen = trajectoryGenerator->position(); - pGen = trajectoryGenerator->momentum(); - // cout << " stepped to x = " << xGen << endl; - // cout << " p = " << pGen << endl; - // RandomPlaneGenerator::PlanePtr currentPlane = (*surfaceGenerator)(xGen,pGen); - RandomPlaneGenerator::PlanePtr currentPlane(0); - RandomCylinderGenerator::CylinderPtr currentCylinder(0); - if ( surfaceIsPlane ) - currentPlane = (*planeGenerator)(xGen,pGen); - else - currentCylinder = (*cylinderGenerator)(xGen,pGen); - // if ( theMaterialEffects && theSurfaceType!="cylinder" ) { - // currentPlane->setMediumProperties(new MediumProperties(theRadLength,theXi)); - // } - // continue propagation of states by propagator 1 - if ( tsosOld.isValid() ) { - if ( surfaceIsPlane ) - tsosOld = oldPropagator->propagate(tsosOld,*currentPlane); - else - tsosOld = oldPropagator->propagate(tsosOld,*currentCylinder); - if ( !tsosOld.isValid() ) cout << " tsosOld is invalid" << endl; - } - // continue propagation of states by propagator 2 - if ( tsosNew.isValid() ) { - if ( surfaceIsPlane ) - tsosNew = newPropagator->propagate(tsosNew,*currentPlane); - else - tsosNew = newPropagator->propagate(tsosNew,*currentCylinder); - if ( !tsosNew.isValid() ) cout << " tsosNew is invalid" << endl; - // else cout << tsosNew.localParameters().position() << " " - // << tsosNew.localParameters().momentum() << " " - // << tsosNew.localParameters().charge() << " " - // << tsosNew.localParameters().pzSign() << endl; - } - // add results to ntuple - if ( surfaceIsPlane ) - theHistogrammer.addStep(stot,xGen,pGen, - currentPlane->position(), - currentPlane->toGlobal(LocalVector(0.,0.,1.)), - tsosOld,tsosNew); - else { - GlobalPoint pos = currentCylinder->position(); - float radius = currentCylinder->radius(); - theHistogrammer.addStep(stot,xGen,pGen, - GlobalPoint(pos.x(),pos.y(),radius), - GlobalVector(xGen.x(),xGen.y(),0.).unit(), - tsosOld,tsosNew); - } - } - // - // Back close to starting point: final step towards plane at starting point - // - // cout << "PathLength at end = " << stot << endl; - // continue propagation of states by propagator 1 - if ( tsosOld.isValid() ) { - if ( surfaceIsPlane ) - tsosOld = oldPropagator->propagate(tsosOld,*startPlane); - else - tsosOld = oldPropagator->propagate(tsosOld,*startCylinder); - // if ( !tsosOld.isValid() ) - // cout << " tsosOld is invalid" << endl; - // else { - // cout << "Old state at start = " << tsosOld.localPosition() - // << " " << tsosOld.localMomentum() << endl; - // if ( tsosOld.hasError() ) - // cout << "Old errors back at start = " - // << tsosOld.localError().matrix() << endl; - // } - } - // continue propagation of states by propagator 2 - if ( tsosNew.isValid() ) { - if ( surfaceIsPlane ) - tsosNew = newPropagator->propagate(tsosNew,*startPlane); - else - tsosNew = newPropagator->propagate(tsosNew,*startCylinder); - // cout << tsosNew.localParameters().position() << " " - // << tsosNew.localParameters().momentum() << " " - // << tsosNew.localParameters().charge() << " " - // << tsosNew.localParameters().pzSign() << endl; - // if ( !tsosNew.isValid() ) - // cout << " tsosNew is invalid" << endl; - // else { - // cout << "New state at start = " << tsosNew.localPosition() - // << " " << tsosNew.localMomentum() << endl; - // if ( tsosNew.hasError() ) - // cout << "New errors back at start = " - // << tsosNew.localError().matrix() << endl; - // } - } - // add results to ntuple - if ( surfaceIsPlane ) - theHistogrammer.addStep(stot,xStart,pStart, - startPlane->position(), - startPlane->toGlobal(LocalVector(0.,0.,1.)), - tsosOld,tsosNew); - else { - GlobalPoint pos = startCylinder->position(); - float radius = startCylinder->radius(); - theHistogrammer.addStep(stot,xStart,pStart, - GlobalPoint(pos.x(),pos.y(),radius), - GlobalVector(xStart.x(),xStart.y(),0.).unit(), - tsosOld,tsosNew); - } - cout << endl; - // terminate ntuple entry - theHistogrammer.fill(); - cout << "After event " << ievt << endl; - } - - if ( planeGenerator ) delete planeGenerator; - if ( cylinderGenerator ) delete cylinderGenerator; - delete oldPropagator; - delete newPropagator; -} diff --git a/TrackPropagation/NavGeometry/test/SingleVolumeTest.cpp b/TrackPropagation/NavGeometry/test/SingleVolumeTest.cpp deleted file mode 100644 index 98f6c50522c..00000000000 --- a/TrackPropagation/NavGeometry/test/SingleVolumeTest.cpp +++ /dev/null @@ -1,162 +0,0 @@ -#include "TrackPropagation/NavGeometry/interface/NavVolume6Faces.h" -#include "TrackPropagation/NavGeometry/interface/NavPlane.h" - -#include "MagneticField/VolumeGeometry/interface/MagVolume6Faces.h" - -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" - -#include "TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h" -#include "TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h" - -#include "TrackingTools/GeomPropagators/interface/AnalyticalPropagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "MagneticField/Engine/interface/MagneticField.h" -#include <vector> - -using namespace std; - -class MyMagneticField : public MagneticField -{ - public: - virtual GlobalVector inTesla ( const GlobalPoint& ) const {return GlobalVector(0,0,4);} -}; - - - - - -NavPlane* navPlane( RandomPlaneGenerator::PlanePtr p) { - return new NavPlane(p.get()); -} - - - -int main() -{ - typedef TrajectoryStateOnSurface TSOS; - - RandomPlaneGeneratorByAxis planeGenerator; - planeGenerator.setTilt(0.00); - - GlobalVector globalX(1,0,0); - GlobalVector globalY(0,1,0); - GlobalVector globalZ(0,0,1); - - - float xSize = 10.; - float ySize = 10.; - float zSize = 10.; - float xPos = 0.; - float yPos = 0.; - float zPos = 0.; - - GlobalPoint zMinus( xPos, yPos, zPos - zSize); - GlobalPoint zPlus( xPos, yPos, zPos + zSize); - GlobalPoint phiMinus( xPos - xSize, yPos, zPos); - GlobalPoint phiPlus( xPos + xSize, yPos, zPos); - GlobalPoint rMinus( xPos, yPos - ySize, zPos); - GlobalPoint rPlus( xPos, yPos + ySize, zPos); - - RandomPlaneGenerator::PlanePtr zMinusPlane = planeGenerator(zMinus,globalZ); - RandomPlaneGenerator::PlanePtr zPlusPlane = planeGenerator(zPlus,globalZ); - RandomPlaneGenerator::PlanePtr phiMinusPlane = planeGenerator(phiMinus,globalX); - RandomPlaneGenerator::PlanePtr phiPlusPlane = planeGenerator(phiPlus,globalX); - RandomPlaneGenerator::PlanePtr rMinusPlane = planeGenerator(rMinus,globalY); - RandomPlaneGenerator::PlanePtr rPlusPlane = planeGenerator(rPlus,globalY); - - //ReferenceCountingPointer<BoundPlane> zMinusPlane = planeGenerator(zMinus,globalZ); - //ReferenceCountingPointer<BoundPlane> zPlusPlane = planeGenerator(zPlus,globalZ); - //ReferenceCountingPointer<BoundPlane> phiMinusPlane = planeGenerator(phiMinus,globalX); - //ReferenceCountingPointer<BoundPlane> phiPlusPlane = planeGenerator(phiPlus,globalX); - //ReferenceCountingPointer<BoundPlane> rMinusPlane = planeGenerator(rMinus,globalY); - //ReferenceCountingPointer<BoundPlane> rPlusPlane = planeGenerator(rPlus,globalY); - - //cout << " testing NavPlane constructor " << endl; - //NavPlane MyTestNavPlane(rPlusPlane); - //cout << " Succesful !!!! " << endl; - - GlobalPoint volumePos( xPos, yPos, zPos); - Surface::RotationType volumeRot; // unit matrix - - vector<NavVolumeSide> MyNavVolumeSides; - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( rMinusPlane), SurfaceOrientation::inner, - rMinusPlane->side(volumePos,0))); - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( rPlusPlane), SurfaceOrientation::outer, - rPlusPlane->side(volumePos,0))); - - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( zMinusPlane), SurfaceOrientation::zminus, - zMinusPlane->side(volumePos,0))); - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( zPlusPlane), SurfaceOrientation::zplus, - zPlusPlane->side(volumePos,0))); - - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( phiMinusPlane), SurfaceOrientation::phiminus, - phiMinusPlane->side(volumePos,0))); - MyNavVolumeSides.push_back( NavVolumeSide( navPlane( phiPlusPlane), SurfaceOrientation::phiplus, - phiPlusPlane->side(volumePos,0))); - - - cout << "MIDDLE of the NavVolume: " << volumePos << endl; - cout << "... but rotated using rotation: " << endl; cout << volumeRot << endl; - - for (vector<NavVolumeSide>::const_iterator iv=MyNavVolumeSides.begin(); iv!=MyNavVolumeSides.end(); iv++) { - - const Plane& plane = dynamic_cast<const Plane&>(iv->surface().surface()); - - cout << "TEST: surface " - << iv->surface().surface().position() - << " normal vector " << plane.normalVector() - << " side " << iv->surfaceSide() - << " face " << iv->globalFace() << endl; - } - - try { - NavVolume6Faces vol( volumePos, volumeRot, ddshapeless, MyNavVolumeSides, 0); - - UniformMomentumGenerator momentumGenerator; - //MM: Added MyTestField needed for Analytical Propagator - // and added MyTestField to AnalyticalPropagator and GlobalTrajectoryParameters initialisers - MyMagneticField MyTestField; - AnalyticalPropagator propagator ( &MyTestField, alongMomentum ); - - for (int i=0; i<10; i++) { - GlobalVector gStartMomentum( momentumGenerator()); - GlobalTrajectoryParameters gtp( GlobalPoint(xPos, yPos, zPos), - gStartMomentum, -1, &MyTestField ); - - RandomPlaneGenerator::PlanePtr startingPlane = planeGenerator(gtp.position(), - gtp.momentum()); - const BoundPlane& sp(*startingPlane); - FreeTrajectoryState fts(gtp); - TSOS startingState( fts, sp); - - NavVolume::Container nsc = vol.nextSurface( vol.toLocal( gtp.position()), - vol.toLocal( gtp.momentum()), -1); - cout << "nextSurface size " << nsc.size() << endl; - - int itry = 0; - for (NavVolume::Container::const_iterator isur = nsc.begin(); isur!=nsc.end(); isur++) { - TSOS state = isur->surface().propagate( propagator, startingState); - if (!state.isValid()) { - ++itry; - continue; - } - if (isur->bounds().inside(state.localPosition())) { - cout << "Surface containing destination point found at try " << itry << endl; - break; - } - else { - ++itry; - } - } - } - - } - catch (std::exception& ex) { - cout << "Oops, got an exception: " << ex.what() << endl; - return 1; - } - - -} - diff --git a/TrackPropagation/NavGeometry/test/plot.C b/TrackPropagation/NavGeometry/test/plot.C deleted file mode 100644 index c800cba49a5..00000000000 --- a/TrackPropagation/NavGeometry/test/plot.C +++ /dev/null @@ -1,5 +0,0 @@ -{ -XY->Draw(); -XY2->SetMarkerColor(2); -XY2->Draw("same"); -} diff --git a/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.cc b/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.cc deleted file mode 100644 index 14517c2f1e7..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.cc +++ /dev/null @@ -1,172 +0,0 @@ -#include "TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h" -#include "MagneticField/Engine/interface/MagneticField.h" -//#include "Utilities/UI/interface/SimpleConfigurable.h" -//#include "CommonDet/DetUtilities/interface/DetExceptions.h" -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandGauss.h" - -#include <cfloat> - -HelixPropagationTestGenerator::HelixPropagationTestGenerator(const MagneticField* field) : - theField(field) -{ -// SimpleConfigurable<int> qMin_conf(-1,"PropagationTestGenerator:qMin"); -// qMin = qMin_conf.value(); -// SimpleConfigurable<int> qMax_conf(1,"PropagationTestGenerator:qMax"); -// qMax = qMax_conf.value(); -// SimpleConfigurable<float> ptMin_conf(0.9,"PropagationTestGenerator:ptMin"); -// ptMin = ptMin_conf.value(); -// SimpleConfigurable<float> ptMax_conf(1000.,"PropagationTestGenerator:ptMax"); -// ptMax = ptMax_conf.value(); -// SimpleConfigurable<bool> useLogPt_conf(0,"PropagationTestGenerator:useLogPt"); -// useLogPt = useLogPt_conf.value(); - - qMin = -1; - qMax = 1; - ptMin = 0.9; - ptMax = 1000.; - useLogPt = false; -} - -void HelixPropagationTestGenerator::setRangeCharge(const float min, const float max) { - qMin = min; - qMax = max; -} - -void HelixPropagationTestGenerator::setRangePt(const float min, const float max) { - ptMin = min; - ptMax = max; -} - -void HelixPropagationTestGenerator::generateStartValues () { - - // - // generate random position (gaussian smearing) - // - currentPosition = VectorTypeExtended(posVx+sigVx*RandGauss::shoot(), - posVy+sigVy*RandGauss::shoot(), - posVz+sigVz*RandGauss::shoot()); - // - // generate momentum vector from azimuthal angle, pseudo- - // rapidity and transverse momentum - // - ExtendedDouble aPhi = RandFlat::shoot(phiMin,phiMax); - ExtendedDouble aEta = RandFlat::shoot(etaMin,etaMax); - ExtendedDouble aPt; - if ( useLogPt ) - aPt = exp(RandFlat::shoot(log(ptMin>0?ptMin:FLT_MIN),log(ptMax))); - else - aPt = RandFlat::shoot(ptMin,ptMax); - ExtendedDouble aTheta = 2.*atan(exp(-aEta)); - ExtendedDouble aP = sqrt((aPt*aPt)/(sin(aTheta)*sin(aTheta))); - currentDirection = VectorTypeExtended(aP*sin(aTheta)*cos(aPhi), - aP*sin(aTheta)*sin(aPhi), - aP*cos(aTheta)); - // - // generate charge (+/-1) and (signed) curvature - // - theCharge = RandFlat::shoot(qMin,qMax)<0. ? -1 : 1; -// theCurvature = - theField->inInverseGeV(currentPosition.toPoint()).z()*theCharge/currentDirection.perp(); - theCurvature = - theField->inInverseGeV(GlobalPoint(currentPosition.x(), - currentPosition.y(), - currentPosition.z())).z()* - theCharge/currentDirection.perp(); - // - // set start state - // - setStartToCurrent(); -} - -GlobalPoint HelixPropagationTestGenerator::center() const { - // check initialisation and return current position - //if ( !initialised ) throw DetLogicError("HelixPropagationTestGenerator: attempt to use uninitialized helix"); -// return theCenter.toPoint(); - return GlobalPoint(theCenter.x(), - theCenter.y(), - theCenter.z()); -} - -void HelixPropagationTestGenerator::setStart (const GlobalPoint& position, - const GlobalVector& momentum) { - // - // reset current state - // - currentPosition = VectorTypeExtended(position.x(), - position.y(), - position.z()); - currentDirection = VectorTypeExtended(momentum.x(), - momentum.y(), - momentum.z()); - // - // reset curvature - // - theCurvature = - theField->inInverseGeV(position).z()* - theCharge/currentDirection.perp(); - // - // set start state - // - setStartToCurrent(); -} - -void HelixPropagationTestGenerator::setStartToCurrent() { - // - // set current state - // - startPosition = currentPosition; - startDirection = currentDirection; - // - // get center of helix - // - ExtendedDouble rscale = 1./theCurvature/currentDirection.perp(); - theCenter = VectorTypeExtended(currentPosition.x()-currentDirection.y()*rscale, - currentPosition.y()+currentDirection.x()*rscale, - currentPosition.z()); - // - // set total path length and angle within helix - // - sTotal = 0; - startPhiHelix = startDirection.phi(); - startPhiHelix += theCharge>0 ? M_PI/2. : -M_PI/2.; -// cout << "Helix center at " << theCenter << endl; -// cout << "start helix angle is " << startPhiHelix << endl; -// cout << "q = " << theCharge << ", 1/curvature = " << 1/theCurvature << endl; - initialised = true; -} - -void HelixPropagationTestGenerator::setStartOppositeToCurrent() { - // - currentDirection *= -1; - theCharge *= -1; - theCurvature *= -1; - setStartToCurrent(); -} - -HelixPropagationTestGenerator::ExtendedDouble -HelixPropagationTestGenerator::bidirectionalStep (const ExtendedDouble stepSize) { - // - // update total path length, calculate transversal path length, change in - // angle and new angle within the helix - // -// cout << "Propagation for step " << stepSize << endl; - sTotal += stepSize; -// cout << "New total path = " << sTotal << endl; - ExtendedDouble sTransversal = sTotal*startDirection.perp()/startDirection.mag(); -// cout << "New transversal path = " << sTransversal << endl; - ExtendedDouble dPhi = sTransversal*theCurvature; -// cout << "deltaPhi = " << dPhi << endl; - ExtendedDouble phiHelix = startPhiHelix + dPhi; -// cout << "phiHelix = " << phiHelix << endl; - // - // recalculate position and direction in double precision - // - currentPosition = VectorTypeExtended(theCenter.x()+cos(phiHelix)/fabs(theCurvature), - theCenter.y()+sin(phiHelix)/fabs(theCurvature), - theCenter.z()+dPhi/theCurvature*startDirection.z()/startDirection.perp()); - currentDirection = VectorTypeExtended(cos(startDirection.phi()+dPhi)*startDirection.perp(), - sin(startDirection.phi()+dPhi)*startDirection.perp(), - startDirection.z()); - // - // return total path length - // - return sTotal; -} diff --git a/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h b/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h deleted file mode 100644 index 0546a8e9f06..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/HelixPropagationTestGenerator.h +++ /dev/null @@ -1,60 +0,0 @@ -#ifndef HelixPropagationTestGenerator_H_ -#define HelixPropagationTestGenerator_H_ - -#include "TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h" - -class MagneticField; - -/** \class HelixPropagationTestGenerator - * Generates random helices and points / directions at successive random - * forward / backward steps. - */ - -class HelixPropagationTestGenerator : public PropagationTestGenerator { -public: - // - // Constructor/Destructor - // - HelixPropagationTestGenerator(const MagneticField* field); - ~HelixPropagationTestGenerator() {} - - /// Range of charges for helix generation (+/-1) - void setRangeCharge(const float, const float); - /// Range of azimuthal angles for helix generation - void setRangePt(const float, const float); - /// Generates a new helix. - virtual void generateStartValues (); - /// Returns position of center (z acc. to starting point). - GlobalPoint center() const; - - /** Sets start values according to position / - * momentum vector. */ - void setStart(const GlobalPoint&, const GlobalVector&); - /// Sets start values to current position / momentum - virtual void setStartToCurrent(); - /** Sets start values to current position / - * inverted momentum vector / inverted charge */ - virtual void setStartOppositeToCurrent(); - -private: - /** Step in forward or backward direction by - * pathlength = argument. - * Return value = step size. - */ - virtual ExtendedDouble bidirectionalStep (const ExtendedDouble); - -private: - float qMin; - float qMax; - float ptMin; - float ptMax; - - bool useLogPt; - - VectorTypeExtended theCenter; - ExtendedDouble startPhiHelix; - - const MagneticField* theField; -}; - -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.cc b/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.cc deleted file mode 100644 index fbce7bab2c5..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.cc +++ /dev/null @@ -1,141 +0,0 @@ -#include "TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h" -#include "MagneticField/Engine/interface/MagneticField.h" -//#include "Utilities/UI/interface/SimpleConfigurable.h" -//#include "CommonDet/DetUtilities/interface/DetExceptions.h" -#include "TrackingTools/GeomPropagators/interface/PropagationExceptions.h" -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandGauss.h" - -PropagationTestGenerator::PropagationTestGenerator() { - initialised = false; -// SimpleConfigurable<float> phiMin_conf(0.,"PropagationTestGenerator:phiMin"); -// phiMin = phiMin_conf.value(); -// SimpleConfigurable<float> phiMax_conf(2*M_PI,"PropagationTestGenerator:phiMax"); -// phiMax = phiMax_conf.value(); -// SimpleConfigurable<float> etaMin_conf(-2.5,"PropagationTestGenerator:etaMin"); -// etaMin = etaMin_conf.value(); -// SimpleConfigurable<float> etaMax_conf(2.5,"PropagationTestGenerator:etaMax"); -// etaMax = etaMax_conf.value(); -// SimpleConfigurable<float> posVx_conf(0.,"PropagationTestGenerator:posVx"); -// posVx = posVx_conf.value(); -// SimpleConfigurable<float> posVy_conf(0.,"PropagationTestGenerator:posVy"); -// posVy = posVy_conf.value(); -// SimpleConfigurable<float> posVz_conf(0.,"PropagationTestGenerator:posVz"); -// posVz = posVz_conf.value(); -// SimpleConfigurable<float> sigVx_conf(0.0010,"PropagationTestGenerator:sigVx"); -// sigVx = sigVx_conf.value(); -// SimpleConfigurable<float> sigVy_conf(0.0010,"PropagationTestGenerator:sigVy"); -// sigVy = sigVy_conf.value(); -// SimpleConfigurable<float> sigVz_conf(10.,"PropagationTestGenerator:sigVz"); -// sigVz = sigVz_conf.value(); -// SimpleConfigurable<bool> useLogStep_conf(0,"PropagationTestGenerator:useLogStep"); -// useLogStep = useLogStep_conf.value(); - - phiMin = 0.; - phiMax = 2*M_PI; - etaMin = -2.5; - etaMax = 2.5; - posVx = 0.; - posVy = 0.; - posVz = 0.; - sigVx = 0.0010; - sigVy = 0.0010; - sigVz = 10.; - useLogStep = 0; -} - -void PropagationTestGenerator::setRangePhi(const float min, const float max) { - phiMin = min; - phiMax = max; -} - -void PropagationTestGenerator::setRangeEta(const float min, const float max) { - etaMin = min; - etaMax = max; -} - -void PropagationTestGenerator::setVertexSmearing(const float x, const float y, const float z) { - sigVx = x; - sigVy = y; - sigVz = z; -} - -int PropagationTestGenerator::charge() const { - // check initialisation and return current direction - if ( !initialised ) throw PropagationException("HelixPropagationTestGenerator: attempt to use uninitialized helix"); - return theCharge; -} - -PropagationTestGenerator::ExtendedDouble -PropagationTestGenerator::transverseCurvature() const { - // check initialisation and return current position - if ( !initialised ) throw PropagationException("HelixPropagationTestGenerator: attempt to use uninitialized helix"); - return theCurvature; -} - -void PropagationTestGenerator::generateStartValues () { - - // - // generate random position (gaussian smearing) - // - currentPosition = VectorTypeExtended(sigVx*RandGauss::shoot(), - sigVy*RandGauss::shoot(), - sigVz*RandGauss::shoot()); - // - // generate momentum vector from azimuthal angle, pseudo- - // rapidity and transverse momentum - // - ExtendedDouble aPhi = RandFlat::shoot(phiMin,phiMax); - ExtendedDouble aEta = RandFlat::shoot(etaMin,etaMax); - ExtendedDouble aTheta = 2.*atan(exp(-aEta)); - currentDirection = VectorTypeExtended(sin(aTheta)*cos(aPhi), - sin(aTheta)*sin(aPhi), - cos(aTheta)); - // - // set start state - // - setStartToCurrent(); -} - -PropagationTestGenerator::ExtendedDouble -PropagationTestGenerator::randomStepForward(const float maxStep) { - // check initialisation and do a random step (>0) - if ( !initialised ) throw PropagationException("PropagationTestGenerator: attempt to use uninitialized trajectory"); - ExtendedDouble step; - if ( useLogStep ) - step = exp(RandFlat::shoot(log(1.e-5),log(maxStep))); - else - step = RandFlat::shoot(0.,maxStep); - return bidirectionalStep(step); -} - -PropagationTestGenerator::ExtendedDouble -PropagationTestGenerator::randomStepBackward(const float maxStep) { - // check initialisation and do a random step (<0) - if ( !initialised ) throw PropagationException("PropagationTestGenerator: attempt to use uninitialized trajectory"); - ExtendedDouble step; - if ( useLogStep ) - step = exp(RandFlat::shoot(log(1.e-5),maxStep)); - else - step = RandFlat::shoot(0.,maxStep); - return bidirectionalStep(-step); -} - -GlobalPoint PropagationTestGenerator::position() const { - // check initialisation and return current position - if ( !initialised ) throw PropagationException("PropagationTestGenerator: attempt to use uninitialized trajectory"); -// return currentPosition.toPoint(); - return GlobalPoint(currentPosition.x(), - currentPosition.y(), - currentPosition.z()); -} - -GlobalVector PropagationTestGenerator::momentum() const { - // check initialisation and return current direction - if ( !initialised ) throw PropagationException("PropagationTestGenerator: attempt to use uninitialized trajectory"); -// return currentDirection.toVector(); - return GlobalVector(currentDirection.x(), - currentDirection.y(), - currentDirection.z()); -} - diff --git a/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h b/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h deleted file mode 100644 index 3c893ce589b..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/PropagationTestGenerator.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef PropagationTestGenerator_H_ -#define PropagationTestGenerator_H_ - -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" - -/** \class PropagationTestGenerator - * Base class for generation of test trajectories (currently - * HelixPropagationTestGenerator and StraightLinePropagationTestGenerator). - */ - -class PropagationTestGenerator { - -protected: - typedef long double ExtendedDouble; - typedef Basic3DVector<ExtendedDouble> VectorTypeExtended; - -public: - // - // Constructor/Destructor - // - PropagationTestGenerator(); - virtual ~PropagationTestGenerator() {} - - /// Range of azimuthal angles for trajectory generation - virtual void setRangePhi(const float min, const float max); - /// Range of pseudo-rapidities for trajectory generation - virtual void setRangeEta(const float, const float); - /// Gaussian smearing of vertex - virtual void setVertexSmearing(const float, const float, const float); - - /// Returns curvature (transversal!). - virtual ExtendedDouble transverseCurvature() const; - /// Returns charge. - virtual int charge() const; - - /** Steps forward along the trajectory by a pathlength between - * -(argument) and 0. Returns total pathlength from - * starting point after the step. - */ - virtual ExtendedDouble randomStepForward(const float); - /** Steps backward along the trajectory by a pathlength between - * -(argument) and 0. Returns total pathlength from - * starting point after the step. - */ - virtual ExtendedDouble randomStepBackward(const float); - - /// Returns current position (start or after last step). - virtual GlobalPoint position() const; - /// Returns current direction (start or after last step). - virtual GlobalVector momentum() const; - - /// Generates random start values for a new trajectory - virtual void generateStartValues() =0; - /// Sets start values to current position / momentum - virtual void setStartToCurrent() =0; - /** Sets start values to current position / - * inverted momentum vector / inverted charge */ - virtual void setStartOppositeToCurrent() =0; - -protected: - /** Step in forward or backward direction by - * pathlength = argument. - * Return value = step size. - */ - virtual ExtendedDouble bidirectionalStep (const ExtendedDouble) =0; - -protected: - bool initialised; - - float phiMin; - float phiMax; - float etaMin; - float etaMax; - float posVx; - float posVy; - float posVz; - float sigVx; - float sigVy; - float sigVz; - - bool useLogStep; - - VectorTypeExtended startPosition; - VectorTypeExtended startDirection; - ExtendedDouble theCurvature; - int theCharge; - - ExtendedDouble sTotal; - VectorTypeExtended currentPosition; - VectorTypeExtended currentDirection; -}; - -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.cc b/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.cc deleted file mode 100644 index 5482f762c0b..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.cc +++ /dev/null @@ -1,232 +0,0 @@ -#include "TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h" - -#include "TFile.h" -#include "TTree.h" - -PropagatorTestTree::PropagatorTestTree (const char* file) : -theMaxSteps(1000) -{ - // - // Open output file - // - theFile = new TFile(file,"RECREATE"); - theFile->SetCompressionLevel(2); - // - // Create tree - // - createArrays(); - bookTree(); -} - -PropagatorTestTree::~PropagatorTestTree () -{ - // - // termination - // - theTree->GetDirectory()->cd(); - theTree->Write(); - delete theTree; - delete theFile; -} - -void PropagatorTestTree::createArrays() -{ - thePathLengths = new float[theMaxSteps]; - - createFloatArrays(theGeneratedPoints); - createFloatArrays(theGeneratedMomenta); - - createFloatArrays(thePlanePoints); - createFloatArrays(thePlaneNormals); - - theOldStatus = new unsigned char[theMaxSteps]; - createFloatArrays(theOldDPoints); - createFloatArrays(theOldDMomenta); - - theNewStatus = new unsigned char[theMaxSteps]; - createFloatArrays(theNewDPoints); - createFloatArrays(theNewDMomenta); -} - -void PropagatorTestTree::removeArrays() -{ - delete [] thePathLengths; - - removeFloatArrays(theGeneratedPoints); - removeFloatArrays(theGeneratedMomenta); - removeFloatArrays(thePlanePoints); - removeFloatArrays(thePlaneNormals); - - delete [] theOldStatus; - removeFloatArrays(theOldDPoints); - removeFloatArrays(theOldDMomenta); - - delete [] theNewStatus; - removeFloatArrays(theNewDPoints); - removeFloatArrays(theNewDMomenta); -} - -void -PropagatorTestTree::createFloatArrays (float* arrayPtr[3]) const -{ - for ( int i=0; i<3; i++ ) - arrayPtr[i] = new float[theMaxSteps]; -} - -void -PropagatorTestTree::removeFloatArrays (float* arrayPtr[3]) const -{ - for ( int i=0; i<3; i++ ) delete [] arrayPtr[i]; -} - -void PropagatorTestTree::bookTree() { - // - // Tree - // - theTree = new TTree("propagation","Propagator Test"); - // - // Branches - // - // Helix parameters: - // Start position and direction, helix center, - // curvature and charge - // - theTree->Branch("HelixStart",theStart,"X/F:Y/F:Z/F:TH/F:PH/F:PT/F"); - theTree->Branch("HelixCenter",theCenter,"X/F:Y/F:Z/F"); - theTree->Branch("HelixPars",&theRho,"Rho/F:Q/B"); - // - // Values / step: - // total path length from start, generated position and direction, - // plane position and normal vector, and for both propagators: - // status, position and direction - // - theTree->Branch("NStep_",&theNrOfSteps,"NStep/i:NStepFwd/i"); - theTree->Branch("Path",thePathLengths,"Stotal[NStep]/F"); - - theTree->Branch("XGen_",theGeneratedPoints[0],"XGen[NStep]/F"); - theTree->Branch("YGen_",theGeneratedPoints[1],"YGen[NStep]/F"); - theTree->Branch("ZGen_",theGeneratedPoints[2],"ZGen[NStep]/F"); - theTree->Branch("THGen_",theGeneratedMomenta[0],"THGen[NStep]/F"); - theTree->Branch("PHGen_",theGeneratedMomenta[1],"PHGen[NStep]/F"); - theTree->Branch("PTGen_",theGeneratedMomenta[2],"PTGen[NStep]/F"); - - theTree->Branch("XPlane_",thePlanePoints[0],"XPlane[NStep]/F"); - theTree->Branch("YPlane_",thePlanePoints[1],"YPlane[NStep]/F"); - theTree->Branch("ZPlane_",thePlanePoints[2],"ZPlane[NStep]/F"); - theTree->Branch("XNPlane_",thePlaneNormals[0],"XNPlane[NStep]/F"); - theTree->Branch("YNPlane_",thePlaneNormals[1],"YNPlane[NStep]/F"); - theTree->Branch("ZNPlane_",thePlaneNormals[2],"ZNPlane[NStep]/F"); - - theTree->Branch("OldStat_",theOldStatus,"OldStat[NStep]/b"); - theTree->Branch("DXOld_",theOldDPoints[0],"DXOld[NStep]/F"); - theTree->Branch("DYOld_",theOldDPoints[1],"DYOld[NStep]/F"); - theTree->Branch("DZOld_",theOldDPoints[2],"DZOld[NStep]/F"); - theTree->Branch("DTHOld_",theOldDMomenta[0],"DTHOld[NStep]/F"); - theTree->Branch("DPHOld_",theOldDMomenta[1],"DPHOld[NStep]/F"); - theTree->Branch("DPTOld_",theOldDMomenta[2],"DPTOld[NStep]/F"); - - theTree->Branch("NewStat_",theNewStatus,"NewStat[NStep]/b"); - theTree->Branch("DXNew_",theNewDPoints[0],"DXNew[NStep]/F"); - theTree->Branch("DYNew_",theNewDPoints[1],"DYNew[NStep]/F"); - theTree->Branch("DZNew_",theNewDPoints[2],"DZNew[NStep]/F"); - theTree->Branch("DTHNew_",theNewDMomenta[0],"DTHNew[NStep]/F"); - theTree->Branch("DPHNew_",theNewDMomenta[1],"DPHNew[NStep]/F"); - theTree->Branch("DPTNew_",theNewDMomenta[2],"DPTNew[NStep]/F"); -} - -void PropagatorTestTree::fillHelix (const GlobalPoint& point, - const GlobalVector& momentum, - const GlobalPoint& center, - const float curvature, - const int charge) { - // - // store helix parameters - // - theStart[0] = point.x(); - theStart[1] = point.y(); - theStart[2] = point.z(); - theStart[3] = momentum.theta(); - theStart[4] = momentum.phi(); - theStart[5] = momentum.perp(); - theCenter[0] = center.x(); - theCenter[1] = center.y(); - theCenter[2] = center.z(); - theRho = curvature; - theCharge = (char)charge; - // - // reset internal arrays - // - theNrOfSteps = 0; - theNrOfFwdSteps = 0; - thePreviousPathLength = -1.; -} - -void PropagatorTestTree::addStep (const float pathLength, - const GlobalPoint& xGen, const GlobalVector& pGen, - const GlobalPoint& xPlane, const GlobalVector& nPlane, - const TrajectoryStateOnSurface& oldState, - const TrajectoryStateOnSurface& newState) -{ - // - // check #points - // - if ( theNrOfSteps>=theMaxSteps ) return; - // - // information about generated point - // - thePathLengths[theNrOfSteps] = pathLength; - storeCartesian(xGen,theGeneratedPoints,theNrOfSteps); - storeAngles(pGen,theGeneratedMomenta,theNrOfSteps); - // - // information about plane - // - storeCartesian(xPlane,thePlanePoints,theNrOfSteps); - storeCartesian(nPlane,thePlaneNormals,theNrOfSteps); - // - // first propagator - // - theOldStatus[theNrOfSteps] = oldState.isValid() ? 1 : 0; - if ( oldState.isValid() ) { - storeCartesian(oldState.globalPosition(),xGen,theOldDPoints,theNrOfSteps); - storeAngles(oldState.globalMomentum(),pGen,theOldDMomenta,theNrOfSteps); - } - else { - theOldDPoints[0][theNrOfSteps] = 999.; - theOldDPoints[1][theNrOfSteps] = 999.; - theOldDPoints[2][theNrOfSteps] = 999.; - theOldDMomenta[0][theNrOfSteps] = 999.; - theOldDMomenta[1][theNrOfSteps] = 999.; - theOldDMomenta[2][theNrOfSteps] = 999.*pGen.perp(); - } - // - // second propagator - // - theNewStatus[theNrOfSteps] = newState.isValid() ? 1 : 0; - if ( newState.isValid() ) { - storeCartesian(newState.globalPosition(),xGen,theNewDPoints,theNrOfSteps); - storeAngles(newState.globalMomentum(),pGen,theNewDMomenta,theNrOfSteps); - } - else { - theNewDPoints[0][theNrOfSteps] = 999.; - theNewDPoints[1][theNrOfSteps] = 999.; - theNewDPoints[2][theNrOfSteps] = 999.; - theNewDMomenta[0][theNrOfSteps] = 999.; - theNewDMomenta[1][theNrOfSteps] = 999.; - theNewDMomenta[2][theNrOfSteps] = 999.*pGen.perp(); - } - // - // increase step count - // - theNrOfSteps++; - // - // forward / backward - // - if ( pathLength>thePreviousPathLength ) theNrOfFwdSteps++; - thePreviousPathLength = pathLength; -} - -void -PropagatorTestTree::fill () -{ - theTree->Fill(); -} diff --git a/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h b/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h deleted file mode 100644 index 4c1c5f41153..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/PropagatorTestTree.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef PROPAGATORTESTTREE_H_ -#define PROPAGATORTESTTREE_H_ - -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" - -class TFile; -class TTree; - -/** creates / fills tree with comparative values of two propagators - * for a series of steps along a helix. - */ -class PropagatorTestTree { -public: - // Constructor: initialise histogramming - PropagatorTestTree (const char* file = "PropagatorTest.root"); - // Destructor - ~PropagatorTestTree(); - - /** Filling of helix parameters: starting point and momentum, - * helix center, curvature and charge. - */ - void fillHelix (const GlobalPoint&, - const GlobalVector&, - const GlobalPoint&, - const float, - const int); - /** Filling of values for one point along the helix: - * path length, generated point and momentum, - * plane position and normal vector, - * trajectory state from the two propagators. - */ - void addStep (const float, - const GlobalPoint&, - const GlobalVector&, - const GlobalPoint&, - const GlobalVector&, - const TrajectoryStateOnSurface&, - const TrajectoryStateOnSurface&); - /// Filling of the tree for one helix - void fill(); - /// Creation of arrays - void createArrays(); - /// Deletion of arrays - void removeArrays(); - /// Booking of tree - void bookTree(); - -private: - /// allocation of arrays for the 3 co-ordinates - void createFloatArrays (float* arrayPtr[3]) const; - /// deletion of arrays for the 3 co-ordinates - void removeFloatArrays (float* arrayPtr[3]) const; - /// storing of cartesian co-ordinates (point) - inline void storeCartesian (const GlobalPoint& aPoint, float** arrayPtr, const int index) const - { - arrayPtr[0][index] = aPoint.x(); - arrayPtr[1][index] = aPoint.y(); - arrayPtr[2][index] = aPoint.z(); - } - /// storing of cartesian co-ordinates (point, relative) - inline void storeCartesian (const GlobalPoint& aPoint, const GlobalPoint& refPoint, - float** arrayPtr, const int index) const - { - GlobalVector d(aPoint-refPoint); - arrayPtr[0][index] = d.x(); - arrayPtr[1][index] = d.y(); - arrayPtr[2][index] = d.z(); - } - /// storing of cartesian co-ordinates (vector) - inline void storeCartesian (const GlobalVector& aVector, - float** arrayPtr, const int index) const - { - arrayPtr[0][index] = aVector.x(); - arrayPtr[1][index] = aVector.y(); - arrayPtr[2][index] = aVector.z(); - } - /// storing of cartesian co-ordinates (vector, relative) - inline void storeCartesian (const GlobalVector& aVector, const GlobalVector& refVector, - float** arrayPtr, const int index) const - { - GlobalVector d(aVector-refVector); - arrayPtr[0][index] = d.x(); - arrayPtr[1][index] = d.y(); - arrayPtr[2][index] = d.z(); - } - /// storing of angles + transverse component (vector) - inline void storeAngles (const GlobalVector& aVector, - float** arrayPtr, const int index) const - { - arrayPtr[0][index] = aVector.theta(); - arrayPtr[1][index] = aVector.phi(); - arrayPtr[2][index] = aVector.perp(); - } - /// storing of angles + transverse component (vector, relative) - inline void storeAngles (const GlobalVector& aVector, const GlobalVector& refVector, - float** arrayPtr, const int index) const - { - arrayPtr[0][index] = aVector.theta() - refVector.theta(); - arrayPtr[1][index] = aVector.phi() - refVector.phi(); - arrayPtr[2][index] = aVector.perp() - refVector.perp(); - } - -private: - const int theMaxSteps; - TFile* theFile; - TTree* theTree; - - float thePreviousPathLength; - - float theStart[6]; - float theCenter[3]; - float theRho; - char theCharge; - unsigned int theNrOfSteps; - unsigned int theNrOfFwdSteps; - float* thePathLengths; - float* theGeneratedPoints[3]; - float* theGeneratedMomenta[3]; - float* thePlanePoints[3]; - float* thePlaneNormals[3]; - unsigned char* theOldStatus; - float* theOldDPoints[3]; - float* theOldDMomenta[3]; - unsigned char* theNewStatus; - float* theNewDPoints[3]; - float* theNewDMomenta[3]; - -}; - -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h b/TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h deleted file mode 100644 index 7df9978cbf8..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/RandomCylinderGenerator.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef RandomCylinderGenerator_H_ -#define RandomCylinderGenerator_H_ - -#include "Geometry/Surface/interface/BoundCylinder.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" -#include "Geometry/Surface/interface/CylinderBuilder.h" -#include "Geometry/Surface/interface/SimpleCylinderBounds.h" -#include "Geometry/Vector/interface/GlobalTag.h" -#include "Geometry/Vector/interface/Point3DBase.h" -#include "Geometry/Vector/interface/Vector3DBase.h" - -/** \class RandomCylinderGenerator - * Generates a (not yet random) cylinder at a given position. - */ - -class RandomCylinderGenerator { - -public: - typedef ReferenceCountingPointer<BoundCylinder> CylinderPtr; - -private: - typedef Vector3DBase<double,GlobalTag> GlobalVectorDouble; - typedef Point3DBase<double,GlobalTag> GlobalPointDouble; - -public: - // - // Constructor/Destructor - // - RandomCylinderGenerator(const float maxZ) : - theMaxZ(maxZ) {} - ~RandomCylinderGenerator() {} - /** Generate cylinder at a given point. - */ - CylinderPtr operator() (const GlobalPoint& position, - const GlobalVector& direction) const - { - GlobalPointDouble pos(position.x(),position.y(),position.z()); -#ifndef CMS_NO_COMPLEX_RETURNS - CylinderPtr cylinder = - CylinderBuilder().cylinder(GlobalPoint(0.,0.,0.), - TkRotation<float>(), - SimpleCylinderBounds(pos.perp(),pos.perp(), - -theMaxZ,theMaxZ)); - return cylinder; -#else - return CylinderBuilder().cylinder(GlobalPoint(0.,0.,0.), - TkRotation<float>(), - SimpleCylinderBounds(pos.perp(),pos.perp(), - -theMaxZ,theMaxZ)); -#endif - } - -private: - float theMaxZ; -}; -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h b/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h deleted file mode 100644 index 1990541bc72..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RandomPlaneGenerator_H_ -#define RandomPlaneGenerator_H_ - -#include "Geometry/Surface/interface/BoundPlane.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" -#include "Geometry/Vector/interface/GlobalTag.h" -#include "Geometry/Vector/interface/Point3DBase.h" -#include "Geometry/Vector/interface/Vector3DBase.h" - -/** \class RandomPlaneGenerator - * Interface for classes generating random planes, - * given a point and direction vector. */ - -class RandomPlaneGenerator { - -public: - typedef ReferenceCountingPointer<BoundPlane> PlanePtr; - typedef Surface::GlobalPoint GlobalPoint; - typedef Surface::GlobalVector GlobalVector; - -public: - - virtual ~RandomPlaneGenerator() {} - - /** Generate surface at a given point / direction. - */ - virtual PlanePtr operator() (const GlobalPoint&, - const GlobalVector&) const=0; - -protected: - typedef Vector3DBase<double,GlobalTag> GlobalVectorDouble; - typedef Point3DBase<double,GlobalTag> GlobalPointDouble; - -}; -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.cc b/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.cc deleted file mode 100644 index 1fd9333dad5..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.cc +++ /dev/null @@ -1,182 +0,0 @@ -#include "Geometry/Surface/interface/PlaneBuilder.h" -#include "Geometry/Surface/interface/TkRotation.h" -#include "TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h" -#include "CLHEP/Random/RandFlat.h" - -#include <string> - -using namespace std; - -// -// Constructor -// -RandomPlaneGeneratorByAxis::RandomPlaneGeneratorByAxis () { - // FIXME use ParameterSet - theMaxTilt = 0.5; - string planeTypeString = "arbitrary"; - theSize = 0.; - - - if ( planeTypeString=="forward" ) - thePlaneType = forward; - else if ( planeTypeString=="strictForward" ) - thePlaneType = strictForward; - else if ( planeTypeString=="barrel" ) - thePlaneType = barrel; - else if ( planeTypeString=="strictBarrel" ) - thePlaneType = strictBarrel; - else - thePlaneType = arbitrary; - -} - -RandomPlaneGeneratorByAxis::RandomPlaneGeneratorByAxis (const float maxTilt, - const PlaneType type) : - theMaxTilt(maxTilt), - thePlaneType(type) { - - // FIXME use ParameterSet - theSize = 0.; -} - -// -// Generate random plane at position and with z-axis around direction. -// -RandomPlaneGenerator::PlanePtr -RandomPlaneGeneratorByAxis::operator() (const GlobalPoint& position, - const GlobalVector& direction) const { - // - // convert to double - // - GlobalPointDouble doublePos(position.x(),position.y(),position.z()); - GlobalVectorDouble doubleDir(direction.x(),direction.y(),direction.z()); - // - // reference direction (random sign w.r.t. input direction) - // - GlobalVectorDouble refDir(doubleDir.unit()); - if ( RandFlat::shoot(-1.,1.)<0. ) refDir *= -1; - TkRotation<double> rotation; - // - // arbitrary or barrel planes - // - if ( thePlaneType==arbitrary || thePlaneType==barrel || thePlaneType==strictBarrel ) { - // - // for barrek planes use only transverse components of reference direction - // - if ( thePlaneType!=arbitrary ) - refDir = GlobalVectorDouble(refDir.x(),refDir.y(),0.).unit(); - // - // now construct a plane with z-axis // reference direction, - // x-axis normal to z-local and z-global and - // y-axis according to a right-handed system - // - GlobalVectorDouble zFrame = refDir; - GlobalVectorDouble xFrame; - if ( fabs(zFrame.z())<0.99 ) { - xFrame = zFrame.cross(GlobalVectorDouble(0.,0.,1.)).unit(); - } - else { - xFrame = GlobalVectorDouble(0.,1.,0.).cross(zFrame).unit(); - } - GlobalVector yFrame = zFrame.cross(xFrame); - rotation = TkRotation<double>(xFrame.x(),xFrame.y(),xFrame.z(), - yFrame.x(),yFrame.y(),yFrame.z(), - zFrame.x(),zFrame.y(),zFrame.z()); - // - // Random rotation around z-local to determine direction - // of tilt (restrict to 0 or pi in case of barrel plane - // to keep orientation for strictBarrel planes). - // - double dPhi = RandFlat::shoot(0.,2*M_PI); - if ( thePlaneType!=arbitrary ) - dPhi = dPhi>M_PI ? M_PI : 0.; - rotation = rotationAroundZ(dPhi)*rotation; - // - // now introduce tilt by a random rotation around - // y-local (to keep y-local || z-global for the - // case of strictBarrel planes) - // - double cosTilt = RandFlat::shoot(cos(theMaxTilt),1.); - rotation = rotationAroundY(cosTilt<=1.?acos(cosTilt):0.)*rotation; - } - // - // forward planes - // - else { - // - // Start with strictForward plane with sign(z) according - // to the reference direction - // - GlobalVectorDouble zFrame(0.,0.,refDir.z()>0.?1.:-1.); - GlobalVectorDouble xFrame = GlobalVectorDouble(0.,1.,0.).cross(zFrame); - GlobalVectorDouble yFrame = zFrame.cross(xFrame); - rotation = TkRotation<double>(xFrame.x(),xFrame.y(),xFrame.z(), - yFrame.x(),yFrame.y(),yFrame.z(), - zFrame.x(),zFrame.y(),zFrame.z()); - } - // - // Add random rotation around z-local (to randomize azimuth), - // unless it's a "strict" barrel or forward plane - // - if ( thePlaneType!=strictBarrel && thePlaneType!=strictForward ) - rotation = rotationAroundZ(RandFlat::shoot(0.,2*M_PI))*rotation; - // - // Now define the origin of the plane by a random shift - // w.r.t. the reference position - // - Basic3DVector<double> deltaPos = - rotation.multiplyInverse(Basic3DVector<double>(RandFlat::shoot(-theSize/2,theSize/2), - RandFlat::shoot(-theSize/2,theSize/2), - 0)); - doublePos += GlobalVectorDouble(deltaPos); - // - // Construct and return plane - // -// cout << "Reference direction was " << doubleDir.unit() << endl; -// cout << "Rotation is " << -// rotation.xx()*(rotation.yy()*rotation.zz()-rotation.yz()*rotation.zy()) - -// rotation.yy()*(rotation.zz()*rotation.xx()-rotation.zx()*rotation.xz()) + -// rotation.zz()*(rotation.xx()*rotation.yy()-rotation.xy()*rotation.yx()); -// cout << rotation << endl; -#ifndef CMS_NO_COMPLEX_RETURNS - RandomPlaneGenerator::PlanePtr plane = - PlaneBuilder().plane(GlobalPoint(doublePos.x(),doublePos.y(),doublePos.z()), - TkRotation<float>(rotation.xx(),rotation.xy(),rotation.xz(), - rotation.yx(),rotation.yy(),rotation.yz(), - rotation.zx(),rotation.zy(),rotation.zz())); - return plane; -#else - return PlaneBuilder().plane(GlobalPoint(doublePos.x(),doublePos.y(),doublePos.z()), - TkRotation<float>(rotation.xx(),rotation.xy(),rotation.xz(), - rotation.yx(),rotation.yy(),rotation.yz(), - rotation.zx(),rotation.zy(),rotation.zz())); -#endif -} -// -// rotation around x-axis by angle tilt -// -TkRotation<double> -RandomPlaneGeneratorByAxis::rotationAroundX(const double tilt) const { - return TkRotation<double>(1.,0.,0., - 0.,cos(tilt),sin(tilt), - 0.,-sin(tilt),cos(tilt)); -} -// -// rotation around y-axis by angle tilt -// -TkRotation<double> -RandomPlaneGeneratorByAxis::rotationAroundY(const double tilt) const { - return TkRotation<double>(cos(tilt),0.,sin(tilt), - 0.,1.,0., - -sin(tilt),0.,cos(tilt)); -} -// -// rotation around z-axis by angle tilt -// -TkRotation<double> -RandomPlaneGeneratorByAxis::rotationAroundZ(const double tilt) const { - return TkRotation<double>(cos(tilt),sin(tilt),0., - -sin(tilt),cos(tilt),0., - 0.,0.,1.); -} - diff --git a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h b/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h deleted file mode 100644 index 2442233e3f7..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/RandomPlaneGeneratorByAxis.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef RandomPlaneGeneratorByAxis_H_ -#define RandomPlaneGeneratorByAxis_H_ - -#include "TrackPropagation/NavGeometry/test/stubs/RandomPlaneGenerator.h" -#include "Geometry/Vector/interface/GlobalTag.h" -#include "Geometry/Vector/interface/Point3DBase.h" -#include "Geometry/Vector/interface/Vector3DBase.h" - -/** \class RandomPlaneGeneratorByAxis - * Generates random planes with maximum tilt around a given direction - * vector. */ - -class RandomPlaneGeneratorByAxis : public RandomPlaneGenerator { - -public: - /** Type of plane to be generated. - */ - enum PlaneType {forward,strictForward,barrel,strictBarrel,arbitrary}; - // - // Constructor/Destructor - // - RandomPlaneGeneratorByAxis(); - RandomPlaneGeneratorByAxis(const float maxTilt, const PlaneType type = arbitrary); - virtual ~RandomPlaneGeneratorByAxis() {}; - /** Set maximum tilt angle for a <B>single</B> random rotation - * (random plane is generated by three rotations) - */ - inline void setTilt(const float maxTilt) { - theMaxTilt = maxTilt; - } - /** Set type of plane to be generated. - */ - inline void setType(const PlaneType type) { - thePlaneType = type; - } - /** Generate plane at a given point and with its z-direction - * around a given global vector. - */ - virtual RandomPlaneGenerator::PlanePtr operator() (const GlobalPoint&, - const GlobalVector&) const; - - -private: - TkRotation<double> rotationAroundX(const double) const; - TkRotation<double> rotationAroundY(const double) const; - TkRotation<double> rotationAroundZ(const double) const; - -private: - float theMaxTilt; - PlaneType thePlaneType; - float theSize; -}; -#endif diff --git a/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.cc b/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.cc deleted file mode 100644 index e67e8b7d7de..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.cc +++ /dev/null @@ -1,24 +0,0 @@ -#include "TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h" - -#include "CLHEP/Random/RandFlat.h" -#include "CLHEP/Random/RandGauss.h" - -Basic3DVector<double> UniformMomentumGenerator::operator()() const -{ - double phiMin = -Geom::pi(); - double phiMax = Geom::pi(); - double thetaMin = 0; - double thetaMax = Geom::pi(); - - double aPhi = RandFlat::shoot(phiMin,phiMax); - double aTheta = RandFlat::shoot(thetaMin,thetaMax); - double aP = RandFlat::shoot(thePmin,thePmax); - -// cout << "UniformMomentumGenerator: P= " << aP -// << " theta= " << aTheta << " phi= " << aPhi << endl; - - Basic3DVector<double> result(aP*sin(aTheta)*cos(aPhi), - aP*sin(aTheta)*sin(aPhi), - aP*cos(aTheta)); - return result; -} diff --git a/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h b/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h deleted file mode 100644 index 4cd4a762757..00000000000 --- a/TrackPropagation/NavGeometry/test/stubs/UniformMomentumGenerator.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef UniformMomentumGenerator_H -#define UniformMomentumGenerator_H - -#include "Geometry/Vector/interface/Basic3DVector.h" - -class UniformMomentumGenerator { -public: - - UniformMomentumGenerator( double pmin = 1.0, double pmax = 100.0) : - thePmin(pmin), thePmax(pmax) {} - - Basic3DVector<double> operator()() const; - -private: - - double thePmin; - double thePmax; - -}; - -#endif diff --git a/TrackPropagation/NavPropagator/BuildFile b/TrackPropagation/NavPropagator/BuildFile deleted file mode 100644 index fa636f1c9e2..00000000000 --- a/TrackPropagation/NavPropagator/BuildFile +++ /dev/null @@ -1,10 +0,0 @@ -<use name=MagneticField/VolumeBasedEngine> -<use name=TrackPropagation/NavGeometry> -<use name=TrackPropagation/RungeKutta> - -<export> - <lib name=TrackPropagationNavPropagator> - <use name=MagneticField/VolumeBasedEngine> - <use name=TrackPropagation/NavGeometry> - <use name=TrackPropagation/RungeKutta> -</export> diff --git a/TrackPropagation/NavPropagator/interface/NavPropagator.h b/TrackPropagation/NavPropagator/interface/NavPropagator.h deleted file mode 100644 index d69ac7f9ed1..00000000000 --- a/TrackPropagation/NavPropagator/interface/NavPropagator.h +++ /dev/null @@ -1,96 +0,0 @@ -#ifndef NavPropagator_H_ -#define NavPropagator_H_ - -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" - -#include <map> - -class MagneticField; -class VolumeBasedMagneticField; -class RKPropagatorInS; -class NavVolume; -class MagVolume; - - -class NavPropagator : public Propagator { - -public: - - NavPropagator( const MagneticField* field, - PropagationDirection dir = alongMomentum); - - ~NavPropagator(); - // - // use base class methods where necessary: - // - propagation from TrajectoryStateOnSurface - // (will use propagation from FreeTrajectoryState) - // - propagation to general Surface - // (will use specialised methods for planes or cylinders) - // - using Propagator::propagate; - using Propagator::propagateWithPath; - - /// propagation of TSOS to plane - TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface& ts, - const Plane& plane) const { - return propagateWithPath(ts,plane).first; - } - /// propagation of TSOS to plane with path length - std::pair<TrajectoryStateOnSurface,double> - propagateWithPath(const TrajectoryStateOnSurface& , - const Plane& plane) const; - - /// propagation of FTS to plane - TrajectoryStateOnSurface propagate(const FreeTrajectoryState& ts, - const Plane& plane) const { - return propagateWithPath(ts,plane).first; - } - /// propagation of FTS to plane with path length - std::pair<TrajectoryStateOnSurface,double> - propagateWithPath(const FreeTrajectoryState& , - const Plane& plane) const; - - /// propagation to cylinder - TrajectoryStateOnSurface propagate(const FreeTrajectoryState& fts, - const Cylinder& cylinder) const { - return propagateWithPath(fts,cylinder).first; - } - /// propagation to cylinder with path length - std::pair<TrajectoryStateOnSurface,double> - propagateWithPath(const FreeTrajectoryState& fts, - const Cylinder& cylinder) const; - - virtual NavPropagator * clone() const {return new NavPropagator(*this);} - - virtual const MagneticField* magneticField() const; - -private: - - typedef std::pair<TrajectoryStateOnSurface,double> TsosWP; - typedef RKPropagatorInS PropagatorType; - typedef std::map<const MagVolume*, NavVolume*> MagVolumeMap; - typedef TrajectoryStateOnSurface TSOS; - - - const VolumeBasedMagneticField* theField; - mutable MagVolumeMap theNavVolumeMap; - - - const NavVolume* findVolume( const TrajectoryStateOnSurface& inputState) const; - - const NavVolume* navVolume( const MagVolume* magVolume) const; - - bool destinationCrossed( const TSOS& startState, - const TSOS& endState, const Plane& plane) const; - - TrajectoryStateOnSurface noNextVolume( TrajectoryStateOnSurface startingState) const; - - std::pair<TrajectoryStateOnSurface,double> - propagateInVolume( const NavVolume* currentVolume, - const TrajectoryStateOnSurface& startingState, - const Plane& targetPlane) const; - -}; - -#endif diff --git a/TrackPropagation/NavPropagator/src/NavPropagator.cc b/TrackPropagation/NavPropagator/src/NavPropagator.cc deleted file mode 100644 index b34af39a1da..00000000000 --- a/TrackPropagation/NavPropagator/src/NavPropagator.cc +++ /dev/null @@ -1,207 +0,0 @@ -#include "TrackPropagation/NavPropagator/interface/NavPropagator.h" -#include "MagneticField/VolumeBasedEngine/interface/VolumeBasedMagneticField.h" -#include "TrackingTools/GeomPropagators/interface/PropagationExceptions.h" -#include "TrackPropagation/NavGeometry/interface/NavVolume6Faces.h" -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInS.h" - -using namespace std; - -NavPropagator::NavPropagator( const MagneticField* field, - PropagationDirection dir) : - Propagator(dir) -{ - theField = dynamic_cast<const VolumeBasedMagneticField*>(field); - if (theField == 0) throw PropagationException("NavPropagator field is not VolumeBased"); -} - - NavPropagator::~NavPropagator() { - for (MagVolumeMap::iterator i = theNavVolumeMap.begin(); i != theNavVolumeMap.end(); ++i) { - delete i->second; - } - } - -const MagneticField* NavPropagator::magneticField() const {return theField;} - -std::pair<TrajectoryStateOnSurface,double> -NavPropagator::propagateWithPath(const TrajectoryStateOnSurface& inputState, - const Plane& targetPlane) const -{ - - cout << "NavPropagator::propagateWithPath(TrajectoryStateOnSurface, Plane) called with " - << inputState << endl; - - VolumeCrossReturnType exitState( 0, inputState, 0.0); - TSOS startingState = inputState; - TSOS TempState = inputState; - const NavVolume* currentVolume; - - int count = 0; - int maxCount = 100; - while (!destinationCrossed( startingState, exitState.tsos(), targetPlane)) { - - cout << "NavPropagator:: at beginning of while loop at iteration " << count << endl; - - startingState = TempState; - if (exitState.volume() != 0) { // next volume connected - currentVolume = exitState.volume(); - } - else { - currentVolume = findVolume( startingState); - if (currentVolume == 0) { - cout << "NavPropagator: findVolume failed to find volume containing point " - << startingState.globalPosition() << endl; - return std::pair<TrajectoryStateOnSurface,double>(noNextVolume( startingState), 0); - } - } - - PropagatorType currentPropagator( *currentVolume); - - cout << "NavPropagator: calling crossToNextVolume" << endl; - exitState = currentVolume->crossToNextVolume( startingState, currentPropagator); - cout << "NavPropagator: crossToNextVolume returned" << endl; - cout << "Volume pointer: " << exitState.volume() << " and new " << endl; - cout << exitState.tsos() << endl; - cout << "So that was a path length " << exitState.path() << endl; - - - if ( !exitState.tsos().isValid()) { - // return propagateInVolume( currentVolume, startingState, targetPlane); - cout << "NavPropagator: failed to crossToNextVolume in volume at pos " - << currentVolume->position() << endl; - break; - } - else { - cout << "NavPropagator: crossToNextVolume reached volume "; - if (exitState.volume() != 0) { - cout << " at pos " - << exitState.volume()->position() - << "with state " << exitState.tsos() - << endl; - } - else cout << " unknown" << endl; - } - - TempState = exitState.tsos(); - - if (fabs(exitState.path())<0.01) { - std::cout << "failed to move at all!! at position: " << exitState.tsos().globalPosition() << std::endl; - - GlobalTrajectoryParameters gtp( exitState.tsos().globalPosition()+0.01*exitState.tsos().globalMomentum().unit(), - exitState.tsos().globalMomentum(), - exitState.tsos().globalParameters().charge(), theField ); - - FreeTrajectoryState fts(gtp); - TSOS ShiftedState( fts, exitState.tsos().surface()); - // exitState.tsos() = ShiftedState; - TempState = ShiftedState; - - std::cout << "Shifted to new position " << TempState.globalPosition() <<std::endl; - - } - - ++count; - if (count > maxCount) { - cout << "Ohoh, NavPropagator in infinite loop, count = " << count << endl; - return TsosWP(); - } - } - - cout << "NavPropagator: calling propagateInVolume to reach final destination" << endl; - - // Arriving here only if destinationCrossed or if crossToNextVolume returned invalid state, - // in which case we should check if the targetPlane is not crossed in the current volume - - return propagateInVolume( currentVolume, startingState, targetPlane); - -} - - -const NavVolume* NavPropagator::findVolume( const TrajectoryStateOnSurface& inputState) const -{ - cout << "NavPropagator: calling theField->findVolume " << endl; - - GlobalPoint gp = inputState.globalPosition() + 0.1*inputState.globalMomentum().unit(); - - const MagVolume* magVolume = theField->findVolume( gp); - - cout << "NavPropagator: got MagVolume* " << magVolume - << " when searching with pos " << gp << endl; - - return navVolume(magVolume); -} - - -const NavVolume* NavPropagator::navVolume( const MagVolume* magVolume) const -{ - NavVolume* result; - MagVolumeMap::iterator i = theNavVolumeMap.find( magVolume); - if (i == theNavVolumeMap.end()) { - result= new NavVolume6Faces( *magVolume); - theNavVolumeMap[magVolume] = result; - } - else result = i->second; - return result; -} - -std::pair<TrajectoryStateOnSurface,double> -NavPropagator::propagateInVolume( const NavVolume* currentVolume, - const TrajectoryStateOnSurface& startingState, - const Plane& targetPlane) const -{ - PropagatorType prop( *currentVolume); - TsosWP res = prop.propagateWithPath( startingState, targetPlane); - if (res.first.isValid()) { - if (currentVolume->inside( res.first.globalPosition())) { - return res; - } - } - return TsosWP( TrajectoryStateOnSurface(), 0); -} - -bool NavPropagator::destinationCrossed( const TSOS& startState, - const TSOS& endState, const Plane& plane) const -{ - bool res = ( plane.side( startState.globalPosition(), 1.e-6) != - plane.side( endState.globalPosition(), 1.e-6)); - /* - cout << "NavPropagator::destinationCrossed called with startState " - << startState << endl - << " endState " << endState - << endl - << " plane at " << plane.position() - << endl; - - cout << "plane.side( startState) " << plane.side( startState.globalPosition(), 1.e-6) << endl; - cout << "plane.side( endState) " << plane.side( endState.globalPosition(), 1.e-6) << endl; - */ - - return res; -} - -TrajectoryStateOnSurface -NavPropagator::noNextVolume( TrajectoryStateOnSurface startingState) const -{ - cout << endl - << "Propagation reached end of volume geometry without crossing target surface" - << endl - << "starting state of last propagation " << startingState << endl; - - return TrajectoryStateOnSurface(); -} - - - -std::pair<TrajectoryStateOnSurface,double> -NavPropagator::propagateWithPath(const FreeTrajectoryState& fts, - const Cylinder& cylinder) const -{ - cout << "propagateWithPath(const FreeTrajectoryState&) not implemented yet in NavPropagator" << endl; - return TsosWP(); -} -std::pair<TrajectoryStateOnSurface,double> -NavPropagator::propagateWithPath(const FreeTrajectoryState& fts, - const Plane& cylinder) const -{ - cout << "propagateWithPath(const FreeTrajectoryState&) not implemented yet in NavPropagator" << endl; - return TsosWP(); -} diff --git a/TrackPropagation/NavPropagator/test/TrackerToMuonTest.cc b/TrackPropagation/NavPropagator/test/TrackerToMuonTest.cc deleted file mode 100644 index 1fb86d0fa61..00000000000 --- a/TrackPropagation/NavPropagator/test/TrackerToMuonTest.cc +++ /dev/null @@ -1,121 +0,0 @@ -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" - -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" - -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" - -#include <iostream> -#include <string> - -//////////////////////////////////////////////////////////////////////////// - -#include "MagneticField/VolumeGeometry/interface/MagVolumeOutsideValidity.h" - -#include "TrackPropagation/NavPropagator/interface/NavPropagator.h" -#include "Geometry/Surface/interface/PlaneBuilder.h" - -#include <map> -using namespace std; - - -typedef - -class TrackerToMuonTest : public edm::EDAnalyzer { -public: - TrackerToMuonTest(const edm::ParameterSet& pset) {} - - ~TrackerToMuonTest(){} - - virtual void analyze(const edm::Event& event, const edm::EventSetup& setup){ - using namespace edm; - ESHandle<MagneticField> magfield; - setup.get<IdealMagneticFieldRecord>().get(magfield); - try{ - const GlobalPoint g(0,0,0); - std::cout << "B-field(T) at (0,0,0)(cm): " << magfield->inTesla(g) << std::endl; - } catch (MagVolumeOutsideValidity & duh) { - std::cout << " Caught MagVolumeOutsideValidity exception before we even started !!!" << std::endl; - } - propagateToMuon( &(*magfield)); - } - -private: - - typedef TrajectoryStateOnSurface TSOS; - - void propagateToMuon( const MagneticField* field) const; - - Surface::RotationType rotation( const GlobalVector& zAxis) const; - -}; - -void TrackerToMuonTest::propagateToMuon( const MagneticField* field) const -{ - - NavPropagator prop(field); - - for (float phi = -0.05; phi<0.25*3.1419 ; phi+=0.1) { - for (float costh = 0.05; costh<0.8 ; costh+=0.05) { - cout << "And now trying costh, phi = " << costh << ", " << phi << endl; - - PlaneBuilder pb; - float sinth = sqrt(1-costh*costh); - GlobalVector startingMomentum(20*sin(phi)*sinth,20*cos(phi)*sinth,-20*costh); - GlobalPoint startingPosition(-3,-2,-1); - Surface::RotationType rot = rotation( startingMomentum); - - PlaneBuilder::ReturnType trackerPlane = pb.plane( startingPosition, rot); - - TSOS startingStateP( GlobalTrajectoryParameters(startingPosition, - startingMomentum, 1, field), - *trackerPlane); - - TSOS startingStateM( GlobalTrajectoryParameters(startingPosition, - startingMomentum, -1, field), - *trackerPlane); - - float propDistance = 700; // 10 meters in [cm] - GlobalPoint targetPos( (propDistance*startingMomentum.unit()).basicVector()); - PlaneBuilder::ReturnType muonPlane = pb.plane( targetPos, rot); - - try { - TSOS muonStateP = prop.propagate( startingStateP, *muonPlane); - cout << "Succesfully finished Positive muon propagation --------------------------" << endl; - } catch (MagVolumeOutsideValidity & duh){ - cout << "MagVolumeOutsideValidity not properly caught!! Lost this muon " << endl; - } - // cout << "Positive muon ended at ==== " << muonStateP.globalPosition() << endl; - - try { - TSOS muonStateM = prop.propagate( startingStateM, *muonPlane); - cout << "Succesfully finished Negative muon propagation --------------------------" << endl; - } catch (MagVolumeOutsideValidity & duh){ - cout << "MagVolumeOutsideValidity not properly caught!! Lost this muon " << endl; - } - // cout << "Negative muon ended at ==== " << muonStateP.globalPosition() << endl; - - } - } - cout << "And Yes, reached the END of this event !!!!!!!!!! " << endl; -} - - -Surface::RotationType TrackerToMuonTest::rotation( const GlobalVector& zDir) const -{ - GlobalVector zAxis = zDir.unit(); - GlobalVector yAxis( zAxis.y(), -zAxis.x(), 0); - GlobalVector xAxis = yAxis.cross( zAxis); - return Surface::RotationType( xAxis, yAxis, zAxis); -} - - -DEFINE_FWK_MODULE(TrackerToMuonTest) - diff --git a/TrackPropagation/RungeKutta/BuildFile b/TrackPropagation/RungeKutta/BuildFile deleted file mode 100644 index 1982ce838bf..00000000000 --- a/TrackPropagation/RungeKutta/BuildFile +++ /dev/null @@ -1,19 +0,0 @@ - -<export> - <lib name=TrackPropagationRungeKutta> - <use name=TrackingTools/TrajectoryState> - <use name=TrackingTools/GeomPropagators> - <use name=MagneticField/VolumeGeometry> - <use name=FWCore/Utilities> - <use name=FWCore/Framework> - <use name=TrackingTools/Records> -</export> - -<use name=TrackingTools/TrajectoryState> -<use name=TrackingTools/GeomPropagators> -<use name=MagneticField/VolumeGeometry> -<use name=FWCore/Utilities> -<use name=FWCore/Framework> -<use name=TrackingTools/Records> -<use name=MagneticField/Engine> - diff --git a/TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h b/TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h deleted file mode 100644 index c58f905188d..00000000000 --- a/TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef CartesianLorentzForce_H -#define CartesianLorentzForce_H - -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" - -class CartesianLorentzForce : public RKDerivative<double,6> { -public: - - typedef RKDerivative< double,6> Base; - typedef Base::Scalar Scalar; - typedef Base::Vector Vector; - - CartesianLorentzForce( const RKLocalFieldProvider& field, double ch) : - theField(field), theCharge(ch) {} - - virtual Vector operator()( Scalar z, const Vector& state) const; - -private: - - const RKLocalFieldProvider& theField; - double theCharge; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CartesianState.h b/TrackPropagation/RungeKutta/interface/CartesianState.h deleted file mode 100644 index 844ee7d2f2d..00000000000 --- a/TrackPropagation/RungeKutta/interface/CartesianState.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef CartesianState_H -#define CartesianState_H - -#include "Geometry/Vector/interface/Basic3DVector.h" -#include "TrackPropagation/RungeKutta/interface/VectorDoublet.h" - -class CartesianState { -public: - - typedef double Scalar; - typedef Basic3DVector<Scalar> Vector3D; - typedef VectorDoublet<Vector3D,Vector3D> Vector; - - CartesianState() {} - CartesianState( const Vector& v, Scalar s) : par_(v), charge_(s) {} - CartesianState( const Vector3D& pos, const Vector3D& mom, Scalar s) : - par_(pos,mom), charge_(s) {} - - const Vector3D& position() const { return par_.first();} - const Vector3D& momentum() const { return par_.second();} - - const Vector& parameters() const { return par_;} - - Scalar charge() const { return charge_;} - -private: - - Vector par_; - Scalar charge_; - -}; - -inline CartesianState -operator+( const CartesianState& a, const CartesianState& b) { - return CartesianState(a.parameters()+b.parameters(), a.charge()); -} - -inline CartesianState -operator-( const CartesianState& a, const CartesianState& b) { - return CartesianState(a.parameters()-b.parameters(), a.charge()); -} - -inline CartesianState operator*( const CartesianState& v, const CartesianState::Scalar& s) { - return CartesianState( v.parameters()*s, v.charge()); -} -inline CartesianState operator*( const CartesianState::Scalar& s, const CartesianState& v) { - return CartesianState( v.parameters()*s, v.charge()); -} - -inline CartesianState operator/( const CartesianState& v, const CartesianState::Scalar& s) { - return CartesianState( v.parameters()/s, v.charge()); -} - - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h b/TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h deleted file mode 100644 index e33decc2b12..00000000000 --- a/TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef CartesianStateAdaptor_H -#define CartesianStateAdaptor_H - -class CartesianStateAdaptor { -public: - - typedef double Scalar; - typedef Basic3DVector<Scalar> Vector3D; - - CartesianStateAdaptor( const RKSmallVector<double,6>& rk) : - pos_(rk[0], rk[1], rk[2]), mom_(rk[3], rk[4], rk[5]) {} - - const Vector3D& position() const { return pos_;} - const Vector3D& momentum() const { return mom_;} - - static Vector3D position(const RKSmallVector<double,6>& rk) { - return Vector3D(rk[0], rk[1], rk[2]); - } - - static Vector3D momentum(const RKSmallVector<double,6>& rk) { - return Vector3D(rk[3], rk[4], rk[5]); - } - - static RKSmallVector<double,6> rkstate( const Vector3D& pos, const Vector3D& mom) { - RKSmallVector<double,6> res; - res[0] = pos.x(); - res[1] = pos.y(); - res[2] = pos.z(); - res[3] = mom.x(); - res[4] = mom.y(); - res[5] = mom.z(); - return res; - } - -private: - - Vector3D pos_; - Vector3D mom_; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h b/TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h deleted file mode 100644 index a0b5e750d9e..00000000000 --- a/TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef CurvilinearLorentzForce_H -#define CurvilinearLorentzForce_H - -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" - -class RKLocalFieldProvider; - -template <typename T, int N> -class CurvilinearLorentzForce : public RKDerivative<T,N> { -public: - - typedef RKDerivative<T,N> Base; - typedef typename Base::Scalar Scalar; - typedef typename Base::Vector Vector; - - CurvilinearLorentzForce( const RKLocalFieldProvider& field) : theField(field) {} - - virtual Vector operator()( Scalar z, const Vector& state) const; - -private: - - const RKLocalFieldProvider& theField; - -}; - -#include "TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc" - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CurvilinearState.h b/TrackPropagation/RungeKutta/interface/CurvilinearState.h deleted file mode 100644 index 7d8e7b0afdb..00000000000 --- a/TrackPropagation/RungeKutta/interface/CurvilinearState.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef CurvilinearState_H -#define CurvilinearState_H - -#include "Geometry/Vector/interface/Basic2DVector.h" -#include "Geometry/Vector/interface/Basic3DVector.h" -#include "TrackPropagation/RungeKutta/interface/VectorDoublet.h" - -/** -State for solving the equation of motion with Z as free variable. -The dependent variables are - x - x coordinate - y - y coordinate - dx/dz - derivative of x versus z - dy/dz - derivative of y versus z - q/p - charge over momentum magnitude - -The coordinate system is externally defined -*/ - -class CurvilinearState { -public: - - typedef double Scalar; - typedef Basic2DVector<Scalar> Vector2D; - typedef Basic3DVector<Scalar> Vector3D; - typedef VectorDoublet<Vector2D,Vector3D> Vector; - - CurvilinearState() {} - - CurvilinearState( const Vector& v, Scalar z, Scalar pzsign) : - par_(v), z_(z), pzSign_(pzsign) {} - - CurvilinearState( const Vector3D& pos, const Vector3D& p, Scalar ch) : - par_(Vector2D(pos.x(),pos.y()), Vector3D( p.x()/p.z(), p.y()/p.z(), ch/p.mag())), - z_(pos.z()), pzSign_(p.z()>0. ? 1.:-1.) {} - - const Vector3D position() const { - return Vector3D(par_.first().x(),par_.first().y(),z_); - } - - const Vector3D momentum() const { - Scalar p = 1./fabs(par_.second().z()); - if ( p>1.e9 ) p = 1.e9; - Scalar dxdz = par_.second().x(); - Scalar dydz = par_.second().y(); - Scalar dz = pzSign_/sqrt(1. + dxdz*dxdz + dydz*dydz); - Scalar dx = dz*dxdz; - Scalar dy = dz*dydz; - return Vector3D(dx*p, dy*p, dz*p); - } - - const Vector& parameters() const { return par_;} - - Scalar charge() const { return par_.second().z()>0 ? 1 : -1;} - - Scalar z() const {return z_;} - - double pzSign() const {return pzSign_;} - -private: - - Vector par_; - Scalar z_; - Scalar pzSign_; ///< sign of local pz - -}; - -inline CurvilinearState -operator+( const CurvilinearState& a, const CurvilinearState& b) { - return CurvilinearState(a.parameters()+b.parameters(), a.z()+b.z(), a.pzSign()); -} - -inline CurvilinearState -operator-( const CurvilinearState& a, const CurvilinearState& b) { - return CurvilinearState(a.parameters()-b.parameters(), a.z()-b.z(), a.pzSign()); -} - -inline CurvilinearState operator*( const CurvilinearState& v, - const CurvilinearState::Scalar& s) { - return CurvilinearState( v.parameters()*s, v.z()*s, v.pzSign()); -} -inline CurvilinearState operator*( const CurvilinearState::Scalar& s, - const CurvilinearState& v) { - return CurvilinearState( v.parameters()*s, v.z()*s, v.pzSign()); -} - -inline CurvilinearState operator/( const CurvilinearState& v, - const CurvilinearState::Scalar& s) { - return CurvilinearState( v.parameters()/s, v.z()/s, v.pzSign()); -} - - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h b/TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h deleted file mode 100644 index 7f8ba33cad0..00000000000 --- a/TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef CylindricalLorentzForce_H -#define CylindricalLorentzForce_H - -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" - -class RKLocalFieldProvider; - -template <typename T, int N> -class CylindricalLorentzForce : public RKDerivative<T,N> { -public: - - typedef RKDerivative<T,N> Base; - typedef typename Base::Scalar Scalar; - typedef typename Base::Vector Vector; - - CylindricalLorentzForce( const RKLocalFieldProvider& field) : theField(field) {} - - virtual Vector operator()( Scalar r, const Vector& state) const; - -private: - - const RKLocalFieldProvider& theField; - -}; - -#include "TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc" - -#endif diff --git a/TrackPropagation/RungeKutta/interface/CylindricalState.h b/TrackPropagation/RungeKutta/interface/CylindricalState.h deleted file mode 100644 index 4462a84e653..00000000000 --- a/TrackPropagation/RungeKutta/interface/CylindricalState.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef CylindricalState_H -#define CylindricalState_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" - -#include <iostream> - -/** -State for solving the equation of motion with radius (in cylindrical coordinates) as free variable. -The dependent variables are - phi - azimuthal angle - z - z coordinate - dphi/dr - derivative of phi versus r - dz/dr - derivative of z versus r - q/p - charge over momentum magnitude - -The coordinate system is externally defined -*/ - -class CylindricalState { -public: - - typedef double Scalar; - typedef RKSmallVector<Scalar,5> Vector; - - CylindricalState() {} - - CylindricalState( const LocalPoint& pos, const LocalVector& mom, Scalar ch) { - rho_ = pos.perp(); - Scalar cosphi = pos.x() / rho_; - Scalar sinphi = pos.y() / rho_; - Scalar p_rho = mom.x() * cosphi + mom.y() * sinphi; - Scalar p_phi = -mom.x() * sinphi + mom.y() * cosphi; - - par_(0) = pos.phi(); - par_(1) = pos.z(); - par_(2) = p_phi / (p_rho * rho_); - par_(3) = mom.z() / p_rho; - par_(4) = ch / mom.mag(); - - prSign_ = p_rho > 0 ? 1.0 : -1.0; - - std::cout << "CylindricalState built from pos " << pos << " mom " << mom << " charge " << ch << std::endl; - std::cout << "p_rho " << p_rho << " p_phi " << p_phi << " dphi_drho " << par_(2) << std::endl; - std::cout << "Which results in " << position() << " mom " << momentum() - << " charge " << charge() << std::endl; - } - - CylindricalState( Scalar rho, const Vector& par, Scalar prSign) : - par_(par), rho_(rho), prSign_(prSign) {} - - - const LocalPoint position() const { - return LocalPoint( LocalPoint::Cylindrical( rho_, par_(0), par_(1))); - } - - const LocalVector momentum() const { - Scalar cosphi = cos( par_(0)); - Scalar sinphi = sin( par_(0)); - Scalar Q = sqrt(1 + rho_*rho_ * par_(2)*par_(2) + par_(3)*par_(3)); - Scalar P = std::abs(1./par_(4)); - Scalar p_rho = prSign_*P/Q; - Scalar p_phi = rho_*par_(2)*p_rho; - Scalar p_z = par_(3)*p_rho; - LocalVector result( p_rho*cosphi - p_phi*sinphi, - p_rho*sinphi + p_phi*cosphi, - p_z); - return result; - } - - const Vector& parameters() const { return par_;} - - Scalar charge() const { return par_(4) > 0 ? 1 : -1;} - - Scalar rho() const {return rho_;} - - double prSign() const {return prSign_;} - -private: - - Vector par_; - Scalar rho_; - Scalar prSign_; ///< sign of local p_r - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/FrameChanger.h b/TrackPropagation/RungeKutta/interface/FrameChanger.h deleted file mode 100644 index 19a00d8400d..00000000000 --- a/TrackPropagation/RungeKutta/interface/FrameChanger.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef FrameChanger_H -#define FrameChanger_H - -#include "Geometry/Surface/interface/Plane.h" -#include "Geometry/Surface/interface/ReferenceCounted.h" - -class FrameChanger { -public: - - typedef ReferenceCountingPointer<Plane> PlanePtr; - - template <typename T> - PlanePtr transformPlane( const Plane& plane, const GloballyPositioned<T>& frame) { - Surface::Base newFrame = toFrame( plane, frame); - return PlanePtr( new Plane( newFrame.position(), newFrame.rotation())); - } - - -/** Moves the first argument ("plane") to the reference frame given by the second - * argument ("frame"). The returned frame is not positioned globally! - */ - template <typename T, typename U> - GloballyPositioned<T> toFrame( const GloballyPositioned<T>& plane, - const GloballyPositioned<U>& frame) { - typedef GloballyPositioned<T> Plane; - typedef GloballyPositioned<U> Frame; - - typename Plane::RotationType rot = plane.rotation() * frame.rotation().transposed(); - typename Frame::LocalPoint lpos = frame.toLocal(plane.position()); - typename Plane::PositionType pos( lpos.basicVector()); // cheat! - return Plane( pos, rot); - - } - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/PathToPlane2Order.h b/TrackPropagation/RungeKutta/interface/PathToPlane2Order.h deleted file mode 100644 index db5859f3a2b..00000000000 --- a/TrackPropagation/RungeKutta/interface/PathToPlane2Order.h +++ /dev/null @@ -1,53 +0,0 @@ -#ifndef PathToPlane2Order_H -#define PathToPlane2Order_H - -#include "Geometry/Vector/interface/Basic3DVector.h" -#include "TrackingTools/GeomPropagators/interface/HelixPlaneCrossing.h" -#include "TrackPropagation/RungeKutta/interface/CartesianState.h" -#include "DataFormats/TrajectorySeed/interface/PropagationDirection.h" -#include "Geometry/Surface/interface/Plane.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" - -/** Computes the path length to reach a plane in general magnetic field. - * The problem (starting state and plane) is transformed to a frame where the - * starting field is along Z, and the AnalyticalHelixPlaneCrossing is used - * to compute the path length. - */ - -class RKLocalFieldProvider; - -class PathToPlane2Order { -public: - - typedef Plane::Scalar Scalar; - typedef Basic3DVector<Scalar> Vector3D; - typedef GloballyPositioned<Scalar> Frame; - - PathToPlane2Order( const RKLocalFieldProvider& fld, const Frame* fieldFrame) : - theField(fld), theFieldFrame(fieldFrame) {} - - /// the position and momentum are local in the FieldFrame; - /// the plane is in the global frame - std::pair<bool,double> operator()( const Plane& plane, - const Vector3D& position, - const Vector3D& momentum, - double charge, - const PropagationDirection propDir = alongMomentum); - - std::pair<bool,double> operator()( const Plane& plane, - const GlobalPoint& position, - const GlobalVector& momentum, - double charge, - const PropagationDirection propDir = alongMomentum) { - return operator()( plane, theFieldFrame->toLocal(position).basicVector(), - theFieldFrame->toLocal(momentum).basicVector(), charge, propDir); - } - -private: - - const RKLocalFieldProvider& theField; - const Frame* theFieldFrame; -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RK4OneStep.h b/TrackPropagation/RungeKutta/interface/RK4OneStep.h deleted file mode 100644 index 55608200e1d..00000000000 --- a/TrackPropagation/RungeKutta/interface/RK4OneStep.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef RK4OneStep_H -#define RK4OneStep_H - -#include "TrackPropagation/RungeKutta/interface/CartesianState.h" - -class RKCartesianDerivative; - -class RK4OneStep { -public: - - CartesianState - operator()( const CartesianState& start, const RKCartesianDerivative& deriv, - double step) const; - - - // DeltaState errorEstimate(); - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h b/TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h deleted file mode 100644 index 4eaf96a8928..00000000000 --- a/TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RK4OneStepTempl_H -#define RK4OneStepTempl_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" - -template <typename T, int N> -class RK4OneStepTempl { - public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - - Vector operator()( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, Scalar step) const { - - // cout << "RK4OneStepTempl: starting from " << startPar << startState << endl; - - Vector k1 = step * deriv( startPar, startState); - Vector k2 = step * deriv( startPar+step/2, startState+k1/2); - Vector k3 = step * deriv( startPar+step/2, startState+k2/2); - Vector k4 = step * deriv( startPar+step, startState+k3); - - Vector result = startState + k1/6 + k2/3 + k3/3 + k4/6; - - // cout << "RK4OneStepTempl: result for step " << step << " is " << result << endl; - - return result; - } -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h b/TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h deleted file mode 100644 index 9242d8a4001..00000000000 --- a/TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef RK4PreciseSolver_H -#define RK4PreciseSolver_H - -#include "TrackPropagation/RungeKutta/interface/RKSolver.h" -#include "Utilities/UI/interface/SimpleConfigurable.h" - -template <typename T, int N> -class RK4PreciseSolver : public RKSolver<T,N> { -public: - - typedef RKSolver<T,N> Base; - typedef typename Base::Scalar Scalar; - typedef typename Base::Vector Vector; - - virtual Vector operator()( Scalar startPar, const Vector& startState, - Scalar step, const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, - Scalar eps); - - std::pair< Vector, T> - stepWithAccuracy( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step); - -protected: - - bool verbose() const { - static bool verb = SimpleConfigurable<bool>(false,"RKSolver:verbose").value(); - return verb; - } - -}; - -#include "TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc" - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RK4PreciseStep.h b/TrackPropagation/RungeKutta/interface/RK4PreciseStep.h deleted file mode 100644 index e147d8148f1..00000000000 --- a/TrackPropagation/RungeKutta/interface/RK4PreciseStep.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef RK4PreciseStep_H -#define RK4PreciseStep_H - -#include "TrackPropagation/RungeKutta/interface/CartesianState.h" -#include <utility> - -class RKCartesianDerivative; - -class RK4PreciseStep { -public: - - CartesianState - operator()( const CartesianState& start, const RKCartesianDerivative& deriv, - double step, double eps) const; - - double distance( const CartesianState& a, const CartesianState& b) const; - - std::pair<CartesianState, double> - stepWithAccuracy( const CartesianState& start, const RKCartesianDerivative& deriv, double step) const; - -private: - - bool verbose() const; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h b/TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h deleted file mode 100644 index df34408c341..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h +++ /dev/null @@ -1,39 +0,0 @@ -#ifndef RKAdaptiveSolver_H -#define RKAdaptiveSolver_H - -#include "TrackPropagation/RungeKutta/interface/RKSolver.h" - -//#include "Utilities/UI/interface/SimpleConfigurable.h" - -template <typename T, - template <typename,int> class StepWithPrec, - int N> -class RKAdaptiveSolver : public RKSolver<T,N> { -public: - - typedef RKSolver<T,N> Base; - typedef typename Base::Scalar Scalar; - typedef typename Base::Vector Vector; - - virtual Vector operator()( Scalar startPar, const Vector& startState, - Scalar step, const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, - Scalar eps); - - std::pair< Vector, T> - stepWithAccuracy( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step); - -protected: - - bool verbose() const { - static bool verb = false; //SimpleConfigurable<bool>(false,"RKAdaptiveSolver:verbose").value(); - return verb; - } - -}; - -#include "TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc" - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h b/TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h deleted file mode 100644 index cdc766cb16a..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h +++ /dev/null @@ -1,15 +0,0 @@ -#ifndef RKCartesianDerivative_H -#define RKCartesianDerivative_H - -class CartesianState; - -class RKCartesianDerivative { -public: - - virtual ~RKCartesianDerivative() {} - - virtual CartesianState operator()( double step, const CartesianState& start) const = 0; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKCartesianDistance.h b/TrackPropagation/RungeKutta/interface/RKCartesianDistance.h deleted file mode 100644 index 8fbc0e6f4d5..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKCartesianDistance.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifndef RKCartesianDistance_H -#define RKCartesianDistance_H - -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h" - -#include <cmath> - -class RKCartesianDistance : public RKDistance<double,6> { -public: - - typedef double Scalar; - typedef RKSmallVector<double,6> Vector; - - virtual ~RKCartesianDistance() {} - - virtual Scalar operator()( const Vector& rka, const Vector& rkb, const Scalar& s) const { - CartesianStateAdaptor a(rka), b(rkb); - - return (a.position()-b.position()).mag() + - (a.momentum() - b.momentum()).mag() / b.momentum().mag(); - } - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h b/TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h deleted file mode 100644 index 0015e2a0747..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef RKCurvilinearDistance_H -#define RKCurvilinearDistance_H - -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" - -template <typename T, int N> -class RKCurvilinearDistance : public RKDistance<T,N> { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - virtual ~RKCurvilinearDistance() {} - - virtual Scalar operator()( const Vector& a, const Vector& b, const Scalar& s) const { - Basic3DVector<Scalar> amom = momentum(a); - Basic3DVector<Scalar> bmom = momentum(b); - - return sqrt( sqr(a(0)-b(0)) + sqr(a(1)-b(1))) + (amom - bmom).mag() / bmom.mag(); - } - - Basic3DVector<Scalar> momentum( const Vector& v) const { - Scalar k = sqrt(1 + sqr(v(2)) + sqr(v(3))); - Scalar p = std::abs(1 / v(4)); - Scalar pz = p/k; - return Basic3DVector<Scalar>( v(2)*pz, v(3)*pz, pz); - } - - T sqr(const T& t) const {return t*t;} - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h b/TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h deleted file mode 100644 index 7285d63aaa5..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h +++ /dev/null @@ -1,26 +0,0 @@ -#ifndef RKCylindricalDistance_H -#define RKCylindricalDistance_H - -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/CylindricalState.h" - -template <typename T, int N> -class RKCylindricalDistance : public RKDistance<T,N> { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - virtual ~RKCylindricalDistance() {} - - virtual Scalar operator()( const Vector& a, const Vector& b, const Scalar& rho) const { - CylindricalState astate(rho,a,1.); - CylindricalState bstate(rho,b,1.); - return (astate.position()-bstate.position()).mag() + - (astate.momentum()-bstate.momentum()).mag() / bstate.momentum().mag(); - } - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKDerivative.h b/TrackPropagation/RungeKutta/interface/RKDerivative.h deleted file mode 100644 index 274426ec68d..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKDerivative.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RKDerivative_H -#define RKDerivative_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" - -template <typename T, int N> -class RKDerivative { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - virtual ~RKDerivative() {} - - virtual Vector operator()( Scalar startPar, const Vector& startState) const = 0; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKDistance.h b/TrackPropagation/RungeKutta/interface/RKDistance.h deleted file mode 100644 index 1d65eb282fa..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKDistance.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef RKDistance_H -#define RKDistance_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" - -template <typename T, int N> -class RKDistance { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - virtual ~RKDistance() {} - - virtual Scalar operator()( const Vector& a, const Vector& b, const Scalar& s) const = 0; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h b/TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h deleted file mode 100644 index 2305ddea5d1..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h +++ /dev/null @@ -1,59 +0,0 @@ -#ifndef RKLocalFieldProvider_H -#define RKLocalFieldProvider_H - -#include "Geometry/Surface/interface/GloballyPositioned.h" - -class MagVolume; - -class RKLocalFieldProvider { -public: - - typedef GloballyPositioned<float> Frame; - typedef Frame::GlobalVector GlobalVector; - typedef Frame::GlobalPoint GlobalPoint; - typedef Frame::LocalVector LocalVector; - typedef Frame::LocalPoint LocalPoint; - typedef Frame::PositionType Position; - typedef Frame::RotationType Rotation; - typedef GlobalVector::BasicVectorType Vector; - - /// Global field access, result in global frame - //RKLocalFieldProvider(); - - /// Global field access, result transformed to frame - //explicit RKLocalFieldProvider( const Frame& frame); - - /// Local field access to the MagVolume field, in the MagVolume frame - RKLocalFieldProvider( const MagVolume& vol); - - /// Local field access to the MagVolume field, transformed to the "frame" frame - RKLocalFieldProvider( const MagVolume& vol, const Frame& frame); - - /// the argument lp is in the local frame specified in the constructor - Vector inTesla( const LocalPoint& lp) const; - - Vector inTesla( double x, double y, double z) const { - return inTesla( LocalPoint(x,y,z)); - } - - Vector inTesla( const Vector& v) const { - return inTesla( LocalPoint(v)); - } - - /// The reference frame in which the field is defined - const Frame& frame() const {return theFrame;} - -private: - - const MagVolume* theVolume; - const Frame& theFrame; - bool transform_; - - static Frame& globalFrame() { - static Frame gf( Position(0,0,0), Rotation()); - return gf; - } - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h b/TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h deleted file mode 100644 index a694264b553..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RKOne4OrderStep_H -#define RKOne4OrderStep_H - -#include "TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h" - -#include <utility> - -template <typename T, int N> -class RKOne4OrderStep { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - std::pair< Vector, T> - operator()( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step) { - const Scalar huge = 1.e5; // ad hoc protection against infinities, must be done better! - const Scalar hugediff = 100.; - - RK4OneStepTempl<T,N> solver; - Vector one( solver(startPar, startState, deriv, step)); - if (std::abs(one[0])>huge || std::abs(one(1)>huge)) return std::pair<Vector, Scalar>(one,hugediff); - - Vector firstHalf( solver(startPar, startState, deriv, step/2)); - Vector secondHalf(solver(startPar+step/2, firstHalf, deriv, step/2)); - Scalar diff = dist(one, secondHalf, startPar+step); - return std::pair<Vector, Scalar>(secondHalf,diff); - } -}; -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h b/TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h deleted file mode 100644 index 1a04c51beae..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h +++ /dev/null @@ -1,28 +0,0 @@ -#ifndef RKOneCashKarpStep_H -#define RKOneCashKarpStep_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" - -#include <utility> - -template <typename T, int N> -class RKOneCashKarpStep // : RKStepWithPrecision -{ -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - std::pair< Vector, T> - operator()( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step); - - -}; - -#include "TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc" - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKPropagatorInR.h b/TrackPropagation/RungeKutta/interface/RKPropagatorInR.h deleted file mode 100644 index 8c7839dcaca..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKPropagatorInR.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RKPropagatorInR_H -#define RKPropagatorInR_H - -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -class RKPropagatorInR : public Propagator { -public: - - RKPropagatorInR( const MagVolume& vol, PropagationDirection dir = alongMomentum) : - Propagator(dir), theVolume( &vol) {} - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Plane&) const; - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Cylinder&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Plane&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const; - - virtual Propagator * clone() const; - - virtual const MagneticField* magneticField() const {return theVolume;} - -private: - - const MagVolume* theVolume; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKPropagatorInS.h b/TrackPropagation/RungeKutta/interface/RKPropagatorInS.h deleted file mode 100644 index 08b6ad42786..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKPropagatorInS.h +++ /dev/null @@ -1,80 +0,0 @@ -#ifndef RKPropagatorInS_H -#define RKPropagatorInS_H - -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -#include "Geometry/Vector/interface/Basic3DVector.h" -#include "Geometry/Vector/interface/GlobalPoint.h" -#include "Geometry/Vector/interface/GlobalVector.h" -#include "DataFormats/TrajectoryState/interface/TrackCharge.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - - -class GlobalTrajectoryParameters; -class MagVolume; -class RKLocalFieldProvider; -class CartesianStateAdaptor; - -class RKPropagatorInS : public Propagator { -public: - - // RKPropagatorInS( PropagationDirection dir = alongMomentum) : Propagator(dir), theVolume(0) {} - - explicit RKPropagatorInS( const MagVolume& vol, PropagationDirection dir = alongMomentum, - double tolerance = 1.e-5) : - Propagator(dir), theVolume( &vol), theTolerance( tolerance) {} - - ~RKPropagatorInS() {} - - using Propagator::propagate; - using Propagator::propagateWithPath; - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Plane&) const; - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Cylinder&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Plane&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const; - - TrajectoryStateOnSurface propagate(const TrajectoryStateOnSurface& ts, - const Plane& plane) const { - return propagateWithPath( *ts.freeState(),plane).first; - } - - - - virtual Propagator * clone() const; - - virtual const MagneticField* magneticField() const {return theVolume;} - -private: - - typedef std::pair<TrajectoryStateOnSurface,double> TsosWP; - - const MagVolume* theVolume; - double theTolerance; - - GlobalTrajectoryParameters gtpFromLocal( const Basic3DVector<double>& lpos, - const Basic3DVector<double>& lmom, - TrackCharge ch, const Surface& surf) const; - GlobalTrajectoryParameters gtpFromVolumeLocal( const CartesianStateAdaptor& state, - TrackCharge charge) const; - - RKLocalFieldProvider fieldProvider() const; - RKLocalFieldProvider fieldProvider( const Cylinder& cyl) const; - - PropagationDirection invertDirection( PropagationDirection dir) const; - - Basic3DVector<double> rkPosition( const GlobalPoint& pos) const; - Basic3DVector<double> rkMomentum( const GlobalVector& mom) const; - GlobalPoint globalPosition( const Basic3DVector<double>& pos) const; - GlobalVector globalMomentum( const Basic3DVector<double>& mom) const; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h b/TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h deleted file mode 100644 index c60f3490ef3..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef RKPropagatorInZ_H -#define RKPropagatorInZ_H - -#include "TrackingTools/GeomPropagators/interface/Propagator.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -class RKPropagatorInZ : public Propagator { -public: - - RKPropagatorInZ( const MagVolume& vol, PropagationDirection dir = alongMomentum) : - Propagator(dir), theVolume( &vol) {} - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Plane&) const; - - virtual TrajectoryStateOnSurface - propagate (const FreeTrajectoryState&, const Cylinder&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Plane&) const; - - virtual std::pair< TrajectoryStateOnSurface, double> - propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const; - - virtual Propagator * clone() const; - - virtual const MagneticField* magneticField() const {return theVolume;} - -private: - - const MagVolume* theVolume; - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKSmallVector.h b/TrackPropagation/RungeKutta/interface/RKSmallVector.h deleted file mode 100644 index 375ffe2de37..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKSmallVector.h +++ /dev/null @@ -1,144 +0,0 @@ -#ifndef RKSmallVector_H -#define RKSmallVector_H - -#include "Geometry/Vector/interface/PreciseFloatType.h" - -#include <iostream> - -template<typename T, int N> -class RKSmallVector { -public: - typedef T Scalar; - - RKSmallVector() {} - - /// Construct from array - RKSmallVector( const Scalar* d) { - for (int i=0; i<N; ++i) data_[i] = d[i]; - } - - /// construct from pair of iterators; when dereferenced, they should - /// return a type convertible to Scalar. The iterator range shold be exactly N - template <class Iter> RKSmallVector(Iter begin, Iter end) { - for (int i=0; i<N; i++) data_[i] = *begin++; - } - - int size() const {return N;} - int dim() const {return N;} - - /// access to values - const T& operator()(int i) const {return data_[i];} - T& operator()(int i) {return data_[i];} - const T& operator[](int i) const {return data_[i];} - T& operator[](int i) {return data_[i];} - - /// Operations with vector of same size - - template <class U> - RKSmallVector& operator+= ( const RKSmallVector<U,N>& v) { - for (int i=0; i<N; ++i) data_[i] += v[i]; - return *this; - } - - template <class U> - RKSmallVector& operator-= ( const RKSmallVector<U,N>& v) { - for (int i=0; i<N; ++i) data_[i] -= v[i]; - return *this; - } - - /// Increment by another vector multiplied by a scalar - template <class U> - RKSmallVector& increment( const RKSmallVector<U,N>& v, const T& t) { - for (int i=0; i<N; ++i) data_[i] += t*v[i]; - return *this; - } - - - /// Unary minus, returns a vector with negated components - RKSmallVector operator-() const { - RKSmallVector r; - for (int i=0; i<N; ++i) r[i] = -data_[i]; - return r; - } - - /// Scaling by a scalar value (multiplication) - RKSmallVector& operator*= ( const T& t) { - for (int i=0; i<N; ++i) data_[i] *= t; - return *this; - } - /// Scaling by a scalar value (division) - RKSmallVector& operator/= ( const T& t) { - for (int i=0; i<N; ++i) data_[i] /= t; - return *this; - } - - /// Scalar product, or "dot" product, with a vector of same type. - T dot( const RKSmallVector& v) const { - RKSmallVector r; - for (int i=0; i<N; ++i) r[i] = data_[i]*data_[i]; - return r; - } - -private: - - Scalar data_[N]; - -}; - -/// simple text output to standard streams -template <class T, int N> -inline std::ostream & operator<<( std::ostream& s, const RKSmallVector<T,N>& v) { - s << std::endl; - for (int i=0; i<N; ++i) s << "v[" << i << "] = " << v[i] << std::endl; - return s; -} - -/// vector sum and subtraction of vectors of possibly different precision -template <class T, class U, int N> -inline RKSmallVector<typename PreciseFloatType<T,U>::Type, N> -operator+( const RKSmallVector<T, N>& a, const RKSmallVector<U, N>& b) { - typedef RKSmallVector<typename PreciseFloatType<T,U>::Type, N> RT; - RT r; - for (int i=0; i<N; ++i) r[i] = a[i]+b[i]; - return r; -} -template <class T, class U, int N> -inline RKSmallVector<typename PreciseFloatType<T,U>::Type, N> -operator-( const RKSmallVector<T, N>& a, const RKSmallVector<U, N>& b) { - typedef RKSmallVector<typename PreciseFloatType<T,U>::Type, N> RT; - RT r; - for (int i=0; i<N; ++i) r[i] = a[i]-b[i]; - return r; -} - -/** Multiplication by scalar, does not change the precision of the vector. - * The return type is the same as the type of the vector argument. - */ -template <class T, class Scal, int N> -inline RKSmallVector<T,N> operator*( const RKSmallVector<T,N>& v, const Scal& s) { - T t = static_cast<T>(s); - RKSmallVector<T,N> r; - for (int i=0; i<N; ++i) r[i] = t*v[i]; - return r; -} -template <class T, class Scal, int N> -inline RKSmallVector<T,N> operator*( const Scal& s, const RKSmallVector<T,N>& v) { - T t = static_cast<T>(s); - RKSmallVector<T,N> r; - for (int i=0; i<N; ++i) r[i] = t*v[i]; - return r; -} - -/** Division by scalar, does not change the precision of the vector. - * The return type is the same as the type of the vector argument. - */ -template <class T, class Scal, int N> -inline RKSmallVector<T,N> operator/( const RKSmallVector<T,N>& v, const Scal& s) { - T t = static_cast<T>(s); - RKSmallVector<T,N> r; - for (int i=0; i<N; ++i) r[i] = v[i]/t; - return r; -} - - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKSolver.h b/TrackPropagation/RungeKutta/interface/RKSolver.h deleted file mode 100644 index 13692b23b40..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKSolver.h +++ /dev/null @@ -1,33 +0,0 @@ -#ifndef RKSolver_H -#define RKSolver_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" - -/// ABC for Runge-Kutta solvers - -template <typename T, int N> -class RKSolver { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - virtual ~RKSolver() {} - -/** Advance starting state (startPar,startState) by step. - * The accuracy of the result should be better than eps. - * The accuracy is computed as the distance (using the "dist" argument) - * between different internal estimates of the resulting state. - * The "deriv" argument computes the derivatives. - */ - virtual Vector operator()( Scalar startPar, const Vector& startState, - Scalar step, const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, - Scalar eps) = 0; - - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/RKSolverTempl.h b/TrackPropagation/RungeKutta/interface/RKSolverTempl.h deleted file mode 100644 index 28be39a9e15..00000000000 --- a/TrackPropagation/RungeKutta/interface/RKSolverTempl.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef RKSolverTempl_H -#define RKSolverTempl_H - -#include "TrackPropagation/RungeKutta/interface/RKSmallVector.h" -#include "TrackPropagation/RungeKutta/interface/RKDerivative.h" -#include "TrackPropagation/RungeKutta/interface/RKDistance.h" - -/// ABC for Runge-Kutta solvers - -template <typename T, - template class Deriv<typename, int>, - template class Dist<typename, int>, - template class StepWithPrec<typename, class, class, int>, - int N> -class RKSolverTempl { -public: - - typedef T Scalar; - typedef RKSmallVector<T,N> Vector; - - -/** Advance starting state (startPar,startState) by step. - * The accuracy of the result should be better than eps. - * The accuracy is computed as the distance (using the "dist" argument) - * between different internal estimates of the resulting state. - * The "deriv" argument computes the derivatives. - */ - virtual Vector operator()( Scalar startPar, const Vector& startState, - Scalar step, const Deriv<T,N>& deriv, - const Dist<T,N>& dist, - Scalar eps) = 0; - - -}; - -#endif diff --git a/TrackPropagation/RungeKutta/interface/VectorDoublet.h b/TrackPropagation/RungeKutta/interface/VectorDoublet.h deleted file mode 100644 index 7b6981c9bfd..00000000000 --- a/TrackPropagation/RungeKutta/interface/VectorDoublet.h +++ /dev/null @@ -1,86 +0,0 @@ -#ifndef VectorDoublet_H -#define VectorDoublet_H - -#include "Geometry/Vector/interface/PreciseFloatType.h" - -template <class V1, class V2> -class VectorDoublet { -public: - - typedef typename V1::ScalarType Scalar1; - typedef typename V2::ScalarType Scalar2; - - VectorDoublet() {} - VectorDoublet( const V1& a, const V2& b) : a_(a), b_(b) {} - - const V1& first() const {return a_;} - const V2& second() const {return b_;} - - VectorDoublet& operator+= ( const VectorDoublet& v) { - a_ += v.first(); - b_ += v.second(); - return *this; - } - VectorDoublet& operator-= ( const VectorDoublet& v) { - a_ -= v.first(); - b_ -= v.second(); - return *this; - } - - VectorDoublet operator-() const { return VectorDoublet( -a_, -b_);} - - template <class T> - VectorDoublet& operator*= ( const T& t) { - a_ *= t; - b_ *= t; - return *this; - } - template <class T> - VectorDoublet& operator/= ( const T& t) { - a_ /= t; - b_ /= t; - return *this; - } - - typename PreciseFloatType<Scalar1,Scalar2>::Type dot( const VectorDoublet& v) const { - return first()*v.first() + second()*v.second(); - } - -private: - - V1 a_; - V2 b_; - -}; - -/// vector sum and subtraction -template <class V1, class V2> -inline VectorDoublet<V1,V2> -operator+( const VectorDoublet<V1,V2>& a, const VectorDoublet<V1,V2>& b) { - return VectorDoublet<V1,V2>(a.first()+b.first(), a.second()+b.second()); -} - -template <class V1, class V2> -inline VectorDoublet<V1,V2> -operator-( const VectorDoublet<V1,V2>& a, const VectorDoublet<V1,V2>& b) { - return VectorDoublet<V1,V2>(a.first()-b.first(), a.second()-b.second()); -} - -/** Multiplication by scalar, does not change the precision of the vector. - * The return type is the same as the type of the vector argument. - */ -template <class V1, class V2, class Scalar> -inline VectorDoublet<V1,V2> operator*( const VectorDoublet<V1,V2>& v, const Scalar& s) { - return VectorDoublet<V1,V2>( v.first()*s, v.second()*s); -} -template <class V1, class V2, class Scalar> -inline VectorDoublet<V1,V2> operator*( const Scalar& s, const VectorDoublet<V1,V2>& v) { - return VectorDoublet<V1,V2>( v.first()*s, v.second()*s); -} - -template <class V1, class V2, class Scalar> -inline VectorDoublet<V1,V2> operator/( const VectorDoublet<V1,V2>& v, const Scalar& s) { - return VectorDoublet<V1,V2>( v.first()/s, v.second()/s); -} - -#endif diff --git a/TrackPropagation/RungeKutta/src/CartesianLorentzForce.cc b/TrackPropagation/RungeKutta/src/CartesianLorentzForce.cc deleted file mode 100644 index ad07b3f092e..00000000000 --- a/TrackPropagation/RungeKutta/src/CartesianLorentzForce.cc +++ /dev/null @@ -1,17 +0,0 @@ - -#include "TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h" - -CartesianLorentzForce::Vector -CartesianLorentzForce::operator()( Scalar z, const Vector& state) const -{ - // derivatives in case S is the free parameter - CartesianStateAdaptor start(state); - RKLocalFieldProvider::Vector bfield = theField.inTesla( RKLocalFieldProvider::LocalPoint(start.position())); - double k = 2.99792458e-3; // conversion to [cm] - - CartesianStateAdaptor::Vector3D dpos = start.momentum().unit(); - CartesianStateAdaptor::Vector3D dmom = k*theCharge * dpos.cross( bfield); - - return CartesianStateAdaptor::rkstate( dpos, dmom); -} diff --git a/TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc b/TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc deleted file mode 100644 index 5b99fc4102a..00000000000 --- a/TrackPropagation/RungeKutta/src/CurvilinearLorentzForce.icc +++ /dev/null @@ -1,54 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/CurvilinearState.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" - -#include <exception> - -class CurvilinearLorentzForceException : public std::exception { -public: - CurvilinearLorentzForceException() throw() {} - virtual ~CurvilinearLorentzForceException() throw() {} -}; - - -template <typename T, int N> -typename CurvilinearLorentzForce<T,N>::Vector -CurvilinearLorentzForce<T,N>::operator()( Scalar z, const Vector& state) const -{ - // derivatives in case Z is the free parameter - - RKLocalFieldProvider::Vector B = theField.inTesla( state[0], state[1], z); - double k = 2.99792458e-3; // conversion to [cm] - -// cout << "CurvilinearLorentzForce: field at (" << state[0] << ", " -// << state[1] << ", " << z << ") is " << B << endl; - - /// this should be changed when the ref frame of the solution is not the global one! - //CurvilinearState::Vector3D B( MagneticField::inTesla(GlobalPoint(start.position()))); - - double dxdz = state[2]; - double dydz = state[3]; - double lambda = state[4]; - - double R = sqrt( 1.0 + dxdz*dxdz + dydz*dydz); - - // cout << "CurvilinearLorentzForce: R " << R << " dxdz " << dxdz << " dydz " << dydz << endl; - if (R > 10) { - throw CurvilinearLorentzForceException(); - } - - double d2x_dz2 = k*lambda*R * (dxdz*dydz*B.x() - (1.0+dxdz*dxdz)*B.y() + dydz*B.z()); - double d2y_dz2 = k*lambda*R * ((1+dydz*dydz)*B.x() - dxdz*dydz*B.y() - dxdz*B.z()); - - // the derivative of q/p is zero -- momentum conservation if no energy loss - Vector res; - res[0] = dxdz; - res[1] = dydz; - res[2] = d2x_dz2; - res[3] = d2y_dz2; - res[4] = 0; - - // cout << "CurvilinearLorentzForce: derivatives are " << res; - - return res; -} diff --git a/TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc b/TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc deleted file mode 100644 index 418fad5caaa..00000000000 --- a/TrackPropagation/RungeKutta/src/CylindricalLorentzForce.icc +++ /dev/null @@ -1,67 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/CylindricalState.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "TrackPropagation/RungeKutta/interface/CylindricalState.h" - -#include <exception> - -class CylindricalLorentzForceException : public std::exception { -public: - CylindricalLorentzForceException() throw() {} - virtual ~CylindricalLorentzForceException() throw() {} -}; - - -template <typename T, int N> -typename CylindricalLorentzForce<T,N>::Vector -CylindricalLorentzForce<T,N>::operator()( Scalar r, const Vector& state) const -{ - - std::cout << "CylindricalLorentzForce called with r " << r << " state " << state << std::endl; - - // derivatives in case Radius is the free parameter - CylindricalState cstate( r, state, 1.); - LocalPoint pos( cstate.position()); - RKLocalFieldProvider::Vector B = theField.inTesla( pos.x(), pos.y(), pos.z()); - double k = 2.99792458e-3; // conversion to [cm] - - double dphi_dr = state[2]; - double dz_dr = state[3]; - double lambda = state[4]; - - double Q = sqrt( 1.0 + dphi_dr*dphi_dr*r*r + dz_dr*dz_dr); - - std::cout << "CylindricalLorentzForce: Q " << Q << " dphi_dr " << dphi_dr << " dz_dr " << dz_dr << std::endl; - if (Q > 1000) { - throw CylindricalLorentzForceException(); - } - - double sinphi = sin(state[0]); - double cosphi = cos(state[0]); - double B_r = B.x()*cosphi + B.y()*sinphi; - double B_phi = -B.x()*sinphi + B.y()*cosphi; - double dphi_dr2 = dphi_dr * dphi_dr; - - std::cout << "B_r " << B_r << " B_phi " << B_phi << " B.z() " << B.z() << std::endl; - - double d2phi_dr2 = -2/r * dphi_dr - r*dphi_dr*dphi_dr2 + - k*lambda*Q/r * (dz_dr*B_r + r*dphi_dr*dz_dr*B_phi - (1+r*r*dphi_dr2)*B.z()); - - std::cout << "-2/r * dphi_dr - r*dphi_dr*dphi_dr2 " << -2/r * dphi_dr - r*dphi_dr*dphi_dr2 - << " -k*lambda*Q/r * (1+r*r*dphi_dr2)*B.z() " << -k*lambda*Q/r * (1+r*r*dphi_dr2)*B.z() << std::endl; - - double d2z_dr2 = -r*dphi_dr2*dz_dr + - k*lambda*Q * (-r*dphi_dr*B_r + (1+dz_dr*dz_dr)*B_phi - r*dphi_dr*dz_dr*B.z()); - - // the derivative of q/p is zero -- momentum conservation if no energy loss - Vector res; - res[0] = dphi_dr; - res[1] = dz_dr; - res[2] = d2phi_dr2; - res[3] = d2z_dr2; - res[4] = 0; - - std::cout << "CylindricalLorentzForce: derivatives are " << res << std::endl; - - return res; -} diff --git a/TrackPropagation/RungeKutta/src/PathToPlane2Order.cc b/TrackPropagation/RungeKutta/src/PathToPlane2Order.cc deleted file mode 100644 index 6a57fb1112b..00000000000 --- a/TrackPropagation/RungeKutta/src/PathToPlane2Order.cc +++ /dev/null @@ -1,79 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/PathToPlane2Order.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "TrackPropagation/RungeKutta/interface/FrameChanger.h" -#include "TrackingTools/GeomPropagators/interface/HelixArbitraryPlaneCrossing.h" - -#include <iostream> - -std::pair<bool,double> -PathToPlane2Order::operator()( const Plane& plane, - const Vector3D& pos, - const Vector3D& momentum, - double charge, - const PropagationDirection propDir) -{ - // access to the field in field frame local coordinates - RKLocalFieldProvider::Vector B = theField.inTesla( pos.x(), pos.y(), pos.z()); - - // Frame::GlobalVector localZ = Frame::GlobalVector( B.unit()); // local Z along field - // transform field axis to global frame - Frame::GlobalVector localZ = theFieldFrame->toGlobal( Frame::LocalVector( B.unit())); // local Z along field - - Frame::GlobalVector localY = localZ.cross( Frame::GlobalVector( 1,0,0)); - if (localY.mag() < 0.1) { - localY = localZ.cross( Frame::GlobalVector(0,1,0)).unit(); - } - else { - localY = localY.unit(); - } - Frame::GlobalVector localX = localY.cross(localZ); - - - Frame::PositionType fpos( theFieldFrame->toGlobal( Frame::LocalPoint(pos))); - Frame::RotationType frot( localX, localY, localZ); -// frame in which the field is along Z - Frame frame( fpos, frot); - -// cout << "PathToPlane2Order frame " << frame.position() << endl << frame.rotation() << endl; - -// transform the position and direction to that frame - Frame::LocalPoint localPos = frame.toLocal( fpos); // same as LocalPoint(0,0,0) - - //transform momentum from field frame to new frame via global frame - Frame::GlobalVector gmom( theFieldFrame->toGlobal( Frame::LocalVector(momentum))); - Frame::LocalVector localMom = frame.toLocal( gmom); - - // transform the plane to the same frame - FrameChanger changer; - FrameChanger::PlanePtr localPlane = changer.transformPlane( plane, frame); -/* - cout << "PathToPlane2Order input plane " << plane.position() << endl - << plane.rotation() << endl; - cout << "PathToPlane2Order transformed plane " << localPlane->position() << endl - << localPlane->rotation() << endl; -*/ - double k = 2.99792458e-3; - double transverseMomentum = localMom.perp(); // transverse to the field - double curvature = -k * charge * B.mag() / transverseMomentum; -/* - cout << "PathToPlane2Order curvature " << curvature << endl; - cout << "transverseMomentum " << transverseMomentum << endl; - cout << "B.mag() " << B.mag() << endl; - cout << "localZ " << localZ << endl; - cout << "pos " << pos << endl; - cout << "momentum " << momentum << endl; - cout << "localPos " << localPos << endl; - cout << "localMom " << localMom << endl; -*/ -/* - cout << "PathToPlane2Order: local pos " << localPos << " mom " << localMom - << " curvature " << curvature << endl; - cout << "PathToPlane2Order: local plane pos " << localPlane->position() - << " normal " << localPlane->normalVector() << endl; -*/ - HelixArbitraryPlaneCrossing crossing( localPos.basicVector(), localMom.basicVector(), - curvature, propDir); - std::pair<bool,double> res = crossing.pathLength(*localPlane); - - return res; -} diff --git a/TrackPropagation/RungeKutta/src/RK4OneStep.cc b/TrackPropagation/RungeKutta/src/RK4OneStep.cc deleted file mode 100644 index bcd9f937477..00000000000 --- a/TrackPropagation/RungeKutta/src/RK4OneStep.cc +++ /dev/null @@ -1,23 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RK4OneStep.h" -#include "TrackPropagation/RungeKutta/interface/RKCartesianDerivative.h" - -#include <iostream> - -CartesianState -RK4OneStep::operator()( const CartesianState& start, const RKCartesianDerivative& deriv, - double step) const -{ - double s0 = 0; // derivatives do't depend on absolute value of the integration variable - CartesianState k1 = step * deriv( s0, start); - CartesianState k2 = step * deriv( s0+step/2, start+k1/2); - CartesianState k3 = step * deriv( s0+step/2, start+k2/2); - CartesianState k4 = step * deriv( s0+step, start+k3); -/* - std::cout << "k1 = " << k1.position() << k1.momentum() << std::endl; - std::cout << "k2 = " << k2.position() << k2.momentum() << std::endl; - std::cout << "k3 = " << k3.position() << k3.momentum() << std::endl; - std::cout << "k4 = " << k4.position() << k4.momentum() << std::endl; -*/ - CartesianState result = start + k1/6 + k2/3 + k3/3 + k4/6; - return result; -} diff --git a/TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc b/TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc deleted file mode 100644 index 0cefa199b10..00000000000 --- a/TrackPropagation/RungeKutta/src/RK4PreciseSolver.icc +++ /dev/null @@ -1,73 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RK4PreciseSolver.h" -#include "TrackPropagation/RungeKutta/interface/RK4OneStepTempl.h" -#include <cmath> - -inline double signum( double d) {return d>=0 ? 1.0 : -1.0;} - -template <typename T, int N> -typename RKSolver<T,N>::Vector -RK4PreciseSolver<T,N>::operator()( Scalar startPar, const Vector& startState, - Scalar step, const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, - Scalar eps) -{ - const double Safety = 0.9; - double remainigStep = step; - double stepSize = step; // attempt to solve in one step - Scalar currentPar = startPar; - Vector currentStart = startState; - int nsteps = 0; - std::pair<Vector, Scalar> tryStep; - - do { - tryStep = stepWithAccuracy( currentPar, currentStart, deriv, dist, stepSize); - nsteps++; - if (tryStep.second <eps) { - if (abs(remainigStep - stepSize) < eps/2) { - if (verbose()) cout << "Accuracy reached, and full step taken in " - << nsteps << " steps" << endl; - return tryStep.first; // we are there - } - else { - remainigStep -= stepSize; - currentPar += stepSize; - // increase step size - double factor = min( Safety * pow( fabs(eps/tryStep.second),0.2), 4.); - // stepSize = min( stepSize*factor, remainigStep); - double absSize = min( abs(stepSize*factor), abs(remainigStep)); - stepSize = absSize * signum(stepSize); - currentStart = tryStep.first; - if (verbose()) cout << "Accuracy reached, but " << remainigStep - << " remain after " << nsteps << " steps. Step size increased by " - << factor << " to " << stepSize << endl; - } - } - else { - // decrease step size - double factor = max( Safety * pow( fabs(eps/tryStep.second),0.25), 0.1); - stepSize *= factor; - if (verbose()) cout << "Accuracy not yet reached: delta = " << tryStep.second - << ", step reduced by " << factor << " to " << stepSize << endl; - } - } while (abs(remainigStep) > eps/2); - - return tryStep.first; -} -template <typename T, int N> -std::pair< typename RKSolver<T,N>::Vector, T> -RK4PreciseSolver<T,N>::stepWithAccuracy( Scalar startPar, const Vector& startState, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step) -{ - const Scalar huge = 1.e5; - const Scalar hugediff = 100.; - - RK4OneStepTempl<T,N> solver; - Vector one( solver(startPar, startState, deriv, step)); - if (abs(one[0])>huge || abs(one(1)>huge)) return std::pair<Vector, Scalar>(one,hugediff); - - Vector firstHalf( solver(startPar, startState, deriv, step/2)); - Vector secondHalf(solver(startPar+step/2, firstHalf, deriv, step/2)); - Scalar diff = dist(one, secondHalf, startPar+step); - return std::pair<Vector, Scalar>(secondHalf,diff); -} diff --git a/TrackPropagation/RungeKutta/src/RK4PreciseStep.cc b/TrackPropagation/RungeKutta/src/RK4PreciseStep.cc deleted file mode 100644 index a7317c49f4d..00000000000 --- a/TrackPropagation/RungeKutta/src/RK4PreciseStep.cc +++ /dev/null @@ -1,74 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RK4PreciseStep.h" -#include "TrackPropagation/RungeKutta/interface/RK4OneStep.h" -//#include "Utilities/UI/interface/SimpleConfigurable.h" -#include <iostream> - -CartesianState -RK4PreciseStep::operator()( const CartesianState& start, const RKCartesianDerivative& deriv, - double step, double eps) const -{ - const double Safety = 0.9; - double remainigStep = step; - double stepSize = step; - CartesianState currentStart = start; - int nsteps = 0; - std::pair<CartesianState, double> tryStep; - - do { - tryStep = stepWithAccuracy( currentStart, deriv, stepSize); - nsteps++; - if (tryStep.second <eps) { - if (remainigStep - stepSize < eps/2) { - if (verbose()) std::cout << "Accuracy reached, and full step taken in " - << nsteps << " steps" << std::endl; - return tryStep.first; // we are there - } - else { - remainigStep -= stepSize; - // increase step size - double factor = std::min( Safety * pow( fabs(eps/tryStep.second),0.2), 4.); - stepSize = std::min( stepSize*factor, remainigStep); - currentStart = tryStep.first; - if (verbose()) std::cout << "Accuracy reached, but " << remainigStep - << " remain after " << nsteps << " steps. Step size increased by " - << factor << " to " << stepSize << std::endl; - } - } - else { - // decrease step size - double factor = std::max( Safety * pow( fabs(eps/tryStep.second),0.25), 0.1); - stepSize *= factor; - if (verbose()) std::cout << "Accuracy not yet reached: delta = " << tryStep.second - << ", step reduced by " << factor << " to " << stepSize - << ", (R,z)= " << currentStart.position().perp() - << ", " << currentStart.position().z() << std::endl; - } - } while (remainigStep > eps/2); - - return tryStep.first; -} - -std::pair<CartesianState, double> -RK4PreciseStep::stepWithAccuracy( const CartesianState& start, const RKCartesianDerivative& deriv, - double step) const -{ - RK4OneStep solver; - CartesianState one(solver(start, deriv, step)); - CartesianState firstHalf(solver(start, deriv, step/2)); - CartesianState secondHalf(solver(firstHalf, deriv, step/2)); - double diff = distance(one, secondHalf); - return std::pair<CartesianState, double>(secondHalf,diff); -} - -double RK4PreciseStep::distance( const CartesianState& a, const CartesianState& b) const -{ - return (a.position() - b.position()).mag() + (a.momentum() - b.momentum()).mag() / b.momentum().mag(); -} - -bool RK4PreciseStep::verbose() const -{ - // static bool verb = SimpleConfigurable<bool>(false,"RK4PreciseStep:verbose").value(); - - static bool verb = true; - return verb; -} diff --git a/TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc b/TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc deleted file mode 100644 index dc0fd5a0984..00000000000 --- a/TrackPropagation/RungeKutta/src/RKAdaptiveSolver.icc +++ /dev/null @@ -1,58 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h" -#include <cmath> - -inline double signum( double d) {return d>=0 ? 1.0 : -1.0;} - -template <typename T, - template <typename,int> class StepWithPrec, - int N> -typename RKSolver<T,N>::Vector -RKAdaptiveSolver<T,StepWithPrec,N>::operator()( Scalar startPar, const Vector& startState, - Scalar step, const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, - Scalar eps) -{ - const double Safety = 0.9; - double remainigStep = step; - double stepSize = step; // attempt to solve in one step - Scalar currentPar = startPar; - Vector currentStart = startState; - int nsteps = 0; - std::pair<Vector, Scalar> tryStep; - - StepWithPrec<T,N> stepWithAccuracy; - - do { - tryStep = stepWithAccuracy( currentPar, currentStart, deriv, dist, stepSize); - nsteps++; - if (tryStep.second <eps) { - if (std::abs(remainigStep - stepSize) < eps/2) { - if (verbose()) std::cout << "Accuracy reached, and full step taken in " - << nsteps << " steps" << std::endl; - return tryStep.first; // we are there - } - else { - remainigStep -= stepSize; - currentPar += stepSize; - // increase step size - double factor = std::min( Safety * pow( std::fabs(eps/tryStep.second),0.2), 4.); - // stepSize = std::min( stepSize*factor, remainigStep); - double absSize = std::min( std::abs(stepSize*factor), std::abs(remainigStep)); - stepSize = absSize * signum(stepSize); - currentStart = tryStep.first; - if (verbose()) std::cout << "Accuracy reached, but " << remainigStep - << " remain after " << nsteps << " steps. Step size increased by " - << factor << " to " << stepSize << std::endl; - } - } - else { - // decrease step size - double factor = std::max( Safety * pow( std::fabs(eps/tryStep.second),0.25), 0.1); - stepSize *= factor; - if (verbose()) std::cout << "Accuracy not yet reached: delta = " << tryStep.second - << ", step reduced by " << factor << " to " << stepSize << std::endl; - } - } while (std::abs(remainigStep) > eps/2); - - return tryStep.first; -} diff --git a/TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc b/TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc deleted file mode 100644 index 254228f15be..00000000000 --- a/TrackPropagation/RungeKutta/src/RKLocalFieldProvider.cc +++ /dev/null @@ -1,45 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -RKLocalFieldProvider::RKLocalFieldProvider( const MagVolume& vol) : - theVolume( &vol), theFrame(vol), transform_(false) {} - -RKLocalFieldProvider::RKLocalFieldProvider( const MagVolume& vol, const Frame& frame) : - theVolume( &vol), theFrame(frame), transform_(true) {} - -/* -RKLocalFieldProvider::RKLocalFieldProvider() : - theVolume(0), theFrame(globalFrame()), transform_(false) {} - -RKLocalFieldProvider::RKLocalFieldProvider( const Frame& frame) : - theVolume(0), theFrame(frame), transform_(true) {} -*/ - -RKLocalFieldProvider::Vector RKLocalFieldProvider::inTesla( const LocalPoint& lp) const -{ - if (theVolume != 0) { - if (transform_) { - LocalPoint vlp( theVolume->toLocal( theFrame.toGlobal( lp))); - return theFrame.toLocal( theVolume->toGlobal( theVolume->fieldInTesla( vlp))).basicVector(); - } - else { - return theVolume->fieldInTesla( lp).basicVector(); - } - } - else { - /* - if (transform_) { - GlobalVector gv( MagneticField::inTesla(theFrame.toGlobal(lp))); - return theFrame.toLocal(gv).basicVector(); - } - else { - // the "local" frame is actually global - return MagneticField::inTesla( GlobalPoint( lp.basicVector())).basicVector(); - } - */ - - return RKLocalFieldProvider::Vector(0,0,0); - } -} - diff --git a/TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc b/TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc deleted file mode 100644 index 54af0c1ba34..00000000000 --- a/TrackPropagation/RungeKutta/src/RKOneCashKarpStep.icc +++ /dev/null @@ -1,40 +0,0 @@ -template <typename T, int N> -std::pair< typename RKOneCashKarpStep<T,N>::Vector, T> -RKOneCashKarpStep<T,N>::operator()( Scalar x, const Vector& v, - const RKDerivative<T,N>& deriv, - const RKDistance<T,N>& dist, Scalar step) -{ - const Scalar a2=0.2, a3=0.3, a4=0.6, a5=1., a6=7./8.; - const Scalar b21=0.2; - const Scalar b31=3./40., b32=9./40.; - const Scalar b41=0.3, b42=-0.9, b43=1.2; - const Scalar b51=-11./54., b52=5./2., b53=-70./27., b54=35./27.; - const Scalar b61=1631./55296., b62=175./512., b63=575./13824., b64=44275./110592., b65=253./4096.; - const Scalar c1=37./378., c2=0, c3=250./621., c4=125./594., c5=0, c6=512./1771.; - const Scalar d1=2825./27648., d2=0, d3=18575./48384., d4=13525./55296., d5=277./14336., d6=0.25; - - Vector k1 = step*deriv( x, v); - Vector k2 = step*deriv( x+a2*step, v + b21*k1); - Vector k3 = step*deriv( x+a3*step, v + b31*k1 + b32*k2); - Vector k4 = step*deriv( x+a4*step, v + b41*k1 + b42*k2 + b43*k3); - Vector k5 = step*deriv( x+a5*step, v + b51*k1 + b52*k2 + b53*k3 + b54*k4); - Vector k6 = step*deriv( x+a6*step, v + b61*k1 + b62*k2 + b63*k3 + b64*k4 + b65*k5); - - Vector r5 = v + c1*k1 + c3*k3 + c4*k4 + c6*k6; - Vector r4 = v + d1*k1 + d3*k3 + d4*k4 + d5*k5 + d6*k6; - return std::pair<Vector,T>( r5, dist(r4,r5,x+step)); -} - -/* array implementation may be faster, but is tricky (needs triangular matrix etc.) -{ - Scalar a[6] = {0, 0.2, 0.3, 0.6, 1., 7./8.}; - - k[1] = step*deriv( x, v); - for (int i=1; i<=6; i++) { - Vector arg = v; - for (int j=1; j<i; j++) v.increment( k[j], b[i][j]); // v += b[i][j]*k[j]; - k[i] = step*deriv( x+a[i], arg); - } - -} -*/ diff --git a/TrackPropagation/RungeKutta/src/RKPropagatorInR.cc b/TrackPropagation/RungeKutta/src/RKPropagatorInR.cc deleted file mode 100644 index 546cf046057..00000000000 --- a/TrackPropagation/RungeKutta/src/RKPropagatorInR.cc +++ /dev/null @@ -1,76 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInR.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -// #include "CommonReco/RKPropagators/interface/RK4PreciseSolver.h" -#include "TrackPropagation/RungeKutta/interface/RKCylindricalDistance.h" -#include "TrackPropagation/RungeKutta/interface/CylindricalLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "Geometry/Surface/interface/Cylinder.h" -#include "TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h" -#include "TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h" -#include "TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h" -#include "TrackPropagation/RungeKutta/interface/CylindricalState.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -TrajectoryStateOnSurface -RKPropagatorInR::propagate (const FreeTrajectoryState& ts, const Cylinder& cyl) const -{ - //typedef RK4PreciseSolver<double,5> Solver; - typedef RKAdaptiveSolver<double,RKOne4OrderStep, 5> Solver; - //typedef RKAdaptiveSolver<Scalar,RKOneCashKarpStep, 5> Solver; - typedef double Scalar; - typedef Solver::Vector RKVector; - - GlobalPoint pos( ts.position()); - GlobalVector mom( ts.momentum()); - - LocalPoint startpos = cyl.toLocal(pos); - LocalVector startmom = cyl.toLocal(mom); - - CylindricalState startState( startpos, startmom, ts.charge()); - RKVector start = startState.parameters(); - - RKLocalFieldProvider localField( *theVolume, cyl); - CylindricalLorentzForce<double,5> deriv(localField); - RKCylindricalDistance<double,5> dist; - double eps = 1.e-5; - Solver solver; - try { - Scalar step = cyl.radius() - startState.rho(); - RKVector rkresult = solver( startState.rho(), start, step, deriv, dist, eps); - CylindricalState endState( cyl.radius(), rkresult, startState.prSign()); - return TrajectoryStateOnSurface( GlobalTrajectoryParameters( cyl.toGlobal( endState.position()), - cyl.toGlobal( endState.momentum()), - TrackCharge(endState.charge()), - theVolume), - cyl); - } - catch (CylindricalLorentzForceException& e) { - // the propagation failed due to momentum almost parallel to the plane. - // This does not mean the propagation is impossible, but it should be done - // in a different parametrization (e.g. s) - return TrajectoryStateOnSurface(); - } -} - -TrajectoryStateOnSurface -RKPropagatorInR::propagate (const FreeTrajectoryState&, const Plane&) const -{ - return TrajectoryStateOnSurface(); -} - -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInR::propagateWithPath (const FreeTrajectoryState&, const Plane&) const -{ - return std::pair< TrajectoryStateOnSurface, double>(); -} - -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInR::propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const -{ - return std::pair< TrajectoryStateOnSurface, double>(); -} - -Propagator * RKPropagatorInR::clone() const -{ - return new RKPropagatorInR(*this); -} diff --git a/TrackPropagation/RungeKutta/src/RKPropagatorInS.cc b/TrackPropagation/RungeKutta/src/RKPropagatorInS.cc deleted file mode 100644 index e1338bf8ac8..00000000000 --- a/TrackPropagation/RungeKutta/src/RKPropagatorInS.cc +++ /dev/null @@ -1,275 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInS.h" -#include "TrackPropagation/RungeKutta/interface/RKCartesianDistance.h" -#include "TrackPropagation/RungeKutta/interface/CartesianLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "Geometry/Surface/interface/Plane.h" -#include "Geometry/Surface/interface/Cylinder.h" -#include "TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h" -#include "TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h" -#include "TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h" -#include "TrackPropagation/RungeKutta/interface/PathToPlane2Order.h" -#include "TrackPropagation/RungeKutta/interface/CartesianStateAdaptor.h" -#include "TrackingTools/GeomPropagators/interface/StraightLineCylinderCrossing.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" - -#include "TrackPropagation/RungeKutta/interface/FrameChanger.h" -#include "TrackingTools/GeomPropagators/interface/StraightLinePlaneCrossing.h" - -// TrajectoryStateOnSurface -// RKPropagatorInS::propagate (const FreeTrajectoryState& ts, const Plane& plane) const - -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInS::propagateWithPath (const FreeTrajectoryState& ts, const Plane& plane) const -{ - if (theVolume != 0) { - std::cout << "RKPropagatorInS: starting prop to plane in volume with pos " << theVolume->position() - << " Z axis " << theVolume->toGlobal( LocalVector(0,0,1)) << std::endl; - - std::cout << "The starting position is " << ts.position() << " (global) " - << theVolume->toLocal(ts.position()) << " (local) " << std::endl; - FrameChanger changer; - FrameChanger::PlanePtr localPlane = changer.transformPlane( plane, *theVolume); - std::cout << "The plane position is " << plane.position() << " (global) " - << localPlane->position() << " (local) " << std::endl; - - std::cout << "The initial distance to plane is " << plane.localZ( ts.position()) << std::endl; - - StraightLinePlaneCrossing cross( ts.position().basicVector(), ts.momentum().basicVector()); - std::pair<bool,double> res3 = cross.pathLength(plane); - std::cout << "straight line distance " << res3.first << " " << res3.second << std::endl; - } - - typedef RKAdaptiveSolver<double,RKOneCashKarpStep, 6> Solver; - typedef Solver::Vector RKVector; - - GlobalPoint gpos( ts.position()); - GlobalVector gmom( ts.momentum()); - double startZ = plane.localZ(gpos); - - RKLocalFieldProvider field( fieldProvider()); - PathToPlane2Order pathLength( field, &field.frame()); - CartesianLorentzForce deriv(field, ts.charge()); - - RKCartesianDistance dist; - double eps = theTolerance; - Solver solver; - double stot = 0; - PropagationDirection currentDirection = propagationDirection(); - - // in magVolume frame - RKVector start( CartesianStateAdaptor::rkstate( rkPosition(gpos), rkMomentum(gmom))); - while (true) { - CartesianStateAdaptor startState(start); - - std::pair<bool,double> path = pathLength( plane, startState.position(), - startState.momentum(), - (double) ts.charge(), currentDirection); - if (!path.first) { - std::cout << "RKPropagatorInS: Path length calculation to plane failed!" << std::endl; - std::cout << "...distance to plane " << plane.localZ( globalPosition(startState.position())) << std::endl; - std::cout << "...Local starting position in volume " << startState.position() << std::endl; - std::cout << "...Magnetic field " << field.inTesla( startState.position()) << std::endl; - - - return TsosWP(); - } - else { - std::cout << "RKPropagatorInS: Path lenght to plane is " << path.second << std::endl; - } - - double sstep = path.second; - if ( std::abs(sstep) < eps) { - std::cout << "On-surface accuracy not reached, but pathLength calculation says we are there! " - << std::endl << "path " << path.second << " distance to plane is " << startZ << std::endl; - TrajectoryStateOnSurface res( gtpFromVolumeLocal( startState, ts.charge()), plane); - return TsosWP( res, stot); - } - - std::cout << "RKPropagatorInS: Solving for " << sstep - << " current distance to plane is " << startZ << std::endl; - - RKVector rkresult = solver( 0, start, sstep, deriv, dist, eps); - stot += sstep; - CartesianStateAdaptor cur( rkresult); - double remainingZ = plane.localZ( globalPosition(cur.position())); - if ( fabs(remainingZ) < eps) { - std::cout << "On-surface accuracy reached! " << remainingZ << std::endl; - TrajectoryStateOnSurface res( gtpFromVolumeLocal( cur, ts.charge()), plane); - return TsosWP( res, stot); - } - - start = rkresult; - if (remainingZ * startZ > 0) { - std::cout << "Accuracy not reached yet, trying in same direction again " - << remainingZ << std::endl; - } - else { - std::cout << "Accuracy not reached yet, trying in opposite direction " - << remainingZ << std::endl; - currentDirection = invertDirection( currentDirection); - } - startZ = remainingZ; - } -} - -// TrajectoryStateOnSurface -// RKPropagatorInS::propagate (const FreeTrajectoryState& ts, const Cylinder& cyl) const -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInS::propagateWithPath (const FreeTrajectoryState& ts, const Cylinder& cyl) const -{ - typedef RKAdaptiveSolver<double,RKOneCashKarpStep, 6> Solver; - typedef Solver::Vector RKVector; - - GlobalPoint gpos( ts.position()); - GlobalVector gmom( ts.momentum()); - LocalPoint pos(cyl.toLocal(gpos)); - LocalVector mom(cyl.toLocal(gmom)); - double startR = cyl.radius() - pos.perp(); - - // std::cout << "RKPropagatorInS: starting from FTS " << ts << std::endl; - - RKLocalFieldProvider field( fieldProvider(cyl)); - // StraightLineCylinderCrossing pathLength( pos, mom, propagationDirection()); - CartesianLorentzForce deriv(field, ts.charge()); - - RKCartesianDistance dist; - double eps = theTolerance; - Solver solver; - double stot = 0; - PropagationDirection currentDirection = propagationDirection(); - - RKVector start( CartesianStateAdaptor::rkstate( pos.basicVector(), mom.basicVector())); - while (true) { - CartesianStateAdaptor startState(start); - StraightLineCylinderCrossing pathLength( LocalPoint(startState.position()), - LocalVector(startState.momentum()), - currentDirection, eps); - - std::pair<bool,double> path = pathLength.pathLength( cyl); - if (!path.first) { - std::cout << "RKPropagatorInS: Path length calculation to cylinder failed!" << std::endl; - LocalPoint lpos( startState.position()); - std::cout << "Radius " << cyl.radius() << " pos.perp() " << lpos.perp() << std::endl; - return TsosWP(); - } - else { - std::cout << "RKPropagatorInS: Path lenght to cylinder is " << path.second - << " from point (R,z) " << startState.position().perp() - << ", " << startState.position().z() - << " to R " << cyl.radius() - << std::endl; - } - - double sstep = path.second; - if ( std::abs(sstep) < eps) { - std::cout << "accuracy not reached, but pathLength calculation says we are there! " - << path.second << std::endl; - - TrajectoryStateOnSurface res( gtpFromLocal( startState.position(), - startState.momentum(), ts.charge(), cyl), - cyl); - return TsosWP( res, stot); - } - - std::cout << "RKPropagatorInS: Solving for " << sstep - << " current distance to cylinder is " << startR << std::endl; - - RKVector rkresult = solver( 0, start, sstep, deriv, dist, eps); - stot += sstep; - CartesianStateAdaptor cur( rkresult); - double remainingR = cyl.radius() - cur.position().perp(); - if ( fabs(remainingR) < eps) { - std::cout << "Accuracy reached! " << remainingR << std::endl; - TrajectoryStateOnSurface res( gtpFromLocal( cur.position(), cur.momentum(), ts.charge(), cyl), - cyl); - return TsosWP( res, stot); - } - - start = rkresult; - if (remainingR * startR > 0) { - std::cout << "Accuracy not reached yet, trying in same direction again " - << remainingR << std::endl; - } - else { - std::cout << "Accuracy not reached yet, trying in opposite direction " - << remainingR << std::endl; - currentDirection = invertDirection( currentDirection); - } - startR = remainingR; - } -} - -TrajectoryStateOnSurface -RKPropagatorInS::propagate(const FreeTrajectoryState& fts, const Plane& plane) const -{ - return propagateWithPath( fts, plane).first; -} - -TrajectoryStateOnSurface -RKPropagatorInS::propagate( const FreeTrajectoryState& fts, const Cylinder& cyl) const -{ - return propagateWithPath( fts, cyl).first; -} - -Propagator * RKPropagatorInS::clone() const -{ - return new RKPropagatorInS(*this); -} - -GlobalTrajectoryParameters RKPropagatorInS::gtpFromLocal( const Basic3DVector<double>& lpos, - const Basic3DVector<double>& lmom, - TrackCharge ch, const Surface& surf) const -{ - return GlobalTrajectoryParameters( surf.toGlobal( LocalPoint( lpos)), - surf.toGlobal( LocalVector( lmom)), ch, theVolume); -} - -RKLocalFieldProvider RKPropagatorInS::fieldProvider() const -{ - return RKLocalFieldProvider( *theVolume); -} - -RKLocalFieldProvider RKPropagatorInS::fieldProvider( const Cylinder& cyl) const -{ - return RKLocalFieldProvider( *theVolume, cyl); -} - -PropagationDirection RKPropagatorInS::invertDirection( PropagationDirection dir) const -{ - if (dir == anyDirection) return dir; - return ( dir == alongMomentum ? oppositeToMomentum : alongMomentum); -} - -Basic3DVector<double> RKPropagatorInS::rkPosition( const GlobalPoint& pos) const -{ - if (theVolume != 0) return theVolume->toLocal( pos).basicVector(); - else return pos.basicVector(); -} - -Basic3DVector<double> RKPropagatorInS::rkMomentum( const GlobalVector& mom) const -{ - if (theVolume != 0) return theVolume->toLocal( mom).basicVector(); - else return mom.basicVector(); -} - -GlobalPoint RKPropagatorInS::globalPosition( const Basic3DVector<double>& pos) const -{ - if (theVolume != 0) return theVolume->toGlobal( LocalPoint(pos)); - else return GlobalPoint(pos); -} - -GlobalVector RKPropagatorInS::globalMomentum( const Basic3DVector<double>& mom) const - -{ - if (theVolume != 0) return theVolume->toGlobal( LocalVector(mom)); - else return GlobalVector(mom); -} - -GlobalTrajectoryParameters -RKPropagatorInS::gtpFromVolumeLocal( const CartesianStateAdaptor& state, - TrackCharge charge) const -{ - return GlobalTrajectoryParameters( globalPosition(state.position()), - globalMomentum(state.momentum()), - charge, theVolume); -} diff --git a/TrackPropagation/RungeKutta/src/RKPropagatorInZ.cc b/TrackPropagation/RungeKutta/src/RKPropagatorInZ.cc deleted file mode 100644 index 0033ad03c1f..00000000000 --- a/TrackPropagation/RungeKutta/src/RKPropagatorInZ.cc +++ /dev/null @@ -1,82 +0,0 @@ -#include "TrackPropagation/RungeKutta/interface/RKPropagatorInZ.h" -#include "TrackingTools/TrajectoryState/interface/TrajectoryStateOnSurface.h" -// #include "CommonReco/RKPropagators/interface/RK4PreciseSolver.h" -#include "TrackPropagation/RungeKutta/interface/RKCurvilinearDistance.h" -#include "TrackPropagation/RungeKutta/interface/CurvilinearLorentzForce.h" -#include "TrackPropagation/RungeKutta/interface/RKLocalFieldProvider.h" -#include "Geometry/Surface/interface/Plane.h" -#include "TrackPropagation/RungeKutta/interface/RKAdaptiveSolver.h" -#include "TrackPropagation/RungeKutta/interface/RKOne4OrderStep.h" -#include "TrackPropagation/RungeKutta/interface/RKOneCashKarpStep.h" - -TrajectoryStateOnSurface -RKPropagatorInZ::propagate (const FreeTrajectoryState& ts, const Plane& plane) const -{ - //typedef RK4PreciseSolver<double,5> Solver; - //typedef RKAdaptiveSolver<double,RKOne4OrderStep, 5> Solver; - typedef RKAdaptiveSolver<double,RKOneCashKarpStep, 5> Solver; - typedef Solver::Vector RKVector; - - GlobalPoint pos( ts.position()); - GlobalVector mom( ts.momentum()); - - // cout << "RKPropagatorInZ: starting from FTS " << ts << endl; - - LocalPoint startpos = plane.toLocal(pos); - LocalVector startmom = plane.toLocal(mom); - double pzSign = startmom.z() > 0 ? 1.0 : -1.0; - - // cout << "In local plane coordinates: " << startpos << ", momentum " << startmom << endl; - - RKVector start; - start(0) = startpos.x(); - start(1) = startpos.y(); - start(2) = startmom.x()/startmom.z(); - start(3) = startmom.y()/startmom.z(); - start(4) = pzSign * ts.charge() / startmom.mag(); - - // cout << "RKPropagatorInZ: Solving with par " << startpos.z() << " and state " << start << endl; - - RKLocalFieldProvider localField( *theVolume, plane); - - CurvilinearLorentzForce<double,5> deriv(localField); - RKCurvilinearDistance<double,5> dist; - double eps = 1.e-5; - Solver solver; - try { - RKVector rkresult = solver( startpos.z(), start, -startpos.z(), deriv, dist, eps); - - return TrajectoryStateOnSurface( LocalTrajectoryParameters( rkresult(4), rkresult(2), rkresult(3), - rkresult(0), rkresult(1), pzSign), - plane, theVolume); - } - catch (CurvilinearLorentzForceException& e) { - // the propagation failed due to momentum almost parallel to the plane. - // This does not mean the propagation is impossible, but it should be done - // in a different parametrization (e.g. s) - return TrajectoryStateOnSurface(); - } -} - -TrajectoryStateOnSurface -RKPropagatorInZ::propagate (const FreeTrajectoryState&, const Cylinder&) const -{ - return TrajectoryStateOnSurface(); -} - -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInZ::propagateWithPath (const FreeTrajectoryState&, const Plane&) const -{ - return std::pair< TrajectoryStateOnSurface, double>(); -} - -std::pair< TrajectoryStateOnSurface, double> -RKPropagatorInZ::propagateWithPath (const FreeTrajectoryState&, const Cylinder&) const -{ - return std::pair< TrajectoryStateOnSurface, double>(); -} - -Propagator * RKPropagatorInZ::clone() const -{ - return new RKPropagatorInZ(*this); -} diff --git a/TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h b/TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h index 570d414df06..e1b1097bee0 100644 --- a/TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h +++ b/TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h @@ -9,15 +9,15 @@ * Material effects (multiple scattering and energy loss) are based on tuning * to MC and (eventually) data. * - * $Date: 2006/10/05 23:48:55 $ - * $Revision: 1.7 $ + * $Date: 2006/07/04 01:20:21 $ + * $Revision: 1.5 $ * \author Vyacheslav Krutelyov (slava77) */ // // Original Author: Vyacheslav Krutelyov // Created: Fri Mar 3 16:01:24 CST 2006 -// $Id: SteppingHelixPropagator.h,v 1.7 2006/10/05 23:48:55 slava77 Exp $ +// $Id: SteppingHelixPropagator.h,v 1.5 2006/07/04 01:20:21 slava77 Exp $ // // @@ -37,7 +37,6 @@ class MagneticField; -class MagVolume; class SteppingHelixPropagator : public Propagator { public: @@ -74,8 +73,7 @@ class SteppingHelixPropagator : public Propagator { CYLINDER_DT, PATHL_DT, POINT_PCA_DT, - LINE_PCA_DT, - UNDEFINED_DT + LINE_PCA_DT }; enum Fancy { @@ -86,20 +84,6 @@ class SteppingHelixPropagator : public Propagator { POL_M_F //highest available }; - struct StateInfo { - int q; - Vector p3; - Point r3; - HepSymMatrix covLoc; - double path; - double radPath; - Basis rep; - double dir; - Vector bf; - Vector bfGradLoc; - const MagVolume* magVol; - }; - /// Constructors SteppingHelixPropagator(); SteppingHelixPropagator(const MagneticField* field, PropagationDirection dir = alongMomentum); @@ -157,69 +141,51 @@ class SteppingHelixPropagator : public Propagator { /// on the intermediate stop points void applyRadX0Correction(bool applyRadX0Correction) { applyRadX0Correction_ = applyRadX0Correction;} - ///Switch to using MagneticField Volumes .. as in VolumeBasedMagneticField - void setUseMagVolumes(bool val){ useMagVolumes_ = val;} - protected: /// (Internals) Init starting point - void setIState(const FreeTrajectoryState& ftsStart) const; void setIState(const SteppingHelixPropagator::Vector& p3, const SteppingHelixPropagator::Point& r3, int charge, const HepSymMatrix& cov, PropagationDirection dir = alongMomentum) const; /// (Internals) get final state - void getFState(FreeTrajectoryState& ftsDest) const; void getFState(SteppingHelixPropagator::Vector& p3, SteppingHelixPropagator::Point& r3, HepSymMatrix& cov) const; /// propagate: chose stop point by type argument /// propagate to fixed radius [ r = sqrt(x**2+y**2) ] with precision epsilon /// propagate to plane by [x0,y0,z0, n_x, n_y, n_z] parameters - Result propagate(SteppingHelixPropagator::DestType type, - const double pars[6], double epsilon = 1e-3) const; + Result propagate(SteppingHelixPropagator::DestType type, const double pars[6], double epsilon = 1e-3) const; /// (Internals) compute transient values for initial point (resets step counter). /// Called by setIState - void loadState(SteppingHelixPropagator::StateInfo& svCurrent, - const SteppingHelixPropagator::Vector& p3, + void loadState(int ind, const SteppingHelixPropagator::Vector& p3, const SteppingHelixPropagator::Point& r3, int charge, const HepSymMatrix& cov, PropagationDirection dir) const; /// (Internals) compute transients for current point (increments step counter). /// Called by makeAtomStep - void getNextState(const SteppingHelixPropagator::StateInfo& svPrevious, - SteppingHelixPropagator::StateInfo& svNext, + void incrementState(int ind, double dP, SteppingHelixPropagator::Vector tau, double dX, double dY, double dZ, double dS, double dX0, const HepMatrix& dCov) const; /// Set/compute basis vectors for local coordinates at current step (called by incrementState) - void setRep(SteppingHelixPropagator::StateInfo& sv) const; + void setReps(int ind) const; /// main stepping function: compute next state vector after a step of length dS - bool makeAtomStep(SteppingHelixPropagator::StateInfo& svCurrent, - SteppingHelixPropagator::StateInfo& svNext, - double dS, PropagationDirection dir, + bool makeAtomStep(int iIn, double dS, PropagationDirection dir, SteppingHelixPropagator::Fancy fancy) const; /// estimate average (in fact smth. close to MPV and median) energy loss per unit path length - double getDeDx(const SteppingHelixPropagator::StateInfo& sv, - double& dEdXPrime, double& radX0) const; + double getDeDx(int iIn, double& dEdXPrime, double& radX0) const; /// (Internals) circular index for array of transients int cIndex_(int ind) const; /// (Internals) determine distance and direction from the current position to the plane - Result refToDest(DestType dest, const SteppingHelixPropagator::StateInfo& sv, - const double pars[6], - double& dist, double& tanDist, PropagationDirection& refDirection) const; - - /// (Internals) determine distance and direction from the current position to the - /// boundary of current mag volume - Result refToMagVolume(const SteppingHelixPropagator::StateInfo& sv, - PropagationDirection dir, - double& dist, double& tanDist) const; + Result refToDest(DestType dest, int ind, const double pars[6], + double& dist, double& secTheta, bool& isIncoming) const; /// Compute covariance matrix rotation given change in basis vectors void initCovRotation(const SteppingHelixPropagator::Vector* repI[3], @@ -227,8 +193,7 @@ class SteppingHelixPropagator : public Propagator { HepMatrix& covRot) const; /// |B|-field gradient in local coordinates - void getLocBGrad(SteppingHelixPropagator::StateInfo& sv, - double delta) const; + void getLocBGrad(int ind, double delta) const; private: typedef std::pair<TrajectoryStateOnSurface, double> TsosPP; @@ -236,7 +201,16 @@ class SteppingHelixPropagator : public Propagator { static const int MAX_STEPS = 10000; static const int MAX_POINTS = 50; mutable int nPoints_; - mutable StateInfo svBuf_[MAX_POINTS+1]; + mutable int q_[MAX_POINTS+1]; + mutable Vector p3_[MAX_POINTS+1]; + mutable Point r3_[MAX_POINTS+1]; + mutable HepSymMatrix covLoc_[MAX_POINTS+1]; + mutable double path_[MAX_POINTS+1]; + mutable double radPath_[MAX_POINTS+1]; + mutable Basis reps_[MAX_POINTS+1]; + mutable double dir_[MAX_POINTS+1]; + mutable Vector bf_[MAX_POINTS+1]; + mutable Vector bfGradLoc_[MAX_POINTS+1]; mutable HepMatrix covRot_; mutable HepMatrix dCTransform_; @@ -247,7 +221,6 @@ class SteppingHelixPropagator : public Propagator { bool noMaterialMode_; bool noErrorPropagation_; bool applyRadX0Correction_; - bool useMagVolumes_; }; #endif diff --git a/TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc b/TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc index 5844670a1b8..80c3c981dd0 100644 --- a/TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc +++ b/TrackPropagation/SteppingHelixPropagator/src/SteppingHelixPropagator.cc @@ -5,27 +5,25 @@ * to MC and (eventually) data. * Implementation file contents follow. * - * $Date: 2006/10/06 00:37:31 $ - * $Revision: 1.16 $ + * $Date: 2006/08/25 20:58:03 $ + * $Revision: 1.12 $ * \author Vyacheslav Krutelyov (slava77) */ // // Original Author: Vyacheslav Krutelyov // Created: Fri Mar 3 16:01:24 CST 2006 -// $Id: SteppingHelixPropagator.cc,v 1.16 2006/10/06 00:37:31 slava77 Exp $ +// $Id: SteppingHelixPropagator.cc,v 1.12 2006/08/25 20:58:03 slava77 Exp $ // // #include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/VolumeBasedEngine/interface/VolumeBasedMagneticField.h" -#include "MagneticField/VolumeGeometry/interface/MagVolume.h" #include "Utilities/Timing/interface/TimingReport.h" +#include "TrackingTools/TrajectoryState/interface/SurfaceSideDefinition.h" #include "Geometry/Surface/interface/Cylinder.h" #include "Geometry/Surface/interface/Plane.h" -#include "Geometry/Surface/interface/Cone.h" #include "TrackPropagation/SteppingHelixPropagator/interface/SteppingHelixPropagator.h" #include "CLHEP/Matrix/DiagMatrix.h" @@ -49,9 +47,8 @@ SteppingHelixPropagator::SteppingHelixPropagator(const MagneticField* field, noMaterialMode_ = false; noErrorPropagation_ = false; applyRadX0Correction_ = false; - useMagVolumes_ = true; for (int i = 0; i <= MAX_POINTS; i++){ - svBuf_[i].covLoc = HepSymMatrix(6,0); + covLoc_[i] = HepSymMatrix(6,0); } } @@ -89,139 +86,195 @@ SteppingHelixPropagator::propagateWithPath(const FreeTrajectoryState& ftsStart, double pars[6] = { rPlane.x(), rPlane.y(), rPlane.z(), nPlane.x(), nPlane.y(), nPlane.z() }; - setIState(ftsStart); + //need to get rid of these conversions .. later + GlobalVector p3GV = ftsStart.momentum(); + GlobalPoint r3GP = ftsStart.position(); + Vector p3(p3GV.x(), p3GV.y(), p3GV.z()); + Point r3(r3GP.x(), r3GP.y(), r3GP.z()); + + int charge = ftsStart.charge(); + setIState(p3, r3, charge, + (ftsStart.hasError() && !noErrorPropagation_) + ? ftsStart.cartesianError().matrix() : HepSymMatrix(1,0), + propagationDirection()); Result result = propagate(PLANE_DT, pars); if (result != OK ) return TsosPP(); - FreeTrajectoryState ftsDest; - getFState(ftsDest); - TrajectoryStateOnSurface tsosDest(ftsDest, pDest); - const StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; + Vector p3F; + Point r3F; + HepSymMatrix covF; + - return TsosPP(tsosDest, svCurrent.path); + getFState(p3F, r3F, covF); + GlobalVector p3FGV(p3F.x(), p3F.y(), p3F.z()); + GlobalPoint r3FGP(r3F.x(), r3F.y(), r3F.z()); + SurfaceSide side = atCenterOfSurface; + GlobalTrajectoryParameters tParsDest(r3FGP, p3FGV, charge, field_); + CartesianTrajectoryError tCovDest(covF); + FreeTrajectoryState ftsDest = (ftsStart.hasError() && !noErrorPropagation_) + ? FreeTrajectoryState(tParsDest, tCovDest) + : FreeTrajectoryState(tParsDest); + if (ftsDest.hasError()) ftsDest.curvilinearError(); //call it so it gets created + + TrajectoryStateOnSurface tsosDest = TrajectoryStateOnSurface(ftsDest, pDest, side); + int cInd = cIndex_(nPoints_-1); + + return TsosPP(tsosDest, path_[cInd]); } std::pair<TrajectoryStateOnSurface, double> SteppingHelixPropagator::propagateWithPath(const FreeTrajectoryState& ftsStart, const Cylinder& cDest) const { - - setIState(ftsStart); - + //need to get rid of these conversions .. later + GlobalVector p3GV = ftsStart.momentum(); + GlobalPoint r3GP = ftsStart.position(); + Vector p3(p3GV.x(), p3GV.y(), p3GV.z()); + Point r3(r3GP.x(), r3GP.y(), r3GP.z()); double pars[6]; pars[RADIUS_P] = cDest.radius(); + int charge = ftsStart.charge(); + + setIState(p3, r3, charge, + (ftsStart.hasError() && !noErrorPropagation_) + ? ftsStart.cartesianError().matrix() : HepSymMatrix(1,0), + propagationDirection()); Result result = propagate(RADIUS_DT, pars); if (result != OK) return TsosPP(); - FreeTrajectoryState ftsDest; - getFState(ftsDest); - TrajectoryStateOnSurface tsosDest(ftsDest, cDest); - const StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; - return TsosPP(tsosDest, svCurrent.path); + Vector p3F; + Point r3F; + HepSymMatrix covF; + + + getFState(p3F, r3F, covF); + GlobalVector p3FGV(p3F.x(), p3F.y(), p3F.z()); + GlobalPoint r3FGP(r3F.x(), r3F.y(), r3F.z()); + SurfaceSide side = atCenterOfSurface; + GlobalTrajectoryParameters tParsDest(r3FGP, p3FGV, charge, field_); + CartesianTrajectoryError tCovDest(covF); + FreeTrajectoryState ftsDest = (ftsStart.hasError() && !noErrorPropagation_) + ? FreeTrajectoryState(tParsDest, tCovDest) + : FreeTrajectoryState(tParsDest); + if (ftsDest.hasError()) ftsDest.curvilinearError(); //call it so it gets created + + TrajectoryStateOnSurface tsosDest = TrajectoryStateOnSurface(ftsDest, cDest, side); + int cInd = cIndex_(nPoints_-1); + + return TsosPP(tsosDest, path_[cInd]); } std::pair<FreeTrajectoryState, double> SteppingHelixPropagator::propagateWithPath(const FreeTrajectoryState& ftsStart, const GlobalPoint& pDest) const { - setIState(ftsStart); - + //need to get rid of these conversions .. later + GlobalVector p3GV = ftsStart.momentum(); + GlobalPoint r3GP = ftsStart.position(); + Vector p3(p3GV.x(), p3GV.y(), p3GV.z()); + Point r3(r3GP.x(), r3GP.y(), r3GP.z()); double pars[6] = {pDest.x(), pDest.y(), pDest.z(), 0, 0, 0}; + int charge = ftsStart.charge(); + + setIState(p3, r3, charge, + (ftsStart.hasError() && !noErrorPropagation_) + ? ftsStart.cartesianError().matrix() : HepSymMatrix(1,0), + propagationDirection()); Result result = propagate(POINT_PCA_DT, pars); if (result != OK) return FtsPP(); - FreeTrajectoryState ftsDest; - getFState(ftsDest); - const StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; + Vector p3F; + Point r3F; + HepSymMatrix covF; + + + getFState(p3F, r3F, covF); + GlobalVector p3FGV(p3F.x(), p3F.y(), p3F.z()); + GlobalPoint r3FGP(r3F.x(), r3F.y(), r3F.z()); + GlobalTrajectoryParameters tParsDest(r3FGP, p3FGV, charge, field_); + CartesianTrajectoryError tCovDest(covF); + + FreeTrajectoryState ftsDest = (ftsStart.hasError() && !noErrorPropagation_) + ? FreeTrajectoryState(tParsDest, tCovDest) + : FreeTrajectoryState(tParsDest); + if (ftsDest.hasError()) ftsDest.curvilinearError(); //call it so it gets created + int cInd = cIndex_(nPoints_-1); - return FtsPP(ftsDest, svCurrent.path); + return FtsPP(ftsDest, path_[cInd]); } std::pair<FreeTrajectoryState, double> SteppingHelixPropagator::propagateWithPath(const FreeTrajectoryState& ftsStart, const GlobalPoint& pDest1, const GlobalPoint& pDest2) const { - if ((pDest1-pDest2).mag() < 1e-10) return FtsPP(); - setIState(ftsStart); - - double pars[6] = {pDest1.x(), pDest1.y(), pDest1.z(), - pDest2.x(), pDest2.y(), pDest2.z()}; - - Result result = propagate(LINE_PCA_DT, pars); - if (result != OK) return FtsPP(); - - - FreeTrajectoryState ftsDest; - getFState(ftsDest); - - const StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; - - return FtsPP(ftsDest, svCurrent.path); -} - - -void SteppingHelixPropagator::setIState(const FreeTrajectoryState& ftsStart) const { //need to get rid of these conversions .. later GlobalVector p3GV = ftsStart.momentum(); GlobalPoint r3GP = ftsStart.position(); Vector p3(p3GV.x(), p3GV.y(), p3GV.z()); Point r3(r3GP.x(), r3GP.y(), r3GP.z()); - + double pars[6] = {pDest1.x(), pDest1.y(), pDest1.z(), + pDest2.x(), pDest2.y(), pDest2.z()}; + int charge = ftsStart.charge(); - + setIState(p3, r3, charge, (ftsStart.hasError() && !noErrorPropagation_) ? ftsStart.cartesianError().matrix() : HepSymMatrix(1,0), propagationDirection()); - -} + Result result = propagate(LINE_PCA_DT, pars); + if (result != OK) return FtsPP(); -void SteppingHelixPropagator::setIState(const SteppingHelixPropagator::Vector& p3, - const SteppingHelixPropagator::Point& r3, int charge, - const HepSymMatrix& cov, PropagationDirection dir) const { - nPoints_ = 0; - loadState(svBuf_[cIndex_(nPoints_)], p3, r3, charge, cov, dir); - nPoints_++; -} -void SteppingHelixPropagator::getFState(FreeTrajectoryState& ftsDest) const{ Vector p3F; Point r3F; HepSymMatrix covF; + getFState(p3F, r3F, covF); GlobalVector p3FGV(p3F.x(), p3F.y(), p3F.z()); GlobalPoint r3FGP(r3F.x(), r3F.y(), r3F.z()); - GlobalTrajectoryParameters tParsDest(r3FGP, p3FGV, svBuf_[cIndex_(nPoints_-1)].q, field_); + GlobalTrajectoryParameters tParsDest(r3FGP, p3FGV, charge, field_); CartesianTrajectoryError tCovDest(covF); - ftsDest = (covF.num_row() >=5 && !noErrorPropagation_) + FreeTrajectoryState ftsDest = (ftsStart.hasError() && !noErrorPropagation_) ? FreeTrajectoryState(tParsDest, tCovDest) : FreeTrajectoryState(tParsDest); if (ftsDest.hasError()) ftsDest.curvilinearError(); //call it so it gets created + int cInd = cIndex_(nPoints_-1); + + return FtsPP(ftsDest, path_[cInd]); +} + + +void SteppingHelixPropagator::setIState(const SteppingHelixPropagator::Vector& p3, + const SteppingHelixPropagator::Point& r3, int charge, + const HepSymMatrix& cov, PropagationDirection dir) const { + nPoints_ = 0; + loadState(0, p3, r3, charge, cov, dir); + nPoints_++; } void SteppingHelixPropagator::getFState(SteppingHelixPropagator::Vector& p3, SteppingHelixPropagator::Point& r3, HepSymMatrix& cov) const{ - const StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; - p3 = svCurrent.p3; - r3 = svCurrent.r3; + int cInd = cIndex_(nPoints_-1); + p3 = p3_[cInd]; + r3 = r3_[cInd]; //update Emat only if it's valid - if (svCurrent.covLoc.num_row() >=5){ + if (covLoc_[cInd].num_row() >=5){ Vector xRep(1., 0., 0.); Vector yRep(0., 1., 0.); Vector zRep(0., 0., 1.); - const Vector* repI[3] = {&svCurrent.rep.lX, &svCurrent.rep.lY, &svCurrent.rep.lZ}; + const Vector* repI[3] = {&reps_[cInd].lX, &reps_[cInd].lY, &reps_[cInd].lZ}; const Vector* repF[3] = {&xRep, &yRep, &zRep}; initCovRotation(repI, repF, covRot_); - cov = svCurrent.covLoc.similarity(covRot_); + cov = covLoc_[cInd].similarity(covRot_); } else { - cov = svCurrent.covLoc; + cov = covLoc_[cInd]; } } @@ -231,13 +284,11 @@ SteppingHelixPropagator::Result SteppingHelixPropagator::propagate(SteppingHelixPropagator::DestType type, const double pars[6], double epsilon) const{ - StateInfo& svCurrent = svBuf_[cIndex_(nPoints_-1)]; - //check if it's going to work at all - double tanDist = 0; + double secTheta = 0; double dist = 0; - PropagationDirection refDirection = anyDirection; - Result result = refToDest(type, svCurrent, pars, dist, tanDist, refDirection); + bool isIncoming; + Result result = refToDest(type, nPoints_-1, pars, dist, secTheta, isIncoming); if (result != OK ) return result; @@ -248,45 +299,32 @@ SteppingHelixPropagator::propagate(SteppingHelixPropagator::DestType type, dir = propagationDirection(); oldDir = dir; int nOsc = 0; + int cInd = 0; - double distMag = 1e12; - double tanDistMag = 1e12; - while (makeNextStep){ - dStep = 1.; - svCurrent = svBuf_[cIndex_(nPoints_-1)]; - double curZ = svCurrent.r3.z(); - double curR = svCurrent.r3.perp(); - refDirection = propagationDirection(); - refToDest(type, svCurrent, pars, dist, tanDist, refDirection); + cInd = cIndex_(nPoints_-1); + double curZ = r3_[cInd].z(); + double curR = r3_[cInd].perp(); + refToDest(type, nPoints_-1, pars, dist, secTheta, isIncoming); if (propagationDirection() == anyDirection){ - dir = refDirection; + dir = isIncoming ? alongMomentum : oppositeToMomentum; } else { dir = propagationDirection(); } - if (useMagVolumes_){//need to know the general direction - refToMagVolume(svCurrent, dir, distMag, tanDistMag); - } - double rDotP = svCurrent.r3.dot(svCurrent.p3); - if ((fabs(curZ) > 1.5e3 || curR >800.) - && ((dir == alongMomentum && rDotP > 0) - || (dir == oppositeToMomentum && rDotP < 0) ) - ){ - dStep = fabs(tanDist) -1e-12; - } - if (fabs(tanDist) < dStep){ - dStep = fabs(tanDist); + if ((fabs(curZ) > 1.5e3 || curR >800.) && dir == alongMomentum) + dStep = fabs(dist*secTheta) -1e-12; + if (fabs(dist*secTheta) < dStep){ + dStep = fabs(dist*secTheta); if (type == POINT_PCA_DT){ //being lazy here; the best is to take into account the curvature - dStep = fabs(tanDist)*0.5; + dStep = fabs(dist*secTheta)*0.5; } } if (dStep > 1e-10){ - StateInfo& svNext = svBuf_[cIndex_(nPoints_)]; - makeAtomStep(svCurrent, svNext, dStep, dir, HEL_AS_F); - nPoints_++; svCurrent = svBuf_[cIndex_(nPoints_-1)]; + makeAtomStep(nPoints_-1, dStep, dir, HEL_AS_F); + nPoints_++; cInd = cIndex_(nPoints_-1); } if (oldDir != dir) nOsc++; oldDir = dir; @@ -297,14 +335,13 @@ SteppingHelixPropagator::propagate(SteppingHelixPropagator::DestType type, && fabs(dStep) < fabs(epsilon) ){ //now check if it's not a branch point (peek ahead at 1 cm) double nextDist = 0; - double nextTanDist = 0; - PropagationDirection nextRefDirection = anyDirection; - StateInfo& svNext = svBuf_[cIndex_(nPoints_)]; - makeAtomStep(svCurrent, svNext, 1., dir, HEL_AS_F); - nPoints_++; svCurrent = svBuf_[cIndex_(nPoints_-1)]; - refToDest(type, svCurrent, pars, nextDist, nextTanDist, nextRefDirection); + double nextSecTheta = 0; + bool nextIsIncoming = false; + makeAtomStep(nPoints_-1, 1., dir, HEL_AS_F); + nPoints_++; cInd = cIndex_(nPoints_-1); + refToDest(type, nPoints_-1, pars, nextDist, nextSecTheta, nextIsIncoming); if ( fabs(nextDist) > fabs(dist)){ - nPoints_--; svCurrent = svBuf_[cIndex_(nPoints_-1)]; + nPoints_--; cInd = cIndex_(nPoints_-1); result = OK; if (debug_){ std::cout<<"Found real local minimum in PCA"<<std::endl; @@ -320,7 +357,7 @@ SteppingHelixPropagator::propagate(SteppingHelixPropagator::DestType type, if (nPoints_ > MAX_STEPS || nOsc > 6) result = FAULT; - if (svCurrent.p3.mag() < 0.1 ) result = RANGEOUT; + if (p3_[cInd].mag() < 0.1 ) result = RANGEOUT; if ( curR > 20000 || fabs(curZ) > 20000 ) result = INACC; @@ -362,133 +399,121 @@ SteppingHelixPropagator::propagate(SteppingHelixPropagator::DestType type, std::cout<<"going to NOT IMPLEMENTED"<<std::endl; break; } - std::cout<<"Made "<<nPoints_-1<<" steps and stopped at(cur step) "<<svCurrent.r3<<std::endl; + std::cout<<"Made "<<nPoints_-1<<" steps and stopped at(cur step) "<<r3_[cInd]<<std::endl; } return result; } -void SteppingHelixPropagator::loadState(SteppingHelixPropagator::StateInfo& svCurrent, +void SteppingHelixPropagator::loadState(int ind, const SteppingHelixPropagator::Vector& p3, const SteppingHelixPropagator::Point& r3, int charge, const HepSymMatrix& cov, PropagationDirection dir) const{ - svCurrent.q = charge; - svCurrent.p3 = p3; - svCurrent.r3 = r3; - svCurrent.dir = dir == alongMomentum ? 1.: -1.; - - svCurrent.path = 0; // this could've held the initial path - svCurrent.radPath = 0; - - GlobalPoint gPoint(r3.x(), r3.y(), r3.z()); - GlobalVector bf = field_->inTesla(gPoint); - if (useMagVolumes_){ - GlobalPoint gPointNegZ(svCurrent.r3.x(), svCurrent.r3.y(), svCurrent.r3.z() > 0. ? -svCurrent.r3.z() : svCurrent.r3.z()); - const VolumeBasedMagneticField* vbField = dynamic_cast<const VolumeBasedMagneticField*>(field_); - if (vbField ){ - svCurrent.magVol = vbField->findVolume(gPointNegZ); - } else { - std::cout<<"Failed to cast into VolumeBasedMagneticField"<<std::endl; - } - if (debug_){ - std::cout<<"Got volume at "<<svCurrent.magVol<<std::endl; - } - } + int cInd = cIndex_(ind); + q_[cInd] = charge; + p3_[cInd] = p3; + r3_[cInd] = r3; + dir_[cInd] = dir == alongMomentum ? 1.: -1.; + + path_[cInd] = 0; // this could've held the initial path + radPath_[cInd] = 0; + + GlobalVector bf = field_->inTesla(GlobalPoint(r3.x(), r3.y(), r3.z())); - svCurrent.bf.set(bf.x(), bf.y(), bf.z()); - if (svCurrent.bf.mag() < 1e-6) svCurrent.bf.set(0., 0., 1e-6); + bf_[cInd].set(bf.x(), bf.y(), bf.z()); + if (bf_[cInd].mag() < 1e-6) bf_[cInd].set(0., 0., 1e-6); - setRep(svCurrent); + setReps(ind); // getLocBGrad(ind, 1e-1); - svCurrent.covLoc.assign(cov); + covLoc_[cInd].assign(cov); //update Emat only if it's valid - if (svCurrent.covLoc.num_row() >=5){ + if (covLoc_[cInd].num_row() >=5){ Vector xRep(1., 0., 0.); Vector yRep(0., 1., 0.); Vector zRep(0., 0., 1.); const Vector* repI[3] = {&xRep, &yRep, &zRep}; - const Vector* repF[3] = {&svCurrent.rep.lX, &svCurrent.rep.lY, &svCurrent.rep.lZ}; + const Vector* repF[3] = {&reps_[cInd].lX, &reps_[cInd].lY, &reps_[cInd].lZ}; initCovRotation(repI, repF, covRot_); - svCurrent.covLoc = svCurrent.covLoc.similarity(covRot_); + covLoc_[cInd] = covLoc_[cInd].similarity(covRot_); + // for (int ii = 1; ii<= 6; ii++) covLoc_[cInd](1,ii) = 0; } if (debug_){ - std::cout<<"Loaded at path: "<<svCurrent.path<<" radPath: "<<svCurrent.radPath - <<" p3 "<<" pt: "<<svCurrent.p3.perp()<<" phi: "<<svCurrent.p3.phi() - <<" eta: "<<svCurrent.p3.eta() - <<" "<<svCurrent.p3 - <<" r3: "<<svCurrent.r3 - <<" bField: "<<svCurrent.bf.mag() + std::cout<<"Loaded at "<<ind<<" path: "<<path_[cInd]<<" radPath: "<<radPath_[cInd] + <<" p3 "<<" pt: "<<p3_[cInd].perp()<<" phi: "<<p3_[cInd].phi() + <<" eta: "<<p3_[cInd].eta() + <<" "<<p3_[cInd] + <<" r3: "<<r3_[cInd] + <<" bField: "<<bf_[cInd].mag() <<std::endl; std::cout<<"Input Covariance in Global RF "<<cov<<std::endl; - std::cout<<"Covariance in Local RF "<<svCurrent.covLoc<<std::endl; + std::cout<<"Covariance in Local RF "<<covLoc_[cInd]<<std::endl; std::cout<<"Rotated by "<<covRot_<<std::endl; } + // std::cout<<"Load at "<<ind<<" path: "<<path_[cInd] + // <<" p3 "<<" pt: "<<p3_[cInd].perp()<<" phi: "<<p3_[cInd].phi()<<" eta: "<<p3_[cInd].eta() + // <<" "<<p3_[cInd] + // <<" r3: "<<r3_[cInd]<<std::endl; } -void SteppingHelixPropagator::getNextState(const SteppingHelixPropagator::StateInfo& svPrevious, - SteppingHelixPropagator::StateInfo& svNext, - double dP, SteppingHelixPropagator::Vector tau, - double dX, double dY, double dZ, double dS, double dX0, - const HepMatrix& dCovTransform) const{ - svNext.q = svPrevious.q; - svNext.dir = dS > 0.0 ? 1.: -1.; - svNext.p3 = tau; svNext.p3*=(svPrevious.p3.mag() - svNext.dir*fabs(dP)); - - svNext.r3 = svPrevious.r3; - Vector tmpR3 = svPrevious.rep.lX; tmpR3*=dX; - svNext.r3+= tmpR3; - tmpR3 = svPrevious.rep.lY; tmpR3*=dY; - svNext.r3+= tmpR3; - tmpR3 = svPrevious.rep.lZ; tmpR3*=dZ; - svNext.r3+= tmpR3; - svNext.path = svPrevious.path + dS; - svNext.radPath = svPrevious.radPath + dX0; - - - GlobalPoint gPoint(svNext.r3.x(), svNext.r3.y(), svNext.r3.z()); - - GlobalVector bf = field_->inTesla(gPoint); - svNext.bf.set(bf.x(), bf.y(), bf.z()); - if (svNext.bf.mag() < 1e-6) svNext.bf.set(0., 0., 1e-6); - if (useMagVolumes_){ - GlobalPoint gPointNegZ(svNext.r3.x(), svNext.r3.y(), svNext.r3.z() > 0. ? -svNext.r3.z() : svNext.r3.z()); - const VolumeBasedMagneticField* vbField = dynamic_cast<const VolumeBasedMagneticField*>(field_); - if (vbField ){ - svNext.magVol = vbField->findVolume(gPointNegZ); - } else { - std::cout<<"Failed to cast into VolumeBasedMagneticField"<<std::endl; - } - } +void SteppingHelixPropagator::incrementState(int ind, + double dP, SteppingHelixPropagator::Vector tau, + double dX, double dY, double dZ, double dS, double dX0, + const HepMatrix& dCovTransform) const{ + // TimeMe locTimer("SteppingHelixPropagator::incrementState"); + if (ind ==0) return; + int iPrev = ind-1; + int cInd = cIndex_(ind); + int cPrev = cIndex_(iPrev); + q_[cInd] = q_[cPrev]; + dir_[cInd] = dS > 0.0 ? 1.: -1.; + // std::cout<<tau.deltaPhi(p3_[cPrev])<<std::endl; + p3_[cInd] = tau; p3_[cInd]*=(p3_[cPrev].mag() - dir_[cInd]*fabs(dP)); + + r3_[cInd] = r3_[cPrev]; + Vector tmpR3 = reps_[cPrev].lX; tmpR3*=dX; + r3_[cInd]+= tmpR3; + tmpR3 = reps_[cPrev].lY; tmpR3*=dY; + r3_[cInd]+= tmpR3; + tmpR3 = reps_[cPrev].lZ; tmpR3*=dZ; + r3_[cInd]+= tmpR3; + path_[cInd] = path_[cPrev] + dS; + radPath_[cInd] = radPath_[cPrev] + dX0; + + + GlobalVector bf = field_->inTesla(GlobalPoint(r3_[cInd].x(), r3_[cInd].y(), r3_[cInd].z())); - setRep(svNext); + bf_[cInd].set(bf.x(), bf.y(), bf.z()); + if (bf_[cInd].mag() < 1e-6) bf_[cInd].set(0., 0., 1e-6); + + setReps(ind); // getLocBGrad(ind, 1e-1); //update Emat only if it's valid - if (svPrevious.covLoc.num_row() >=5){ - const Vector* repI[3] = {&svPrevious.rep.lX, &svPrevious.rep.lY, &svPrevious.rep.lZ}; - const Vector* repF[3] = {&svNext.rep.lX, &svNext.rep.lY, &svNext.rep.lZ}; + if (covLoc_[cPrev].num_row() >=5){ + const Vector* repI[3] = {&reps_[cPrev].lX, &reps_[cPrev].lY, &reps_[cPrev].lZ}; + const Vector* repF[3] = {&reps_[cInd].lX, &reps_[cInd].lY, &reps_[cInd].lZ}; initCovRotation(repI, repF, covRot_); covRot_ = covRot_*dCovTransform; - svNext.covLoc = svPrevious.covLoc.similarity(covRot_); + covLoc_[cInd] = covLoc_[cPrev].similarity(covRot_); } else { - svNext.covLoc.assign(svPrevious.covLoc); + covLoc_[cInd].assign(covLoc_[cPrev]); } if (debug_){ - std::cout<<"Now at path: "<<svNext.path<<" radPath: "<<svNext.radPath - <<" p3 "<<" pt: "<<svNext.p3.perp()<<" phi: "<<svNext.p3.phi() - <<" eta: "<<svNext.p3.eta() - <<" "<<svNext.p3 - <<" r3: "<<svNext.r3 - <<" dPhi: "<<acos(svNext.p3.unit().dot(svPrevious.p3.unit())) - <<" bField: "<<svNext.bf.mag() + std::cout<<"Now at "<<ind<<" path: "<<path_[cInd]<<" radPath: "<<radPath_[cInd] + <<" p3 "<<" pt: "<<p3_[cInd].perp()<<" phi: "<<p3_[cInd].phi() + <<" eta: "<<p3_[cInd].eta() + <<" "<<p3_[cInd] + <<" r3: "<<r3_[cInd] + <<" dPhi: "<<acos(p3_[cInd].unit().dot(p3_[cPrev].unit())) + <<" bField: "<<bf_[cInd].mag() <<std::endl; - std::cout<<"Covariance in Local RF "<<svNext.covLoc<<std::endl; + std::cout<<"Covariance in Local RF "<<covLoc_[cInd]<<std::endl; std::cout<<"Transformed from prev by "<<covRot_<<std::endl; std::cout<<"dCovTransform "<<dCovTransform<<std::endl; @@ -496,44 +521,48 @@ void SteppingHelixPropagator::getNextState(const SteppingHelixPropagator::StateI Vector yRep(0., 1., 0.); Vector zRep(0., 0., 1.); const Vector* repF[3] = {&xRep, &yRep, &zRep}; - const Vector* repI[3] = {&svNext.rep.lX, &svNext.rep.lY, &svNext.rep.lZ}; + const Vector* repI[3] = {&reps_[cInd].lX, &reps_[cInd].lY, &reps_[cInd].lZ}; initCovRotation(repI, repF, covRot_); - HepSymMatrix cov = svNext.covLoc.similarity(covRot_); + HepSymMatrix cov = covLoc_[cInd].similarity(covRot_); std::cout<<"Covariance in Global RF "<<cov<<std::endl; std::cout<<"Rotated by "<<covRot_<<std::endl; } } -void SteppingHelixPropagator::setRep(SteppingHelixPropagator::StateInfo& sv) const{ +void SteppingHelixPropagator::setReps(int ind) const{ + int cInd = cIndex_(ind); + Vector zRep(0., 0., 1.); - Vector tau = sv.p3/(sv.p3.mag()); - sv.rep.lX = tau; - sv.rep.lY = zRep.cross(tau); sv.rep.lY /= tau.perp(); - sv.rep.lZ = sv.rep.lX.cross(sv.rep.lY); + Vector tau = p3_[cInd]/(p3_[cInd].mag()); + reps_[cInd].lX = tau; + reps_[cInd].lY = zRep.cross(tau); reps_[cInd].lY /= tau.perp(); + reps_[cInd].lZ = reps_[cInd].lX.cross(reps_[cInd].lY); } -bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& svCurrent, - SteppingHelixPropagator::StateInfo& svNext, - double dS, +bool SteppingHelixPropagator::makeAtomStep(int iIn, double dS, PropagationDirection dir, SteppingHelixPropagator::Fancy fancy) const{ + // TimeMe locTimer("SteppingHelixPropagator::makeAtomStep"); + int cInd = cIndex_(iIn); if (debug_){ - std::cout<<"Make atom step "<<svCurrent.path<<" with step "<<dS<<" in direction "<<dir<<std::endl; + std::cout<<"Make atom step "<<iIn<<" with step "<<dS<<" in direction "<<dir<<std::endl; } + // HepMatrix dCTr(HepDiagMatrix(6,1));//unit transform is the default double dP = 0; - Vector tau = svCurrent.p3; tau/=tau.mag(); + Vector tau = p3_[cInd]; tau/=tau.mag(); dS = dir == alongMomentum ? fabs(dS) : -fabs(dS); - double p0 = svCurrent.p3.mag(); - double b0 = svCurrent.bf.mag(); - double kappa0 = 0.0029979*svCurrent.q*b0/p0; + double p0 = p3_[cInd].mag(); + double b0 = bf_[cInd].mag(); + double kappa0 = 0.0029979*q_[cInd]*b0/p0; if (fabs(kappa0) < 1e-12) kappa0 = 1e-12; double cosTheta = tau.z(); double sinTheta = sin(acos(cosTheta)); double cotTheta = fabs(sinTheta) > 1e-21 ? cosTheta/sinTheta : 1e21; + // double tanTheta = fabs(cosTheta) > 1e-21 ? sinTheta/cosTheta : 1e21; double phi = kappa0*dS; double cosPhi = cos(phi); double oneLessCosPhi = 1.-cosPhi; @@ -541,10 +570,10 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s double phiLessSinPhi = phi - sinPhi; double oneLessCpLessPSp = oneLessCosPhi - phi*sinPhi; double pCpLessSp = phi*cosPhi - sinPhi; - Vector bHat = svCurrent.bf; bHat /= bHat.mag(); - double bx = svCurrent.rep.lX.dot(bHat); - double by = svCurrent.rep.lY.dot(bHat); - double bz = svCurrent.rep.lZ.dot(bHat); + Vector bHat = bf_[cInd]; bHat /= bHat.mag(); + double bx = reps_[cInd].lX.dot(bHat); + double by = reps_[cInd].lY.dot(bHat); + double bz = reps_[cInd].lZ.dot(bHat); double oneLessBx2 = (1.-bx*bx); //components in local rf @@ -560,13 +589,13 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s // if (b0 < 1e-6){ // bfLGL[i] = 0.; // } else { -// bfLGL[i] = svCurrent.bfGradLoc[i]; bfLGL[i]/=b0; +// bfLGL[i] = bfGradLoc_[cInd][i]; bfLGL[i]/=b0; // } // } double dEdXPrime = 0; double radX0 = 1e24; - double dEdx = getDeDx(svCurrent, dEdXPrime, radX0); + double dEdx = getDeDx(iIn, dEdXPrime, radX0); double theta02 = 14.e-3/p0*sqrt(fabs(dS)/radX0); // .. drop log term (this is non-additive) theta02 *=theta02; if (applyRadX0Correction_){ @@ -574,7 +603,7 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s // if summed up along the path, should result in // theta_total^2 = Int_0^x0{ f(x)dX} = (13.6/p0)^2*x0*(1+0.036*ln(x0+1)) // x0+1 above is to make the result infrared safe. - double x0 = fabs(svCurrent.radPath); + double x0 = fabs(radPath_[cInd]); double dX0 = fabs(dS)/radX0; double alphaX0 = 13.6e-3/p0; alphaX0 *= alphaX0; double betaX0 = 0.038; @@ -597,11 +626,11 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s epsilonP0 = 1.+ dP/p0; omegaP0 = 1.0 + dS*dEdXPrime; - tmpR3 = svCurrent.rep.lX; tmpR3*=tauX; + tmpR3 = reps_[cInd].lX; tmpR3*=tauX; tau = tmpR3; - tmpR3 = svCurrent.rep.lY; tmpR3*=tauY; + tmpR3 = reps_[cInd].lY; tmpR3*=tauY; tau+=tmpR3; - tmpR3 = svCurrent.rep.lZ; tmpR3*=tauZ; + tmpR3 = reps_[cInd].lZ; tmpR3*=tauZ; tau+=tmpR3; //the stuff above is @@ -609,61 +638,60 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s dY = 1./kappa0*(bx*by*phiLessSinPhi - oneLessCosPhi*bz); dZ = 1./kappa0*(bx*bz*phiLessSinPhi + oneLessCosPhi*by); - if (svCurrent.covLoc.num_row() >=5){ - dCTransform_ = unit66_; - // //yuck - //case I: no "spatial" derivatives |--> dCtr({1,2,3,4,5,6}{1,2,3}) = 0 - dCTransform_(1,4) += -dS/(phi*p0)*pCpLessSp*oneLessBx2; - dCTransform_(1,5) += - dY/p0; - dCTransform_(1,6) += dZ/p0; + dCTransform_ = unit66_; + // //yuck + //case I: no "spatial" derivatives |--> dCtr({1,2,3,4,5,6}{1,2,3}) = 0 + dCTransform_(1,4) += -dS/(phi*p0)*pCpLessSp*oneLessBx2; + dCTransform_(1,5) += - dY/p0; + dCTransform_(1,6) += dZ/p0; - dCTransform_(2,4) += dS/phi/p0*(bx*by*pCpLessSp - bz*oneLessCpLessPSp); - dCTransform_(2,5) += dX/p0; - dCTransform_(2,6) += - cotTheta*dY/p0; + dCTransform_(2,4) += dS/phi/p0*(bx*by*pCpLessSp - bz*oneLessCpLessPSp); + dCTransform_(2,5) += dX/p0; + dCTransform_(2,6) += - cotTheta*dY/p0; - // dCTransform_(3,4) += dS/phi/p0*(bx*by*pCpLessSp + by*oneLessCpLessPSp) - 2.*dZ/p0; - dCTransform_(3,4) += dS/phi/p0*(bx*by*pCpLessSp + by*oneLessCpLessPSp) - 3.*dZ/p0; - dCTransform_(3,5) += cotTheta*dY/p0; - dCTransform_(3,6) += dX/p0; + // dCTransform_(3,4) += dS/phi/p0*(bx*by*pCpLessSp + by*oneLessCpLessPSp) - 2.*dZ/p0; + dCTransform_(3,4) += dS/phi/p0*(bx*by*pCpLessSp + by*oneLessCpLessPSp) - 3.*dZ/p0; + dCTransform_(3,5) += cotTheta*dY/p0; + dCTransform_(3,6) += dX/p0; - dCTransform_(4,4) += tauX*omegaP0 - 1.0 + phi*epsilonP0*oneLessBx2*sinPhi; - dCTransform_(4,5) += -tauY*epsilonP0; - dCTransform_(4,6) += tauZ*epsilonP0; + dCTransform_(4,4) += tauX*omegaP0 - 1.0 + phi*epsilonP0*oneLessBx2*sinPhi; + dCTransform_(4,5) += -tauY*epsilonP0; + dCTransform_(4,6) += tauZ*epsilonP0; - dCTransform_(5,4) += tauY*omegaP0 - phi*epsilonP0*(bx*by*sinPhi - bz*cosPhi); - dCTransform_(5,5) += tauX*epsilonP0 - 1.; - dCTransform_(5,6) += - cotTheta*tauY*epsilonP0; + dCTransform_(5,4) += tauY*omegaP0 - phi*epsilonP0*(bx*by*sinPhi - bz*cosPhi); + dCTransform_(5,5) += tauX*epsilonP0 - 1.; + dCTransform_(5,6) += - cotTheta*tauY*epsilonP0; - // dCTransform_(6,4) += tauZ*omegaP0 - phi*epsilonP0*(bx*bz*sinPhi + by*cosPhi) - // - 2.*tauZ*epsilonP0; - dCTransform_(6,4) += tauZ*omegaP0 - phi*epsilonP0*(bx*bz*sinPhi + by*cosPhi) - 3.*tauZ*epsilonP0; - dCTransform_(6,5) += cotTheta*tauY*epsilonP0; - dCTransform_(6,6) += tauX*epsilonP0 - 1.; + // dCTransform_(6,4) += tauZ*omegaP0 - phi*epsilonP0*(bx*bz*sinPhi + by*cosPhi) + // - 2.*tauZ*epsilonP0; + dCTransform_(6,4) += tauZ*omegaP0 - phi*epsilonP0*(bx*bz*sinPhi + by*cosPhi) - 3.*tauZ*epsilonP0; + dCTransform_(6,5) += cotTheta*tauY*epsilonP0; + dCTransform_(6,6) += tauX*epsilonP0 - 1.; - //mind the sign of dS and dP (dS*dP < 0 allways) - //covariance should grow no matter which direction you propagate - //==> take abs values. - svCurrent.covLoc(2,2) += theta02*dS*dS/3.; - svCurrent.covLoc(3,3) += theta02*dS*dS/3.; - svCurrent.covLoc(5,5) += theta02*p0*p0; - svCurrent.covLoc(6,6) += theta02*p0*p0; - svCurrent.covLoc(2,5) += theta02*fabs(dS)*p0/2.; - svCurrent.covLoc(3,6) += theta02*fabs(dS)*p0/2.; - - svCurrent.covLoc(4,4) += dP*dP*1.6/fabs(dS)*(1.0 + p0*1e-3); - //another guess .. makes sense for 1 cm steps 2./dS == 2 [cm] / dS [cm] at low pt - //double it by 1TeV - //not gaussian anyways - // derived from the fact that sigma_p/eLoss ~ 0.08 after ~ 200 steps - } + //mind the sign of dS and dP (dS*dP < 0 allways) + //covariance should grow no matter which direction you propagate + //==> take abs values. + covLoc_[cInd](2,2) += theta02*dS*dS/3.; + covLoc_[cInd](3,3) += theta02*dS*dS/3.; + covLoc_[cInd](5,5) += theta02*p0*p0; + covLoc_[cInd](6,6) += theta02*p0*p0; + covLoc_[cInd](2,5) += theta02*fabs(dS)*p0/2.; + covLoc_[cInd](3,6) += theta02*fabs(dS)*p0/2.; + + covLoc_[cInd](4,4) += dP*dP*1.6/fabs(dS)*(1.0 + p0*1e-3); + //another guess .. makes sense for 1 cm steps 2./dS == 2 [cm] / dS [cm] at low pt + //double it by 1TeV + //not gaussian anyways + // derived from the fact that sigma_p/eLoss ~ 0.08 after ~ 200 steps + break; case POL_1_F: case POL_2_F: case POL_M_F: //FIXME: this is still in Bfield rf - tau = svCurrent.rep.lX*phi*sinTheta + svCurrent.rep.lY*sinTheta + svCurrent.rep.lZ*cosTheta; + tau = reps_[cInd].lX*phi*sinTheta + reps_[cInd].lY*sinTheta + reps_[cInd].lZ*cosTheta; dP = dEdx*dS; dX = phi*dS/2.*sinTheta; dY = dS*sinTheta; @@ -675,26 +703,25 @@ bool SteppingHelixPropagator::makeAtomStep(SteppingHelixPropagator::StateInfo& s if (dir == oppositeToMomentum) dP = -fabs(dP); dP = dP > p0 ? p0-1e-5 : dP; - getNextState(svCurrent, svNext, dP, tau, dX, dY, dZ, dS, dS/radX0, + incrementState(iIn+1, dP, tau, dX, dY, dZ, dS, dS/radX0, dCTransform_); return true; } -double SteppingHelixPropagator::getDeDx(const SteppingHelixPropagator::StateInfo& sv, - double& dEdXPrime, double& radX0) const{ +double SteppingHelixPropagator::getDeDx(int iIn, double& dEdXPrime, double& radX0) const{ radX0 = 1.e24; dEdXPrime = 0.; if (noMaterialMode_) return 0; + int cInd = cIndex_(iIn); double dEdx = 0.; - double lR = sv.r3.perp(); - double lZ = fabs(sv.r3.z()); - double lEtaDet = sv.r3.eta(); + double lR = r3_[cInd].perp(); + double lZ = fabs(r3_[cInd].z()); //assume "Iron" .. seems to be quite the same for brass/iron/PbW04 //good for Fe within 3% for 0.2 GeV to 10PeV - double p0 = sv.p3.mag(); + double p0 = p3_[cInd].mag(); //0.065 (PDG) --> 0.044 to better match with MPV double dEdX_mat = -(11.4 + 0.96*fabs(log(p0*2.8)) + 0.033*p0*(1.0 - pow(p0, -0.33)) )*1e-3; @@ -705,35 +732,20 @@ double SteppingHelixPropagator::getDeDx(const SteppingHelixPropagator::StateInfo double dEdX_Fe = dEdX_mat; double dEdX_MCh = 0.053*dEdX_mat; //chambers on average double dEdX_Trk = 0.0114*dEdX_mat; - double dEdX_Vac = 0.0; double radX0_HCal = 1.44/0.8; //guessing double radX0_ECal = 0.89/0.7; double radX0_coil = 4.; // double radX0_Fe = 1.76; double radX0_MCh = 1e3; // - double radX0_Trk = 320.; + double radX0_Trk = 500.; double radX0_Air = 3.e4; - double radX0_Vac = 3.e9; //"big" number for vacuum //this should roughly figure out where things are //(numbers taken from Fig1.1.2 TDR and from geom xmls) - if (lR < 2.9){ //inside beampipe - dEdx = dEdX_Vac; radX0 = radX0_Vac; - } - else if (lR < 129){ - if (lZ < 294){ - dEdx = dEdx = dEdX_Trk; radX0 = radX0_Trk; - //somewhat empirical formula that ~ matches the average if going from 0,0,0 - //assuming "uniform" tracker material - //doesn't really track material layer to layer - double scaleRadX = lEtaDet > 1.5 ? 0.7724 : sin(2.*atan(exp(-0.5*lEtaDet))); - scaleRadX *= scaleRadX; - if (lEtaDet > 2 && lZ > 20) scaleRadX *= (lEtaDet-1.); - if (lEtaDet > 2.5 && lZ > 20) scaleRadX *= (lEtaDet-1.); - radX0 *= scaleRadX; - } + if (lR < 129){ + if (lZ < 294){ dEdx = dEdx = dEdX_Trk; radX0 = radX0_Trk; } else if (lZ < 372){ dEdx = dEdX_ECal; radX0 = radX0_ECal; }//EE averaged out over a larger space else if (lZ < 398){ dEdx = dEdX_HCal*0.05; radX0 = radX0_Air; }//betw EE and HE else if (lZ < 555){ dEdx = dEdX_HCal*0.96; radX0 = radX0_HCal/0.96; } //HE calor abit less dense @@ -792,7 +804,7 @@ double SteppingHelixPropagator::getDeDx(const SteppingHelixPropagator::StateInfo } else { if (lZ < 667) { - double bMag = sv.bf.mag(); + double bMag = bf_[cInd].mag(); if (bMag > 0.75 && ! (lZ > 500 && lR <500 && bMag < 1.15) && ! (lZ < 450 && lR > 420 && bMag < 1.15 ) ) { dEdx = dEdX_Fe; radX0 = radX0_Fe; }//iron @@ -823,31 +835,28 @@ int SteppingHelixPropagator::cIndex_(int ind) const{ SteppingHelixPropagator::Result SteppingHelixPropagator::refToDest(SteppingHelixPropagator::DestType dest, - const SteppingHelixPropagator::StateInfo& sv, - const double pars[6], - double& dist, double& tanDist, - PropagationDirection& refDirection) const{ + int ind, const double pars[6], + double& dist, double& secTheta, bool& isIncoming) const{ Result result = NOT_IMPLEMENTED; - double curZ = sv.r3.z(); - double curR = sv.r3.perp(); - + int cInd = cIndex_(ind); + double curZ = r3_[cInd].z(); + double curR = r3_[cInd].perp(); + switch (dest){ case RADIUS_DT: { - double cosDPhiPR = cos((sv.r3.deltaPhi(sv.p3))); dist = pars[RADIUS_P] - curR; - tanDist = dist/sv.p3.perp()*sv.p3.mag(); - refDirection = dist*cosDPhiPR > 0 ? - alongMomentum : oppositeToMomentum; + double cosDPhiPR = cos((r3_[cInd].deltaPhi(p3_[cInd]))); + secTheta = 1./p3_[cInd].perp()*p3_[cInd].mag(); + isIncoming = (dist*cosDPhiPR > 0 || curR < 2e-1); result = OK; } break; case Z_DT: { dist = pars[Z_P] - curZ; - tanDist = dist/sv.p3.z()*sv.p3.mag(); - refDirection = sv.p3.z()*dist > 0. ? - alongMomentum : oppositeToMomentum; + secTheta = 1./p3_[cInd].z()*p3_[cInd].mag(); + isIncoming = p3_[cInd].z()*dist > 0.; result = OK; } break; @@ -856,66 +865,33 @@ SteppingHelixPropagator::refToDest(SteppingHelixPropagator::DestType dest, Point rPlane(pars[0], pars[1], pars[2]); Vector nPlane(pars[3], pars[4], pars[5]); - double dRDotN = (sv.r3 - rPlane).dot(nPlane); + double dRDotN = (r3_[cInd] - rPlane).dot(nPlane); dist = fabs(dRDotN); - tanDist = dist/sv.p3.dot(nPlane)*sv.p3.mag(); - refDirection = (sv.p3.dot(nPlane))*dRDotN < 0. ? - alongMomentum : oppositeToMomentum; + secTheta = 1./p3_[cInd].dot(nPlane)*p3_[cInd].mag(); + isIncoming = (p3_[cInd].dot(nPlane))*dRDotN < 0.; result = OK; } break; - case CONE_DT: - { - //assumes the cone axis/vertex is along z - Point cVertex(pars[0], pars[1], pars[2]); - Vector relV3 = sv.r3 - cVertex; - double theta(pars[3]); - if (cVertex.perp() < 1e-5){ - double sinDTheta = sin(theta-relV3.theta()); - double cosDTheta = cos(theta-relV3.theta()); - bool isInside = sin(theta) > sin(relV3.theta()) - && cos(theta)*cos(relV3.theta()) > 0; - dist = isInside || cosDTheta > 0 ? - relV3.mag()*sinDTheta : relV3.mag(); - double normPhi = isInside ? - Geom::pi() - relV3.phi() : relV3.phi(); - double normTheta = theta > Geom::pi()/2. ? - (isInside ? 1.5*Geom::pi() - theta : theta - Geom::pi()/2.) - : (isInside ? Geom::pi()/2 - theta : theta + Geom::pi()/2); - //this is a normVector from the cone to the point - Vector norm; norm.setRThetaPhi(fabs(dist), normTheta, normPhi); - double cosDThetaP = cos(norm.theta() - sv.p3.theta()); - tanDist = dist/fabs(cosDThetaP); - refDirection = norm.dot(sv.p3) > 0 ? - oppositeToMomentum : alongMomentum; - if (debug_){ - std::cout<<"refToDest:toCone the point is " - <<(isInside? "in" : "out")<<"side the cone" - <<std::endl; - } - } - } - break; - // case CYLINDER_DT: - // break; +// case CONE_DT: +// break; +// case CYLINDER_DT: +// break; case PATHL_DT: { - double curS = fabs(sv.path); + double curS = fabs(path_[cInd]); dist = pars[PATHL_P] - curS; - tanDist = dist; - refDirection = pars[PATHL_P] > 0 ? - alongMomentum : oppositeToMomentum; + secTheta = 1.; + isIncoming = pars[PATHL_P] > 0 ? true : false; result = OK; } break; case POINT_PCA_DT: { Point pDest(pars[0], pars[1], pars[2]); - dist = (sv.r3 - pDest).mag()+ 1e-24;//add a small number to avoid 1/0 - tanDist = (sv.r3 - pDest).dot(sv.p3)/(sv.p3.mag()); - refDirection = tanDist < 0 ? - alongMomentum : oppositeToMomentum; + dist = (r3_[cInd] - pDest).mag()+ 1e-24;//add a small number to avoid 1/0 + secTheta = (r3_[cInd] - pDest).dot(p3_[cInd])/(dist*p3_[cInd].mag()); + isIncoming = secTheta < 0; result = OK; } break; @@ -926,15 +902,14 @@ SteppingHelixPropagator::refToDest(SteppingHelixPropagator::DestType dest, dLine = (dLine - rLine); dLine /= dLine.mag(); - Vector dR = sv.r3 - rLine; + Vector dR = r3_[cInd] - rLine; Vector dRPerp = dR - dLine*(dR.dot(dLine)); dist = dRPerp.mag() + 1e-24;//add a small number to avoid 1/0 - tanDist = dRPerp.dot(sv.p3)/(sv.p3.mag()); + secTheta = dRPerp.dot(p3_[cInd])/(dist*p3_[cInd].mag()); //angle wrt line - double cosAlpha = dLine.dot(sv.p3)/sv.p3.mag(); - tanDist *= fabs(1./sqrt(fabs(1.-cosAlpha*cosAlpha)+1e-96)); - refDirection = tanDist < 0 ? - alongMomentum : oppositeToMomentum; + double cosAlpha = dLine.dot(p3_[cInd])/p3_[cInd].mag(); + secTheta *= fabs(1./sqrt(fabs(1.-cosAlpha*cosAlpha)+1e-96)); + isIncoming = secTheta < 0; result = OK; } break; @@ -942,8 +917,8 @@ SteppingHelixPropagator::refToDest(SteppingHelixPropagator::DestType dest, { //some large number dist = 1e12; - tanDist = 1e12; - refDirection = anyDirection; + secTheta = 1e12; + isIncoming = true; result = NOT_IMPLEMENTED; } break; @@ -957,148 +932,14 @@ SteppingHelixPropagator::refToDest(SteppingHelixPropagator::DestType dest, std::cout<<std::endl; std::cout<<"refToDest output: " <<"\t dist"<< dist - <<"\t tanDist"<< tanDist - <<"\t refDirection"<< refDirection + <<"\t secTheta"<< secTheta + <<"\t isIncoming"<< isIncoming <<std::endl; } return result; } -SteppingHelixPropagator::Result -SteppingHelixPropagator::refToMagVolume(const SteppingHelixPropagator::StateInfo& sv, - PropagationDirection dir, - double& dist, double& tanDist) const{ - - Result result = NOT_IMPLEMENTED; - const MagVolume* cVol = sv.magVol; - - if (cVol == 0) return result; - const std::vector<VolumeSide> cVolFaces = cVol->faces(); - - double distToFace[6]; - double tanDistToFace[6]; - PropagationDirection refDirectionToFace[6]; - Result resultToFace[6]; - int iFDest = -1; - - if (debug_){ - std::cout<<"Trying volume "<<DDSolidShapesName::name(cVol->shapeType()) - <<" with "<<cVolFaces.size()<<" faces"<<std::endl; - } - - for (uint iFace = 0; iFace < cVolFaces.size(); iFace++){ - if (iFace > 5){ - std::cout<<"Too many faces"<<std::endl; - } - if (debug_){ - std::cout<<"Start with face "<<iFace<<std::endl; - } - const Plane* cPlane = dynamic_cast<const Plane*>(&cVolFaces[iFace].surface()); - const Cylinder* cCyl = dynamic_cast<const Cylinder*>(&cVolFaces[iFace].surface()); - const Cone* cCone = dynamic_cast<const Cone*>(&cVolFaces[iFace].surface()); - if (debug_){ - if (cPlane!=0) std::cout<<"The face is a plane at "<<cPlane<<std::endl; - if (cCyl!=0) std::cout<<"The face is a cylinder at "<<cCyl<<std::endl; - } - - double pars[6]; - DestType dType = UNDEFINED_DT; - if (cPlane != 0){ - GlobalPoint rPlane = cPlane->toGlobal(LocalPoint(0,0,0)); - GlobalVector nPlane = cPlane->toGlobal(LocalVector(0,0,1.)); nPlane = nPlane.unit(); - - if (sv.r3.z() < 0){ - pars[0] = rPlane.x(); pars[1] = rPlane.y(); pars[2] = rPlane.z(); - pars[3] = nPlane.x(); pars[4] = nPlane.y(); pars[5] = nPlane.z(); - } else { - pars[0] = rPlane.x(); pars[1] = rPlane.y(); pars[2] = -rPlane.z(); - pars[3] = nPlane.x(); pars[4] = nPlane.y(); pars[5] = -nPlane.z(); - } - dType = PLANE_DT; - } else if (cCyl != 0){ - if (debug_){ - std::cout<<"Cylinder at "<<cCyl->position() - <<" rorated by "<<cCyl->rotation() - <<std::endl; - } - pars[RADIUS_P] = cCyl->radius(); - dType = RADIUS_DT; - } else if (cCone != 0){ - if (debug_){ - std::cout<<"Cone at "<<cCone->position() - <<" rorated by "<<cCone->rotation() - <<" vertex at "<<cCone->vertex() - <<" angle of "<<cCone->openingAngle() - <<std::endl; - } - if (sv.r3.z() < 0){ - pars[0] = cCone->vertex().x(); pars[1] = cCone->vertex().y(); - pars[2] = cCone->vertex().z(); - pars[3] = cCone->openingAngle(); - } else { - pars[0] = cCone->vertex().x(); pars[1] = cCone->vertex().y(); - pars[2] = -cCone->vertex().z(); - pars[3] = Geom::pi() - cCone->openingAngle(); - } - dType = CONE_DT; - } else { - std::cout<<"Unknown surface"<<std::endl; - resultToFace[iFace] = UNDEFINED; - continue; - } - resultToFace[iFace] = - refToDest(dType, sv, pars, - distToFace[iFace], tanDistToFace[iFace], refDirectionToFace[iFace]); - - if (refDirectionToFace[iFace] == dir){ - double sign = dir == alongMomentum ? 1. : -1.; - GlobalPoint gPointEst(sv.r3.x(), sv.r3.y(), sv.r3.z()); - GlobalVector gDir(sv.p3.x(), sv.p3.y(), sv.p3.z()); - gDir /= sv.p3.mag(); - gPointEst += sign*fabs(fabs(distToFace[iFace])-2e-4)*gDir; - if (debug_){ - std::cout<<"Linear est point closer to the face less 2 um "<<gPointEst - <<std::endl; - } - GlobalPoint gPointEstNegZ(gPointEst.x(), gPointEst.y(), - gPointEst.z() > 0 ? -gPointEst.z() : gPointEst.z()); - if ( cVol->inside(gPointEstNegZ) ){ - if (debug_){ - std::cout<<"The point is inside the volume"<<std::endl; - } - //OK, guessed a point still inside the volume - if (iFDest == -1){ - iFDest = iFace; - } else { - if (fabs(tanDistToFace[iFDest]) > fabs(tanDistToFace[iFace])){ - iFDest = iFace; - } - } - } else { - if (debug_){ - std::cout<<"The point is NOT inside the volume"<<std::endl; - } - } - } - - } - if (iFDest != -1){ - result = OK; - dist = distToFace[iFDest]; - tanDist = tanDistToFace[iFDest]; - if (debug_){ - std::cout<<"Got a point near closest boundary -- face "<<iFDest<<std::endl; - } - } else { - if (debug_){ - std::cout<<"Failed to find a dest point inside the volume"<<std::endl; - } - } - - return result; -} - //transforms 6x6 "local" cov matrix (r_3x3, p_3x3) void SteppingHelixPropagator::initCovRotation(const SteppingHelixPropagator::Vector* repI[3], const SteppingHelixPropagator::Vector* repF[3], @@ -1117,18 +958,19 @@ void SteppingHelixPropagator::initCovRotation(const SteppingHelixPropagator::Vec } -void SteppingHelixPropagator::getLocBGrad(SteppingHelixPropagator::StateInfo& sv, - double delta) const{ +void SteppingHelixPropagator::getLocBGrad(int ind, double delta) const{ + int cInd = cIndex_(ind); + //yuck Point r3[3]; - r3[0] = sv.r3 + sv.rep.lX*delta; - r3[1] = sv.r3 + sv.rep.lY*delta; - r3[2] = sv.r3 + sv.rep.lZ*delta; + r3[0] = r3_[cInd] + reps_[cInd].lX*delta; + r3[1] = r3_[cInd] + reps_[cInd].lY*delta; + r3[2] = r3_[cInd] + reps_[cInd].lZ*delta; double bVal[3]; - double bVal0 = sv.bf.mag(); + double bVal0 = bf_[cInd].mag(); for (int i = 0; i < 3; i++){ bVal[i] = field_->inTesla(GlobalPoint(r3[i].x(), r3[i].y(), r3[i].z())).mag(); } - sv.bfGradLoc.set((bVal[0] -bVal0)/delta, (bVal[1] -bVal0)/delta, (bVal[2] -bVal0)/delta); + bfGradLoc_[cInd].set((bVal[0] -bVal0)/delta, (bVal[1] -bVal0)/delta, (bVal[2] -bVal0)/delta); } diff --git a/TrackingTools/AnalyticalJacobians/TagLog b/TrackingTools/AnalyticalJacobians/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/TrackingTools/IPTools/doc/html/index.html b/TrackingTools/IPTools/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TrackingTools/IPTools/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TrackingTools/IPTools/doc/html/overview.html b/TrackingTools/IPTools/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TrackingTools/IPTools/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TrackingTools/RecoGeometry/doc/html/index.html b/TrackingTools/RecoGeometry/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TrackingTools/RecoGeometry/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TrackingTools/RecoGeometry/doc/html/overview.html b/TrackingTools/RecoGeometry/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TrackingTools/RecoGeometry/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TrackingTools/RoadSearchEventFilter/doc/html/index.html b/TrackingTools/RoadSearchEventFilter/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TrackingTools/RoadSearchEventFilter/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TrackingTools/RoadSearchEventFilter/doc/html/overview.html b/TrackingTools/RoadSearchEventFilter/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TrackingTools/RoadSearchEventFilter/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/TrackingTools/TrackAssociator/tools/classdiagram b/TrackingTools/TrackAssociator/tools/classdiagram deleted file mode 100755 index d04953d69cb..00000000000 --- a/TrackingTools/TrackAssociator/tools/classdiagram +++ /dev/null @@ -1,446 +0,0 @@ -#!/bin/env perl -################################################################# -# -# File and Version Information: -# $Id$ -# -# Environment: -# Software developed for the CMS Detector at CERN LHC -# -# Author List: -# Dmytro Kovalskyi -# -################################################################# -use warnings; -use strict; -use Data::Dumper; -use Getopt::Long; - -########################################################### -## Default setings -########################################################### -my $cmssw_base = $ENV{CMSSW_BASE}; -my $cmssw_release_base = $ENV{CMSSW_RELEASE_BASE}; -my ($debug,$className,$fileName,$show,$verbose); -my $outputFile = "diagram.violet"; -my $violet = "/afs/cern.ch/user/d/dmytro/public/files/violet-0.15.jar"; -my $dX = 300; -my $dY = 200; -my $X0 = 30; -my $Y0 = 30; - -# structure -my %classTree = (); -# each class is: -# perents [], -# new_public_methods {}, -# other_public_methods {}, -# variables [], -# files [] - -sub help{ - system("perldoc $0"); - exit; - } - -help() if (@ARGV==0); -GetOptions("help|h" => sub{ help() } - , "debug|d" => \$debug - , "output|o=s" => \$outputFile - , "verbose|v" => \$verbose - , "class|c=s" => \$className - , "file|f=s" => \$fileName - , "show|s" => \$show - , "editor|e=s" => \$violet -) - or help(); - -########################################################### - -die "Source file name is not provided. Abort" if (!defined $fileName); -die "Class name is not provided. Abort" if (!defined $className); - -sub parents{ - my @orderedClasses = @_; - my @allParents = (); - # die scalar @{$orderedClasses[0]},"\n"; - # print Dumper @{$list}; - foreach my $class( @{$orderedClasses[0]} ){ - push @allParents, @{$classTree{$class}->[0]}; - } - my %parents = (); - foreach my $parent(@allParents){ - if (! defined findClassInOrderList(\@orderedClasses,$parent)){ - $parents{$parent}++; - } - } - print "Unique parents of ",join(" ",@{$orderedClasses[0]}),":\n", join("\n",keys %parents),"\n" if (defined $debug); - # print Dumper @orderedClasses; - return keys %parents; -} - -sub findClassInOrderList{ - my ($list,$className) = @_; - my $iX = 0; - foreach my $x(@{$list}){ - my $iY = 0; - foreach my $class(@{$x}){ - return ($iX,$iY) if ($class eq $className); - $iY++; - } - $iX++; - } - return undef; -} - -sub getXmlCompliantText{ - my $text = shift; - $text =~ s/\</</g; - $text =~ s/\>/>/g; - $text =~ s/\&/&/g; - $text =~ s/\=/&eq;/g; - $text =~ s/\//&slash;/g; - return $text; -} - -sub print_uml{ - open(OUT,">$outputFile")||die "Cannot open file $outputFile\n$!\n"; - print OUT <<"EOF"; -<?xml version="1.0" encoding="UTF-8"?> -<java version="1.5.0_06" class="java.beans.XMLDecoder"> - <object class="com.horstmann.violet.ClassDiagramGraph"> -EOF - - my $x = $X0; - my $y = $Y0; - - # sort classes for presentation - my @orderedClasses = ([$className]); - - while (scalar parents(@orderedClasses) > 0){ - my @parents = parents(@orderedClasses); - unshift @orderedClasses, \@parents; - } - - my $connections = ""; - foreach my $classSet (@orderedClasses){ - $x = $X0; - foreach my $class (@{$classSet}){ - print OUT '<void method="addNode"><object id="'.$class.'" '; - print OUT 'class="com.horstmann.violet.ClassNode">',"\n"; - print OUT '<void property="attributes"><void property="text"><string>'; - foreach my $var(@{$classTree{$class}->[3]}){ - print OUT getXmlCompliantText("$var\n"); - } - print OUT "</string></void></void>\n"; - print OUT '<void property="methods"><void property="text"><string>'; - foreach my $method(sort keys %{$classTree{$class}->[2]}){ - print OUT getXmlCompliantText("$method()\n"); - } - print OUT "</string></void></void>\n"; - print OUT '<void property="name"><void property="text"><string>'.($class).'</string></void></void></object>'; - print OUT '<object class="java.awt.geom.Point2D$Double"><void method="setLocation"><double>'.($x).'</double>'; - print OUT '<double>'.($y)."</double></void></object></void>\n"; - $x+=$dX; - foreach my $parent(@{$classTree{$class}->[0]}){ - $connections .= '<void method="connect"><object class="com.horstmann.violet.ClassRelationshipEdge">'; - # $connections .= '<void property="bentStyle"><object class="com.horstmann.violet.BentStyle" field="VH"/></void>'; - $connections .= '<void property="endArrowHead"><object class="com.horstmann.violet.ArrowHead" field="TRIANGLE"/>'; - $connections .= '</void></object><object idref="'.($class).'"/><object idref="'.($parent).'"/></void>'."\n"; - } - } - $y+=$dY; - } - print OUT "$connections\n</object></java>\n"; - close OUT; -} - -sub get_parents{ - my ($inheritance) = @_; - my @parents = (); - my @classes = split(/\,/,$inheritance); - my $public_inheritance = 0; - foreach my $class (@classes){ - print "debug: $class\n" if (defined $debug); - $class =~ s/virtual//gs; - if ($class =~ /^\s*public\s/i){ - $class =~ s/^\s*public\s+//i; - $public_inheritance = 1; - } - if ($class =~ /^\s*private\s/i){ - $class =~ s/^\s*private\s+//i; - $public_inheritance = 0; - } - if ($class =~ /^\s*protected\s/i){ - $class =~ s/^\s*protected\s+//i; - $public_inheritance = 0; - } - if ($public_inheritance && $class =~ /^\s*(\S+)\s*$/){ - my $className = $1; - # strip out templates - $className =~ s/\<.*?\>//g; - push @parents,$className; - } - print "debug: $class\n" if(defined $debug); - } - return @parents; -} - -sub get_details{ - my $source = shift; - my $className = shift; - my %methods = (); - my @data = (); - # first get rid of blocks in {} - # to do this for implementations we need to repeat a few times - # print "debug:\n$source\n" if (defined $debug); - while ($source =~ s/\{[^\}\{]*\}/;/gs){} - $source =~ s/\}.*//gs; - - # get rid of method arguments - $source =~ s/\([^\)]+\)/\(\)/gs; - - # get rid of compiler commands - $source =~ s/\#.*$//mg; - - print "debug:\n$source\n" if (defined $debug); - - - # # get rid of constructors - # $source =~ s/$className\s*\(\).*?\;//sg; - - # # get rif of destructor traces - # $source =~ s/~//sg; - - $source =~ s/\n\s*\n/\n/sg; - - my @blocks = split(/;/,$source); - my $public_block = 0; - foreach my $block(@blocks){ - $public_block = 1 if ($block =~ s/^\s*public\s*://i); - $public_block = 0 if ($block =~ s/^\s*private\s*://i); - $public_block = 0 if ($block =~ s/^\s*protected\s*://i); - $block =~ s/\~+//; - - print "### debug: $block\n" if (defined $debug); - - if ($block =~ /([^\s\:]+)\s*\(\)/s){ - my $match = $1; - # found method - $match =~ s/^\*//; - $match =~ s/^\&//; - next if($match eq $className); - $methods{$match}++ if ($public_block); # ignore non-public methods. - }else{ - next if ( ($block =~ /^\s*enum /) - || ($block =~ /^\s*class /) - || ($block =~ /^\s*struct /) - || ($block =~ /^\s*template/) - || ($block =~ /^\s*friend\s+class /) - || ($block =~ /^\s*const /) - || ($block =~ /^\s*typedef /) - || ($block =~ /^\s*using /)); - $block =~ s/\n/ /g; - $block =~ s/\s+/ /g; - - push @data, $block if($block =~ /\S/); - } - } - - return [\%methods,\@data]; -} - -sub find_class{ - my ($fileNames, $className) = @_; - foreach my $fileName (@{$fileNames}){ - my $file = $fileName; - $file = "$cmssw_base/src/$fileName" if (! -e $file); - $file = "$cmssw_release_base/src/$fileName" if (! -e $file); - die "Cannot find file $fileName. Abort\n" if (! -e $file); - - # search for class defenition - my @parents = (); - my $source = `cat $file`; - print "processing file $file ...\n" if (defined $debug); - # get rid of comments - $source =~ s/\/\*.*?\*\///gs; - $source =~ s/\/\/.*$//mg; - my $full_source = $source; - if ($source =~ s/.*?class\s+$className([^\w\s\_\{]|\s*)([^\;\(\)\{]*?)\{//is){ - print "debug:\n$source\n" if (defined $debug); - my $inheritance = "$1$2"; - $inheritance =~ s/.*?://; $inheritance =~ s/\n//g; - @parents = get_parents($inheritance); - if(defined $debug){ - print "class $className inherits from\n"; - foreach my $parent(@parents){ - print "\t$parent\n"; - } - } - - ## search for public methods and data. - - my $details = get_details($source,$className); - my %methods = %{$details->[0]}; - my @data = @{$details->[1]}; - if (defined $debug){ - print "public methods:\n"; - foreach my $method (sort keys %methods){ - print "\t$method()\n"; - } - print "data:\n"; - foreach my $var (@data){ - print "\t$var\n"; - } - } - - my @fileList = (); - # collect include files information if there are any parents. - if (scalar @parents > 0){ - # @fileList = ($full_source =~ /\#include\s*[\"\<]([^\"\>]+)[\"\<]/gm); - @fileList = ($full_source =~ /^\#include\s*\W([A-Z][^\"\>\<]+.h)/gm); - push @fileList, $fileName; - if (defined $debug){ - print "Include files:\n"; - foreach my $file(@fileList){ - print "\t$file\n"; - } - } - } - return [\@parents,{},\%methods,\@data,\@fileList]; - } - } - if (defined $debug){ - print "Cannot find class $className among files:\n"; - foreach my $file(@{$fileNames}){ - print "\t$file\n"; - } - } - return undef; -} - -# name of classes that has to be analyzed -# along with files that can contain information about these classes -my @classesToProcess = (); -unshift @classesToProcess, [[$fileName],$className]; -while (scalar @classesToProcess > 0){ - my $classInfo = find_class(@{$classesToProcess[0]}); - print "Cannot find class $classesToProcess[0]->[1]\n" if (! defined $classInfo); - # TODO: sort includes by a resonable chance to find a class defenition - - $classTree{$classesToProcess[0]->[1]} = $classInfo; - shift @classesToProcess; - - # check that all classes are known - foreach my $parent (@{$classInfo->[0]}){ - unshift @classesToProcess, [$classInfo->[4],$parent] if (! defined $classTree{$parent}); - } - print "number of classes to analyze: ", scalar @classesToProcess, "\n\n" if (defined $debug); -} -print_uml(); - -if (defined $show){ - if (! -e "$violet"){ - print "Cannot find Violet editor: $violet. Exit.\n"; - }else{ - system("java -jar $violet $outputFile&"); - } -} - -exit; - -=head1 NAME - -classdiagram - a tool to analyze inheritance structure of C++ classes in CMSSW environment - -=head1 SYNOPSYS - -classdiagram [-h|--help] [-c|--class <class name>] [-f|--file <interface file>] [-s|--show] - [-o|--output <output file>] [-d|--debug] [-e|--editor <jar file>] - -=head1 OPTIONS - -=over - -=item -c, --class <class name> - -Name of the class to analyze. - -=item -f, --file <file> - -Name of the file that contains declaration of the class. - -=item -s, --show - -Open the output file with Violet. - -=item -o, --output <file> - -Output file name to store the XML version of the class diagram. - -=item -e, --editor <jar file> - -Specify the jar file of Violet editor location - -=item -h, --help - -=back - -=head1 DESCRIPTION - -classdiagram is a simple tool to analyze a class structure in CMSSW environment. Its main -goal is to provide a quick view of the most important aspects of a class hierarchy in the -form of UML class diagram. The standard CMSSW code browsing and search tools, such as -Doxygen and LXR provide all necessary information that one needs to understand the class -structure, but unfortunately quite often amount of details can be overwhelming to get an -idea of how classes are organized quickly. - -The program is based on a assumption that in most cases it is sufficient to know class -data members and public methods to get an idea of what this class can and cannot do. -Stripping out the rest one can get a compact and easy to read class diagram, which -normally fits in the working window. It is also assumed that all public methods and -data members have meaningful names, otherwise it is close to impossible to get a -quick overview of the class structure without reading and understanding the source code -and/or class documentation. - -The output of the program is an XML data file in the format of Violet UML editor -developed by Cay Horstmann, which is a free Java based graphical editor with an -intuitive interface. http://horstmann.com/violet/. The editor allows you to modify, -save and even export as a gif image the class diagram. - -classdiagram takes as input a class name and a header file where the interface -is defined. It parses the code looking for base class information in the include -files. A typical way to use it: - -=over - -classdiagram -f Geometry/Surface/interface/BoundPlane.h -c BoundPlane - -=back - -or - -=over - -classdiagram -f Geometry/Surface/interface/BoundPlane.h -c BoundPlane -s - -=back - -In the first example the class diagram is built for class BoundPlane and stored -in an XML format in diagram.violet file. The second example also starts Violet -editor which to show the class diagram. - -WARNING: since distributing properly classes in the class diagram can be -non-trivial task, it is expected that a user will move classes around to make -the diagram look the he/she likes. No information is lost or changed in such -manipulations. - -=head1 AUTHOR - -Dmytro Kovalskyi, Unversity of California - -dmytro@slac.standford.edu - -Santa Barbar, 2006 - -=cut diff --git a/TrackingTools/TrajectoryFiltering/doc/html/index.html b/TrackingTools/TrajectoryFiltering/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/TrackingTools/TrajectoryFiltering/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/TrackingTools/TrajectoryFiltering/doc/html/overview.html b/TrackingTools/TrajectoryFiltering/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/TrackingTools/TrajectoryFiltering/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Utilities/General/interface/RedirectedSB.h b/Utilities/General/interface/RedirectedSB.h deleted file mode 100644 index 1fdc44b0dfd..00000000000 --- a/Utilities/General/interface/RedirectedSB.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef RedirectedSB_H -#define RedirectedSB_H - -#include<iosfwd> -#include<sstream> -#include <streambuf> - -/** rederect this streambuf to LOG - */ -template<typename LOG> -class RedirectedSB : public std::stringbuf { -public: - typedef std::stringbuf super; - - explicit RedirectedSB(LOG * ilog=0) : m_log(ilog){} - - LOG * log() { return m_log;} - LOG * log(LOG * ilog) { return m_log=ilog;} - int sync() { - int jj = - std::stringbuf::sync(); - if (m_log) (*m_log) << (*this).str(); - (*this).str(""); - return jj; - } - - -private: - LOG * m_log; -}; - -#endif // RedirectedSB_H diff --git a/Utilities/ReleaseScripts/BuildFile b/Utilities/ReleaseScripts/BuildFile index 5657a244828..e69de29bb2d 100644 --- a/Utilities/ReleaseScripts/BuildFile +++ b/Utilities/ReleaseScripts/BuildFile @@ -1,2 +0,0 @@ -<export> -</export> diff --git a/Utilities/ReleaseScripts/scripts/CreateCVSPackage.pl b/Utilities/ReleaseScripts/scripts/CreateCVSPackage.pl index c18d14277c6..96a0a51e1f3 100755 --- a/Utilities/ReleaseScripts/scripts/CreateCVSPackage.pl +++ b/Utilities/ReleaseScripts/scripts/CreateCVSPackage.pl @@ -1,54 +1,52 @@ -#!/usr/bin/perl -w +#!/usr/bin/perl #____________________________________________________________________ # File: CreateCVSPackage.pl #____________________________________________________________________ # # Author: Shaun ASHBY <Shaun.Ashby@cern.ch> # Update: 2006-04-28 09:50:38+0200 -# Revision: $Id: CreateCVSPackage.pl,v 1.8 2006/06/20 12:37:38 sashby Exp $ +# Revision: $Id: CreateCVSPackage.pl,v 1.9 2006/07/06 10:39:35 sashby Exp $ # # Copyright: 2006 (C) Shaun ASHBY # #-------------------------------------------------------------------- -use Cwd; +use Cwd qw(cwd); use Getopt::Long (); use File::Basename; -use File::Path; # Fixed parameters: my $cvs = '/usr/bin/cvs'; -my $projectroot='CMSSW'; +my $projectroot = 'CMSSW'; my $cvsroot = ':kserver:cmscvs.cern.ch:/cvs_server/repositories/'.$projectroot; # Use CVSROOT to override: -if ($ENV{CVSROOT}) - { - $cvsroot = $ENV{CVSROOT}; - } - -my ($subsystem,$packagename,$fullpackagename); -my ($principaladmin); -my $principaladmins={}; -my $subsystemadmin; -my $packagelist; - -# Arrays of developers and admins: -my ($developeridlist,$adminidlist); -# Hash which will contain all the info for -# the developers/admins of the package. By +if ($ENV{CVSROOT}) { + $cvsroot = $ENV{CVSROOT}; +} + +# List of packages to create: +my $actionlist = new ActionList; +# Objects which will contain all the info for +# the developers/admins of the packages. By # default, the principal admin is the first # one to appear on the command line after the # --admin option: -my $developers={}; +my $developerlist; +my $adminlist; +my ($packagelist,$developeridlist,$adminidlist); +# Batch file mode: my $batchfile; my %opts; $opts{VERBOSE} = 0; # non-verbose by default; -$opts{DEBUG} = 0; # Debugging off by default; -$opts{CLEAN} = 1; # Remove the checked out directories by default; -$opts{BATCH} = $opts{USE_WGET} = $opts{TCQUERY} = 0; # Normal operation is commandline rather than file or - # wget from DB as source of new packages/admin/developer info; -$opts{UPDATE_TC} = 0; # We require a second command to update the tag collector package list; +$opts{DEBUG} = 0; # Debugging off by default; +$opts{CLEAN} = 1; # Remove the checked out directories by default; +$opts{BATCH} = $opts{USE_WGET} = $opts{TCQUERY} = 0; +# Normal operation is commandline rather than file or +# wget from DB as source of new packages/admin/developer info; +$opts{UPDATE_TC} = 0; # We require a second command to update the + # tag collector package list; +# Process options: my %options = ( "packagename=s" => sub { $packagelist = [ split(" ",$_[1]) ]; }, "developers=s" => sub { $developeridlist=&proc_ilist($_[1]); }, @@ -66,472 +64,565 @@ my %options = ( # Get the options using Getopt: Getopt::Long::config qw(default no_ignore_case require_order); -if (! Getopt::Long::GetOptions(\%opts, %options)) - { - print STDERR "$0: Error with arguments.","\n"; - } -else - { - # Check for batch mode. If batch is active, no need to check for - # the info from cmdline: - if ($opts{BATCH}) - { - print "Running in batch mode: reading instructions from $batchfile.\n"; - &set_admins_from_file(); - } - elsif ($opts{USE_WGET}) - { - # We use a wget request to the database (via a CGI script): - print "Running in batch mode: getting approved packages from the TagCollector.\n"; - &set_admins_from_wget_req(); - } - elsif ($opts{UPDATE_TC}) - { - print "Updating approved package list in the TagCollector.\n"; - # Reset the TC: - my $rv = &update_tc(); - exit($rv); - } - elsif ($opts{TCQUERY}) - { - # Query th tag collector and dump the package list: - &query_tc_for_new_packages(); - print "Done\n"; - exit(0); - } - else - { - # Build the list of developers and admins: - &set_admins(); - } - - # Loop over the packages stored in the developers info hash: - foreach $pk (keys %$developers) - { - $fullpackagename = $pk; - $principaladmin=$principaladmins->{$fullpackagename}; - &runit(); - } - - print "Done\n"; - } - -sub runit() - { - # We must have a package name: - die basename($0),": No package name given!\n", unless ($fullpackagename); - # We must have developer names as a list: - die basename($0),": No developers given!\n", unless ($#$developeridlist > -1); - # We must have a package admin: - die basename($0),": No package admins given!\n", unless ($#$adminidlist > -1); - - # Get subsystem and package parts: - ($subsystem,$packagename) = split("/",$fullpackagename); - - if ($opts{DEBUG}) - { - print "Principal admin for package $fullpackagename will be $principaladmin.","\n"; - print "\n"; - print "Full list of developers and admins:\n"; - map - { - printf("%-20s %-10s %-1d\n",$developers->{$fullpackagename}->{$_}->[0],$developers->{$fullpackagename}->{$_}->[1],$developers->{$fullpackagename}->{$_}->[2]); - } keys %{$developers->{$fullpackagename}}; - print "\n"; - - print &generate_NewLeaf($packagename); - print "\n"; - print &generate_developers(); - print "\n"; - exit(0); - } - - # Check out the .admin directory of the subsystem where the - # the package is to be created: - die basename($0),": Subsystem $subsystem already checked out in current directory.","\n", if (-d $subsystem); - # Proceed with checkout: - print "Checking out .admin directory of $subsystem.","\n",if ($opts{VERBOSE}); - $subsystemadmin=$subsystem."/.admin"; - &get($subsystemadmin); - - # Check to make sure that there's a NewLeaf file. Otherwise create it: - my $nlmsg="."; - if (! -f $subsystemadmin."/NewLeaf") - { - print "No NewLeaf file found in subsystem $subsystem. Going to create one.\n",if ($opts{VERBOSE}); - # Create, add and commit the NewLeaf file: - &CreateNewLeaf($packagename); - $nlmsg=" (and NewLeaf file created)."; - } - else - { - # Just update the existing file: - print "The name of the package to create is $packagename. Here we go.","\n",if ($opts{VERBOSE}); - &UpdateNewLeaf($packagename); - } - - # Now commit the added/changed NewLeaf file: - &commit($subsystemadmin,"Adding new package $packagename to NewLeaf$nlmsg"); - # Now check out the new package: - my $newpack=$subsystem."/".$packagename; - &get($newpack); - # Generate the developers file for the new package: - &UpdateDevelopers($newpack); - # Commit the changed developers file: - &commit($newpack,"Updating developers file for $packagename."); - # Clean up (skip if --noclean active): - if ($opts{CLEAN}) - { - my $ndel = rmtree($subsystem); # Returns number of deleted dirs. 0 means failure; - die basename($0).": Unable to clean up - error removing $subsystem!","\n", if (!$ndel); - } - } - -sub set_admins() - { - foreach my $package (@$packagelist) - { - $developers->{$package} = {}; - # Set the principal admin: - $principaladmins->{$package} = $adminidlist->[0]; - # Read through the lists of developers to get full info: - foreach my $loginid (@$developeridlist) - { - # Use phone command to get the full info for this person: - chomp(my ($pbinfo)=`phone -loginid $loginid -FULL`); - my ($ccid,$pbdata,$email) = split(";",$pbinfo); - my ($lastname,$firstname,@rest) = split(" ",$pbdata); - $lastname = ucfirst(lc($lastname)); - # Store in the developers hash: - $developers->{$package}->{$loginid} = [ "$firstname $lastname", $email, 0 ]; - } - - # Do the same for admins: - foreach my $loginid (@$adminidlist) - { - # Use phone command to get the full info for this person: - chomp(my ($pbinfo)=`phone -loginid $loginid -FULL`); - my ($ccid,$pbdata,$email) = split(";",$pbinfo); - my ($lastname,$firstname,@rest) = split(" ",$pbdata); - $lastname = ucfirst(lc($lastname)); - # Store in the developers hash: - $developers->{$package} ->{$loginid} = [ "$firstname $lastname", $email, 1 ]; - } - } - } - -sub query_tc_for_new_packages() - { - open(WGET,"wget --no-check-certificate -o /dev/null -nv -O- 'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS?noupdate=1' |") - || die "Can't run wget request: $!","\n"; - my $n = 0; - while(<WGET>) - { - chomp; - print "TC_REQUEST QUERY: ",$_,"\n"; - $n++; - } - print $n." package requests queued.\n"; - close(WGET); - } - -sub set_admins_from_wget_req() - { - my ($adminstring,$developerstring); - - open(WGET,"wget --no-check-certificate -o /dev/null -nv -O- 'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS?noupdate=1' |") - || die "Can't run wget request: $!","\n"; - - while (<WGET>) - { - # Get rid of spaces at the end of the line: - $_ =~ s/(.*?)\s*?/$1/g; - # Format is <PACKAGE> admins:A,B,C,D developers:A,B,C,D - ($packagename,$adminstring,$developerstring) = ($_ =~ /^(.*?)\s*?adm.*?:(.*?)\s*?devel.*?:(.*?)$/); - $adminidlist=&proc_ilist($adminstring); - $developeridlist=&proc_ilist($developerstring); - $developers->{$packagename} = {}; - # Set the principal admin: - $principaladmins->{$packagename} = $adminidlist->[0]; - - # Read through the lists of developers to get full info: - foreach my $loginid (@$developeridlist) - { - $loginid =~ s/\s*//g; - # Store in the developers hash: - $developers->{$packagename}->{$loginid} = [ @{&getFullNameAndEmail($loginid)}, 0 ]; - } - - # Do the same for admins: - foreach my $loginid (@$adminidlist) - { - $loginid =~ s/\s*//g; - # Store in the developers hash: - $developers->{$packagename}->{$loginid} = [ @{&getFullNameAndEmail($loginid)}, 1 ]; - } - } - - close(WGET); - } - -sub update_tc() - { - print "\n"; - print "Updating tag collector using wget (packages are assumed to have been created successfully)\n"; - my $rv = system("wget","--no-check-certificate","-o","/dev/null","-nv","-O-",'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS'); - if ($rv != 0) - { - print "There were ERRORS when updating the tag collector!","\n"; - } - print "\n"; - return $rv; - } - -sub set_admins_from_file() - { - my ($adminstring,$developerstring); - # Check that the file exists: - die basename($0).": Unable to read $batchfile, $!","\n", unless (-f $batchfile); - open(BATCH,"< $batchfile") || die basename($0).": Unable to open $batchfile, $!","\n"; - while (<BATCH>) - { - # Get rid of spaces at the end of the line: - $_ =~ s/(.*?)\s*?/$1/g; - # Format is <PACKAGE> admins:A,B,C,D developers:A,B,C,D - ($packagename,$adminstring,$developerstring) = ($_ =~ /^(.*?)\s*?adm.*?:(.*?)\s*?devel.*?:(.*?)$/); - $adminidlist=&proc_ilist($adminstring); - $developeridlist=&proc_ilist($developerstring); - $developers->{$packagename} = {}; - # Set the principal admin: - $principaladmins->{$packagename} = $adminidlist->[0]; - - # Read through the lists of developers to get full info: - foreach my $loginid (@$developeridlist) - { - $loginid =~ s/\s*//g; - # Store in the developers hash: - $developers->{$packagename}->{$loginid} = [ @{&getFullNameAndEmail($loginid)}, 0 ]; - } - - # Do the same for admins: - foreach my $loginid (@$adminidlist) - { - $loginid =~ s/\s*//g; - # Store in the developers hash: - $developers->{$packagename}->{$loginid} = [ @{&getFullNameAndEmail($loginid)}, 1 ]; - } - } - - close(BATCH); - } - -sub getFullNameAndEmail() - { - my ($loginid)=@_; - - open(PHONE,"phone -loginid $loginid -FULL |"); - chomp(my $info = (<PHONE>)); - - my ($ccid,$pbdata,$email) = split(";",$info); - my $namestring; - my (@name_elements); - - # If there's a phone number, extract the name list from the string: - if (($namestring) = ($pbdata =~ /^(.*?)\s*?[0-9]* [0-9].*$/)) - { - (@name_elements)=split(" ",$namestring); - } - else - { - # Otherwise, just use the full string returned from the phone command: - (@name_elements)=split(" ",$pbdata); - } - - my $firstname=pop(@name_elements); - my $lastname=join(" ",map { ucfirst(lc($_)) } splice(@name_elements, 0, $#name_elements+1)); - close(PHONE); - return [ "$firstname $lastname", $email ]; - } - -sub CreateNewLeaf() - { - my ($packagename)=@_; - my $sdir=cwd(); - chdir $subsystemadmin; - print "Going to create entry for new package \"$packagename\" with admin\n",if ($opts{VERBOSE}); - print "(admin) \"$principaladmin\" in subsystem \"$subsystem\".\n",if ($opts{VERBOSE}); - open(NEWLEAF,"> NewLeaf") || die basename($0).": Unable to open Newleaf for writing (dir is $subsystemadmin): $!","\n"; - print NEWLEAF &generate_NewLeaf($packagename),"\n"; - close(NEWLEAF); - # Now add it to the repository: - my $rv = system($cvs,"-Q","-d",$cvsroot,"add", "NewLeaf"); - chdir $sdir; - # Check the status of the add and report: - if ($rv != 0) - { - die basename($0).": Unable to add $subsystemadmin/NewLeaf.","\n"; - } - } - -sub UpdateNewLeaf() - { - my ($packagename)=@_; - print "Going to create entry for new package \"$packagename\" with admin\n",if ($opts{VERBOSE}); - print "(admin) \"$principaladmin\" in subsystem \"$subsystem\".\n",if ($opts{VERBOSE}); - open(NEWLEAF,"> $subsystemadmin/NewLeaf") || die basename($0).": Unable to open $subsystemadmin/Newleaf for writing: $!","\n"; - print NEWLEAF &generate_NewLeaf($packagename),"\n"; - close(NEWLEAF); - } - -sub UpdateDevelopers() - { - my ($newpack)=@_; - print "Going to create developers file for new package \"$newpack\".\n",if ($opts{VERBOSE}); - open(DEVELOPERS,"> $newpack/.admin/developers") || die basename($0).": Unable to open $newpack/.admin/developers for writing: $!","\n"; - print DEVELOPERS &generate_developers(); - close(DEVELOPERS); - } - -sub get() - { - my $rv=0; - my ($item)=@_; - # If we don't have an arg, exit: - die basename($0).": Nothing to check out!","\n", unless ($item); - # Check out item from HEAD: - $rv = system($cvs,"-Q","-d",$cvsroot,"co","-P", $item); - # Check the status of the checkout and report if a package tag doesn't exist: - if ($rv != 0) - { - die basename($0).": Unable to check out $item!","\n"; - } - - return $rv; - } - -sub commit() - { - my ($location,$message)=@_; - my $rv=0; - my $idir=cwd(); - $message = "\"$message\""; - chdir $location; - $rv = system($cvs,"-Q","-d",$cvsroot,"ci","-m", $message); - # Check the status of the checkout and report if there was a problem: - if ($rv != 0) - { - # Only warn because sometimes CVSpm has been successful even though - # it exits with stat 1: - warn(basename($0).": There may have been problems with checkin. Check Karma!\n"); - } - - chdir $idir; - return $rv; - } - -sub proc_ilist() - { - my ($istring)=@_; - my $list; - # If the list is comma-separated: - if ($istring =~ /,/) - { - $list=[ split(",",$istring) ]; - } - else - { - $list=[ split(" ",$istring) ]; - } - return $list; - } - -sub generate_NewLeaf() - { - my $newleaf=""; - my ($packagename)=@_; - $newleaf.="# This is a administration file\n"; - $newleaf.="# Fill in the Fields below and commit to add a new leaf\n"; - $newleaf.="# Each Leaf must have someone defined as being responsible for it.\n"; - $newleaf.="# email address and username should refer to this person\n"; - $newleaf.="#\n"; - $newleaf.="\n"; - $newleaf.="Valid Username : ".$principaladmin."\n"; - $newleaf.="Valid Email : ".$developers->{$fullpackagename}->{$principaladmin}->[1]."\n"; - $newleaf.="New Leaf Name : ".$packagename."\n"; - return $newleaf; - } - -sub generate_developers() - { - my $developerfile="# Names of Developers with write access to this module\n"; - $developerfile.="#\n"; - $developerfile.="# There are two types of developers:\n"; - $developerfile.="# 1) Administrators - entitled to edit all files in the module ,\n"; - $developerfile.="# in particular the .admin directory. (Including this file) \n"; - $developerfile.="# 2) Regular Developers - entitled to edit all files in the module\n"; - $developerfile.="# except those in the .admin directory.\n"; - $developerfile.="#\n"; - $developerfile.="# You must use the full name of the developer as recorded on this system.\n"; - $developerfile.="# see :\n"; - $developerfile.="# http://cmsdoc.cern.ch/cmsoo/projects/swdevtools/developer_list.html\n"; - $developerfile.="# for a full list of names. If the developer you require is not on this\n"; - $developerfile.="# list then email the cvs administrator (cvsadmin\@cmscvs.cern.ch)\n"; - $developerfile.="#\n"; - $developerfile.="# Important\n"; - $developerfile.="# ---------\n"; - $developerfile.="# --- Put names of regular developers after the >Developers Tag\n"; - $developerfile.="# --- Put names of administrators after the >Administrators Tag\n"; - $developerfile.="#\n"; - $developerfile.="# Mailists\n"; - $developerfile.="# --------\n"; - $developerfile.="# The bug reporting system can automatically send mail to all the developers\n"; - $developerfile.="# and administrators. Add the email address after the name (seperated by a :)\n"; - $developerfile.="# of developers to include in the list.\n"; - $developerfile.="#\n"; - $developerfile.=">Developers\n"; - map - { - $developerfile.="$developers->{$fullpackagename}->{$_}->[0] : ".$developers->{$fullpackagename}->{$_}->[1]."\n"; - } keys %{$developers->{$fullpackagename}}; - $developerfile.="\n"; - $developerfile.=">Administrators\n"; - map - { - $developerfile.="$developers->{$fullpackagename}->{$_}->[0] : ".$developers->{$fullpackagename}->{$_}->[1]."\n", if ($developers->{$fullpackagename}->{$_}->[2]); - } keys %{$developers->{$fullpackagename}}; - return $developerfile; - } - -sub usage() - { - my $name=basename($0); - my $string="\nUsage: $name --package=<PACKAGE> --admin=<ADMIN> --developers=<DEVLIST>[-h] [-v]\n"; - $string.="\nor $name --batch=<FILENAME> [-h] [-v]\n"; - $string.="\nor $name --usewget | --tcupdate [-h] [-v]\n"; - $string.="\n"; - $string.="--packagename=<PACKAGE> Name of package to be created (in full,i.e. <sub>/<package>).\n"; - $string.="\n"; - $string.="--admin=<ADMIN> The administrators for this package. ADMIN should be given as a\n"; - $string.=" quoted list of administrator login IDs.\n"; - $string.=" This list can be comma or space separated.\n"; - $string.="\n"; - $string.="--developers=<DEVLIST> The list of people to be registered as developers for this package.\n"; - $string.=" DEVLIST should be given as a quoted list of login IDs.\n"; - $string.=" This list can be comma or space separated.\n"; - $string.="--batch=<FILENAME> Read the package and admin/developer info from FILENAME.\n"; - $string.=" The file format should be:\n"; - $string.=" <PACKAGE> admins:A,B,C,D developers:A,B,C,D\n"; - $string.="--usewget Use wget to run a CGI script on the server to check for and return\n"; - $string.=" the current list of approved packages, their developers/admins.\n"; - $string.="--querytc Query the tag collector for new packages queued for creation.\n"; - $string.="--tcupdate Update the Tag Collector status for the created packages.\n"; - $string.="\n"; - $string.="--noclean Don't remove the checked out directories from the working area.\n"; - $string.="\n"; - $string.="OPTIONS:\n"; - $string.="--verbose | -v Be verbose.\n"; - $string.="--debug | -d Debug mode. Show the info on admins and developers. Dump the generated\n"; - $string.=" developers file to STDOUT and exit. Doesn't modify any files.\n"; - $string.="--help | -h Show help and exit.\n"; - print $string,"\n"; - } +if (! Getopt::Long::GetOptions(\%opts, %options)) { + print STDERR "$0: Error with arguments.","\n"; +} else { + # Check for batch mode. If batch is active, no need to check for + # the info from cmdline: + if ($opts{BATCH} || $opts{USE_WGET}) { + if ($opts{BATCH}) { + print "Running in batch mode: reading instructions from $batchfile.\n"; + # Check that the file exists: + die basename($0).": Unable to read $batchfile, $!","\n", unless (-f $batchfile); + open(SOURCE,"< $batchfile") || die basename($0).": Unable to open $batchfile, $!","\n"; + } else { + # We use a wget request to the database (via a CGI script): + print "Running in batch mode: getting approved packages from the TagCollector.\n"; + open(SOURCE,"wget --no-check-certificate -o /dev/null -nv -O- 'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS?noupdate=1' |") + || die "Can't run wget request: $!","\n"; + } + + while (<SOURCE>) { + # Get rid of spaces at the end of the line: + $_ =~ s/(.*?)\s*?/$1/g; + my ($pack,$adminidlist,$developeridlist) = ($_ =~ /^(.*?)\s*?adm.*?:(.*?)\s*?devel.*?:(.*?)$/); + # Create new container for developer list: + my $adminlist = new AdminList(&proc_ilist($adminidlist)); + my $developerlist = new DeveloperList(&proc_ilist($developeridlist)); + # Add the infos to the action list: + $actionlist->additem(new ActionItem($pack, $developerlist, $adminlist)); + } + close(SOURCE); + } elsif ($opts{UPDATE_TC}) { + # Reset the TC: + print "Updating approved package list in the TagCollector.\n"; + print "Packages are assumed to have been created successfully!\n"; + my $rv = system("wget","--no-check-certificate","-o","/dev/null","-nv","-O-",'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS'); + if ($rv != 0) { + print "There were ERRORS when updating the tag collector!","\n"; + } + exit($rv); + } elsif ($opts{TCQUERY}) { + # Query th tag collector and dump the package list: + open(WGET,"wget --no-check-certificate -o /dev/null -nv -O- 'https://cmsdoc.cern.ch/swdev/CmsTC/cgi-bin/GetPacksForCVS?noupdate=1' |") || die "Can't run wget request: $!","\n"; + my $n = 0; + while(<WGET>) { + chomp; + print "TC_REQUEST QUERY: ",$_,"\n"; + $n++; + } + print $n." package requests queued.\n"; + close(WGET); + print "Done\n"; + exit(0); + } else { + # Build the list of developers and admins. This block will be active when + # the --package, --admin and --developers opts are used together. + # We must have a package name: + die basename($0),": No package(s) given!\n", unless ($#$packagelist > -1); + # We must have developer names as a list: + die basename($0),": No developers given!\n", unless ($#$developeridlist > -1); + # We must have a package admin: + die basename($0),": No package admins given!\n", unless ($#$adminidlist > -1); + # Create new container for developer list: + my $adminlist = new AdminList($adminidlist); + my $developerlist = new DeveloperList($developeridlist); + foreach my $pack (@$packagelist) { + $actionlist->additem(new ActionItem($pack, $developerlist, $adminlist)); + } + } + # Run the actions: + $actionlist->exec(); + print "\n"; +} + +#### Global functions (in package main) #### +sub proc_ilist() { + my ($istring)=@_; + my $list; + # If the list is comma-separated: + if ($istring =~ /,/) { + $list=[ split(",",$istring) ]; + } else { + $list=[ split(" ",$istring) ]; + } + return $list; +} + +sub usage() { + my $name=basename($0); + my $string="\nUsage: $name --package=<PACKAGE> --admin=<ADMIN> --developers=<DEVLIST>[-h] [-v]\n"; + $string.="\nor $name --batch=<FILENAME> [-h] [-v]\n"; + $string.="\nor $name --usewget | --tcupdate [-h] [-v]\n"; + $string.="\n"; + $string.="--packagename=<PACKAGE> Name of package to be created (in full,i.e. <sub>/<package>).\n"; + $string.="\n"; + $string.="--admin=<ADMIN> The administrators for this package. ADMIN should be given as a\n"; + $string.=" quoted list of administrator login IDs.\n"; + $string.=" This list can be comma or space separated.\n"; + $string.="\n"; + $string.="--developers=<DEVLIST> The list of people to be registered as developers for this package.\n"; + $string.=" DEVLIST should be given as a quoted list of login IDs.\n"; + $string.=" This list can be comma or space separated.\n"; + $string.="--batch=<FILENAME> Read the package and admin/developer info from FILENAME.\n"; + $string.=" The file format should be:\n"; + $string.=" <PACKAGE> admins:A,B,C,D developers:A,B,C,D\n"; + $string.="--usewget Use wget to run a CGI script on the server to check for and return\n"; + $string.=" the current list of approved packages, their developers/admins.\n"; + $string.="--querytc Query the tag collector for new packages queued for creation.\n"; + $string.="--tcupdate Update the Tag Collector status for the created packages.\n"; + $string.="\n"; + $string.="--noclean Don't remove the checked out directories from the working area.\n"; + $string.="\n"; + $string.="OPTIONS:\n"; + $string.="--verbose | -v Be verbose.\n"; + $string.="--debug | -d Debug mode. Show the info on admins and developers. Dump the generated\n"; + $string.=" developers file to STDOUT and exit. Doesn't modify any files.\n"; + $string.="--help | -h Show help and exit.\n"; + print $string,"\n"; +} + +#### Packages #### +package ActionList; + +sub new() { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + # Package list: + $self->{ITEMS} = []; + return $self; +} + +sub additem() { + my $self=shift; + my ($item)=@_; + push(@{$self->{ITEMS}},$item); +} + +sub exec() { + my $self=shift; + foreach my $it (@{$self->{ITEMS}}) { + print ">>> Package ".$it->package()->fullname()."\n"; + # First, check out the package. This will tell us if the package already exists. + &CVS::co($it->package()->fullname()."/.admin"); + if (-d $it->package()->fullname()."/.admin") { + print "Package ",$it->package()->fullname()," already exists. Going to update the developer file.","\n"; + # Check out the developer file and update it" + &CVS::co($it->package()->fullname()."/.admin/developers"); + my $developers = Developers->new($it); + $developers->write(); + } else { + # The package does not exist. Create it: + print "Creating ",$it->package()->fullname(),"\n"; + # First, try checking out the .admin directory of the subsystem. + print "\tGetting SubSystem ",$it->package->modulename(),"/.admin\n"; + &CVS::co($it->package->modulename()."/.admin"); + if (-d $it->package->modulename()."/.admin") { + # We have a .admin directory. Now check for NewLeaf file, creating + # if necessary: + print "\tUpdating/creating NewLeaf file.","\n"; + my $newleaf = NewLeaf->new($it); + $newleaf->write(); + # At this point the package should've been created so check out + # and update the developer file: + &CVS::co($it->package()->fullname()."/.admin/developers"); + my $developers = Developers->new($it); + $developers->write(); + } else { + # SubSystem must be created. Check out project admin directory: + print "Creating ",$it->package->modulename(),"\n"; + print "\tGetting project admin directory","\n"; + &CVS::co("admin"); + if (-d "./admin") { + if (-f "./admin/AddModule") { + # Add new module: + print "\tFound AddModule file. Updating it.","\n"; + my $newmodule = AddModule->new($it); + $newmodule->write(); + } else { + # Create the AddModule file: + print "\tNo AddModule file found. Creating it.","\n"; + my $newmodule = AddModule->new($it); + $newmodule->write(); + } + } else { + print "ERROR: No admin directory found for this project!\n"; + exit(1); + } + # Now proceed. First check out the newly-created subsystem: + print "\tGetting SubSystem ",$it->package->modulename(),"\n"; + &CVS::co($it->package->modulename()); + if (-d $it->package->modulename()) { + # SubSystem exists. Get the .admin directory: + print "\tGetting ",$it->package->modulename(),"/.admin","\n"; + &CVS::co($it->package->modulename()."/.admin"); + if (-d $it->package->modulename()."/.admin") { + # We have a .admin directory. Now check for NewLeaf file, creating + # if necessary: + print "\tUpdating/creating NewLeaf file.","\n"; + my $newleaf = NewLeaf->new($it); + $newleaf->write(); + # At this point the package should've been created so check out + # and update the developer file: + &CVS::co($it->package()->fullname()."/.admin/developers"); + my $developers = Developers->new($it); + $developers->write(); + } + } + } + } + print "\n"; + } + print "\n== Finished. ==\n"; +} + +package ActionItem; + +sub new($;$;$) { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($packagename) = shift; + $self->{PACKAGE} = new Package($packagename); + $self->{DEVELOPERLIST} = shift; + $self->{ADMINLIST} = shift; + return $self; +} + +sub package() { + my $self=shift; + return $self->{PACKAGE}; +} + +sub developers() { + my $self=shift; + return $self->{DEVELOPERLIST}; +} + +sub admins() { + my $self=shift; + return $self->{ADMINLIST}; +} + +package DeveloperList; + +sub new($) { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + $self->{IDS} = []; + my ($idlist)=@_; + # Read through the lists of developers to get full info: + foreach my $loginid (@$idlist) { + # Use phone command to get the full info for this person: + chomp(my ($pbinfo)=`phone -loginid $loginid -FULL`); + # Check to see if user exists: + if ($pbinfo =~ /not found/) { + print "WARNING: Userid \"$loginid\" not found in CCDB. Ignoring this user.","\n"; + next; + } + my ($ccid,$pbdata,$email) = split(";",$pbinfo); + my ($lastname,$firstname,@rest) = split(" ",$pbdata); + $lastname = ucfirst(lc($lastname)); + push(@{$self->{IDS}},new ID($loginid,"$firstname $lastname",$email)); + } + + # Simple check for existence of at least 1 developer: + die "ERROR: No developers defined for this package.\n", unless ($#{$self->{IDS}} > -1); + return $self; +} + +sub ids() { + my $self=shift; + return $self->{IDS}; +} + +package AdminList; + +sub new($) { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + $self->{IDS} = []; + my ($idlist)=@_; + # Read through the lists of developers to get full info: + foreach my $loginid (@$idlist) { + # Use phone command to get the full info for this person: + chomp(my ($pbinfo)=`phone -loginid $loginid -FULL`); + # Check to see if user exists: + if ($pbinfo =~ /not found/) { + print "WARNING: Userid \"$loginid\" not found in CCDB. Ignoring this user.","\n"; + next; + } + my ($ccid,$pbdata,$email) = split(";",$pbinfo); + my ($lastname,$firstname,@rest) = split(" ",$pbdata); + $lastname = ucfirst(lc($lastname)); + push(@{$self->{IDS}},new ID($loginid,"$firstname $lastname",$email)); + } + + # Simple check for existence of at least 1 admin: + die "ERROR: No admin defined for this package.\n", unless ($#{$self->{IDS}} > -1); + return $self; +} + +sub ids() { + my $self=shift; + return $self->{IDS}; +} + +sub principal() { + my $self=shift; + return $self->{IDS}->[0]; +} + +package ID; + +sub new($;$;$) { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($loginid,$fullname,$email)=@_; + $self->{LOGINID} = $loginid; + $self->{FULLNAME} = $fullname; + $self->{EMAIL} = $email; + return $self; +} + +sub loginid() { + my $self=shift; + return $self->{LOGINID}; +} + +sub fullname() { + my $self=shift; + return $self->{FULLNAME}; +} + +sub email() { + my $self=shift; + return $self->{EMAIL}; +} + +sub idstring() { + my $self=shift; + return $self->{LOGINID}." : ".$self->{FULLNAME}." : ".$self->{EMAIL}; +} + +package Package; + +sub new() { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($pname) = @_; + $self->{FULLNAME} = $pname; + my ($subsys, $pk) = split("/",$self->{FULLNAME}); + $self->{MODULENAME} = $subsys; + $self->{LEAFNAME} = $pk; + return $self; +} + +sub fullname() { + my $self=shift; + return $self->{FULLNAME}; +} + +sub modulename() { + my $self=shift; + return $self->{MODULENAME}; +} + +sub leafname() { + my $self=shift; + return $self->{LEAFNAME}; +} + +package AddModule; +use File::Basename; +use Cwd; + +sub new() { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($actionitem) = @_; + $self->{CURRENT_ITEM} = $actionitem; + return $self; +} + +sub write() { + my $self=shift; + my $sdir=cwd(); + my $module=""; + print "Creating new module ",$self->{CURRENT_ITEM}->package()->modulename(),"\n"; + $module.="# This is a administration file\n"; + $module.="# Fill in the Fields below and commit to add a new module\n"; + $module.="# Each Module must have someone defined as being responsible for it.\n"; + $module.="# email address and login name should refer to this person\n"; + $module.="# The Module/Project must be a pre-defined module.\n"; + $module.="\n"; + $module.="Login Name : ".$self->{CURRENT_ITEM}->admins->principal()->loginid."\n"; + $module.="Valid Email : ".$self->{CURRENT_ITEM}->admins->principal()->email."\n"; + $module.="Add to Module/Project : CMSSW\n"; + $module.="New Module Name : ".$self->{CURRENT_ITEM}->package()->modulename()."\n"; + # Change to the checked-out admin dir: + chdir "./admin"; + # Write the file: + open(FILE,"> AddModule") || die basename($0).": Unable to open AddModule for writing: $!","\n"; + print FILE $module,"\n"; + close(FILE); + # Add and commit the file (if file already exists, the add is ignored): + &CVS::add("AddModule"); + &CVS::ci("AddModule"); + chdir $sdir; +} + +package NewLeaf; +use File::Basename; +use Cwd; + +sub new() { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($actionitem) = @_; + $self->{CURRENT_ITEM} = $actionitem; + return $self; +} + +sub write() { + my $self=shift; + my $sdir=cwd(); + my $leaf=""; + print "Creating new leaf ",$self->{CURRENT_ITEM}->package()->leafname(),"\n"; + $leaf.="# This is a administration file\n"; + $leaf.="# Fill in the Fields below and commit to add a new leaf\n"; + $leaf.="# Each Leaf must have someone defined as being responsible for it.\n"; + $leaf.="# email address and login name should refer to this person.\n"; + $leaf.="\n"; + $leaf.="Login Name : ".$self->{CURRENT_ITEM}->admins->principal()->loginid."\n"; + $leaf.="Valid Email : ".$self->{CURRENT_ITEM}->admins->principal()->email."\n"; + $leaf.="New Leaf Name : ".$self->{CURRENT_ITEM}->package()->leafname()."\n"; + # Change to the checked-out admin dir: + chdir $self->{CURRENT_ITEM}->package()->modulename()."/.admin"; + # Write the file: + open(FILE,"> NewLeaf") || die basename($0).": Unable to open NewLeaf for writing: $!","\n"; + print FILE $leaf,"\n"; + close(FILE); + # Add and commit the file (if file already exists, the add is ignored): + &CVS::add("NewLeaf"); + &CVS::ci("NewLeaf"); + chdir $sdir; +} + +package Developers; +use File::Basename; +use Cwd; + +sub new() { + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = {}; + bless($self, $class); + my ($actionitem) = @_; + $self->{CURRENT_ITEM} = $actionitem; + return $self; +} + +sub write() { + my $self=shift; + my $sdir=cwd(); + print "Creating new developer file for ",$self->{CURRENT_ITEM}->package()->fullname(),"\n"; + my $developerfile="# Names of Developers with write access to this module\n"; + $developerfile.="#\n"; + $developerfile.="# There are two types of developers:\n"; + $developerfile.="# 1) Administrators - entitled to edit all files in the module ,\n"; + $developerfile.="# in particular the .admin directory. (Including this file) \n"; + $developerfile.="# 2) Regular Developers - entitled to edit all files in the module\n"; + $developerfile.="# except those in the .admin directory.\n"; + $developerfile.="#\n"; + $developerfile.="# Entries must have the following format:\n"; + $developerfile.="#\n"; + $developerfile.="# [logname] : [Firstname Familyname] : [emailaddress]\n"; + $developerfile.="#\n"; + $developerfile.="# where [logname] is the login name of the user (in lower case)\n"; + $developerfile.="# [Firstname Familyname] is the fullname of the user in free format\n"; + $developerfile.="# [emailaddress] any email address of the user\n"; + $developerfile.="#\n"; + $developerfile.="# IMPORTANT: The only entry that uniqely identifies the user\n"; + $developerfile.="# is the [loginname]. The rest of the entries are\n"; + $developerfile.="# used for information and clarity purposes.\n"; + $developerfile.="#\n"; + $developerfile.="# You can find the information required to add a user, using the \"phone\"\n"; + $developerfile.="# command from any CERN machine. \"phone user -A\" will give you a list of his\n"; + $developerfile.="# accounts and lognames too.\n"; + $developerfile.="# A safe assumption is to look for his ZH account on AFS/LXPLUS\n"; + $developerfile.="# Please remember to use lower case for the logname.\n"; + $developerfile.="# In case of doubts, please contact cvsadmin.cern.ch\n"; + $developerfile.="#\n"; + $developerfile.="# Important\n"; + $developerfile.="# ---------\n"; + $developerfile.="# --- Put names of regular developers after the >Developers Tag\n"; + $developerfile.="# --- Put names of administrators after the >Administrators Tag\n"; + $developerfile.="#\n"; + $developerfile.="# NB: This file was automatically generated by CreateCVSPackage.pl.\n"; + $developerfile.="#\n"; + $developerfile.=">Developers\n"; + map { + $developerfile.=$_->idstring()."\n"; + } @{$self->{CURRENT_ITEM}->developers()->ids()}; + $developerfile.="\n"; + $developerfile.=">Administrators\n"; + map { + $developerfile.=$_->idstring()."\n"; + } @{$self->{CURRENT_ITEM}->admins()->ids()}; + # Change to the checked-out admin dir: + chdir $self->{CURRENT_ITEM}->package()->fullname()."/.admin"; + # Write the file: + open(FILE,"> developers") || die basename($0).": Unable to open developers file for writing: $!","\n"; + print FILE $developerfile,"\n"; + close(FILE); + # Add and commit the file (if file already exists, the add is ignored): + &CVS::add("developers"); + &CVS::ci("developers"); + chdir $sdir; +} + +package CVS; + +sub co() { + my $rv=0; + my ($item)=@_; + die "CVS: Nothing to check out!","\n", unless ($item); + my $cmd = "$cvs -Q -d $cvsroot co -P $item >/dev/null 2>&1"; + $rv = system($cmd); + return $rv; +} + +sub add() { + my $rv=0; + my ($item)=@_; + die "CVS: Nothing to add!","\n", unless ($item); + my $cmd = "$cvs -Q -d $cvsroot add $item >/dev/null 2>&1"; + $rv = system($cmd); + return $rv; +} + +sub ci() { + my $rv=0; + my ($item)=@_; + my ($message) = "CreateCVSPackage: Check in of $item."; + die "CVS: Nothing to check in!","\n", unless ($item); + my $cmd = "$cvs -Q -d $cvsroot ci -m \"$message\" $item >/dev/null 2>&1"; + $rv = system($cmd); + return $rv; +} diff --git a/Utilities/Timing/TagLog b/Utilities/Timing/TagLog new file mode 100644 index 00000000000..e69de29bb2d diff --git a/Utilities/XrdAdaptor/doc/html/index.html b/Utilities/XrdAdaptor/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Utilities/XrdAdaptor/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Utilities/XrdAdaptor/doc/html/overview.html b/Utilities/XrdAdaptor/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Utilities/XrdAdaptor/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/CSCRecHits/doc/html/index.html b/Validation/CSCRecHits/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/CSCRecHits/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/CSCRecHits/doc/html/overview.html b/Validation/CSCRecHits/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/CSCRecHits/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/Configuration/doc/html/index.html b/Validation/Configuration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/Configuration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/Configuration/doc/html/overview.html b/Validation/Configuration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/Configuration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/EcalClusters/interface/EgammaSuperClusters.h b/Validation/EcalClusters/interface/EgammaSuperClusters.h index 88a19491478..d44124ab3b6 100644 --- a/Validation/EcalClusters/interface/EgammaSuperClusters.h +++ b/Validation/EcalClusters/interface/EgammaSuperClusters.h @@ -9,7 +9,7 @@ \\\author: Michael A. Balazs, Nov 2006 */ // -// $Id: EgammaSuperClusters.h,v 1.2 2006/11/15 18:50:02 mabalazs Exp $ +// $Id: EgammaSuperClusters.h,v 1.4 2006/11/20 18:58:30 mabalazs Exp $ // #include <string> @@ -43,7 +43,10 @@ class EgammaSuperClusters : public edm::EDAnalyzer edm::InputTag hybridBarrelSuperClusterCollection_; edm::InputTag islandBarrelSuperClusterCollection_; edm::InputTag islandEndcapSuperClusterCollection_; - + edm::InputTag hybridBarrelClusterShapeAssociation_; + edm::InputTag islandBarrelClusterShapeAssociation_; + edm::InputTag islandEndcapClusterShapeAssociation_; + MonitorElement* hist_HybridEB_SC_Size_; MonitorElement* hist_IslandEB_SC_Size_; MonitorElement* hist_IslandEE_SC_Size_; @@ -115,5 +118,7 @@ class EgammaSuperClusters : public edm::EDAnalyzer double hist_min_deltaEta_; double hist_max_deltaEta_; int hist_bins_deltaEta_; + + float ecalEta(float EtaParticle , float Zvertex, float plane_Radius); }; #endif diff --git a/Validation/EcalClusters/src/EgammaSuperClusters.cc b/Validation/EcalClusters/src/EgammaSuperClusters.cc index d10baf1d252..7d55c39b04d 100644 --- a/Validation/EcalClusters/src/EgammaSuperClusters.cc +++ b/Validation/EcalClusters/src/EgammaSuperClusters.cc @@ -7,6 +7,10 @@ #include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" #include "DataFormats/EgammaReco/interface/SuperCluster.h" +#include "DataFormats/EgammaReco/interface/ClusterShapeFwd.h" +#include "DataFormats/EgammaReco/interface/BasicClusterShapeAssociation.h" + +#include "Geometry/Vector/interface/Pi.h" EgammaSuperClusters::EgammaSuperClusters( const edm::ParameterSet& ps ) { @@ -55,6 +59,9 @@ EgammaSuperClusters::EgammaSuperClusters( const edm::ParameterSet& ps ) hybridBarrelSuperClusterCollection_ = ps.getParameter<edm::InputTag>("hybridBarrelSuperClusterCollection"); islandBarrelSuperClusterCollection_ = ps.getParameter<edm::InputTag>("islandBarrelSuperClusterCollection"); islandEndcapSuperClusterCollection_ = ps.getParameter<edm::InputTag>("islandEndcapSuperClusterCollection"); + hybridBarrelClusterShapeAssociation_ = ps.getParameter<edm::InputTag>("hybridBarrelClusterShapeAssociation"); + islandBarrelClusterShapeAssociation_ = ps.getParameter<edm::InputTag>("islandBarrelClusterShapeAssociation"); + islandEndcapClusterShapeAssociation_ = ps.getParameter<edm::InputTag>("islandEndcapClusterShapeAssociation"); } EgammaSuperClusters::~EgammaSuperClusters() {} @@ -129,7 +136,7 @@ void EgammaSuperClusters::beginJob(edm::EventSetup const&) hist_IslandEB_SC_S1toS9_ = dbe_->book1D("hist_IslandEB_SC_S1toS9_","S1/S9 of Super Clusters with Island in Barrel", hist_bins_S1toS9_,hist_min_S1toS9_,hist_max_S1toS9_); - hist_IslandEE_SC_S1toS9_ + hist_IslandEE_SC_S1toS9_ = dbe_->book1D("hist_IslandEE_SC_S1toS9_","S1/S9 of Super Clusters with Island in Endcap", hist_bins_S1toS9_,hist_min_S1toS9_,hist_max_S1toS9_); @@ -178,6 +185,17 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& << hybridBarrelSuperClusterCollection_.label(); } + edm::Handle<reco::BasicClusterShapeAssociationCollection> pHybridBarrelClusterShapeAssociation; + try + { + evt.getByLabel(hybridBarrelClusterShapeAssociation_, pHybridBarrelClusterShapeAssociation); + } + catch ( cms::Exception& ex ) + { + edm::LogError("EgammaSuperClusters") << "Error! can't get collection with label " + << hybridBarrelClusterShapeAssociation_.label(); + } + const reco::SuperClusterCollection* hybridBarrelSuperClusters = pHybridBarrelSuperClusters.product(); hist_HybridEB_SC_Size_->Fill(hybridBarrelSuperClusters->size()); @@ -188,6 +206,10 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& hist_HybridEB_SC_ET_->Fill(aClus->energy()/std::cosh(aClus->position().eta())); hist_HybridEB_SC_Eta_->Fill(aClus->position().eta()); hist_HybridEB_SC_Phi_->Fill(aClus->position().phi()); + + const reco::ClusterShapeRef& tempClusterShape = pHybridBarrelClusterShapeAssociation->find(aClus->seed())->val; + hist_HybridEB_SC_S1toS9_->Fill(tempClusterShape->eMax()/tempClusterShape->e3x3()); + hist_HybridEB_SC_S25toE_->Fill(tempClusterShape->e5x5()/aClus->energy()); } edm::Handle<reco::SuperClusterCollection> pIslandBarrelSuperClusters; @@ -201,6 +223,17 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& << islandBarrelSuperClusterCollection_.label(); } + edm::Handle<reco::BasicClusterShapeAssociationCollection> pIslandBarrelClusterShapeAssociation; + try + { + evt.getByLabel(islandBarrelClusterShapeAssociation_, pIslandBarrelClusterShapeAssociation); + } + catch ( cms::Exception& ex ) + { + edm::LogError("EgammaSuperClusters") << "Error! can't get collection with label " + << islandBarrelClusterShapeAssociation_.label(); + } + const reco::SuperClusterCollection* islandBarrelSuperClusters = pIslandBarrelSuperClusters.product(); hist_IslandEB_SC_Size_->Fill(islandBarrelSuperClusters->size()); @@ -211,6 +244,10 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& hist_IslandEB_SC_ET_->Fill(aClus->energy()/std::cosh(aClus->position().eta())); hist_IslandEB_SC_Eta_->Fill(aClus->position().eta()); hist_IslandEB_SC_Phi_->Fill(aClus->position().phi()); + + const reco::ClusterShapeRef& tempClusterShape = pIslandBarrelClusterShapeAssociation->find(aClus->seed())->val; + hist_IslandEB_SC_S1toS9_->Fill(tempClusterShape->eMax()/tempClusterShape->e3x3()); + hist_IslandEB_SC_S25toE_->Fill(tempClusterShape->e5x5()/aClus->energy()); } edm::Handle<reco::SuperClusterCollection> pIslandEndcapSuperClusters; @@ -224,6 +261,17 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& << islandEndcapSuperClusterCollection_.label(); } + edm::Handle<reco::BasicClusterShapeAssociationCollection> pIslandEndcapClusterShapeAssociation; + try + { + evt.getByLabel(islandEndcapClusterShapeAssociation_, pIslandEndcapClusterShapeAssociation); + } + catch ( cms::Exception& ex ) + { + edm::LogError("EgammaSuperClusters") << "Error! can't get collection with label " + << islandEndcapClusterShapeAssociation_.label(); + } + const reco::SuperClusterCollection* islandEndcapSuperClusters = pIslandEndcapSuperClusters.product(); hist_IslandEE_SC_Size_->Fill(islandEndcapSuperClusters->size()); @@ -234,6 +282,10 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& hist_IslandEE_SC_ET_->Fill(aClus->energy()/std::cosh(aClus->position().eta())); hist_IslandEE_SC_Eta_->Fill(aClus->position().eta()); hist_IslandEE_SC_Phi_->Fill(aClus->position().phi()); + + const reco::ClusterShapeRef& tempClusterShape = pIslandEndcapClusterShapeAssociation->find(aClus->seed())->val; + hist_IslandEE_SC_S1toS9_->Fill(tempClusterShape->eMax()/tempClusterShape->e3x3()); + hist_IslandEE_SC_S25toE_->Fill(tempClusterShape->e5x5()/aClus->energy()); } edm::Handle<edm::HepMCProduct> pMCTruth ; @@ -253,9 +305,10 @@ void EgammaSuperClusters::analyze( const edm::Event& evt, const edm::EventSetup& { if((*currentParticle)->status()==1) { - double etaTrue = (*currentParticle)->momentum().eta(); + HepLorentzVector vtx = (*currentParticle)->production_vertex()->position(); double phiTrue = (*currentParticle)->momentum().phi(); - double etTrue = (*currentParticle)->momentum().et(); + double etaTrue = ecalEta((*currentParticle)->momentum().eta(), vtx.z()/10., vtx.perp()/10.); + double etTrue = (*currentParticle)->momentum().e()/cosh(etaTrue); if(std::fabs(etaTrue) < 1.479) { @@ -359,3 +412,39 @@ void EgammaSuperClusters::endJob() { if (outputFile_.size() != 0 && dbe_) dbe_->save(outputFile_); } + +float EgammaSuperClusters::ecalEta(float EtaParticle , float Zvertex, float plane_Radius) +{ + const float R_ECAL = 136.5; + const float Z_Endcap = 328.0; + const float etaBarrelEndcap = 1.479; + + if(EtaParticle != 0.) + { + float Theta = 0.0 ; + float ZEcal = (R_ECAL-plane_Radius)*sinh(EtaParticle)+Zvertex; + + if(ZEcal != 0.0) Theta = atan(R_ECAL/ZEcal); + if(Theta<0.0) Theta = Theta+Geom::pi() ; + + float ETA = - log(tan(0.5*Theta)); + + if( fabs(ETA) > etaBarrelEndcap ) + { + float Zend = Z_Endcap ; + if(EtaParticle<0.0 ) Zend = -Zend ; + float Zlen = Zend - Zvertex ; + float RR = Zlen/sinh(EtaParticle); + Theta = atan((RR+plane_Radius)/Zend); + if(Theta<0.0) Theta = Theta+Geom::pi() ; + ETA = - log(tan(0.5*Theta)); + } + + return ETA; + } + else + { + edm::LogWarning("") << "[EgammaSuperClusters::ecalEta] Warning: Eta equals to zero, not correcting" ; + return EtaParticle; + } +} diff --git a/Validation/EcalDigis/src/EcalMixingModuleValidation.cc b/Validation/EcalDigis/src/EcalMixingModuleValidation.cc index dd019e7ae96..43e390296ca 100644 --- a/Validation/EcalDigis/src/EcalMixingModuleValidation.cc +++ b/Validation/EcalDigis/src/EcalMixingModuleValidation.cc @@ -1,8 +1,8 @@ /* * \file EcalMixingModuleValidation.cc * - * $Date: 2006/10/26 08:30:32 $ - * $Revision: 1.5 $ + * $Date: 2006/11/08 16:46:04 $ + * $Revision: 1.6 $ * \author F. Cossutti * */ @@ -141,16 +141,16 @@ EcalMixingModuleValidation::EcalMixingModuleValidation(const ParameterSet& ps): dbe_->setCurrentFolder("EcalDigiTask"); sprintf (histo, "EcalDigiTask Barrel maximum Digi over sim signal ratio gt 100 ADC" ) ; - meEBDigiMixRatiogt100ADC_ = dbe_->book1D(histo, histo, 200, 0., 40.) ; + meEBDigiMixRatiogt100ADC_ = dbe_->book1D(histo, histo, 200, 0., 100.) ; sprintf (histo, "EcalDigiTask Endcap maximum Digi over sim signal ratio gt 100 ADC" ) ; - meEEDigiMixRatiogt100ADC_ = dbe_->book1D(histo, histo, 200, 0., 40.) ; + meEEDigiMixRatiogt100ADC_ = dbe_->book1D(histo, histo, 200, 0., 100.) ; sprintf (histo, "EcalDigiTask Barrel maximum Digi over sim signal ratio signal gt 50pc gun" ) ; - meEBDigiMixRatioOriggt50pc_ = dbe_->book1D(histo, histo, 100, 0., 20.) ; + meEBDigiMixRatioOriggt50pc_ = dbe_->book1D(histo, histo, 200, 0., 100.) ; sprintf (histo, "EcalDigiTask Endcap maximum Digi over sim signal ratio signal gt 40pc gun" ) ; - meEEDigiMixRatioOriggt40pc_ = dbe_->book1D(histo, histo, 100, 0., 20.) ; + meEEDigiMixRatioOriggt40pc_ = dbe_->book1D(histo, histo, 200, 0., 100.) ; sprintf (histo, "EcalDigiTask Barrel bunch crossing" ) ; meEBbunchCrossing_ = dbe_->book1D(histo, histo, 20, -10., 10.) ; diff --git a/Validation/EcalDigis/test/HistoCompare.C b/Validation/EcalDigis/test/HistoCompare.C index 37772673e0b..078c4f5870b 100644 --- a/Validation/EcalDigis/test/HistoCompare.C +++ b/Validation/EcalDigis/test/HistoCompare.C @@ -34,7 +34,9 @@ HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ) mynewHisto1 = newHisto; myte = te; - Double_t mypv = myoldHisto1->Chi2Test(mynewHisto1,"OU"); + Double_t *res; + + Double_t mypv = myoldHisto1->Chi2Test(mynewHisto1,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -54,7 +56,8 @@ HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ) mynewHisto2 = newHisto; myte = te; - Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"OU"); + Double_t *res ; + Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -75,7 +78,9 @@ HistoCompare::PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te ) mynewProfile = newHisto; myte = te; - Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"OU"); + Double_t *res ; + + Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; diff --git a/Validation/EcalHits/test/DoCompare.C b/Validation/EcalHits/test/DoCompare.C index 67a0987bd7b..3dda73c2140 100644 --- a/Validation/EcalHits/test/DoCompare.C +++ b/Validation/EcalHits/test/DoCompare.C @@ -1,8 +1,8 @@ void DoCompare( char* Energy ){ - static const int NHisto = 47; - static const int NHisto2 = 4; - static const int NHisto3 = 2; + const int NHisto = 47; + const int NHisto2 = 4; + const int NHisto3 = 2; TText* te = new TText(); te->SetTextSize(0.1); diff --git a/Validation/EcalHits/test/HistoCompare.C b/Validation/EcalHits/test/HistoCompare.C index 997e7f3a2c9..d5b553fdd13 100644 --- a/Validation/EcalHits/test/HistoCompare.C +++ b/Validation/EcalHits/test/HistoCompare.C @@ -6,9 +6,9 @@ class HistoCompare { HistoCompare() { std::cout << "Initializing HistoCompare... " << std::endl; } ; - void PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ); - void PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ); - void PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te ); + void PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te , int method=1); + void PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te, int method=1 ); + void PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te , int method=1); private: @@ -27,14 +27,22 @@ class HistoCompare { }; -HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ) +HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te , int method) { myoldHisto1 = oldHisto; mynewHisto1 = newHisto; myte = te; - Double_t mypv = myoldHisto1->Chi2Test(mynewHisto1,"OU"); + Double_t *res; + + Double_t mypv; + if (method == 1) { + mypv = myoldHisto1->Chi2Test(mynewHisto1,"UU",res); + }else { + mypv = myoldHisto1->KolmogorovTest(mynewHisto1, "UO"); + } + std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -42,19 +50,27 @@ HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ) myte->DrawTextNDC(0.2,0.7, value.c_str()); - std::cout << "[OVAL] " << myoldHisto1->GetName() << " PV= "<< mypv <<std::endl; + std::cout << "[OVAL] " << myoldHisto1->GetName() << " PV = " << mypv << std::endl; return; } -HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ) +HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te , int method ) { myoldHisto2 = oldHisto; mynewHisto2 = newHisto; myte = te; - Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"OU"); + Double_t *res ; + Double_t mypv ; + if (method == 1) { + mypv = myoldHisto2->Chi2Test(mynewHisto2,"UU",res); + }else { + mypv = myoldHisto2->KolmogorovTest(mynewHisto2, "UO"); + } + + std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -68,14 +84,23 @@ HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ) } -HistoCompare::PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te ) +HistoCompare::PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te , int method) { myoldProfile = oldHisto; mynewProfile = newHisto; myte = te; - Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"OU"); + Double_t *res ; + + Double_t mypv; + if (method == 1) { + mypv = myoldProfile->Chi2Test(mynewProfile,"UU",res); + }else { + mypv = myoldProfile->KolmogorovTest(mynewProfile, "UO"); + } + + std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; diff --git a/Validation/EcalHits/test/rootlogon.C b/Validation/EcalHits/test/rootlogon.C index 3009f67f085..9da127cd46c 100644 --- a/Validation/EcalHits/test/rootlogon.C +++ b/Validation/EcalHits/test/rootlogon.C @@ -4,5 +4,7 @@ Cintex::Enable(); cout << "Loading FWLite..." << endl; gSystem->Load("libFWCoreFWLite"); AutoLibraryLoader::enable(); - +gSystem->Load("libSimDataFormatsEcalValidation.so"); +gSystem->Load("libSimDataFormatsTrack.so"); +gSystem->Load("libSimDataFormatsVertex.so"); } diff --git a/Validation/EcalRecHits/test/HistoCompare.C b/Validation/EcalRecHits/test/HistoCompare.C index 37772673e0b..078c4f5870b 100644 --- a/Validation/EcalRecHits/test/HistoCompare.C +++ b/Validation/EcalRecHits/test/HistoCompare.C @@ -34,7 +34,9 @@ HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ) mynewHisto1 = newHisto; myte = te; - Double_t mypv = myoldHisto1->Chi2Test(mynewHisto1,"OU"); + Double_t *res; + + Double_t mypv = myoldHisto1->Chi2Test(mynewHisto1,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -54,7 +56,8 @@ HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ) mynewHisto2 = newHisto; myte = te; - Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"OU"); + Double_t *res ; + Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -75,7 +78,9 @@ HistoCompare::PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te ) mynewProfile = newHisto; myte = te; - Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"OU"); + Double_t *res ; + + Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"UU",res); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; diff --git a/Validation/EcalTriggerPrimitives/doc/html/index.html b/Validation/EcalTriggerPrimitives/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/EcalTriggerPrimitives/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/EcalTriggerPrimitives/doc/html/overview.html b/Validation/EcalTriggerPrimitives/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/EcalTriggerPrimitives/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/Generator/doc/html/index.html b/Validation/Generator/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/Generator/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/Generator/doc/html/overview.html b/Validation/Generator/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/Generator/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/Geometry/data/trackerMaterials.x0 b/Validation/Geometry/data/trackerMaterials.x0 index 93c29febd4c..bd4c35872d2 100644 --- a/Validation/Geometry/data/trackerMaterials.x0 +++ b/Validation/Geometry/data/trackerMaterials.x0 @@ -290,9 +290,9 @@ TID_Connector 0.000 0.000 1.000 0.000 0.000 TIE_Connector 0.000 0.000 1.000 0.000 0.000 -TOB_PA_rphi 0.453 0.000 0.000 0.000 0.547 +TOB_PA_rphi 0.000 0.000 0.000 0.000 1.000 -TOB_PA_ster 0.311 0.000 0.000 0.000 0.689 +TOB_PA_ster 0.000 0.000 0.000 0.000 1.000 TOB_frame_ele 1.000 0.000 0.000 0.000 0.000 @@ -306,11 +306,17 @@ TOB_mod_cool_3 0.258 0.000 0.000 0.742 0.000 TOB_mod_cool_4 0.326 0.000 0.000 0.674 0.000 +TOB_mod_cool1 0.000 0.000 0.000 1.000 0.000 + +TOB_mod_cool2 0.311 0.000 0.000 0.689 0.000 + +TOB_mod_comp 0.000 0.000 0.000 1.000 0.000 + TOB_rail 1.000 0.000 0.000 0.000 0.000 -TOB_sid_rail1 0.705 0.000 0.000 0.000 0.295 +TOB_sid_rail1 0.719 0.000 0.000 0.000 0.281 -TOB_sid_rail2 0.814 0.000 0.000 0.000 0.186 +TOB_sid_rail2 0.824 0.000 0.000 0.000 0.176 TOB_ele5 0.000 0.000 0.000 0.000 1.000 @@ -324,6 +330,14 @@ TOB_ele9 0.000 0.000 0.000 0.000 1.000 TOB_ele10 0.000 0.000 0.000 0.000 1.000 +TOB_ele12 0.000 0.000 0.000 0.000 1.000 + +TOB_ele34 0.000 0.000 0.000 0.000 1.000 + +TOB_ele56 0.000 0.000 0.000 0.000 1.000 + +TOB_Sens_Interface 0.988 0.000 0.000 0.000 0.012 + TOB_ICC1 0.121 0.000 0.000 0.000 0.879 TOB_ICC2 0.074 0.000 0.000 0.000 0.926 @@ -436,4 +450,21 @@ Pix_Bar_Conn3 0.227 0.000 0.317 0.211 0.245 Pix_Bar_Services 0.332 0.000 0.359 0.309 0.000 -Pix_Bar_Ring_HC 1.000 0.000 0.000 0.000 0.000 \ No newline at end of file +Pix_Bar_Ring_HC 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_Bump 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_VHDI 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_ChoTherm_sensor 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_AdhFilm 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_HDI 1.000 0.000 0.000 0.000 0.000 + +Pix_Fwd_AgEpoxy 1.000 0.000 0.000 0.000 0.000 + +PixelForwardCoolant 0.000 0.000 0.000 1.000 0.000 + +Silicone_Gel 1.000 0.000 0.000 0.000 0.000 + diff --git a/Validation/Geometry/src/MaterialBudgetAction.cc b/Validation/Geometry/src/MaterialBudgetAction.cc index c15d35e6037..b374a684301 100644 --- a/Validation/Geometry/src/MaterialBudgetAction.cc +++ b/Validation/Geometry/src/MaterialBudgetAction.cc @@ -90,22 +90,21 @@ MaterialBudgetAction::MaterialBudgetAction(const edm::ParameterSet& iPSet) saveToTxt = false; } + //---- Compute all the steps even if not stored on file + bool allSteps = m_Anal.getParameter<bool>("AllStepsToTree"); + std::cout << "TestGeometry: all steps are computed " << allSteps << std::endl; + if( allSteps ) theData->SetAllStepsToTree(); + //---- Save tree to ROOT file std::string saveToTreeFile = m_Anal.getParameter<std::string>("TreeFile"); // std::string saveToTreeFile = ""; if( saveToTreeFile != "None" ) { saveToTree = true; - std::cout << "TestGeometry: saving ROOT TREE to " << saveToTreeFile << std::endl; - - bool allSteps = m_Anal.getParameter<bool>("AllStepsToTree"); - std::cout << "TestGeometry: all steps to ROOT TREE " << allSteps << std::endl; - if( allSteps ) theData->SetAllStepsToTree(); - theTree = new MaterialBudgetTree( theData, saveToTreeFile ); - } else { saveToTree = false; } + std::cout << "TestGeometry: saving ROOT TREE to " << saveToTreeFile << std::endl; } diff --git a/Validation/Geometry/src/MaterialBudgetData.cc b/Validation/Geometry/src/MaterialBudgetData.cc index 8241f27f4aa..7e18052a212 100644 --- a/Validation/Geometry/src/MaterialBudgetData.cc +++ b/Validation/Geometry/src/MaterialBudgetData.cc @@ -9,6 +9,7 @@ #include "G4EventManager.hh" #include "G4Event.hh" +//#define TREE_DEBUG MaterialBudgetData::MaterialBudgetData() { @@ -20,7 +21,7 @@ MaterialBudgetData::MaterialBudgetData() void MaterialBudgetData::SetAllStepsToTree() { - allStepsToTree = 1; + allStepsToTree = true; MAXNUMBERSTEPS = 0; MAXNUMBERSTEPS = 5000; //!!!WARNING: this number is also hardcoded when booking the tree theDmb = new float[MAXNUMBERSTEPS]; @@ -184,10 +185,10 @@ void MaterialBudgetData::dataPerStep( const G4Step* aStep ) theElectronicsFractionMB = myMaterialBudgetCategorizer->x0fraction(lv->GetMaterial()->GetName())[4]; theOtherFractionMB = myMaterialBudgetCategorizer->x0fraction(lv->GetMaterial()->GetName())[5]; theAirFractionMB = myMaterialBudgetCategorizer->x0fraction(lv->GetMaterial()->GetName())[6]; - // if(theOtherFractionMB!=0) std::cout << " material found with no category " << lv->GetMaterial()->GetName() - // << " in volume " << lv->GetName() << std::endl; - if(theOtherFractionMB!=0) LogDebug("MaterialBudgetData") << " material found with no category " << lv->GetMaterial()->GetName() - << " in volume " << lv->GetName(); + if(theOtherFractionMB!=0) std::cout << " material found with no category " << lv->GetMaterial()->GetName() + << " in volume " << lv->GetName() << std::endl; + // if(theOtherFractionMB!=0) LogDebug("MaterialBudgetData") << " material found with no category " << lv->GetMaterial()->GetName() + // << " in volume " << lv->GetName(); // rr float dmb = steplen/radlen; @@ -197,7 +198,7 @@ void MaterialBudgetData::dataPerStep( const G4Step* aStep ) G4ThreeVector objectTranslation = t->GetTranslation(); const G4RotationMatrix* objectRotation = t->GetRotation(); const G4VProcess* interactionPre = prePoint->GetProcessDefinedStep(); - const G4VProcess* interactionPost = postPoint->GetProcessDefinedStep(); + // const G4VProcess* interactionPost = postPoint->GetProcessDefinedStep(); G4Track* track = aStep->GetTrack(); if(theStepN==0) std::cout << " Simulated Particle " << theID @@ -262,6 +263,7 @@ void MaterialBudgetData::dataPerStep( const G4Step* aStep ) theStepFinalBeta[theStepN] = postPoint->GetBeta(); theStepFinalGamma[theStepN] = postPoint->GetGamma(); theStepProcess[theStepN] = interactionPre->GetProcessType(); +#ifdef TREE_DEBUG std::cout << " step " << theStepN << "\tDelta MB = " << theDmb[theStepN] << std::endl @@ -337,6 +339,7 @@ void MaterialBudgetData::dataPerStep( const G4Step* aStep ) << theVolumeZaxis2[theStepN] << "," << theVolumeZaxis3[theStepN] << ")" << std::endl; +#endif } theTrkLen = aStep->GetTrack()->GetTrackLength(); diff --git a/Validation/Geometry/src/MaterialBudgetTrackerHistos.cc b/Validation/Geometry/src/MaterialBudgetTrackerHistos.cc index d5f74f38c00..59ca9f4c04d 100644 --- a/Validation/Geometry/src/MaterialBudgetTrackerHistos.cc +++ b/Validation/Geometry/src/MaterialBudgetTrackerHistos.cc @@ -19,64 +19,80 @@ void MaterialBudgetTrackerHistos::book() std::cout << "=== booking user histos ===" << std::endl; // total X0 - hmgr->addHistoProf1( new TProfile("10", "MB prof Eta ", 250, -5., 5. ) ); + hmgr->addHistoProf1( new TProfile("10", "MB prof Eta;#eta;x/X_{0} ", 250, -5., 5. ) ); hmgr->addHisto1( new TH1F("11", "Eta " , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("20", "MB prof Phi ", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("20", "MB prof Phi;#varphi [rad];x/X_{0} ", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("21", "Phi " , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("30", "MB prof Eta Phi ", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("30", "MB prof Eta Phi;#eta;#varphi;x/X_{0} ", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("31", "Eta vs Phi " , 501, -5., 5., 180, -3.1416, 3.1416 ) ); // rr + hmgr->addHistoProf1( new TProfile("40", "MB prof R;R [cm];x/X_{0} ", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("41", "R " , 200, 0., 2000. ) ); // Support - hmgr->addHistoProf1( new TProfile("110", "MB prof Eta [Support]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("110", "MB prof Eta [Support];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("111", "Eta [Support]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("120", "MB prof Phi [Support]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("120", "MB prof Phi [Support];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("121", "Phi [Support]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("130", "MB prof Eta Phi [Support]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("130", "MB prof Eta Phi [Support];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("131", "Eta vs Phi [Support]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("140", "MB prof R [Support];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("141", "R [Support]" , 200, 0., 2000. ) ); // Sensitive - hmgr->addHistoProf1( new TProfile("210", "MB prof Eta [Sensitive]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("210", "MB prof Eta [Sensitive];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("211", "Eta [Sensitive]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("220", "MB prof Phi [Sensitive]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("220", "MB prof Phi [Sensitive];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("221", "Phi [Sensitive]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("230", "MB prof Eta Phi [Sensitive]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("230", "MB prof Eta Phi [Sensitive];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("231", "Eta vs Phi [Sensitive]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("240", "MB prof R [Sensitive];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("241", "R [Sensitive]" , 200, 0., 2000. ) ); // Cables - hmgr->addHistoProf1( new TProfile("310", "MB prof Eta [Cables]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("310", "MB prof Eta [Cables];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("311", "Eta [Cables]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("320", "MB prof Phi [Cables]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("320", "MB prof Phi [Cables];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("321", "Phi [Cables]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("330", "MB prof Eta Phi [Cables]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("330", "MB prof Eta Phi [Cables];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("331", "Eta vs Phi [Cables]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("340", "MB prof R [Cables];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("341", "R [Cables]" , 200, 0., 2000. ) ); // Cooling - hmgr->addHistoProf1( new TProfile("410", "MB prof Eta [Cooling]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("410", "MB prof Eta [Cooling];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("411", "Eta [Cooling]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("420", "MB prof Phi [Cooling]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("420", "MB prof Phi [Cooling];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("421", "Phi [Cooling]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("430", "MB prof Eta Phi [Cooling]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("430", "MB prof Eta Phi [Cooling];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("431", "Eta vs Phi [Cooling]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("440", "MB prof R [Cooling];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("441", "R [Cooling]" , 200, 0., 2000. ) ); // Electronics - hmgr->addHistoProf1( new TProfile("510", "MB prof Eta [Electronics]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("510", "MB prof Eta [Electronics];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("511", "Eta [Electronics]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("520", "MB prof Phi [Electronics]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("520", "MB prof Phi [Electronics];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("521", "Phi [Electronics]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("530", "MB prof Eta Phi [Electronics]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("530", "MB prof Eta Phi [Electronics];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("531", "Eta vs Phi [Electronics]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("540", "MB prof R [Electronics];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("541", "R [Electronics]" , 200, 0., 2000. ) ); // Other - hmgr->addHistoProf1( new TProfile("610", "MB prof Eta [Other]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("610", "MB prof Eta [Other];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("611", "Eta [Other]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("620", "MB prof Phi [Other]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("620", "MB prof Phi [Other];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("621", "Phi [Other]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("630", "MB prof Eta Phi [Other]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("630", "MB prof Eta Phi [Other];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("631", "Eta vs Phi [Other]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("640", "MB prof R [Other];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("641", "R [Other]" , 200, 0., 2000. ) ); // Air - hmgr->addHistoProf1( new TProfile("710", "MB prof Eta [Air]", 250, -5.0, 5.0 ) ); + hmgr->addHistoProf1( new TProfile("710", "MB prof Eta [Air];#eta;x/X_{0}", 250, -5.0, 5.0 ) ); hmgr->addHisto1( new TH1F("711", "Eta [Air]" , 501, -5., 5. ) ); - hmgr->addHistoProf1( new TProfile("720", "MB prof Phi [Air]", 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("720", "MB prof Phi [Air];#varphi [rad];x/X_{0}", 180, -3.1416, 3.1416 ) ); hmgr->addHisto1( new TH1F("721", "Phi [Air]" , 180, -3.1416, 3.1416 ) ); - hmgr->addHistoProf2( new TProfile2D("730", "MB prof Eta Phi [Air]", 250, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf2( new TProfile2D("730", "MB prof Eta Phi [Air];#eta;#varphi;x/X_{0}", 250, -5., 5., 180, -3.1416, 3.1416 ) ); hmgr->addHisto2( new TH2F("731", "Eta vs Phi [Air]" , 501, -5., 5., 180, -3.1416, 3.1416 ) ); + hmgr->addHistoProf1( new TProfile("740", "MB prof R [Air];R [cm];x/X_{0}", 200, 0., 2000. ) ); + hmgr->addHisto1( new TH1F("741", "R [Air]" , 200, 0., 2000. ) ); // // rr @@ -174,6 +190,60 @@ void MaterialBudgetTrackerHistos::fillEndTrack() hmgr->getHistoProf1(720)->Fill(theData->getPhi(),theData->getAirMB()); hmgr->getHistoProf2(730)->Fill(theData->getEta(),theData->getPhi(),theData->getAirMB()); + // Compute the total x/X0 crossed at each step radius for each path + float theTotalMB_TOT = 0.0; + float theTotalMB_SUP = 0.0; + float theTotalMB_SEN = 0.0; + float theTotalMB_CAB = 0.0; + float theTotalMB_COL = 0.0; + float theTotalMB_ELE = 0.0; + float theTotalMB_OTH = 0.0; + float theTotalMB_AIR = 0.0; + for(int iStep = 0; iStep < theData->getNumberOfSteps(); iStep++) { + theTotalMB_TOT += theData->getStepDmb(iStep); + theTotalMB_SUP += theData->getSupportDmb(iStep); + theTotalMB_SEN += theData->getSensitiveDmb(iStep); + theTotalMB_CAB += theData->getCablesDmb(iStep); + theTotalMB_COL += theData->getCoolingDmb(iStep); + theTotalMB_ELE += theData->getElectronicsDmb(iStep); + theTotalMB_OTH += theData->getOtherDmb(iStep); + theTotalMB_AIR += theData->getAirDmb(iStep); + float polarRadius = sqrt( + ( 0.5 * ( theData->getStepInitialX(iStep)+theData->getStepFinalX(iStep) ) ) + * + ( 0.5 * ( theData->getStepInitialX(iStep)+theData->getStepFinalX(iStep) ) ) + + + ( 0.5 * ( theData->getStepInitialY(iStep)+theData->getStepFinalY(iStep) ) ) + * + ( 0.5 * ( theData->getStepInitialY(iStep)+theData->getStepFinalY(iStep) ) ) + ); + // Total + hmgr->getHisto1(41)->Fill(polarRadius); + hmgr->getHistoProf1(40)->Fill(polarRadius,theTotalMB_TOT); + // Support + hmgr->getHisto1(141)->Fill(polarRadius); + hmgr->getHistoProf1(140)->Fill(polarRadius,theTotalMB_SUP); + // Sensitive + hmgr->getHisto1(241)->Fill(polarRadius); + hmgr->getHistoProf1(240)->Fill(polarRadius,theTotalMB_SEN); + // Cables + hmgr->getHisto1(341)->Fill(polarRadius); + hmgr->getHistoProf1(340)->Fill(polarRadius,theTotalMB_CAB); + // Cooling + hmgr->getHisto1(441)->Fill(polarRadius); + hmgr->getHistoProf1(440)->Fill(polarRadius,theTotalMB_COL); + // Electronics + hmgr->getHisto1(541)->Fill(polarRadius); + hmgr->getHistoProf1(540)->Fill(polarRadius,theTotalMB_ELE); + // Other + hmgr->getHisto1(641)->Fill(polarRadius); + hmgr->getHistoProf1(640)->Fill(polarRadius,theTotalMB_OTH); + // Air + hmgr->getHisto1(741)->Fill(polarRadius); + hmgr->getHistoProf1(740)->Fill(polarRadius,theTotalMB_AIR); + // + } + // rr } diff --git a/Validation/Geometry/test/MaterialBudget.C b/Validation/Geometry/test/MaterialBudget.C index 49e72c3146d..5e31306fb7b 100644 --- a/Validation/Geometry/test/MaterialBudget.C +++ b/Validation/Geometry/test/MaterialBudget.C @@ -10,9 +10,10 @@ TString theDirName = "Images"; // data files TString theDetectorFileName; -//TString theTkStructFileName; TString theDetector; // +TFile* theDetectorFile; +// // histograms TProfile* prof_x0_det_total; @@ -32,6 +33,9 @@ TProfile* prof_x0_str_ELE; TProfile* prof_x0_str_OTH; TProfile* prof_x0_str_AIR; // +unsigned int iFirst = 1; +unsigned int iLast = 8; +// using namespace std; @@ -53,15 +57,14 @@ MaterialBudget(TString detector) { // files theDetectorFileName = "matbdg_" + theDetector + ".root"; - unsigned int iFirst = 1; - unsigned int iLast = 8; + if(theDetector == "TrackerSum") { iFirst = 1; iLast = 8; theDetectorFileName = "matbdg_TIB.root"; } if(theDetector == "Pixel") { - iFirst = 6; + iFirst = 7; iLast = 8; theDetectorFileName = "matbdg_PixBar.root"; } @@ -76,18 +79,43 @@ MaterialBudget(TString detector) { // // open root files - TFile* theDetectorFile = new TFile(theDetectorFileName); + theDetectorFile = new TFile(theDetectorFileName); + // + + // plots + createPlots("x_vs_eta"); + createPlots("x_vs_phi"); + createPlots("x_vs_R"); // +} + +// Plots +void createPlots(TString plot) { + unsigned int plotNumber = 0; + TString abscissaName = "dummy"; + if(plot.CompareTo("x_vs_eta") == 0) { + plotNumber = 10; + abscissaName = TString("#eta"); + } else if(plot.CompareTo("x_vs_phi") == 0) { + plotNumber = 20; + abscissaName = TString("#varphi [rad]"); + } else if(plot.CompareTo("x_vs_R") == 0) { + plotNumber = 40; + abscissaName = TString("R [cm]"); + } else { + cout << " error: chosen plot name not known " << plot << endl; + return; + } // get TProfiles - prof_x0_det_total = (TProfile*)theDetectorFile->Get("10"); - prof_x0_det_SUP = (TProfile*)theDetectorFile->Get("110"); - prof_x0_det_SEN = (TProfile*)theDetectorFile->Get("210"); - prof_x0_det_CAB = (TProfile*)theDetectorFile->Get("310"); - prof_x0_det_COL = (TProfile*)theDetectorFile->Get("410"); - prof_x0_det_ELE = (TProfile*)theDetectorFile->Get("510"); - prof_x0_det_OTH = (TProfile*)theDetectorFile->Get("610"); - prof_x0_det_AIR = (TProfile*)theDetectorFile->Get("710"); + prof_x0_det_total = (TProfile*)theDetectorFile->Get(Form("%u", plotNumber)); + prof_x0_det_SUP = (TProfile*)theDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN = (TProfile*)theDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB = (TProfile*)theDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL = (TProfile*)theDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE = (TProfile*)theDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH = (TProfile*)theDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR = (TProfile*)theDetectorFile->Get(Form("%u", 700 + plotNumber)); // histos TH1D* hist_x0_total = (TH1D*)prof_x0_det_total->ProjectionX(); @@ -99,7 +127,7 @@ MaterialBudget(TString detector) { TH1D* hist_x0_OTH = (TH1D*)prof_x0_det_OTH->ProjectionX(); TH1D* hist_x0_AIR = (TH1D*)prof_x0_det_AIR->ProjectionX(); // - if(theDetector=="TrackerSum") { + if(theDetector=="TrackerSum" || theDetector=="Pixel" || theDetector=="Strip") { TString subDetector = "TIB"; for(unsigned int i_detector=iFirst; i_detector<=iLast; i_detector++) { switch(i_detector) { @@ -145,14 +173,14 @@ MaterialBudget(TString detector) { cout << subDetectorFileName << endl; cout << "***" << endl; // subdetector profiles - prof_x0_det_total = (TProfile*)subDetectorFile->Get("10"); - prof_x0_det_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_det_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_det_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_det_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_det_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_det_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_det_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_det_total = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); + prof_x0_det_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_total->Add( (TH1D*)prof_x0_det_total->ProjectionX("B"), +1.000 ); hist_x0_SUP->Add( (TH1D*)prof_x0_det_SUP->ProjectionX("B") , +1.000 ); @@ -181,7 +209,7 @@ MaterialBudget(TString detector) { // // stack - TString stackTitle = "Material Budget " + theDetector + ";#eta;x/X_{0}"; + TString stackTitle = "Material Budget " + theDetector + Form( ";%s;x/X_{0}",abscissaName.Data() ); THStack stack_x0("stack_x0",stackTitle); stack_x0.Add(hist_x0_SUP); stack_x0.Add(hist_x0_SEN); @@ -218,8 +246,8 @@ MaterialBudget(TString detector) { // Store can.Update(); - can.SaveAs( Form("%s/%s_X0.eps", theDirName.Data(), theDetector.Data()) ); - can.SaveAs( Form("%s/%s_X0.gif", theDirName.Data(), theDetector.Data()) ); + can.SaveAs( Form( "%s/%s_%s.eps", theDirName.Data(), theDetector.Data(), plot.Data() ) ); + can.SaveAs( Form( "%s/%s_%s.gif", theDirName.Data(), theDetector.Data(), plot.Data() ) ); // } diff --git a/Validation/Geometry/test/MaterialBudget_TDR.C b/Validation/Geometry/test/MaterialBudget_TDR.C index 7b0456a0b95..6b86135f5e0 100644 --- a/Validation/Geometry/test/MaterialBudget_TDR.C +++ b/Validation/Geometry/test/MaterialBudget_TDR.C @@ -52,6 +52,30 @@ using namespace std; // Main MaterialBudget_TDR() { + // plots + createPlots("x_vs_eta"); + createPlots("x_vs_phi"); + createPlots("x_vs_R"); + // +} + +void createPlots(TString plot){ + unsigned int plotNumber = 0; + TString abscissaName = "dummy"; + if(plot.CompareTo("x_vs_eta") == 0) { + plotNumber = 10; + abscissaName = TString("#eta"); + } else if(plot.CompareTo("x_vs_phi") == 0) { + plotNumber = 20; + abscissaName = TString("#varphi [rad]"); + } else if(plot.CompareTo("x_vs_R") == 0) { + plotNumber = 40; + abscissaName = TString("R [cm]"); + } else { + cout << " error: chosen plot name not known " << plot << endl; + return; + } + TString subDetector("empty"); for(unsigned int i_detector=0; i_detector<=9; i_detector++) { switch(i_detector) { @@ -109,16 +133,16 @@ MaterialBudget_TDR() { case 0: { // subDetector = "TIB"; // subdetector profiles - prof_x0_TIB = (TProfile*)subDetectorFile->Get("10"); + prof_x0_TIB = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_IB = (TH1D*)prof_x0_TIB->ProjectionX(); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP = (TH1D*)prof_x0_SUP->ProjectionX(); hist_x0_SEN = (TH1D*)prof_x0_SEN->ProjectionX(); @@ -132,16 +156,16 @@ MaterialBudget_TDR() { case 1: { // subDetector = "TIDF"; // subdetector profiles - prof_x0_TIDF = (TProfile*)subDetectorFile->Get("10"); + prof_x0_TIDF = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_IB->Add( (TH1D*)prof_x0_TIDF->ProjectionX("B") , +1.000 ); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -155,16 +179,16 @@ MaterialBudget_TDR() { case 2: { // subDetector = "TIDB"; // subdetector profiles - prof_x0_IB = (TProfile*)subDetectorFile->Get("10"); + prof_x0_IB = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_IB->Add( (TH1D*)prof_x0_IB->ProjectionX("B") , +1.000 ); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -178,16 +202,16 @@ MaterialBudget_TDR() { case 3: { // subDetector = "TOB"; // subdetector profiles - prof_x0_TOB = (TProfile*)subDetectorFile->Get("10"); + prof_x0_TOB = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_TOB = (TH1D*)prof_x0_TOB->ProjectionX(); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -201,16 +225,16 @@ MaterialBudget_TDR() { case 4: { // subDetector = "TEC"; // subdetector profiles - prof_x0_TEC = (TProfile*)subDetectorFile->Get("10"); + prof_x0_TEC = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_TEC = (TH1D*)prof_x0_TEC->ProjectionX(); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -224,23 +248,23 @@ MaterialBudget_TDR() { case 5: { // subDetector = "TkStrct"; // subdetector profiles - prof_x0_Outside = (TProfile*)subDetectorFile->Get("10"); + prof_x0_Outside = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_Outside = (TH1D*)prof_x0_Outside->ProjectionX(); break; } case 6: { // subDetector = "PixBar"; // subdetector profiles - prof_x0_PixBar = (TProfile*)subDetectorFile->Get("10"); + prof_x0_PixBar = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_Pixel = (TH1D*)prof_x0_PixBar->ProjectionX(); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -254,16 +278,16 @@ MaterialBudget_TDR() { case 7: { // subDetector = "PixFwdPlus"; // subdetector profiles - prof_x0_PixFwdPlus = (TProfile*)subDetectorFile->Get("10"); + prof_x0_PixFwdPlus = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_Pixel->Add( (TH1D*)prof_x0_PixFwdPlus->ProjectionX("B") , +1.000 ); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -277,16 +301,16 @@ MaterialBudget_TDR() { case 8: { subDetector = "PixFwdMinus"; // subdetector profiles - prof_x0_PixFwdMinus = (TProfile*)subDetectorFile->Get("10"); + prof_x0_PixFwdMinus = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_Pixel->Add( (TH1D*)prof_x0_PixFwdMinus->ProjectionX("B") , +1.000 ); // category profiles - prof_x0_SUP = (TProfile*)subDetectorFile->Get("110"); - prof_x0_SEN = (TProfile*)subDetectorFile->Get("210"); - prof_x0_CAB = (TProfile*)subDetectorFile->Get("310"); - prof_x0_COL = (TProfile*)subDetectorFile->Get("410"); - prof_x0_ELE = (TProfile*)subDetectorFile->Get("510"); - prof_x0_OTH = (TProfile*)subDetectorFile->Get("610"); - prof_x0_AIR = (TProfile*)subDetectorFile->Get("710"); + prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber)); + prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber)); + prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber)); + prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber)); + prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber)); + prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber)); + prof_x0_AIR = (TProfile*)subDetectorFile->Get(Form("%u", 700 + plotNumber)); // add to summary histogram hist_x0_SUP->Add( (TH1D*)prof_x0_SUP->ProjectionX("B") , +1.000 ); hist_x0_SEN->Add( (TH1D*)prof_x0_SEN->ProjectionX("B") , +1.000 ); @@ -300,7 +324,7 @@ MaterialBudget_TDR() { case 9: { // subDetector = "BeamPipe"; // subdetector profiles - prof_x0_BeamPipe = (TProfile*)subDetectorFile->Get("10"); + prof_x0_BeamPipe = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber)); hist_x0_BeamPipe = (TH1D*)prof_x0_BeamPipe->ProjectionX(); break; } @@ -323,15 +347,15 @@ MaterialBudget_TDR() { hist_x0_ELE->SetFillColor(30); // Electronics = green hist_x0_OTH->SetFillColor(42); // Other+Air = orange // - float mbmin = 0.0; - float mbmax = 1.8; - float etamin = -3.5; - float etamax = 3.5; + // float mbmin = 0.0; + // float mbmax = 1.8; + // float etamin = -3.5; + // float etamax = 3.5; // // First Plot: BeamPipe + Pixel + TIB/TID + TOB + TEC + Outside // stack - TString stackTitle_SubDetectors = "Tracker Material Budget;#eta;x/X_{0}"; + TString stackTitle_SubDetectors = Form( "Tracker Material Budget;%s;x/X_{0}",abscissaName.Data() ); THStack stack_x0_SubDetectors("stack_x0",stackTitle_SubDetectors); stack_x0_SubDetectors.Add(hist_x0_BeamPipe); stack_x0_SubDetectors.Add(hist_x0_Pixel); @@ -349,10 +373,10 @@ MaterialBudget_TDR() { // // Draw - stack_x0_SubDetectors.SetMinimum(mbmin); - stack_x0_SubDetectors.SetMaximum(mbmax); + // stack_x0_SubDetectors.SetMinimum(mbmin); + // stack_x0_SubDetectors.SetMaximum(mbmax); stack_x0_SubDetectors.Draw("HIST"); - stack_x0_SubDetectors.GetXaxis()->SetLimits(etamin,etamax); + // stack_x0_SubDetectors.GetXaxis()->SetLimits(etamin,etamax); // // Legenda @@ -368,14 +392,14 @@ MaterialBudget_TDR() { // Store can_SubDetectors.Update(); - can_SubDetectors.SaveAs( Form("%s/Tracker_SubDetectors_X0.eps", theDirName.Data()) ); - can_SubDetectors.SaveAs( Form("%s/Tracker_SubDetectors_X0.gif", theDirName.Data()) ); + can_SubDetectors.SaveAs( Form( "%s/Tracker_SubDetectors_%s.eps", theDirName.Data(), plot.Data() ) ); + can_SubDetectors.SaveAs( Form( "%s/Tracker_SubDetectors_%s.gif", theDirName.Data(), plot.Data() ) ); // // Second Plot: BeamPipe + SEN + ELE + CAB + COL + SUP + OTH/AIR + Outside // stack - TString stackTitle_Materials = "Tracker Material Budget;#eta;x/X_{0}"; + TString stackTitle_Materials = Form( "Tracker Material Budget;%s;x/X_{0}",abscissaName.Data() ); THStack stack_x0_Materials("stack_x0",stackTitle_Materials); stack_x0_Materials.Add(hist_x0_BeamPipe); stack_x0_Materials.Add(hist_x0_SEN); @@ -395,10 +419,10 @@ MaterialBudget_TDR() { // // Draw - stack_x0_Materials.SetMinimum(mbmin); - stack_x0_Materials.SetMaximum(mbmax); + // stack_x0_Materials.SetMinimum(mbmin); + // stack_x0_Materials.SetMaximum(mbmax); stack_x0_Materials.Draw("HIST"); - stack_x0_Materials.GetXaxis()->SetLimits(etamin,etamax); + // stack_x0_Materials.GetXaxis()->SetLimits(etamin,etamax); // // Legenda @@ -416,8 +440,8 @@ MaterialBudget_TDR() { // Store can_Materials.Update(); - can_Materials.SaveAs( Form("%s/Tracker_Materials_X0.eps", theDirName.Data()) ); - can_Materials.SaveAs( Form("%s/Tracker_Materials_X0.gif", theDirName.Data()) ); + can_Materials.SaveAs( Form( "%s/Tracker_Materials_%s.eps", theDirName.Data(), plot.Data() ) ); + can_Materials.SaveAs( Form( "%s/Tracker_Materials_%s.gif", theDirName.Data(), plot.Data() ) ); // } diff --git a/Validation/Geometry/test/TrackerGeometryValidation.sh b/Validation/Geometry/test/TrackerGeometryValidation.sh new file mode 100755 index 00000000000..6d4b3a3772a --- /dev/null +++ b/Validation/Geometry/test/TrackerGeometryValidation.sh @@ -0,0 +1,161 @@ +#! /bin/bash + +export here=$PWD +cd $here +echo "Working area:" $here +eval `scramv1 runtime -sh` + +export referenceDir=/afs/cern.ch/cms/data/CMSSW/Validation/Geometry/reference/Tracker +echo "Reference area:" $referenceDir + +# Create Images/ directory if it does not exist +if [ ! -d Images ]; then + echo "Creating directory Images/" + mkdir Images +fi +# + +# Download the source file +if [ ! -e single_neutrino.random.dat ]; then + echo "Download the Monte Carlo source file..." + wget `cat $CMSSW_RELEASE_BASE/src/Validation/Geometry/data/download.url` + echo "...done" +fi +# + +# Download the reference files and rename them to 'old' +echo "Download the reference 'old' files..." +cp $referenceDir/matbdg_TkStrct.root matbdg_TkStrct_old.root +cp $referenceDir/matbdg_PixBar.root matbdg_PixBar_old.root +cp $referenceDir/matbdg_PixFwdPlus.root matbdg_PixFwdPlus_old.root +cp $referenceDir/matbdg_PixFwdMinus.root matbdg_PixFwdMinus_old.root +cp $referenceDir/matbdg_TIB.root matbdg_TIB_old.root +cp $referenceDir/matbdg_TIDF.root matbdg_TIDF_old.root +cp $referenceDir/matbdg_TIDB.root matbdg_TIDB_old.root +cp $referenceDir/matbdg_TOB.root matbdg_TOB_old.root +cp $referenceDir/matbdg_TEC.root matbdg_TEC_old.root +cp $referenceDir/matbdg_Tracker.root matbdg_Tracker_old.root +cp $referenceDir/matbdg_BeamPipe.root matbdg_BeamPipe_old.root +echo "...done" +# + +# Run all the Tracker scripts and rename files as 'new' +echo "Run all the scripts to produce the 'new' files..." +# +echo "Running Tracker Structure..." +rm -rf TkStrct.txt +cmsRun runP_TkStrct.cfg > TkStrct.txt +echo "...done" +echo "Running Pixel Barrel..." +rm -rf PixBar.txt +cmsRun runP_PixBar.cfg > PixBar.txt +echo "...done" +echo "Running Pixel Forward Plus..." +rm -rf PixFwdPlus.txt +cmsRun runP_PixFwdPlus.cfg > PixFwdPlus.txt +echo "...done" +echo "Running Pixel Forward Minus..." +rm -rf PixFwdMinus.txt +cmsRun runP_PixFwdMinus.cfg > PixFwdMinus.txt +echo "...done" +echo "Running TIB..." +rm -rf TIB.txt +cmsRun runP_TIB.cfg > TIB.txt +echo "...done" +echo "Running TID+..." +rm -rf TIDF.txt +cmsRun runP_TIDF.cfg > TIDF.txt +echo "...done" +echo "Running TID-..." +rm -rf TIDB.txt +cmsRun runP_TIDB.cfg > TIDB.txt +echo "...done" +echo "Running TOB..." +rm -rf TOB.txt +cmsRun runP_TOB.cfg > TOB.txt +echo "...done" +echo "Running TEC..." +rm -rf TEC.txt +cmsRun runP_TEC.cfg > TEC.txt +echo "...done" +echo "Running Tracker..." +rm -rf Tracker.txt +cmsRun runP_Tracker.cfg > Tracker.txt +echo "...done" +echo "Running BeamPipe..." +rm -rf BeamPipe.txt +cmsRun runP_BeamPipe.cfg > BeamPipe.txt +# +cp matbdg_TkStrct.root matbdg_TkStrct_new.root +cp matbdg_PixBar.root matbdg_PixBar_new.root +cp matbdg_PixFwdPlus.root matbdg_PixFwdPlus_new.root +cp matbdg_PixFwdMinus.root matbdg_PixFwdMinus_new.root +cp matbdg_TIB.root matbdg_TIB_new.root +cp matbdg_TIDF.root matbdg_TIDF_new.root +cp matbdg_TIDB.root matbdg_TIDB_new.root +cp matbdg_TOB.root matbdg_TOB_new.root +cp matbdg_TEC.root matbdg_TEC_new.root +cp matbdg_Tracker.root matbdg_Tracker_new.root +cp matbdg_BeamPipe.root matbdg_BeamPipe_new.root +echo "...done" +# + +# Produce the 'new' plots +echo "Run the Tracker macro MaterialBudget.C to produce the 'new' plots..." +root -b -q 'MaterialBudget.C("PixBar")' +root -b -q 'MaterialBudget.C("PixFwdPlus")' +root -b -q 'MaterialBudget.C("PixFwdMinus")' +root -b -q 'MaterialBudget.C("TIB")' +root -b -q 'MaterialBudget.C("TIDF")' +root -b -q 'MaterialBudget.C("TIDB")' +root -b -q 'MaterialBudget.C("TOB")' +root -b -q 'MaterialBudget.C("TEC")' +root -b -q 'MaterialBudget.C("TkStrct")' +root -b -q 'MaterialBudget.C("Tracker")' +root -b -q 'MaterialBudget.C("TrackerSum")' +root -b -q 'MaterialBudget.C("Pixel")' +root -b -q 'MaterialBudget.C("Strip")' +root -b -q 'MaterialBudget_TDR.C()' +echo "...done" +# + +# Compare 'old' and 'new' plots +echo "Run the Tracker macro TrackerMaterialBudgetComparison.C to compare 'old and 'new' plots..." +root -b -q 'TrackerMaterialBudgetComparison.C("PixBar")' +root -b -q 'TrackerMaterialBudgetComparison.C("PixFwdPlus")' +root -b -q 'TrackerMaterialBudgetComparison.C("PixFwdMinus")' +root -b -q 'TrackerMaterialBudgetComparison.C("TIB")' +root -b -q 'TrackerMaterialBudgetComparison.C("TIDF")' +root -b -q 'TrackerMaterialBudgetComparison.C("TIDB")' +root -b -q 'TrackerMaterialBudgetComparison.C("TOB")' +root -b -q 'TrackerMaterialBudgetComparison.C("TEC")' +root -b -q 'TrackerMaterialBudgetComparison.C("TkStrct")' +root -b -q 'TrackerMaterialBudgetComparison.C("Tracker")' +root -b -q 'TrackerMaterialBudgetComparison.C("TrackerSum")' +root -b -q 'TrackerMaterialBudgetComparison.C("Pixel")' +root -b -q 'TrackerMaterialBudgetComparison.C("Strip")' +echo "...done" +# + +# Run the Tracker ModuleInfo analyzer (to compare position/orientation of Tracker Modules) +echo "Run the Tracker ModuleInfo analyzer to print Tracker Module info (position/orientation)..." +cmsRun $CMSSW_RELEASE_BASE/src/Geometry/TrackerGeometryBuilder/test/trackerModuleInfo.cfg +echo "...done" +# + +# Compare the ModuleInfo.log file with the reference one +echo "Compare the ModuleInfo.log (Tracker Module position/orientation) file with the reference one..." +if [ -e diff.temp ]; then + rm -rf diff.temp +fi +# +diff ModuleInfo.log $referenceDir/ModuleInfo.log > diff.temp +if [ -s diff.temp ]; then + echo "WARNING: the module position/orientation is changed, check diff.temp file for details" +else + echo "Tracker Module position/orientation OK" +fi +echo "...done" +# + +echo "TRACKER GEOMETRY VALIDATION ENDED... LOOK AT THE RESULTS" diff --git a/Validation/Geometry/test/TrackerMaterialBudgetComparison.C b/Validation/Geometry/test/TrackerMaterialBudgetComparison.C new file mode 100644 index 00000000000..b3604d77a31 --- /dev/null +++ b/Validation/Geometry/test/TrackerMaterialBudgetComparison.C @@ -0,0 +1,360 @@ +// include files +#include <iostream> +#include <iomanip> +#include <fstream> +#include <cmath> + +// data dirs +TString theDirName = "Images"; +// + +// data files +TString theDetectorFileName_old; +TString theDetectorFileName_new; +TString theDetector; +// +TFile* theDetectorFile_old; +TFile* theDetectorFile_new; +// + +// histograms +TProfile* prof_x0_det_total_old; +TProfile* prof_x0_det_SUP_old; +TProfile* prof_x0_det_SEN_old; +TProfile* prof_x0_det_CAB_old; +TProfile* prof_x0_det_COL_old; +TProfile* prof_x0_det_ELE_old; +TProfile* prof_x0_det_OTH_old; +TProfile* prof_x0_det_AIR_old; +TProfile* prof_x0_str_total_old; +TProfile* prof_x0_str_SUP_old; +TProfile* prof_x0_str_SEN_old; +TProfile* prof_x0_str_CAB_old; +TProfile* prof_x0_str_COL_old; +TProfile* prof_x0_str_ELE_old; +TProfile* prof_x0_str_OTH_old; +TProfile* prof_x0_str_AIR_old; +// +TProfile* prof_x0_det_total_new; +TProfile* prof_x0_det_SUP_new; +TProfile* prof_x0_det_SEN_new; +TProfile* prof_x0_det_CAB_new; +TProfile* prof_x0_det_COL_new; +TProfile* prof_x0_det_ELE_new; +TProfile* prof_x0_det_OTH_new; +TProfile* prof_x0_det_AIR_new; +TProfile* prof_x0_str_total_new; +TProfile* prof_x0_str_SUP_new; +TProfile* prof_x0_str_SEN_new; +TProfile* prof_x0_str_CAB_new; +TProfile* prof_x0_str_COL_new; +TProfile* prof_x0_str_ELE_new; +TProfile* prof_x0_str_OTH_new; +TProfile* prof_x0_str_AIR_new; +// +unsigned int iFirst = 1; +unsigned int iLast = 8; +// + +using namespace std; + +// Main +TrackerMaterialBudgetComparison(TString detector) { + // detector + theDetector = detector; + if( + theDetector!="TIB" && theDetector!="TIDF" && theDetector!="TIDB" + && theDetector!="TOB" && theDetector!="TEC" && theDetector!="TkStrct" + && theDetector!="PixBar" && theDetector!="PixFwdPlus" && theDetector!="PixFwdMinus" + && theDetector!="Tracker" && theDetector!="TrackerSum" + && theDetector!="Pixel" && theDetector!="Strip" + ){ + cerr << "MaterialBudget - ERROR detector not found " << theDetector << endl; + break; + } + // + + // files + theDetectorFileName_old = "matbdg_" + theDetector + "_old.root"; + theDetectorFileName_new = "matbdg_" + theDetector + "_new.root"; + if(theDetector == "TrackerSum") { + iFirst = 1; + iLast = 8; + theDetectorFileName_old = "matbdg_TIB_old.root"; + theDetectorFileName_new = "matbdg_TIB_new.root"; + } + if(theDetector == "Pixel") { + iFirst = 7; + iLast = 8; + theDetectorFileName_old = "matbdg_PixBar_old.root"; + theDetectorFileName_new = "matbdg_PixBar_new.root"; + } + if(theDetector == "Strip") { + iFirst = 1; + iLast = 4; + theDetectorFileName_old = "matbdg_TIB_old.root"; + theDetectorFileName_new = "matbdg_TIB_new.root"; + } + cout << "*** Open file... " << endl; + cout << " old: " << theDetectorFileName_old << endl; + cout << " new: " << theDetectorFileName_new << endl; + cout << "***" << endl; + // + + // open root files + theDetectorFile_old = new TFile(theDetectorFileName_old); + theDetectorFile_new = new TFile(theDetectorFileName_new); + // + + // plots + createPlots("x_vs_eta"); + createPlots("x_vs_phi"); + createPlots("x_vs_R"); + // +} + +// Plots +void createPlots(TString plot) { + unsigned int plotNumber = 0; + TString abscissaName = "dummy"; + if(plot.CompareTo("x_vs_eta") == 0) { + plotNumber = 10; + abscissaName = TString("#eta"); + } else if(plot.CompareTo("x_vs_phi") == 0) { + plotNumber = 20; + abscissaName = TString("#varphi [rad]"); + } else if(plot.CompareTo("x_vs_R") == 0) { + plotNumber = 40; + abscissaName = TString("R [cm]"); + } else { + cout << " error: chosen plot name not known " << plot << endl; + return; + } + + // get TProfiles + prof_x0_det_total_old = (TProfile*)theDetectorFile_old->Get(Form("%u", plotNumber)); + prof_x0_det_SUP_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR_old = (TProfile*)theDetectorFile_old->Get(Form("%u", 700 + plotNumber)); + // + prof_x0_det_total_new = (TProfile*)theDetectorFile_new->Get(Form("%u", plotNumber)); + prof_x0_det_SUP_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR_new = (TProfile*)theDetectorFile_new->Get(Form("%u", 700 + plotNumber)); + // + + // histos + TH1D* hist_x0_total_old = (TH1D*)prof_x0_det_total_old->ProjectionX(); + TH1D* hist_x0_SUP_old = (TH1D*)prof_x0_det_SUP_old->ProjectionX(); + TH1D* hist_x0_SEN_old = (TH1D*)prof_x0_det_SEN_old->ProjectionX(); + TH1D* hist_x0_CAB_old = (TH1D*)prof_x0_det_CAB_old->ProjectionX(); + TH1D* hist_x0_COL_old = (TH1D*)prof_x0_det_COL_old->ProjectionX(); + TH1D* hist_x0_ELE_old = (TH1D*)prof_x0_det_ELE_old->ProjectionX(); + TH1D* hist_x0_OTH_old = (TH1D*)prof_x0_det_OTH_old->ProjectionX(); + TH1D* hist_x0_AIR_old = (TH1D*)prof_x0_det_AIR_old->ProjectionX(); + // + TH1D* hist_x0_total_new = (TH1D*)prof_x0_det_total_new->ProjectionX(); + TH1D* hist_x0_SUP_new = (TH1D*)prof_x0_det_SUP_new->ProjectionX(); + TH1D* hist_x0_SEN_new = (TH1D*)prof_x0_det_SEN_new->ProjectionX(); + TH1D* hist_x0_CAB_new = (TH1D*)prof_x0_det_CAB_new->ProjectionX(); + TH1D* hist_x0_COL_new = (TH1D*)prof_x0_det_COL_new->ProjectionX(); + TH1D* hist_x0_ELE_new = (TH1D*)prof_x0_det_ELE_new->ProjectionX(); + TH1D* hist_x0_OTH_new = (TH1D*)prof_x0_det_OTH_new->ProjectionX(); + TH1D* hist_x0_AIR_new = (TH1D*)prof_x0_det_AIR_new->ProjectionX(); + // + + if(theDetector=="TrackerSum" || theDetector=="Pixel" || theDetector=="Strip") { + TString subDetector = "TIB"; + for(unsigned int i_detector=iFirst; i_detector<=iLast; i_detector++) { + switch(i_detector) { + case 1: { + subDetector = "TIDF"; + break; + } + case 2: { + subDetector = "TIDB"; + break; + } + case 3: { + subDetector = "TOB"; + break; + } + case 4: { + subDetector = "TEC"; + break; + } + case 5: { + subDetector = "TkStrct"; + break; + } + case 6: { + subDetector = "PixBar"; + break; + } + case 7: { + subDetector = "PixFwdPlus"; + break; + } + case 8: { + subDetector = "PixFwdMinus"; + break; + } + default: cout << " something wrong" << endl; + } + // file name + TString subDetectorFileName_old = "matbdg_" + subDetector + "_old.root"; + TString subDetectorFileName_new = "matbdg_" + subDetector + "_new.root"; + // open file + TFile* subDetectorFile_old = new TFile(subDetectorFileName_old); + TFile* subDetectorFile_new = new TFile(subDetectorFileName_new); + cout << "*** Open file... " << endl; + cout << " old: " << subDetectorFileName_old << endl; + cout << " new: " << subDetectorFileName_new << endl; + cout << "***" << endl; + // subdetector profiles + prof_x0_det_total_old = (TProfile*)subDetectorFile_old->Get(Form("%u", plotNumber)); + prof_x0_det_SUP_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR_old = (TProfile*)subDetectorFile_old->Get(Form("%u", 700 + plotNumber)); + // + prof_x0_det_total_new = (TProfile*)subDetectorFile_new->Get(Form("%u", plotNumber)); + prof_x0_det_SUP_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 100 + plotNumber)); + prof_x0_det_SEN_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 200 + plotNumber)); + prof_x0_det_CAB_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 300 + plotNumber)); + prof_x0_det_COL_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 400 + plotNumber)); + prof_x0_det_ELE_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 500 + plotNumber)); + prof_x0_det_OTH_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 600 + plotNumber)); + prof_x0_det_AIR_new = (TProfile*)subDetectorFile_new->Get(Form("%u", 700 + plotNumber)); + // add to summary histogram + hist_x0_total_old->Add( (TH1D*)prof_x0_det_total_old->ProjectionX("B"), +1.000 ); + hist_x0_SUP_old->Add( (TH1D*)prof_x0_det_SUP_old->ProjectionX("B") , +1.000 ); + hist_x0_SEN_old->Add( (TH1D*)prof_x0_det_SEN_old->ProjectionX("B") , +1.000 ); + hist_x0_CAB_old->Add( (TH1D*)prof_x0_det_CAB_old->ProjectionX("B") , +1.000 ); + hist_x0_COL_old->Add( (TH1D*)prof_x0_det_COL_old->ProjectionX("B") , +1.000 ); + hist_x0_ELE_old->Add( (TH1D*)prof_x0_det_ELE_old->ProjectionX("B") , +1.000 ); + hist_x0_OTH_old->Add( (TH1D*)prof_x0_det_OTH_old->ProjectionX("B") , +1.000 ); + hist_x0_AIR_old->Add( (TH1D*)prof_x0_det_AIR_old->ProjectionX("B") , +1.000 ); + // + hist_x0_total_new->Add( (TH1D*)prof_x0_det_total_new->ProjectionX("B"), +1.000 ); + hist_x0_SUP_new->Add( (TH1D*)prof_x0_det_SUP_new->ProjectionX("B") , +1.000 ); + hist_x0_SEN_new->Add( (TH1D*)prof_x0_det_SEN_new->ProjectionX("B") , +1.000 ); + hist_x0_CAB_new->Add( (TH1D*)prof_x0_det_CAB_new->ProjectionX("B") , +1.000 ); + hist_x0_COL_new->Add( (TH1D*)prof_x0_det_COL_new->ProjectionX("B") , +1.000 ); + hist_x0_ELE_new->Add( (TH1D*)prof_x0_det_ELE_new->ProjectionX("B") , +1.000 ); + hist_x0_OTH_new->Add( (TH1D*)prof_x0_det_OTH_new->ProjectionX("B") , +1.000 ); + hist_x0_AIR_new->Add( (TH1D*)prof_x0_det_AIR_new->ProjectionX("B") , +1.000 ); + // + } + } + // + // Draw + // canvas + TCanvas can_comparison("TkMB_Comparison","TkMB_Comparison",1200,800); + can_comparison.Range(0,0,25,25); + can_comparison.Divide(4,2); + can_comparison.SetFillColor(kWhite); + can_comparison.SetGridy(1); + can_comparison.SetLogy(0); + can_comparison.cd(); + // settings + gStyle->SetOptStat(0); + gStyle->SetOptFit(0); + + for(unsigned int i_category=1; i_category<=8; i_category++) { + TH1D* histo_old; + TH1D* histo_new; + switch(i_category) { + case 1: { + histo_old = hist_x0_SUP_old; + histo_new = hist_x0_SUP_new; + break; + } + case 2: { + histo_old = hist_x0_SEN_old; + histo_new = hist_x0_SEN_new; + break; + } + case 3: { + histo_old = hist_x0_CAB_old; + histo_new = hist_x0_CAB_new; + break; + } + case 4: { + histo_old = hist_x0_COL_old; + histo_new = hist_x0_COL_new; + break; + } + case 5: { + histo_old = hist_x0_ELE_old; + histo_new = hist_x0_ELE_new; + break; + } + case 6: { + histo_old = hist_x0_OTH_old; + histo_new = hist_x0_OTH_new; + break; + } + case 7: { + histo_old = hist_x0_AIR_old; + histo_new = hist_x0_AIR_new; + break; + } + case 8: { + histo_old = hist_x0_total_old; + histo_new = hist_x0_total_new; + break; + } + } + + // canvas + can_comparison.cd(i_category); + // + // Compare + histo_new->SetMarkerColor(2); // red + histo_new->SetLineColor(102); // dark red + histo_new->SetFillColor(0); // white + histo_new->SetMarkerStyle(20); // cyrcles + histo_new->SetMarkerSize(0.3); // + histo_old->SetLineColor(4); // blue + histo_old->SetFillStyle(3002); // small points + histo_old->SetFillColor(4); // blue + histo_old->SetLineWidth(1.0); // + // + // Draw + histo_old->Draw("HIST"); + histo_new->Draw("HIST P E1 SAME"); + // + // perform chi2 test between obtained and nominal histograms + double compatibilityFactor = histo_new->KolmogorovTest(histo_old,""); + std::cout << " Compatibility of " << histo_new->GetName() + << " with nominal distribution " << histo_old->GetName() << " is " << compatibilityFactor << std::endl; + // + + // Legenda + TLegend* theLegend = new TLegend(0.60, 0.60, 0.89, 0.89); + theLegend->AddEntry( histo_old , "OLD" , "l" ); + theLegend->AddEntry( histo_new , "NEW" , "p" ); + theLegend->SetHeader( Form("KF: %f",compatibilityFactor) ); + theLegend->Draw(); + // + } + + // Store + can_comparison.Update(); + can_comparison.SaveAs( Form( "%s/%s_Comparison_%s.eps", theDirName.Data(), theDetector.Data(), plot.Data() ) ); + can_comparison.SaveAs( Form( "%s/%s_Comparison_%s.gif", theDirName.Data(), theDetector.Data(), plot.Data() ) ); + // + +} diff --git a/Validation/GlobalHits/data/download.url b/Validation/GlobalHits/data/download.url index 30e4d5721dd..e69de29bb2d 100644 --- a/Validation/GlobalHits/data/download.url +++ b/Validation/GlobalHits/data/download.url @@ -1 +0,0 @@ -http://cmsdoc.cern.ch/cms/data/CMSSW/Validation/GlobalHits/data/MC_100p2_minbias.root \ No newline at end of file diff --git a/Validation/GlobalRecHits/doc/html/index.html b/Validation/GlobalRecHits/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/GlobalRecHits/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/GlobalRecHits/doc/html/overview.html b/Validation/GlobalRecHits/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/GlobalRecHits/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/HcalDigis/interface/HcalDigiTester.h b/Validation/HcalDigis/interface/HcalDigiTester.h index 9d905bf8a41..833fde77b34 100644 --- a/Validation/HcalDigis/interface/HcalDigiTester.h +++ b/Validation/HcalDigis/interface/HcalDigiTester.h @@ -1,18 +1,60 @@ //#ifndef HCALDIGITESTER_H //#define HCALDIGITESTER_H +#include <memory> +#include "PluginManager/ModuleDef.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ServiceRegistry/interface/Service.h" // user include files #include "FWCore/Framework/interface/Event.h" #include "FWCore/Framework/interface/ESHandle.h" #include "FWCore/Framework/interface/EDAnalyzer.h" +#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" +#include "DataFormats/HcalDetId/interface/HcalSubdetector.h" +#include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" +#include "DataFormats/HcalDetId/interface/HcalDetId.h" +#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" +#include "DataFormats/HcalDigi/interface/HcalQIESample.h" + #include "Geometry/CaloGeometry/interface/CaloGeometry.h" +#include "Geometry/Records/interface/IdealGeometryRecord.h" +#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" +#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" +#include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h" + #include "CalibFormats/HcalObjects/interface/HcalDbService.h" +#include "CalibFormats/HcalObjects/interface/HcalDbRecord.h" +#include "CalibFormats/HcalObjects/interface/HcalCoderDb.h" +#include "CalibFormats/HcalObjects/interface/HcalCalibrations.h" + #include "DQMServices/Core/interface/DaqMonitorBEInterface.h" #include "DQMServices/Daemon/interface/MonitorDaemon.h" -#include <map> -#include "Validation/HcalDigis/src/HcalSubdetDigiMonitor.h" + +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "DataFormats/HcalDigi/interface/HBHEDataFrame.h" +#include "DataFormats/HcalDigi/interface/HFDataFrame.h" +#include "DataFormats/HcalDigi/interface/HODataFrame.h" + + +#include <vector> +#include <utility> +#include <ostream> +#include <string> +#include <algorithm> +#include <cmath> + + +// +// class declaration +// + +using namespace cms; +using namespace edm; +using namespace std; + class HcalDigiTester : public edm::EDAnalyzer { public: @@ -20,24 +62,60 @@ public: ~HcalDigiTester(); virtual void analyze(const edm::Event&, const edm::EventSetup&); virtual void beginJob(const edm::EventSetup&) ; + // virtual void fill(const HBHEDataFrame& digi) const; + // virtual void fill(const HODataFrame& digi) const; + // virtual void fill(const HFDataFrame& digi) const; template<class Digi> void reco(const edm::Event&, const edm::EventSetup&); virtual void endJob() ; private: - // choose the correct subdet - HcalSubdetDigiMonitor * monitor(); DaqMonitorBEInterface* dbe_; - std::string outputFile_; - std::string hcalselector_; + string outputFile_; + string hcalselector_; bool subpedvalue_; - edm::ESHandle<CaloGeometry> geometry ; - edm::ESHandle<HcalDbService> conditions; - float pedvalue; + // HE Monitor Elements + MonitorElement* meEtaHE; + MonitorElement* mePhiHE; + MonitorElement* meDigiSimhitHE; + MonitorElement* meRatioDigiSimhitHE; + MonitorElement* meDigiSimhitHEprofile; + MonitorElement* menDigisHE; + MonitorElement* meSumDigisHE; + MonitorElement* meSumDigis_noise_HE; - std::map<std::string, HcalSubdetDigiMonitor*> monitors_; -}; + // HE Monitor Elements + MonitorElement* meEtaHB; + MonitorElement* mePhiHB; + MonitorElement* meDigiSimhitHB; + MonitorElement* meRatioDigiSimhitHB; + MonitorElement* meDigiSimhitHBprofile; + MonitorElement* menDigisHB; + MonitorElement* meSumDigisHB; + MonitorElement* meSumDigis_noise_HB; + // HF Monitor Elements + MonitorElement* meEtaHF; + MonitorElement* mePhiHF; + MonitorElement* meDigiSimhitHF; + MonitorElement* meRatioDigiSimhitHF; + MonitorElement* meDigiSimhitHFprofile; + MonitorElement* menDigisHF; + MonitorElement* meSumDigisHF; + MonitorElement* meSumDigis_noise_HF; + // HO Monitor Elements + MonitorElement* meEtaHO; + MonitorElement* mePhiHO; + MonitorElement* meDigiSimhitHO; + MonitorElement* meRatioDigiSimhitHO; + MonitorElement* meDigiSimhitHOprofile; + MonitorElement* menDigisHO; + MonitorElement* meSumDigisHO; + MonitorElement* meSumDigis_noise_HO; +ESHandle<CaloGeometry> geometry ; +ESHandle<HcalDbService> conditions; + float pedvalue; +}; diff --git a/Validation/HcalDigis/src/HcalDigiTester.cc b/Validation/HcalDigis/src/HcalDigiTester.cc index 19aba2aa259..db817172d9e 100644 --- a/Validation/HcalDigis/src/HcalDigiTester.cc +++ b/Validation/HcalDigis/src/HcalDigiTester.cc @@ -1,40 +1,4 @@ -#include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "FWCore/ServiceRegistry/interface/Service.h" #include "Validation/HcalDigis/interface/HcalDigiTester.h" -#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" -#include "DataFormats/HcalDetId/interface/HcalSubdetector.h" -#include "DataFormats/HcalDetId/interface/HcalElectronicsId.h" -#include "DataFormats/HcalDetId/interface/HcalDetId.h" -#include "DataFormats/HcalDigi/interface/HcalDigiCollections.h" -#include "DataFormats/HcalDigi/interface/HcalQIESample.h" - -#include "Geometry/Records/interface/IdealGeometryRecord.h" -#include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" -#include "Geometry/CaloGeometry/interface/CaloCellGeometry.h" -#include "SimDataFormats/CaloHit/interface/PCaloHitContainer.h" - -#include "CalibFormats/HcalObjects/interface/HcalDbRecord.h" -#include "CalibFormats/HcalObjects/interface/HcalCoderDb.h" -#include "CalibFormats/HcalObjects/interface/HcalCalibrations.h" - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "DQMServices/Daemon/interface/MonitorDaemon.h" - -#include "DataFormats/HcalDigi/interface/HBHEDataFrame.h" -#include "DataFormats/HcalDigi/interface/HFDataFrame.h" -#include "DataFormats/HcalDigi/interface/HODataFrame.h" - -#include <vector> -#include <utility> -#include <ostream> -#include <string> -#include <algorithm> -#include <cmath> - -using namespace cms; -using namespace edm; -using namespace std; - @@ -72,69 +36,36 @@ void HcalDigiTester::reco(const edm::Event& iEvent, const edm::EventSetup& iSetu if (hcalselector_ == "HO" ) subdet = 3; if (hcalselector_ == "HF" ) subdet = 4; - for (ihbhe=hbhe->begin();ihbhe!=hbhe->end();ihbhe++) + + for (ihbhe=hbhe->begin();ihbhe!=hbhe->end();ihbhe++) { HcalDetId cell(ihbhe->id()); if (cell.subdet()== subdet ) { const CaloCellGeometry* cellGeometry = - geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ; + geometry->getSubdetectorGeometry (cell)->getGeometry (cell) ; double fEta = cellGeometry->getPosition ().eta () ; double fPhi = cellGeometry->getPosition ().phi () ; - monitor()->fillEta(fEta); - monitor()->fillPhi(fPhi); + if (hcalselector_ == "HB" ){ if (meEtaHB) meEtaHB->Fill(fEta) ; if (mePhiHB) mePhiHB->Fill(fPhi) ;} + if (hcalselector_ == "HE" ){ if (meEtaHE) meEtaHE->Fill(fEta) ; if (mePhiHE) mePhiHE->Fill(fPhi) ;} + if (hcalselector_ == "HO" ){ if (meEtaHO) meEtaHO->Fill(fEta) ; if (mePhiHO) mePhiHO->Fill(fPhi) ;} + if (hcalselector_ == "HF" ){ if (meEtaHF) meEtaHF->Fill(fEta) ; if (mePhiHF) mePhiHF->Fill(fPhi) ;} conditions->makeHcalCalibration(cell, &calibrations); const HcalQIECoder* channelCoder = conditions->getHcalCoder(cell); HcalCoderDb coder (*channelCoder, *shape); coder.adc2fC(*ihbhe,tool); - float fDigiSum = 0; + for (int ii=0;ii<tool.size();ii++) - { - int capid = (*ihbhe)[ii].capid(); - if (subpedvalue_) fDigiSum+=(tool[ii]-calibrations.pedestal(capid)); - if (!subpedvalue_) fDigiSum+=(tool[ii] - pedvalue); - } - fAdcSum += fDigiSum; - - monitor()->fillPedestal((*ihbhe)[0].adc()); - monitor()->fillPedestal((*ihbhe)[1].adc()); - - if(fDigiSum > 50.) - { -//std::cout << (*ihbhe) << std::endl; -//std::cout << tool << std::endl; -//std::cout << pedvalue << std::endl; - // now do a few selected individual bins, if it's big enough - float fBin4 = tool[3]; - float fBin56 = tool[4] + tool[5]; - - if(subpedvalue_) - { - fBin4 -= calibrations.pedestal((*ihbhe)[3].capid()); - fBin56 -= (calibrations.pedestal((*ihbhe)[0].capid()) - + calibrations.pedestal((*ihbhe)[1].capid())); - } - else - { - fBin4 -= pedvalue; - fBin56 -= 2*pedvalue; - } - - //fBin12 is a pedestal, others are percentages - if(fDigiSum > 0) - { - fBin4 /= fDigiSum; - fBin56 /= fDigiSum; - } - - monitor()->fillBin4Frac(fBin4); - monitor()->fillBin56Frac(fBin56); - } + { + int capid = (*ihbhe)[ii].capid(); + if (subpedvalue_) fAdcSum+=(tool[ii]-calibrations.pedestal(capid)); + if (!subpedvalue_) fAdcSum+=(tool[ii] - pedvalue); + } ndigis++; } - } + } @@ -146,42 +77,205 @@ void HcalDigiTester::reco(const edm::Event& iEvent, const edm::EventSetup& iSetu float fEnergySimHits = 0; for (std::vector<PCaloHit>::const_iterator simhits = simhitResult->begin () ; - simhits != simhitResult->end () ; - ++simhits) - { - HcalDetId detId(simhits->id()); - // 1 == HB - if (detId.subdet()== subdet ){ - fEnergySimHits += simhits->energy(); - } + simhits != simhitResult->end () ; + ++simhits) + { + HcalDetId detId(simhits->id()); + // 1 == HB + if (detId.subdet()== subdet ){ fEnergySimHits += simhits->energy(); } + } + + if (hcalselector_ == "HB" ) { + if (meDigiSimhitHB) meDigiSimhitHB->Fill( fEnergySimHits, fAdcSum); + if (meRatioDigiSimhitHB) meRatioDigiSimhitHB->Fill(fAdcSum/fEnergySimHits); + if (meDigiSimhitHBprofile) meDigiSimhitHBprofile->Fill( fEnergySimHits, fAdcSum); + if (meSumDigisHB) meSumDigisHB->Fill(fAdcSum); + if (menDigisHB) menDigisHB->Fill(ndigis); + if (meSumDigis_noise_HB) meSumDigis_noise_HB->Fill(fAdcSum); + } + if (hcalselector_ == "HE" ) { + if (meDigiSimhitHE) meDigiSimhitHE->Fill( fEnergySimHits, fAdcSum); + if (meRatioDigiSimhitHE) meRatioDigiSimhitHE->Fill(fAdcSum/fEnergySimHits); + if (meDigiSimhitHEprofile) meDigiSimhitHEprofile->Fill( fEnergySimHits, fAdcSum); + if (meSumDigisHE) meSumDigisHE->Fill(fAdcSum); + if (menDigisHE) menDigisHE->Fill(ndigis); + if (meSumDigis_noise_HE) meSumDigis_noise_HE->Fill(fAdcSum); + } + if (hcalselector_ == "HF" ) { + if (meDigiSimhitHF) meDigiSimhitHF->Fill( fEnergySimHits, fAdcSum); + if (meRatioDigiSimhitHF) meRatioDigiSimhitHF->Fill(fAdcSum/fEnergySimHits); + if (meDigiSimhitHFprofile) meDigiSimhitHFprofile->Fill( fEnergySimHits, fAdcSum); + if (meSumDigisHF) meSumDigisHF->Fill(fAdcSum); + if (menDigisHF) menDigisHF->Fill(ndigis); + if (meSumDigis_noise_HF) meSumDigis_noise_HF->Fill(fAdcSum); + } + if (hcalselector_ == "HO" ) { + if (meDigiSimhitHO) meDigiSimhitHO->Fill( fEnergySimHits, fAdcSum); + if (meRatioDigiSimhitHO) meRatioDigiSimhitHO->Fill(fAdcSum/fEnergySimHits); + if (meDigiSimhitHOprofile) meDigiSimhitHOprofile->Fill( fEnergySimHits, fAdcSum); + if (meSumDigisHO) meSumDigisHO->Fill(fAdcSum); + if (menDigisHO) menDigisHO->Fill(ndigis); + if (meSumDigis_noise_HO) meSumDigis_noise_HO->Fill(fAdcSum); } - monitor()->fillDigiSimhit(fEnergySimHits, fAdcSum); - monitor()->fillRatioDigiSimhit(fAdcSum/fEnergySimHits); - monitor()->fillDigiSimhitProfile(fEnergySimHits, fAdcSum); - monitor()->fillSumDigis(fAdcSum); - monitor()->fillSumDigis_noise(fAdcSum); - monitor()->fillNDigis(ndigis); + ndigis=0; } HcalDigiTester::HcalDigiTester(const edm::ParameterSet& iConfig) -: dbe_(edm::Service<DaqMonitorBEInterface>().operator->()), - outputFile_(iConfig.getUntrackedParameter<string>("outputFile", "")), - hcalselector_(iConfig.getUntrackedParameter<string>("hcalselector", "all")), - subpedvalue_(iConfig.getUntrackedParameter<bool>("subpedvalue", "true")), - monitors_() { + // DQM ROOT output + outputFile_ = iConfig.getUntrackedParameter<string>("outputFile", ""); + if ( outputFile_.size() != 0 ) { - edm::LogInfo("OutputInfo") << " Hcal Digi Task histograms will be saved to '" << outputFile_.c_str() << "'"; + LogInfo("OutputInfo") << " Hcal Digi Task histograms will be saved to '" << outputFile_.c_str() << "'"; } else { LogInfo("OutputInfo") << " Hcal Digi Task histograms will NOT be saved"; } + + dbe_ = 0; + + // get hold of back-end interface + dbe_ = Service<DaqMonitorBEInterface>().operator->(); + + + meEtaHE = 0; + mePhiHE = 0; + + + meEtaHB = 0; + mePhiHB = 0; + + meEtaHF = 0; + mePhiHF = 0; + + meEtaHO = 0; + mePhiHO = 0; + + meDigiSimhitHB = 0; + meDigiSimhitHF = 0; + meDigiSimhitHE = 0; + meDigiSimhitHO = 0; + + + meDigiSimhitHBprofile = 0; + meDigiSimhitHEprofile = 0; + meDigiSimhitHFprofile = 0; + meDigiSimhitHOprofile = 0; + + meRatioDigiSimhitHB = 0; + meRatioDigiSimhitHE = 0; + meRatioDigiSimhitHF = 0; + meRatioDigiSimhitHO = 0; + meSumDigisHB = 0; + meSumDigisHE = 0; + meSumDigisHF = 0; + meSumDigisHO = 0; + + Char_t histo[20]; + + hcalselector_ = iConfig.getUntrackedParameter<string>("hcalselector", "all"); + subpedvalue_ = iConfig.getUntrackedParameter<bool>("subpedvalue", "true"); if ( dbe_ ) { dbe_->setCurrentFolder("HcalDigiTask"); + + if (hcalselector_ == "HE" || hcalselector_ == "noise" ) { + sprintf (histo, "HcalDigiTask_Eta_of_digis_HE" ) ; + meEtaHE = dbe_->book1D(histo, histo, 60 , -3. , 3.); + sprintf (histo, "HcalDigiTask_Phi_of_digis_HE" ) ; + mePhiHE = dbe_->book1D(histo, histo, 36 , -3.14159, 3.14159); + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HE"); + meDigiSimhitHE = dbe_->book2D(histo, histo, 50, 0.,1., 8000, 0., 800.); + + sprintf (histo, "HcalDigiTask_Ratio_energy_digis_vs_simhits_HE"); + meRatioDigiSimhitHE = dbe_->book1D(histo, histo, 200, 0., 1000.); + + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HE(profile)"); + meDigiSimhitHEprofile = dbe_->bookProfile(histo, histo, 50, 0.,1., 8000, 0., 800.); + sprintf (histo, "HcalDigiTask_number_of_digis_HE"); + menDigisHE = dbe_->book1D(histo, histo, 40, 0., 200.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_HE"); + meSumDigisHE = dbe_->book1D(histo, histo, 100, 0., 800.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_noise_HE"); + meSumDigis_noise_HE = dbe_->book1D(histo, histo, 50, -500., 500.); + } + + if (hcalselector_ == "HB" || hcalselector_ == "noise" ) { + sprintf (histo, "HcalDigiTask_Eta_of_digis_HB" ) ; + meEtaHB = dbe_->book1D(histo, histo, 40, -1.74 , 1.74); + sprintf (histo, "HcalDigiTask_Phi_of_digis_HB" ) ; + mePhiHB = dbe_->book1D(histo, histo, 72, -3.14159, 3.14159); + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HB"); + meDigiSimhitHB = dbe_->book2D(histo, histo, 50, 0.,1.5, 8000, 0., 800.); + + sprintf (histo, "HcalDigiTask_Ratio_energy_digis_vs_simhits_HB"); + meRatioDigiSimhitHB = dbe_->book1D(histo, histo, 200, 0., 1000.); + + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HB(profile)"); + meDigiSimhitHBprofile = dbe_->bookProfile(histo, histo, 50, 0.,1.5, 8000, 0., 800.); + + sprintf (histo, "HcalDigiTask_number_of_digis_HB"); + menDigisHB = dbe_->book1D(histo, histo, 40 , 0, 80); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_HB"); + meSumDigisHB = dbe_->book1D(histo, histo, 100, 0., 800.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_noise_HB"); + meSumDigis_noise_HB = dbe_->book1D(histo, histo, 50, -500., 500.); + } + + if (hcalselector_ == "HF" || hcalselector_ == "noise" ) { + sprintf (histo, "HcalDigiTask_Eta_of_digis_HF" ) ; + meEtaHF = dbe_->book1D(histo, histo, 100, -5. , 5.); + sprintf (histo, "HcalDigiTask_Phi_of_digis_HF" ) ; + mePhiHF = dbe_->book1D(histo, histo, 36, -3.14159, 3.14159); + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HF"); + meDigiSimhitHF = dbe_->book2D(histo, histo, 30, 0.,60., 3500, 0., 350.); + + sprintf (histo, "HcalDigiTask_Ratio_energy_digis_vs_simhits_HF"); + meRatioDigiSimhitHF = dbe_->book1D(histo, histo, 40, 3., 7.); + + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HF(profile)"); + meDigiSimhitHFprofile = dbe_->bookProfile(histo, histo, 30, 0.,60., 3500, 0., 350.); + sprintf (histo, "HcalDigiTask_number_of_digis_HF"); + menDigisHF = dbe_->book1D(histo, histo, 20, 0., 20.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_HF"); + meSumDigisHF = dbe_->book1D(histo, histo, 100, 0., 350.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_noise_HF"); + meSumDigis_noise_HF = dbe_->book1D(histo, histo, 50, -150., 150.); + } + + if (hcalselector_ == "HO" || hcalselector_ == "noise" ) { + sprintf (histo, "HcalDigiTask_Eta_of_digis_HO" ) ; + meEtaHO = dbe_->book1D(histo, histo, 40, -1.74 , 1.74); + sprintf (histo, "HcalDigiTask_Phi_of_digis_HO" ) ; + mePhiHO = dbe_->book1D(histo, histo, 72, -3.14159, 3.14159); + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HO"); + meDigiSimhitHO = dbe_->book2D(histo, histo, 50, 0.,0.2, 1500, 0., 150.); + + sprintf (histo, "HcalDigiTask_Ratio_energy_digis_vs_simhits_HO"); + meRatioDigiSimhitHO = dbe_->book1D(histo, histo, 140, 0., 1400.); + + sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_HO(profile)"); + meDigiSimhitHOprofile = dbe_->bookProfile(histo, histo, 50, 0.,0.2, 1500, 0., 150.); + sprintf (histo, "HcalDigiTask_number_of_digis_HO"); + menDigisHO = dbe_->book1D(histo, histo, 50, 0., 50.); + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_HO"); + meSumDigisHO = dbe_->book1D(histo, histo, 100, 0., 150.); + + sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_noise_HO"); + meSumDigis_noise_HO = dbe_->book1D(histo, histo, 50, -500., 500.); + } + + + } } @@ -201,30 +295,15 @@ void HcalDigiTester::endJob() { cout << " dbe_ = " << dbe_ << endl; if ( outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_); } - void HcalDigiTester::beginJob(const edm::EventSetup& c){ } -HcalSubdetDigiMonitor * HcalDigiTester::monitor() -{ - std::map<std::string, HcalSubdetDigiMonitor*>::iterator monitorItr - = monitors_.find(hcalselector_); - - if(monitorItr == monitors_.end()) - { - HcalSubdetDigiMonitor* m = new HcalSubdetDigiMonitor(dbe_, hcalselector_); - std::pair<std::string, HcalSubdetDigiMonitor*> mapElement( - hcalselector_, m); - monitorItr = monitors_.insert(mapElement).first; - } - return monitorItr->second; -} - void HcalDigiTester::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) { + using namespace edm; iSetup.get<IdealGeometryRecord>().get (geometry); iSetup.get<HcalDbRecord>().get(conditions); // reco<HBHEDataFrame>(iEvent,iSetup); @@ -252,3 +331,6 @@ HcalDigiTester::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) } + +DEFINE_SEAL_MODULE (); +DEFINE_ANOTHER_FWK_MODULE (HcalDigiTester) ; diff --git a/Validation/HcalDigis/src/HcalSubdetDigiMonitor.cc b/Validation/HcalDigis/src/HcalSubdetDigiMonitor.cc deleted file mode 100644 index fd5593e914b..00000000000 --- a/Validation/HcalDigis/src/HcalSubdetDigiMonitor.cc +++ /dev/null @@ -1,123 +0,0 @@ -#include "Validation/HcalDigis/src/HcalSubdetDigiMonitor.h" - -struct HistLim -{ - HistLim(int nbin, float mini, float maxi) - : n(nbin), min(mini), max(maxi) {} - int n; - float min; - float max; -}; - -HcalSubdetDigiMonitor::HcalSubdetDigiMonitor(DaqMonitorBEInterface* dbe, - const std::string & subdet) -: dbe_(dbe), - subdet_(subdet), - meEta(0), - mePhi(0), - meDigiSimhit(0), - meRatioDigiSimhit(0), - meDigiSimhitProfile(0), - menDigis(0), - meSumDigis(0), - meSumDigis_noise(0), - mePedestal(0), - meBin4Frac(0), - meBin56Frac(0) -{ - - // defaults are for HB - HistLim etaPlot(40, -1.74, 1.74); - HistLim phiPlot(72, -3.14159, 3.14159); - HistLim ndigisPlot(40, 0., 80.); - HistLim simePlot(50, 0., 1.5); - HistLim digiAmpPlot(8000, 0., 800.); - HistLim ratioPlot(200, 0., 1000.); - float sumWithNoiseMax = 500.; - HistLim pedestalPlot(50, 0., 20.); - HistLim fracPlot(52, -0.02, 1.02); - - if(subdet_ == "HE") - { - etaPlot = HistLim(60, -3., 3.); - phiPlot.n = 36; - ndigisPlot.max = 200.; - simePlot.max = 1.; - } - else if(subdet_ == "HF") - { - etaPlot = HistLim(100, -5., 5.); - phiPlot.n = 36; - ndigisPlot = HistLim(20, 0., 20.); - digiAmpPlot = HistLim(3500, 0., 350.); - ratioPlot = HistLim(200, 3., 7.); - sumWithNoiseMax = 150.; - simePlot= HistLim(30, 0., 60.); - } - else if(subdet_ == "HO") - { - digiAmpPlot = HistLim(1500, 0., 150.); - ratioPlot.max = 1400.; - ndigisPlot = HistLim(50, 0., 50.); - simePlot.max = 0.2; - } - - Char_t histo[100]; - const char * sub = subdet_.c_str(); - - sprintf (histo, "HcalDigiTask_Eta_of_digis_%s", sub ) ; - meEta= book1D(histo, etaPlot); - sprintf (histo, "HcalDigiTask_Phi_of_digis_%s", sub ) ; - mePhi= book1D(histo, phiPlot); - sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_%s", sub); - meDigiSimhit= book2D(histo, simePlot, digiAmpPlot); - sprintf (histo, "HcalDigiTask_Ratio_energy_digis_vs_simhits_%s", sub); - meRatioDigiSimhit= book1D(histo, ratioPlot); - - sprintf (histo, "HcalDigiTask_energy_digis_vs_simhits_%s(profile)", sub); - meDigiSimhitProfile = bookProfile(histo, simePlot, digiAmpPlot); - - sprintf (histo, "HcalDigiTask_number_of_digis_%s", sub); - menDigis= book1D(histo, ndigisPlot); - - sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_%s", sub); - meSumDigis= book1D(histo, HistLim(100, 0., digiAmpPlot.max)); - - sprintf (histo, "HcalDigiTask_sum_over_digis(fC)_noise_%s", sub); - meSumDigis_noise = book1D(histo, HistLim(50, -sumWithNoiseMax, sumWithNoiseMax)); - - sprintf (histo, "HcalDigiTask_pedestal_%s", sub); - mePedestal= book1D(histo, pedestalPlot); - sprintf (histo, "HcalDigiTask_bin_4_frac_%s", sub); - meBin4Frac = book1D(histo, fracPlot); - sprintf (histo, "HcalDigiTask_bin_5_6_frac_%s", sub); - meBin56Frac = book1D(histo, fracPlot); - -} - - -MonitorElement * HcalSubdetDigiMonitor::book1D(const std::string & name, - HcalSubdetDigiMonitor::HistLim lim) -{ - return dbe_->book1D(name, name, lim.n, lim.min, lim.max); -} - - -MonitorElement * HcalSubdetDigiMonitor::book2D(const std::string & name, - HcalSubdetDigiMonitor::HistLim lim1, - HcalSubdetDigiMonitor::HistLim lim2) -{ - return dbe_->book2D(name, name, lim1.n, lim1.min, lim1.max, - lim2.n, lim2.min, lim2.max); -} - -MonitorElement * HcalSubdetDigiMonitor::bookProfile(const std::string & name, - HcalSubdetDigiMonitor::HistLim lim1, - HcalSubdetDigiMonitor::HistLim lim2) -{ - return dbe_->bookProfile(name, name, lim1.n, lim1.min, lim1.max, - lim2.n, lim2.min, lim2.max); -} - - - diff --git a/Validation/HcalDigis/src/HcalSubdetDigiMonitor.h b/Validation/HcalDigis/src/HcalSubdetDigiMonitor.h deleted file mode 100644 index 5a19a3ad54f..00000000000 --- a/Validation/HcalDigis/src/HcalSubdetDigiMonitor.h +++ /dev/null @@ -1,70 +0,0 @@ -#ifndef HcalDigis_HcalSubdetDigiMonitor_h -#define HcalDigis_HcalSubdetDigiMonitor_h - -#include "DQMServices/Core/interface/DaqMonitorBEInterface.h" -#include "DQMServices/Daemon/interface/MonitorDaemon.h" -#include <string> - -class HcalSubdetDigiMonitor -{ -public: - - HcalSubdetDigiMonitor(DaqMonitorBEInterface* dbe, const std::string & subdet); - - void fillEta(double value) {fillElement(meEta, value);} - void fillPhi(double value) {fillElement(mePhi, value);} - void fillDigiSimhit(double v1, double v2) {fillElements(meDigiSimhit, v1,v2);} - void fillRatioDigiSimhit(double value) {fillElement(meRatioDigiSimhit, value);} - void fillDigiSimhitProfile(double v1, double v2) { - fillElements(meDigiSimhitProfile, v1, v2);} - void fillNDigis(double value) {fillElement(menDigis, value);} - void fillSumDigis(double value) {fillElement(meSumDigis, value);} - void fillSumDigis_noise(double value) {fillElement(meSumDigis_noise, value);} - void fillPedestal(double value) {fillElement(mePedestal, value);} - void fillBin4Frac(double value) {fillElement(meBin4Frac, value);} - void fillBin56Frac(double value) {fillElement(meBin56Frac, value);} - -private: - void fillElement(MonitorElement* me, double value) - { - if(me) me->Fill(value); - } - void fillElements(MonitorElement* me, double v1, double v2) - { - if(me) me->Fill(v1, v2); - } - - // little embedded struct - struct HistLim - { - HistLim(int nbin, float mini, float maxi) - : n(nbin), min(mini), max(maxi) {} - int n; - float min; - float max; - }; - - // utilities to create MonitorElements - MonitorElement * book1D(const std::string & name, HistLim lim); - MonitorElement * book2D(const std::string & name, HistLim lim1, - HistLim lim2); - MonitorElement * bookProfile(const std::string & name, HistLim lim1, - HistLim lim2); - - DaqMonitorBEInterface* dbe_; - std::string subdet_; - MonitorElement* meEta; - MonitorElement* mePhi; - MonitorElement* meDigiSimhit; - MonitorElement* meRatioDigiSimhit; - MonitorElement* meDigiSimhitProfile; - MonitorElement* menDigis; - MonitorElement* meSumDigis; - MonitorElement* meSumDigis_noise; - MonitorElement* mePedestal; - MonitorElement* meBin4Frac; - MonitorElement* meBin56Frac; -}; - -#endif - diff --git a/Validation/HcalDigis/src/SealModule.cc b/Validation/HcalDigis/src/SealModule.cc deleted file mode 100644 index f3d6203526a..00000000000 --- a/Validation/HcalDigis/src/SealModule.cc +++ /dev/null @@ -1,8 +0,0 @@ -#include "Validation/HcalDigis/interface/HcalDigiTester.h" -#include "PluginManager/ModuleDef.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ServiceRegistry/interface/Service.h" - -DEFINE_SEAL_MODULE (); -DEFINE_ANOTHER_FWK_MODULE (HcalDigiTester) ; - diff --git a/Validation/MuonIdentification/doc/html/index.html b/Validation/MuonIdentification/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/MuonIdentification/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/MuonIdentification/doc/html/overview.html b/Validation/MuonIdentification/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/MuonIdentification/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/MuonIsolation/doc/html/index.html b/Validation/MuonIsolation/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/MuonIsolation/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/MuonIsolation/doc/html/overview.html b/Validation/MuonIsolation/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/MuonIsolation/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/MuonRPCGeometry/doc/html/index.html b/Validation/MuonRPCGeometry/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/MuonRPCGeometry/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/MuonRPCGeometry/doc/html/overview.html b/Validation/MuonRPCGeometry/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/MuonRPCGeometry/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/RPCRecHits/doc/html/index.html b/Validation/RPCRecHits/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/RPCRecHits/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/RPCRecHits/doc/html/overview.html b/Validation/RPCRecHits/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/RPCRecHits/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/RecoParticleFlow/doc/html/index.html b/Validation/RecoParticleFlow/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/RecoParticleFlow/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/RecoParticleFlow/doc/html/overview.html b/Validation/RecoParticleFlow/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/RecoParticleFlow/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/RecoPixelVertexing/test/DoCompare.C b/Validation/RecoPixelVertexing/test/DoCompare.C index 160cb3cf5b5..70253347359 100644 --- a/Validation/RecoPixelVertexing/test/DoCompare.C +++ b/Validation/RecoPixelVertexing/test/DoCompare.C @@ -1,4 +1,4 @@ -void DoCompare(char *Sample){ +void DoCompare(char *Current, char *Reference=0) { static const int NPages = 6; @@ -10,16 +10,15 @@ void DoCompare(char *Sample){ gStyle->SetOptStat(111111); HistoCompare * myPV = new HistoCompare(); + TFile * curfile = new TFile( TString(Current)+".root" ); + TFile * reffile = curfile; + if (Reference) reffile = new TFile(TString(Reference)+".root"); + - char* reffilename = "${REFFILE}"; - char* curfilename = "${CURFILE}"; - - TFile * reffile = new TFile(reffilename); - TFile * curfile = new TFile(curfilename); - reffile->ls(); + if (Reference) reffile->ls(); curfile->ls(); - + TCanvas* c1 = new TCanvas("c1","c1"); c1->Divide(3,2); c1->cd(1); @@ -34,25 +33,28 @@ void DoCompare(char *Sample){ if (isHisto && h1 && h2 && *h1->GetName()== *h2->GetName()) { iHisto++; c1->cd( (iHisto-1) % NPages + 1); - //cout <<"--------- PROC, ihisto: "<<iHisto<<" name:"<<h1->GetName()<<endl; h1->SetLineColor(2); - h2->SetLineColor(4); h1->SetLineStyle(3); - h2->SetLineStyle(5); h1->DrawCopy(); - h2->DrawCopy("Same"); - myPV->PVCompute(h1,h2, te); + if (Reference) { + h2->SetLineColor(4); + h2->SetLineStyle(5); + h2->DrawCopy("Same"); + myPV->PVCompute(h1,h2, te); + } if ((iHisto % NPages) == 0) { - sprintf(title,"%s%s%d%s", Sample, "_", iHisto/NPages-1, ".eps"); + sprintf(title,"%s%s%d%s", Current, "_", iHisto/NPages-1, ".eps"); c1->Print(title); } } - delete h1; + if(Reference) delete h1; delete h2; object = list->After(object); } if ((iHisto % NPages) != 0) { - sprintf(title,"%s%s%d%s", Sample, "_", iHisto/NPages, ".eps"); + sprintf(title,"%s%s%d%s", Current, "_", iHisto/NPages, ".eps"); c1->Print(title); } + } + diff --git a/Validation/RecoPixelVertexing/test/HistoCompare.C b/Validation/RecoPixelVertexing/test/HistoCompare.C index 65130285192..16e305a87f0 100644 --- a/Validation/RecoPixelVertexing/test/HistoCompare.C +++ b/Validation/RecoPixelVertexing/test/HistoCompare.C @@ -33,13 +33,17 @@ HistoCompare::PVCompute(TH1 * oldHisto , TH1 * newHisto , TText * te ) myoldHisto1 = oldHisto; mynewHisto1 = newHisto; myte = te; + Double_t * res; Double_t mypv = 0.; + Double_t chi2; + Int_t ndf, igood; if (myoldHisto1->GetEntries() == mynewHisto1->GetEntries() && myoldHisto1->GetSumOfWeights() ==0 && mynewHisto1->GetSumOfWeights() ==0) { mypv = 1.; } else { - mypv = myoldHisto1->Chi2Test(mynewHisto1,"OU"); + mypv = myoldHisto1->Chi2TestX(mynewHisto1,chi2,ndf,igood,"UU NORM"); + if (ndf==0) mypv=1; } std::strstream buf; @@ -61,7 +65,7 @@ HistoCompare::PVCompute(TH2 * oldHisto , TH2 * newHisto , TText * te ) mynewHisto2 = newHisto; myte = te; - Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"OU"); + Double_t mypv = myoldHisto2->Chi2Test(mynewHisto2,"UU"); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; @@ -82,7 +86,7 @@ HistoCompare::PVCompute(TProfile * oldHisto , TProfile * newHisto , TText * te ) mynewProfile = newHisto; myte = te; - Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"OU"); + Double_t mypv = myoldProfile->Chi2Test(mynewProfile,"UU"); std::strstream buf; std::string value; buf<<"PV="<<mypv<<std::endl; diff --git a/Validation/RecoPixelVertexing/test/OvalFile b/Validation/RecoPixelVertexing/test/OvalFile index f16bd4177b3..fd80d27983f 100644 --- a/Validation/RecoPixelVertexing/test/OvalFile +++ b/Validation/RecoPixelVertexing/test/OvalFile @@ -1,4 +1,3 @@ <config name="run tool" value="oval"> -<executable name="PixelVertexVal.sh"></executable> -<executable name="RecoPixelVertexingValid.csh"></executable> +<executable name="Validation.csh"></executable> diff --git a/Validation/RecoPixelVertexing/test/PixelTrackVal.cc b/Validation/RecoPixelVertexing/test/PixelTrackVal.cc index 6eeea92be76..299f3cf8889 100644 --- a/Validation/RecoPixelVertexing/test/PixelTrackVal.cc +++ b/Validation/RecoPixelVertexing/test/PixelTrackVal.cc @@ -12,6 +12,12 @@ #include "DataFormats/TrackReco/interface/TrackFwd.h" #include "DataFormats/TrackReco/interface/Track.h" +#include "SimDataFormats/Vertex/interface/SimVertex.h" +#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" +#include "SimDataFormats/Track/interface/SimTrack.h" +#include "SimDataFormats/Track/interface/SimTrackContainer.h" +#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" + #include <iostream> #include <vector> @@ -20,6 +26,8 @@ #include "TFile.h" using namespace std; +template <class T> T sqr( T t) {return t*t;} + class PixelTrackVal : public edm::EDAnalyzer { public: @@ -29,11 +37,13 @@ public: virtual void analyze(const edm::Event& ev, const edm::EventSetup& es); virtual void endJob(); private: + float deltaR(const math::XYZVector & mom1, const math::XYZVector & mom2) const; + edm::ParameterSet conf_; // How noisy should I be int verbose_; TFile *f_; - TH1 *h_Pt, *h_TIP, *h_ErrTIP, *h_VtxZ, *h_VtxZ_Pull, *h_Nan; + TH1 *h_Pt, *h_dR, *h_VtxZ, *h_TIP, *h_VtxZ_Pull, *h_Nan; }; PixelTrackVal::PixelTrackVal(const edm::ParameterSet& conf) @@ -57,48 +67,42 @@ void PixelTrackVal::beginJob(const edm::EventSetup& es) { // const char* cwd= gDirectory->GetPath(); f_ = new TFile(file.c_str(),"RECREATE"); - h_Pt = new TH1F("h_Pt","h_Pt",20, 0., 20.); + h_Pt = new TH1F("h_Pt","h_Pt",31, -2., 1.2); + h_dR = new TH1F("h_dR","h_dR",30,0.,0.06); h_TIP = new TH1F("h_TIP","h_TIP",100,-0.1,0.1); - h_ErrTIP = new TH1F("h_ErrTIP","h_ErrTIP",50,0.,0.017); h_VtxZ = new TH1F("h_VtxZ","h_VtxZ",100,-0.1,0.1); - h_VtxZ_Pull = new TH1F("h_VtxZ_Pull","h_VtxZ_Pull",100,0.,10); + h_VtxZ_Pull = new TH1F("h_VtxZ_Pull","h_VtxZ_Pull",80,0.,8); h_Nan = new TH1F("h_Nan","Illegal values for x,y,z,xx,xy,xz,yy,yz,zz",9,0.5,9.5); } void PixelTrackVal::analyze( const edm::Event& ev, const edm::EventSetup& es) { + + using namespace edm; + using namespace std; + using namespace reco; + cout <<"*** PixelTrackVal, analyze event: " << ev.id() << endl; - edm::Handle<reco::TrackCollection> trackCollection; + + + +//------------------------ simulated tracks + Handle<reco::TrackCollection> trackCollection; std::string trackCollName = conf_.getParameter<std::string>("TrackCollection"); ev.getByLabel(trackCollName,trackCollection); const reco::TrackCollection tracks = *(trackCollection.product()); - typedef reco::TrackCollection::const_iterator IT; + typedef reco::TrackCollection::const_iterator IT; if (verbose_ > 0) { - std::cout << *(trackCollection.provenance()) << std::endl; +// std::cout << *(trackCollection.provenance()) << std::endl; cout << "Reconstructed "<< tracks.size() << " tracks" << std::endl; } - for (unsigned int i=0; i<tracks.size(); i++) { - if (verbose_ > 0) { - cout << "\tmomentum: " << tracks[i].momentum() - << "\tPT: " << tracks[i].pt()<< endl; - cout << "\tvertex: " << tracks[i].vertex() - << "\tTIP: "<< tracks[i].d0() << " +- " << tracks[i].d0Error() - << "\tZ0: " << tracks[i].dz() << " +- " << tracks[i].dzError() << endl; - cout << "\tcharge: " << tracks[i].charge()<< endl; - } - } - typedef reco::TrackCollection::const_iterator IT; - for (IT it=tracks.begin(); it!=tracks.end(); it++) { - h_Pt->Fill( it->pt()); - h_TIP->Fill( it->d0() ); - h_ErrTIP->Fill(it->d0Error()); - h_VtxZ->Fill( it->dz() ); - h_VtxZ_Pull->Fill( it->dz()/it->dzError() ); + for (unsigned int idx=0; idx<tracks.size(); idx++) { + const reco::Track * it= &tracks[idx]; h_Nan->Fill(1.,isnan(it->momentum().x())*1.); h_Nan->Fill(2.,isnan(it->momentum().y())*1.); h_Nan->Fill(3.,isnan(it->momentum().z())*1.); @@ -118,6 +122,80 @@ void PixelTrackVal::analyze( } } if (problem) std::cout <<" *** PROBLEM **" << std::endl; + + if (verbose_ > 0) { + cout << "\tmomentum: " << tracks[idx].momentum() + << "\tPT: " << tracks[idx].pt()<< endl; + cout << "\tvertex: " << tracks[idx].vertex() + << "\tTIP: "<< tracks[idx].d0() << " +- " << tracks[idx].d0Error() + << "\tZ0: " << tracks[idx].dz() << " +- " << tracks[idx].dzError() << endl; + cout << "\tcharge: " << tracks[idx].charge()<< endl; + } + } + +//------------------------ simulated vertices and tracks + + InputTag simG4 = conf_.getParameter<edm::InputTag>( "simG4" ); + Handle<SimVertexContainer> simVtcs; + ev.getByLabel( simG4, simVtcs); + +// std::cout << "SimVertex " << simVtcs->size() << std::endl; +// for(edm::SimVertexContainer::const_iterator v=simVtcs->begin(); +// v!=simVtcs->end(); ++v){ +// std::cout << "simvtx " << std::setw(10) << std::setprecision(3) +// << v->position().x() << " " << v->position().y() << " " << v->position().z() << " " +// << v->parentIndex() << " " << v->noParent() << " " << std::endl; } + + Handle<SimTrackContainer> simTrks; + ev.getByLabel( simG4, simTrks); + std::cout << "simtrks " << simTrks->size() << std::endl; + +//-------------- association + // matching cuts from Marcin + float detaMax=0.012; + float dRMax=0.025; + typedef SimTrackContainer::const_iterator IP; + for (IP p=simTrks->begin(); p != simTrks->end(); p++) { + if ( (*p).noVertex() ) continue; + if ( (*p).type() == -99) continue; + if ( (*p).vertIndex() != 0) continue; + + math::XYZVector mom_gen( (*p).momentum().x(), (*p).momentum().y(), (*p).momentum().z()); + float phi_gen = (*p).momentum().phi(); + float pt_gen = (*p).momentum().perp(); + float eta_gen = (*p).momentum().eta(); + HepLorentzVector vtx =(*simVtcs)[p->vertIndex()].position(); + float z_gen = vtx.z(); + +// cout << "\tmomentum: " << (*p).momentum() +// <<" vtx: "<<(*p).vertIndex()<<" type: "<<(*p).type() +// << endl; + + typedef reco::TrackCollection::const_iterator IT; + for (IT it=tracks.begin(); it!=tracks.end(); it++) { + math::XYZVector mom_rec = (*it).momentum(); + float phi_rec = (*it).momentum().phi(); + float pt_rec = (*it).pt(); + float z_rec = (*it).vertex().z(); + float eta_rec = (*it).momentum().eta(); +// float chi2 = (*it).chi2(); + float dphi = phi_gen - phi_rec; + while (dphi > M_PI) dphi -=2*M_PI; + while (dphi < -M_PI) dphi +=2*M_PI; + float deta = eta_gen-eta_rec; + float dz = z_gen-z_rec; + float dR = deltaR( mom_gen, mom_rec); + // + // matched track + // + if (fabs(deta) < 0.3 && fabs(dphi) < 0.3) h_dR->Fill( dR); + if (fabs(deta) < detaMax && dR < dRMax) { + h_Pt->Fill( (pt_gen - pt_rec)/pt_gen); + h_TIP->Fill( it->d0() ); + h_VtxZ->Fill( dz ); + h_VtxZ_Pull->Fill( fabs( dz/it->dzError()) ); + } + } } } @@ -126,4 +204,16 @@ void PixelTrackVal::endJob() if (f_) f_->Write(); } +float PixelTrackVal::deltaR(const math::XYZVector & m1, const math::XYZVector & m2) const +{ + float dphi = m1.phi()-m2.phi(); + while (dphi > 2*M_PI) dphi-=2*M_PI; + while (dphi < -2*M_PI) dphi+=2*M_PI; + float deta = m1.eta() - m2.eta(); + float dr = sqrt( sqr(dphi) + sqr(deta)); + return dr; + +} + + DEFINE_FWK_MODULE(PixelTrackVal); diff --git a/Validation/RecoPixelVertexing/test/PixelVertexVal.cc b/Validation/RecoPixelVertexing/test/PixelVertexVal.cc index 78ccda2e821..ed071774ca4 100644 --- a/Validation/RecoPixelVertexing/test/PixelVertexVal.cc +++ b/Validation/RecoPixelVertexing/test/PixelVertexVal.cc @@ -1,42 +1,149 @@ -#include "Validation/RecoPixelVertexing/test/PixelVertexVal.h" -#include <fstream> +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/EDAnalyzer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/Framework/interface/Handle.h" +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/ServiceRegistry/interface/Service.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" + +#include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/VertexReco/interface/VertexFwd.h" +#include "DataFormats/VertexReco/interface/Vertex.h" + + +#include "SimDataFormats/Vertex/interface/SimVertex.h" +#include "SimDataFormats/Vertex/interface/SimVertexContainer.h" +#include "SimDataFormats/Track/interface/SimTrack.h" +#include "SimDataFormats/Track/interface/SimTrackContainer.h" +#include "SimDataFormats/HepMCProduct/interface/HepMCProduct.h" + +#include <iostream> +#include <vector> +#include <cmath> +#include <map> +#include <TH1.h> +#include "TTree.h" +#include "TFile.h" +#include "TDirectory.h" + +using namespace std; + +class PixelVertexVal : public edm::EDAnalyzer { +public: + explicit PixelVertexVal(const edm::ParameterSet& conf); + ~PixelVertexVal(); + virtual void beginJob(const edm::EventSetup& es); + virtual void analyze(const edm::Event& ev, const edm::EventSetup& es); + virtual void endJob(); +private: + edm::ParameterSet conf_; + int verbose_; + std::map<std::string, TH1*> h; + TFile * rootFile; +}; PixelVertexVal::PixelVertexVal(const edm::ParameterSet& conf) - : conf_(conf), verbose_(1), out_(0) -{} + : conf_(conf),rootFile(0) +{ + edm::LogInfo("PixelVertexVal")<<" CTOR"; +} -PixelVertexVal::~PixelVertexVal() { - delete out_; +PixelVertexVal::~PixelVertexVal() +{ + edm::LogInfo("PixelVertexVal")<<" DTOR"; + delete rootFile; } void PixelVertexVal::beginJob(const edm::EventSetup& es) { - verbose_ = conf_.getUntrackedParameter<unsigned int>("Verbosity",1); - out_ = new std::ofstream(conf_.getUntrackedParameter<std::string>("OutputFile","pixelvertexval.out").c_str()); + // How noisy? + verbose_ = conf_.getUntrackedParameter<unsigned int>("Verbosity",0); + + std::string file = conf_.getUntrackedParameter<std::string>("HistoFile","pixelVertexHistos.root"); +// const char* cwd= gDirectory->GetPath(); + rootFile = new TFile(file.c_str(),"RECREATE"); + + // validation histos + h["h_Nbvtx"]= new TH1F("h_nbvtx","nb vertices in event",16,0.,16.); + h["h_Nbtrks"]= new TH1F("h_Nbtrks","nb tracks in PV",100,0.,100.); + h["h_ResZ"]= new TH1F("resz","residual z",100,-0.1,0.1); + h["h_PullZ"]= new TH1F("pullz","pull z",100,-25.,25.); + h["h_TrkRes"]= new TH1F("h_TrkRes","h_TrkRes",100,-0.2,0.2); + h["h_Eff"]= new TH1F("h_Etff","h_Etff",10,-1.,9.); + } -void PixelVertexVal::analyze(const edm::Event& ev, const edm::EventSetup& es) { +void PixelVertexVal::analyze( + const edm::Event& ev, const edm::EventSetup& es) +{ + if (verbose_ > 0) cout <<"------------------------------------------------"<<endl; + cout <<"*** PixelVertexVal, analyze event: " << ev.id() << endl; + edm::Handle<reco::TrackCollection> trackCollection; + std::string trackCollName = conf_.getParameter<std::string>("TrackCollection"); + ev.getByLabel(trackCollName,trackCollection); + const reco::TrackCollection tracks = *(trackCollection.product()); + + reco::TrackRefVector trks; + +// if (verbose_ > 0) { +// std::cout << *(trackCollection.provenance()) << std::endl; +// cout << "Reconstructed "<< tracks.size() << " tracks" << std::endl; +// } + edm::Handle<reco::VertexCollection> vertexCollection; - ev.getByLabel("pixelVertices",vertexCollection); + std::string vertexCollName = conf_.getParameter<std::string>("VertexCollection"); + ev.getByLabel(vertexCollName,vertexCollection); const reco::VertexCollection vertexes = *(vertexCollection.product()); if (verbose_ > 0) { - // (*out_) << "[OVAL] " << *(vertexCollection.provenance()) << std::endl; - (*out_) << "[OVAL] " << "Reconstructed "<< vertexes.size() << " vertexes" << std::endl; +// std::cout << *(vertexCollection.provenance()) << std::endl; + cout << "Reconstructed "<< vertexes.size() << " vertexes" << std::endl; + } + + edm::InputTag simG4 = conf_.getParameter<edm::InputTag>( "simG4" ); + edm::Handle<edm::SimVertexContainer> simVtcs; + ev.getByLabel( simG4, simVtcs); + if (verbose_ > 0) { + cout << "simulated vertices: "<< simVtcs->size() << std::endl; } - for (reco::VertexCollection::const_iterator v=vertexes.begin(); - v!=vertexes.end(); ++v){ - (*out_) << "[OVAL] z= " << v->position().z() << " +- " << v->zError() << std::endl; - (*out_) << "[OVAL] " << "Has " << v->tracksSize() << " associated tracks with the following z's: "; - for (reco::track_iterator t = v->tracks_begin(); t != v->tracks_end(); ++t) { - (*out_) << (*t)->dz() << " +- " << (*t)->dzError() << " "; + + bool hasPV = (simVtcs->size() > 0 ); + if (!hasPV) cout << "Event without PV!, skip"<<endl; + float z_PV = hasPV ? (*simVtcs)[0].position().z() : 0.; + + int nVertices = vertexes.size(); + h["h_Nbvtx"]->Fill(nVertices); + if(nVertices >0) h["h_Nbtrks"]->Fill(vertexes[0].tracksSize()); + + + int ivtx_matched = -1; + float min_dist = 0.1; + for (int idx = 0; idx < nVertices; idx++) { + float dz = vertexes[idx].position().z() - z_PV; + if ( fabs(dz) < min_dist ) { + ivtx_matched = idx; + min_dist = fabs(dz); } - (*out_) << std::endl; + } + h["h_Eff"]->Fill(ivtx_matched+0.00001); + if (ivtx_matched==0) { + const reco::Vertex & pv = vertexes[ivtx_matched]; + float dz = pv.position().z() - z_PV; + h["h_ResZ"]->Fill( dz ); + h["h_PullZ"]->Fill( dz/pv.zError() ); + typedef reco::track_iterator IT; + for (IT it=pv.tracks_begin(); it != pv.tracks_end(); it++) { + h["h_TrkRes"]->Fill((*it)->dz()); + } } - (*out_) << std::endl; + } void PixelVertexVal::endJob() { - out_->close(); + if (rootFile) rootFile->Write(); } DEFINE_FWK_MODULE(PixelVertexVal); diff --git a/Validation/RecoPixelVertexing/test/Validation.csh b/Validation/RecoPixelVertexing/test/Validation.csh new file mode 100755 index 00000000000..58e28d32415 --- /dev/null +++ b/Validation/RecoPixelVertexing/test/Validation.csh @@ -0,0 +1,24 @@ +#!/bin/csh -f + +eval `scramv1 runtime -csh` + +################################################## +echo "===========> Validating reconstruction....." +cmsRun val-reco.cfg + +echo "===========> compare Track plots..." +root -b -p -q DoCompare.C\(\"pixelTrackHistos_Val\",\"../data/pixelTrackHistos\"\) + +echo "===========> compare Vertex plots..." +root -b -p -q DoCompare.C\(\"pixelVertexHistos_Val\",\"../data/pixelVertexHistos\"\) + + +################################################## +echo "===========> Validating I/O....." +cmsRun val-io.cfg + +echo "===========> compare Track plots..." +root -b -p -q DoCompare.C\(\"pixelTrackHistos_ioVal\",\"pixelTrackHistos_Val\"\) + +echo "===========> compare Vertex plots..." +root -b -p -q DoCompare.C\(\"pixelVertexHistos_ioVal\",\"pixelVertexHistos_Val\"\) diff --git a/Validation/RecoPixelVertexing/test/Validation.csh.oref b/Validation/RecoPixelVertexing/test/Validation.csh.oref new file mode 100644 index 00000000000..37eb9cb8eae --- /dev/null +++ b/Validation/RecoPixelVertexing/test/Validation.csh.oref @@ -0,0 +1,211 @@ + +[oval run] ================================================= +[oval run] USER : konec +[oval run] HOST : lxplus056.cern.ch +[oval run] run tool: oval +[oval run] final instruction: ./Validation.csh +[oval run] ================================================= + +===========> Validating reconstruction..... +===========> compare Track plots... + ******************************************* + * * + * W E L C O M E to R O O T * + * * + * Version 5.12/00e 6 September 2006 * + * * + * You are welcome to visit our Web site * + * http://root.cern.ch * + * * + ******************************************* + +Compiled on 6 September 2006 for linux with thread support. + +CINT/ROOT C/C++ Interpreter version 5.16.13, June 8, 2006 +Type ? for help. Commands must be C++ statements. +Enclose multiple statements between { }. +Define MyDefaultStyle...done + +Processing DoCompare.C("pixelTrackHistos_Val","../data/pixelTrackHistos")... +Initializing HistoCompare... +(class HistoCompare)178520496 +Initializing HistoCompare... +TFile** ../data/pixelTrackHistos.root + TFile* ../data/pixelTrackHistos.root + KEY: TH1F h_Pt;1 h_Pt + KEY: TH1F h_dR;1 h_dR + KEY: TH1F h_TIP;1 h_TIP + KEY: TH1F h_VtxZ;1 h_VtxZ + KEY: TH1F h_VtxZ_Pull;1 h_VtxZ_Pull + KEY: TH1F h_Nan;1 Illegal values for x,y,z,xx,xy,xz,yy,yz,zz +TFile** pixelTrackHistos_Val.root + TFile* pixelTrackHistos_Val.root + KEY: TH1F h_Pt;1 h_Pt + KEY: TH1F h_dR;1 h_dR + KEY: TH1F h_TIP;1 h_TIP + KEY: TH1F h_VtxZ;1 h_VtxZ + KEY: TH1F h_VtxZ_Pull;1 h_VtxZ_Pull + KEY: TH1F h_Nan;1 Illegal values for x,y,z,xx,xy,xz,yy,yz,zz +[OVAL] h_Pt PV= 1 +[OVAL] h_dR PV= 1 +[OVAL] h_TIP PV= 1 +[OVAL] h_VtxZ PV= 1 +[OVAL] h_VtxZ_Pull PV= 1 +[OVAL] h_Nan PV= 1 +Info in <TCanvas::Print>: eps file pixelTrackHistos_Val_0.eps has been created +bye.. +===========> compare Vertex plots... + ******************************************* + * * + * W E L C O M E to R O O T * + * * + * Version 5.12/00e 6 September 2006 * + * * + * You are welcome to visit our Web site * + * http://root.cern.ch * + * * + ******************************************* + +Compiled on 6 September 2006 for linux with thread support. + +CINT/ROOT C/C++ Interpreter version 5.16.13, June 8, 2006 +Type ? for help. Commands must be C++ statements. +Enclose multiple statements between { }. +Define MyDefaultStyle...done + +Processing DoCompare.C("pixelVertexHistos_Val","../data/pixelVertexHistos")... +Initializing HistoCompare... +(class HistoCompare)192623112 +Initializing HistoCompare... +TFile** ../data/pixelVertexHistos.root + TFile* ../data/pixelVertexHistos.root + KEY: TH1F h_nbvtx;1 nb vertices in event + KEY: TH1F h_Nbtrks;1 nb tracks in PV + KEY: TH1F resz;1 residual z + KEY: TH1F pullz;1 pull z + KEY: TH1F h_TrkRes;1 h_TrkRes + KEY: TH1F h_Etff;1 h_Etff +TFile** pixelVertexHistos_Val.root + TFile* pixelVertexHistos_Val.root + KEY: TH1F h_nbvtx;1 nb vertices in event + KEY: TH1F h_Nbtrks;1 nb tracks in PV + KEY: TH1F resz;1 residual z + KEY: TH1F pullz;1 pull z + KEY: TH1F h_TrkRes;1 h_TrkRes + KEY: TH1F h_Etff;1 h_Etff +[OVAL] h_nbvtx PV= 1 +[OVAL] h_Nbtrks PV= 1 +[OVAL] resz PV= 1 +[OVAL] pullz PV= 1 +[OVAL] h_TrkRes PV= 1 +[OVAL] h_Etff PV= 1 +Info in <TCanvas::Print>: eps file pixelVertexHistos_Val_0.eps has been created +bye.. +===========> Validating I/O..... +===========> compare Track plots... + ******************************************* + * * + * W E L C O M E to R O O T * + * * + * Version 5.12/00e 6 September 2006 * + * * + * You are welcome to visit our Web site * + * http://root.cern.ch * + * * + ******************************************* + +Compiled on 6 September 2006 for linux with thread support. + +CINT/ROOT C/C++ Interpreter version 5.16.13, June 8, 2006 +Type ? for help. Commands must be C++ statements. +Enclose multiple statements between { }. +Define MyDefaultStyle...done + +Processing DoCompare.C("pixelTrackHistos_ioVal","pixelTrackHistos_Val")... +Initializing HistoCompare... +(class HistoCompare)175522360 +Initializing HistoCompare... +TFile** pixelTrackHistos_Val.root + TFile* pixelTrackHistos_Val.root + KEY: TH1F h_Pt;1 h_Pt + KEY: TH1F h_dR;1 h_dR + KEY: TH1F h_TIP;1 h_TIP + KEY: TH1F h_VtxZ;1 h_VtxZ + KEY: TH1F h_VtxZ_Pull;1 h_VtxZ_Pull + KEY: TH1F h_Nan;1 Illegal values for x,y,z,xx,xy,xz,yy,yz,zz +TFile** pixelTrackHistos_ioVal.root + TFile* pixelTrackHistos_ioVal.root + KEY: TH1F h_Pt;1 h_Pt + KEY: TH1F h_dR;1 h_dR + KEY: TH1F h_TIP;1 h_TIP + KEY: TH1F h_VtxZ;1 h_VtxZ + KEY: TH1F h_VtxZ_Pull;1 h_VtxZ_Pull + KEY: TH1F h_Nan;1 Illegal values for x,y,z,xx,xy,xz,yy,yz,zz +[OVAL] h_Pt PV= 1 +[OVAL] h_dR PV= 1 +[OVAL] h_TIP PV= 1 +[OVAL] h_VtxZ PV= 1 +[OVAL] h_VtxZ_Pull PV= 1 +[OVAL] h_Nan PV= 1 +Info in <TCanvas::Print>: eps file pixelTrackHistos_ioVal_0.eps has been created +bye.. +===========> compare Vertex plots... + ******************************************* + * * + * W E L C O M E to R O O T * + * * + * Version 5.12/00e 6 September 2006 * + * * + * You are welcome to visit our Web site * + * http://root.cern.ch * + * * + ******************************************* + +Compiled on 6 September 2006 for linux with thread support. + +CINT/ROOT C/C++ Interpreter version 5.16.13, June 8, 2006 +Type ? for help. Commands must be C++ statements. +Enclose multiple statements between { }. +Define MyDefaultStyle...done + +Processing DoCompare.C("pixelVertexHistos_ioVal","pixelVertexHistos_Val")... +Initializing HistoCompare... +(class HistoCompare)192033416 +Initializing HistoCompare... +TFile** pixelVertexHistos_Val.root + TFile* pixelVertexHistos_Val.root + KEY: TH1F h_nbvtx;1 nb vertices in event + KEY: TH1F h_Nbtrks;1 nb tracks in PV + KEY: TH1F resz;1 residual z + KEY: TH1F pullz;1 pull z + KEY: TH1F h_TrkRes;1 h_TrkRes + KEY: TH1F h_Etff;1 h_Etff +TFile** pixelVertexHistos_ioVal.root + TFile* pixelVertexHistos_ioVal.root + KEY: TH1F h_nbvtx;1 nb vertices in event + KEY: TH1F h_Nbtrks;1 nb tracks in PV + KEY: TH1F resz;1 residual z + KEY: TH1F pullz;1 pull z + KEY: TH1F h_TrkRes;1 h_TrkRes + KEY: TH1F h_Etff;1 h_Etff +[OVAL] h_nbvtx PV= 1 +[OVAL] h_Nbtrks PV= 1 +[OVAL] resz PV= 1 +[OVAL] pullz PV= 1 +[OVAL] h_TrkRes PV= 1 +[OVAL] h_Etff PV= 1 +Info in <TCanvas::Print>: eps file pixelVertexHistos_ioVal_0.eps has been created +bye.. + +[oval run] ========================================== +[oval run] result: OK +[oval run] ========================================== + +[oval diff] ================================================ +[oval diff] diff line: /^\[OVAL\](.*)$/ +[oval diff] ================================================ + +[oval diff] ========================================= +[oval diff] result: OK +[oval diff] ========================================= + diff --git a/Validation/RecoVertex/src/PrimaryVertexAnalyzer.cc b/Validation/RecoVertex/src/PrimaryVertexAnalyzer.cc index b117b0897df..2a581c80a1f 100644 --- a/Validation/RecoVertex/src/PrimaryVertexAnalyzer.cc +++ b/Validation/RecoVertex/src/PrimaryVertexAnalyzer.cc @@ -52,8 +52,8 @@ PrimaryVertexAnalyzer::PrimaryVertexAnalyzer(const edm::ParameterSet& iConfig) // open output file to store histograms} outputFile_ = iConfig.getUntrackedParameter<std::string>("outputFile"); vtxSample_ = iConfig.getUntrackedParameter<std::string>("vtxSample"); - rootFile_ = TFile::Open(outputFile_.c_str(),"RECREATE"); - simUnit_= 0.1; + rootFile_ = TFile::Open(outputFile_.c_str(),"RECREATE"); + simUnit_= 1; verbose_= iConfig.getUntrackedParameter<bool>("verbose", false); } @@ -74,7 +74,7 @@ PrimaryVertexAnalyzer::~PrimaryVertexAnalyzer() void PrimaryVertexAnalyzer::beginJob(edm::EventSetup const&){ rootFile_->cd(); // release validation histograms used in DoCompare.C - h["nbvtx"] = new TH1F("nbvtx","nb vertices in event",100,-0.5,99.5); + h["nbvtx"] = new TH1F("nbvtx","nb rec vertices in event",100,-0.5,99.5); h["nbtksinvtx"] = new TH1F("nbtksinvtx","reconstructed tracks in vertex",100,-0.5,99.5); h["resx"] = new TH1F("resx","residual x",100,-0.04,0.04); h["resy"] = new TH1F("resy","residual y",100,-0.04,0.04); @@ -91,10 +91,10 @@ void PrimaryVertexAnalyzer::beginJob(edm::EventSetup const&){ h["nbsimtksinvtx"] = new TH1F("nbsimtksinvtx","simulated tracks in vertex",100,-0.5,99.5); h["xrec"] = new TH1F("xrec","reconstructed x",100,-0.01,0.01); h["yrec"] = new TH1F("yrec","reconstructed y",100,-0.01,0.01); - h["zrec"] = new TH1F("zrec","reconstructed z",100,-10.,10.); + h["zrec"] = new TH1F("zrec","reconstructed z",100,-20.,20.); h["xsim"] = new TH1F("xsim","simulated x",100,-0.01,0.01); // 0.01cm = 100 um h["ysim"] = new TH1F("ysim","simulated y",100,-0.01,0.01); - h["zsim"] = new TH1F("zsim","simulated z",100,-10.,10.); + h["zsim"] = new TH1F("zsim","simulated z",100,-20.,20.); h["nrecvtx"] = new TH1F("nrecvtx","# of reconstructed vertices", 50, -0.5, 49.5); h["nsimvtx"] = new TH1F("nsimvtx","# of simulated vertices", 50, -0.5, 49.5); h["nrectrk"] = new TH1F("nrectrk","# of reconstructed tracks", 50, -0.5, 49.5); diff --git a/Validation/RecoVertex/test/VertexRecoValidOfflinePV.csh b/Validation/RecoVertex/test/VertexRecoValidOfflinePV.csh index d282ae3d8e4..da92e72d20c 100755 --- a/Validation/RecoVertex/test/VertexRecoValidOfflinePV.csh +++ b/Validation/RecoVertex/test/VertexRecoValidOfflinePV.csh @@ -3,7 +3,7 @@ eval `scramv1 runtime -csh` pushd ../ -scramv1 b -r +scramv1 b popd echo "===========> Validating Offline Primary Vertex Reco with 10-muon samples......." diff --git a/Validation/TrackerConfiguration/doc/html/index.html b/Validation/TrackerConfiguration/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/TrackerConfiguration/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/TrackerConfiguration/doc/html/overview.html b/Validation/TrackerConfiguration/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/TrackerConfiguration/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> diff --git a/Validation/TrackingMCTruth/doc/html/index.html b/Validation/TrackingMCTruth/doc/html/index.html deleted file mode 100644 index efbb96db1c1..00000000000 --- a/Validation/TrackingMCTruth/doc/html/index.html +++ /dev/null @@ -1,11 +0,0 @@ -<! Template File - Modify as required.> -<! Use as an index to other html documents> -<! References to local pages should be relative to this directory> -<! This makes it easy for both users of the web project space and> -<! any others who might simply look at html files directly in the source code.> -<! e.g. href=page1.html or href=mysubdir/page2.html > -<html> -<body> -This Text Inserted from File doc/html/index.html -</body> -</html> diff --git a/Validation/TrackingMCTruth/doc/html/overview.html b/Validation/TrackingMCTruth/doc/html/overview.html deleted file mode 100644 index fca463bf7ad..00000000000 --- a/Validation/TrackingMCTruth/doc/html/overview.html +++ /dev/null @@ -1,12 +0,0 @@ -<! Template File - Modify as required.> -<! Use as a brief project description that appears on your main page> -<! Links are not encouraged from this section - use index.html for this> -This Text Inserted from File doc/html/overview.html -<table border=0 width=100%> -<tr> -<td align=center><b>Status :</b></td> -<td align=center> -Unknown -</td> -</tr> -</table> -- GitLab