From 658f043f1c8b861da4fdbe724755669d7b66b408 Mon Sep 17 00:00:00 2001 From: myliu <201916234@mail.sdu.edu.cn> Date: Thu, 5 Jan 2023 22:59:48 +0800 Subject: [PATCH] Add a script to run the RecGenfitAlgSDT --- Examples/options/tut_detsim_rec_SDT.py | 322 ++++++++++++++++++ .../src/TruthTracker/TruthTrackerAlg.cpp | 32 +- .../src/TruthTracker/TruthTrackerAlg.h | 9 +- 3 files changed, 341 insertions(+), 22 deletions(-) create mode 100644 Examples/options/tut_detsim_rec_SDT.py diff --git a/Examples/options/tut_detsim_rec_SDT.py b/Examples/options/tut_detsim_rec_SDT.py new file mode 100644 index 00000000..02ac7612 --- /dev/null +++ b/Examples/options/tut_detsim_rec_SDT.py @@ -0,0 +1,322 @@ +#!/usr/bin/env python +from Gaudi.Configuration import * + +from Configurables import k4DataSvc +dsvc = k4DataSvc("EventDataSvc") + +from Configurables import RndmGenSvc, HepRndm__Engine_CLHEP__RanluxEngine_ +seed = [10] +# rndmengine = HepRndm__Engine_CLHEP__RanluxEngine_() # The default engine in Gaudi +rndmengine = HepRndm__Engine_CLHEP__HepJamesRandom_("RndmGenSvc.Engine") # The default engine in Geant4 +rndmengine.SetSingleton = True +rndmengine.Seeds = seed + +rndmgensvc = RndmGenSvc("RndmGenSvc") +rndmgensvc.Engine = rndmengine.name() + +############################################################################## +# Event Data Svc +############################################################################## +from Configurables import k4DataSvc +dsvc = k4DataSvc("EventDataSvc") + + +# option for standalone tracker study +geometry_option = "CRD_o1_v01/CRD_o1_v01-onlyTracker.xml" +#geometry_option = "CRD_o1_v01/CRD_o1_v01-onlyTracker_noWire_18.xml" +#geometry_option = "CRD_o1_v01/CRD_o1_v01.xml" + +if not os.getenv("DETCRDROOT"): + print("Can't find the geometry. Please setup envvar DETCRDROOT." ) + sys.exit(-1) + +geometry_path = os.path.join(os.getenv("DETCRDROOT"), "compact", geometry_option) +if not os.path.exists(geometry_path): + print("Can't find the compact geometry file: %s"%geometry_path) + sys.exit(-1) + +from Configurables import GeomSvc +geosvc = GeomSvc("GeomSvc") +geosvc.compact = geometry_path + +############################################################################## +# Physics Generator +############################################################################## +from Configurables import GenAlgo +from Configurables import GtGunTool +from Configurables import StdHepRdr +from Configurables import SLCIORdr +from Configurables import HepMCRdr +from Configurables import GenPrinter +gun = GtGunTool("GtGunTool") +gun.Particles = ["mu-"] +gun.EnergyMins = [40] # GeV +gun.EnergyMaxs = [40] # GeV +gun.ThetaMins = [85] # deg +gun.ThetaMaxs = [85] # deg +gun.PhiMins = [0] # deg +gun.PhiMaxs = [360] # deg +# stdheprdr = StdHepRdr("StdHepRdr") +# stdheprdr.Input = "/cefs/data/stdhep/CEPC250/2fermions/E250.Pbhabha.e0.p0.whizard195/bhabha.e0.p0.00001.stdhep" +# lciordr = SLCIORdr("SLCIORdr") +# lciordr.Input = "/cefs/data/stdhep/lcio250/signal/Higgs/E250.Pbbh.whizard195/E250.Pbbh_X.e0.p0.whizard195/Pbbh_X.e0.p0.00001.slcio" +# hepmcrdr = HepMCRdr("HepMCRdr") +# hepmcrdr.Input = "example_UsingIterators.txt" + +genprinter = GenPrinter("GenPrinter") + +genalg = GenAlgo("GenAlgo") +genalg.GenTools = ["GtGunTool"] +#genalg.GenTools = ["StdHepRdr"] +# genalg.GenTools = ["StdHepRdr", "GenPrinter"] +# genalg.GenTools = ["SLCIORdr", "GenPrinter"] +# genalg.GenTools = ["HepMCRdr", "GenPrinter"] + +############################################################################## +# Detector Simulation +############################################################################## +from Configurables import DetSimSvc +detsimsvc = DetSimSvc("DetSimSvc") + +from Configurables import DetSimAlg +detsimalg = DetSimAlg("DetSimAlg") +detsimalg.RandomSeeds = seed +# detsimalg.VisMacs = ["vis.mac"] +detsimalg.RunCmds = [ + #"/tracking/verbose 1", +] +detsimalg.AnaElems = [ + # example_anatool.name() + # "ExampleAnaElemTool" + "Edm4hepWriterAnaElemTool" +] +detsimalg.RootDetElem = "WorldDetElemTool" + +from Configurables import AnExampleDetElemTool +example_dettool = AnExampleDetElemTool("AnExampleDetElemTool") + +dedxoption = "BetheBlochEquationDedxSimTool" +from Configurables import DriftChamberSensDetTool +dc_sensdettool = DriftChamberSensDetTool("DriftChamberSensDetTool") +dc_sensdettool.DedxSimTool = dedxoption + +from Configurables import DummyDedxSimTool +from Configurables import BetheBlochEquationDedxSimTool + +if dedxoption == "DummyDedxSimTool": + dedx_simtool = DummyDedxSimTool("DummyDedxSimTool") +elif dedxoption == "BetheBlochEquationDedxSimTool": + dedx_simtool = BetheBlochEquationDedxSimTool("BetheBlochEquationDedxSimTool") + dedx_simtool.material_Z = 2 + dedx_simtool.material_A = 4 + dedx_simtool.scale = 10 + dedx_simtool.resolution = 0.0001 + +from Configurables import MarlinEvtSeeder +evtseeder = MarlinEvtSeeder("EventSeeder") + +from Configurables import GearSvc +gearsvc = GearSvc("GearSvc") + +from Configurables import TrackSystemSvc +tracksystemsvc = TrackSystemSvc("TrackSystemSvc") + +# digitization +vxdhitname = "VXDTrackerHits" +sithitname = "SITTrackerHits" +dchitname = "DCTrackerHits" +sethitname = "SETTrackerHits" +setspname = "SETSpacePoints" +ftdhitname = "FTDTrackerHits" +ftdspname = "FTDSpacePoints" +from Configurables import PlanarDigiAlg +digiVXD = PlanarDigiAlg("VXDDigi") +digiVXD.SimTrackHitCollection = "VXDCollection" +digiVXD.TrackerHitCollection = vxdhitname +digiVXD.ResolutionU = [0.0028, 0.006, 0.004, 0.004, 0.004, 0.004] +digiVXD.ResolutionV = [0.0028, 0.006, 0.004, 0.004, 0.004, 0.004] +digiVXD.UsePlanarTag = True +#digiVXD.OutputLevel = DEBUG + +digiSIT = PlanarDigiAlg("SITDigi") +digiSIT.IsStrip = False +digiSIT.SimTrackHitCollection = "SITCollection" +digiSIT.TrackerHitCollection = sithitname +digiSIT.TrackerHitAssociationCollection = "SITTrackerHitAssociation" +digiSIT.ResolutionU = [0.0072] +digiSIT.ResolutionV = [0.086] +digiSIT.UsePlanarTag = True +#digiSIT.OutputLevel = DEBUG + +digiSET = PlanarDigiAlg("SETDigi") +digiSET.IsStrip = False +digiSET.SimTrackHitCollection = "SETCollection" +digiSET.TrackerHitCollection = sethitname +digiSET.TrackerHitAssociationCollection = "SETTrackerHitAssociation" +digiSET.ResolutionU = [0.0072] +digiSET.ResolutionV = [0.086] +digiSET.UsePlanarTag = True +#digiSET.OutputLevel = DEBUG + +digiFTD = PlanarDigiAlg("FTDDigi") +digiFTD.IsStrip = False +digiFTD.SimTrackHitCollection = "FTDCollection" +digiFTD.TrackerHitCollection = ftdhitname +digiFTD.TrackerHitAssociationCollection = "FTDTrackerHitAssociation" +digiFTD.ResolutionU = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] +digiFTD.ResolutionV = [0.003, 0.003, 0.0072, 0.0072, 0.0072, 0.0072, 0.0072] +digiFTD.UsePlanarTag = True +#digiFTD.OutputLevel = DEBUG + +from Configurables import DCHDigiAlg +digiDC = DCHDigiAlg("DCHDigi") +digiDC.DigiDCHitCollection = dchitname +digiDC.WriteAna = True +#digiDC.mom_threshold=98. +#digiDC.mom_threshold_high=102. +#digiDC.OutputLevel = DEBUG + +# two strip tracker hits -> one space point +from Configurables import SpacePointBuilderAlg +spFTD = SpacePointBuilderAlg("FTDBuilder") +spFTD.TrackerHitCollection = ftdhitname +spFTD.TrackerHitAssociationCollection = "FTDTrackerHitAssociation" +spFTD.SpacePointCollection = ftdspname +spFTD.SpacePointAssociationCollection = "FTDSpacePointAssociation" +#spFTD.OutputLevel = DEBUG + +# tracking +from Configurables import SiliconTrackingAlg +tracking = SiliconTrackingAlg("SiliconTracking") +tracking.HeaderCol = "EventHeader" +tracking.VTXHitCollection = vxdhitname +tracking.SITHitCollection = sithitname +tracking.FTDPixelHitCollection = ftdhitname +tracking.FTDSpacePointCollection = ftdspname +tracking.SITRawHitCollection = "NotNeedForPixelSIT" +tracking.FTDRawHitCollection = ftdhitname +tracking.UseSIT = True +tracking.SmoothOn = False +#tracking.OutputLevel = DEBUG + +from Configurables import ForwardTrackingAlg +forward = ForwardTrackingAlg("ForwardTracking") +forward.FTDPixelHitCollection = ftdhitname +forward.FTDSpacePointCollection = ftdspname +forward.FTDRawHitCollection = ftdhitname +forward.Chi2ProbCut = 0.0 +forward.HitsPerTrackMin = 3 +forward.BestSubsetFinder = "SubsetSimple" +forward.Criteria = ["Crit2_DeltaPhi","Crit2_StraightTrackRatio","Crit3_3DAngle","Crit3_ChangeRZRatio","Crit3_IPCircleDist","Crit4_3DAngleChange","Crit4_DistToExtrapolation", + "Crit2_DeltaRho","Crit2_RZRatio","Crit3_PT"] +forward.CriteriaMin = [0, 0.9, 0, 0.995, 0, 0.8, 0, 20, 1.002, 0.1, 0, 0.99, 0, 0.999, 0, 0.99, 0] +forward.CriteriaMax = [30, 1.02, 10, 1.015, 20, 1.3, 1.0, 150, 1.08, 99999999, 0.8, 1.01, 0.35, 1.001, 1.5, 1.01, 0.05] +#forward.OutputLevel = DEBUG + +from Configurables import TrackSubsetAlg +subset = TrackSubsetAlg("TrackSubset") +subset.TrackInputCollections = ["ForwardTracks", "SiTracks"] +subset.RawTrackerHitCollections = [vxdhitname, sithitname, ftdhitname, ftdspname] +subset.TrackSubsetCollection = "SubsetTracks" +#subset.OutputLevel = DEBUG + +##TODO: DC reconstruction, as preliminary, use Clupatra like as TPC +#from Configurables import ClupatraAlg +#clupatra = ClupatraAlg("Clupatra") +#clupatra.TPCHitCollection = dchitname +#clupatra.DistanceCut = 100. +#clupatra.MaxDeltaChi2 = 100. +#clupatra.Chi2Cut = 150. +##clupatra.OutputLevel = DEBUG +# +#from Configurables import FullLDCTrackingAlg +#full = FullLDCTrackingAlg("FullTracking") +#full.VTXTrackerHits = vxdhitname +#full.SITTrackerHits = sithitname +#full.TPCTrackerHits = dchitname # add TPC or DC tracker hit here, if TPC or DC track is set by full.TPCTracks +#full.SETTrackerHits = sethitname +#full.FTDPixelTrackerHits = ftdhitname +#full.FTDSpacePoints = ftdspname +#full.SITRawHits = "NotNeedForPixelSIT" +#full.SETRawHits = "NotNeedForPixelSET" +#full.FTDRawHits = ftdhitname +#full.TPCTracks = "ClupatraTracks" # add standalone TPC or DC track here +#full.SiTracks = "SubsetTracks" +#full.OutputTracks = "MarlinTrkTracks" +#full.SITHitToTrackDistance = 3. +#full.SETHitToTrackDistance = 5. +##full.OutputLevel = DEBUG +# +##TODO: more reconstruction, PFA etc. + +from Configurables import TruthTrackerAlg +truthTrackerAlg = TruthTrackerAlg("TruthTrackerAlg") +truthTrackerAlg.maxDigiCut=500 +truthTrackerAlg.useSi=True +truthTrackerAlg.hist=True +#truthTrackerAlg.useNoiseHits=True +truthTrackerAlg.smearHits=True +#truthTrackerAlg.useFirstHitForDC=True +#truthTrackerAlg.useIdealHit=False +truthTrackerAlg.DigiDCHitCollection="DCTrackerHits" +#truthTrackerAlg.OutputLevel=DEBUG +############################################################################## +# GenfitAlg +############################################################################## +from Configurables import RecGenfitAlgSDT +recGenfitAlgSDT = RecGenfitAlgSDT("RecGenfitAlgSDT") +recGenfitAlgSDT.debugPid=1 +#recGenfitAlgSDT.debug=10 +#recGenfitAlgSDT.debugGenfit=10000 +recGenfitAlgSDT.DigiDCHitCollection="DCTrackerHits" +recGenfitAlgSDT.SmearDCHitAssociationCollection = "SmearDCHitAssociationCollection" +#recGenfitAlgSDT.OutputLevel=DEBUG +recGenfitAlgSDT.measurementTypeSi=1 # -1: not use, 0:use space point, 1:use detector measurment +recGenfitAlgSDT.measurementTypeDC=1 # -1: not use, 0:use space point, 1:use detector measurment +#recGenfitAlgSDT.sigmaHitU=[0.11, 0.0028, 0.006, 0.004, 0.004, 0.004, 0.004] +#recGenfitAlgSDT.sigmaHitV=[0.2, 0.0028, 0.006, 0.004, 0.004, 0.004, 0.004] + +from Configurables import NTupleSvc +ntsvc = NTupleSvc("NTupleSvc") +ntsvc.Output = ["MyTuples DATAFILE='DCH_digi.root' OPT='NEW' TYP='ROOT'", + "TruthTrackerAlg DATAFILE='truthTracker.root' OPT='NEW' TYP='ROOT'", + "RecGenfitAlgSDT DATAFILE='fit.root' OPT='NEW' TYP='ROOT'" +] + +############################################################################### +## Event service +############################################################################### +#from Configurables import k4DataSvc +#dsvc = k4DataSvc("EventDataSvc", +# #input = "CRD-o1-v01-SimDigi00_1k.root" +# input = "test-detsim10.root" +#) +#from Configurables import PodioInput +#podioinput = PodioInput("PodioReader", collections=[ +# #"EventHeader", +# "MCParticle", +# "DriftChamberHitsCollection", +# "VXDCollection", +# "SITCollection", +# "SETCollection", +# #"DCHitAssociationCollection", +#]) + +# output +from Configurables import PodioOutput +out = PodioOutput("outputalg") +out.filename = "CRD-o1-v01-onlyTracker.root" +out.outputCommands = ["keep *"] + +# ApplicationMgr +from Configurables import ApplicationMgr +ApplicationMgr( + #TopAlg = [ genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spFTD, digiDC, tracking, forward, subset, out], + #TopAlg = [podioinput, digiVXD, digiSIT, digiSET, digiFTD, spFTD, digiDC, tracking, forward, subset, truthTrackerAlg, recGenfitAlgSDT, out], + TopAlg = [genalg, detsimalg, digiVXD, digiSIT, digiSET, digiFTD, spFTD, digiDC, tracking, forward, subset, truthTrackerAlg, recGenfitAlgSDT, out], + EvtSel = 'NONE', + EvtMax = 10, + ExtSvc = [rndmengine, rndmgensvc, dsvc, evtseeder, geosvc, gearsvc, ntsvc], + HistogramPersistency = 'ROOT', + OutputLevel = ERROR +) diff --git a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp index 7b2b7afe..0d5100b6 100644 --- a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp +++ b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.cpp @@ -232,7 +232,7 @@ StatusCode TruthTrackerAlg::execute() //mcRecoTrackerAssociationCol=m_mcRecoParticleAssociation.get(); ///New SDT track - edm4hep::MutableTrack sdtTk=sdtTkCol->create(); + edm4hep::Track sdtTk=sdtTkCol->create(); int nVXDHit=0; int nSITHit=0; @@ -316,7 +316,7 @@ StatusCode TruthTrackerAlg::execute() if(m_useDC){ ///Create DC Track - edm4hep::MutableTrack dcTrack=dcTrackCol->create(); + edm4hep::Track dcTrack=dcTrackCol->create(); //Create TrackState edm4hep::TrackState trackStateFirstDCHit; @@ -458,10 +458,8 @@ void TruthTrackerAlg::getTrackStateFromMcParticle( trackState.Z0=helix.getZ0(); trackState.tanLambda=helix.getTanLambda(); trackState.referencePoint=helix.getReferencePoint(); - - decltype(trackState.covMatrix) covMatrix; - for(int i=0;i<covMatrix.size();i++){covMatrix[i]=999.;}//FIXME - + std::array<float,15> covMatrix; + for(int i=0;i<15;i++){covMatrix[i]=1.;}//FIXME trackState.covMatrix=covMatrix; getCircleFromPosMom(pos,mom,B[2]/dd4hep::tesla,mcParticle.getCharge(),m_helixRadius,m_helixXC,m_helixYC); @@ -528,8 +526,8 @@ bool TruthTrackerAlg::getTrackStateFirstHit( trackState.Z0=helix.getZ0(); trackState.tanLambda=helix.getTanLambda(); trackState.referencePoint=helix.getReferencePoint(); - std::array<float,21> covMatrix; - for(int i=0;i<21;i++){covMatrix[i]=100.;}//FIXME + std::array<float,15> covMatrix; + for(int i=0;i<15;i++){covMatrix[i]=100.;}//FIXME trackState.covMatrix=covMatrix; debug()<<"first hit trackState "<<trackState<<endmsg; return true; @@ -593,7 +591,7 @@ void TruthTrackerAlg::debugEvent() int TruthTrackerAlg::addIdealHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& colHandle, edm4hep::TrackerHitCollection*& truthTrackerHitCol, - edm4hep::MutableTrack& track, const char* msg,int nHitAdded) + edm4hep::Track& track, const char* msg,int nHitAdded) { if(nHitAdded>0) return nHitAdded; int nHit=0; @@ -616,7 +614,7 @@ int TruthTrackerAlg::addIdealHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& //add modified hit auto tmpHit = truthTrackerHitCol->create(); - tmpHit=hit.clone(); + tmpHit=hit; tmpHit.setTime(fabs(docaIdeal)*1e3/40.);//40#um/ns, drift time in ns track.addToTrackerHits(tmpHit); @@ -667,7 +665,7 @@ int TruthTrackerAlg::makeNoiseHit(edm4hep::SimTrackerHitCollection* SimVec, trkHit.setCellID(wcellid); trkHit.setTime(pocaTime); trkHit.setEDep(mcHit.getEDep()); - //trkHit.setEdx(mcHit.getEdx()); + trkHit.setEdx(mcHit.getEdx()); trkHit.setPosition(mcHit.getPosition()); trkHit.setCovMatrix(mcHit.getCovMatrix()); for(int iAsso=0;iAsso<(int) assoHits->size();iAsso++) @@ -755,7 +753,7 @@ int TruthTrackerAlg::smearDCTkhit(DataHandle<edm4hep::TrackerHitCollection>& smearHit.setQuality(hit.getQuality()); smearHit.setEDep(hit.getEDep()); smearHit.setEDepError(hit.getEDepError()); - //smearHit.setEdx(hit.getEdx()); + smearHit.setEdx(hit.getEdx()); smearHit.setPosition(hit.getPosition()); smearHit.setCovMatrix(hit.getCovMatrix()); smearHit.addToRawHits(hit.getObjectID()); @@ -791,7 +789,7 @@ int TruthTrackerAlg::smearDCTkhit(DataHandle<edm4hep::TrackerHitCollection>& } int TruthTrackerAlg::addHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& - colHandle, edm4hep::MutableTrack& track, const char* msg,int nHitAdded) + colHandle, edm4hep::Track& track, const char* msg,int nHitAdded) { if(nHitAdded>0) return nHitAdded; int nHit=0; @@ -808,7 +806,7 @@ int TruthTrackerAlg::addHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& int TruthTrackerAlg::addSimHitsToTk( DataHandle<edm4hep::SimTrackerHitCollection>& colHandle, edm4hep::TrackerHitCollection*& truthTrackerHitCol, - edm4hep::MutableTrack& track, const char* msg,int nHitAdded) + edm4hep::Track& track, const char* msg,int nHitAdded) { if(nHitAdded>0) return nHitAdded; int nHit=0; @@ -863,12 +861,12 @@ int TruthTrackerAlg::addSimHitsToTk( } int TruthTrackerAlg::addHotsToTk(edm4hep::Track& sourceTrack, - edm4hep::MutableTrack& targetTrack, int hitType,const char* msg,int nHitAdded) + edm4hep::Track& targetTrack, int hitType,const char* msg,int nHitAdded) { if(nHitAdded>0) return nHitAdded; int nHit=0; for(unsigned int iHit=0;iHit<sourceTrack.trackerHits_size();iHit++){ - edm4hep::TrackerHit hit=sourceTrack.getTrackerHits(iHit); + edm4hep::ConstTrackerHit hit=sourceTrack.getTrackerHits(iHit); UTIL::BitField64 encoder(lcio::ILDCellID0::encoder_string); encoder.setValue(hit.getCellID()); if(encoder[lcio::ILDCellID0::subdet]==hitType){ @@ -887,7 +885,7 @@ int TruthTrackerAlg::nHotsOnTrack(edm4hep::Track& track, int hitType) { int nHit=0; for(unsigned int iHit=0;iHit<track.trackerHits_size();iHit++){ - edm4hep::TrackerHit hit=track.getTrackerHits(iHit); + edm4hep::ConstTrackerHit hit=track.getTrackerHits(iHit); UTIL::BitField64 encoder(lcio::ILDCellID0::encoder_string); encoder.setValue(hit.getCellID()); if(encoder[lcio::ILDCellID0::subdet]==hitType){ diff --git a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.h b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.h index 563d9854..32136cd4 100644 --- a/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.h +++ b/Reconstruction/Tracking/src/TruthTracker/TruthTrackerAlg.h @@ -22,7 +22,6 @@ namespace edm4hep { class TrackerHitCollection; class TrackCollection; class Track; - class MutableTrack; class TrackState; class ReconstructedParticleCollection; class MCRecoTrackerAssociationCollection; @@ -43,7 +42,7 @@ class TruthTrackerAlg: public GaudiAlgorithm mcParticleCol, edm4hep::TrackState& stat); int addSimHitsToTk(DataHandle<edm4hep::SimTrackerHitCollection>& colHandle, edm4hep::TrackerHitCollection*& truthTrackerHitCol, - edm4hep::MutableTrack& track, const char* msg,int nHitAdded); + edm4hep::Track& track, const char* msg,int nHitAdded); int smearDCTkhit(DataHandle<edm4hep::TrackerHitCollection>& colHandle,DataHandle<edm4hep::TrackerHitCollection>& smearCol, DataHandle<edm4hep::SimTrackerHitCollection>& SimDCHitCol, @@ -52,12 +51,12 @@ class TruthTrackerAlg: public GaudiAlgorithm DataHandle<edm4hep::MCRecoTrackerAssociationCollection>& AssoSmearDCHitCol, double resX, double resY, double resZ); int addHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& - colHandle, edm4hep::MutableTrack& track, const char* msg,int nHitAdded); + colHandle, edm4hep::Track& track, const char* msg,int nHitAdded); int addIdealHitsToTk(DataHandle<edm4hep::TrackerHitCollection>& colHandle, edm4hep::TrackerHitCollection*& truthTrackerHitCol, - edm4hep::MutableTrack& track, const char* msg,int nHitAdded); + edm4hep::Track& track, const char* msg,int nHitAdded); - int addHotsToTk(edm4hep::Track& sourceTrack,edm4hep::MutableTrack& + int addHotsToTk(edm4hep::Track& sourceTrack,edm4hep::Track& targetTrack, int hitType,const char* msg,int nHitAdded); int nHotsOnTrack(edm4hep::Track& track, int hitType); int trackerHitColSize(DataHandle<edm4hep::TrackerHitCollection>& hitCol); -- GitLab