11 #include <svd/modules/svdTimeValidationCollector/SVDTimeValidationCollectorModule.h>
29 setDescription(
"Collector module used to create the histograms needed for the SVD 6-Sample CoG, 3-Sample CoG and 3-Sample ELS Time calibration");
30 setPropertyFlags(c_ParallelProcessingCertified);
32 addParam(
"SVDClustersName", m_svdClusters,
"Name of the SVDClusters list", m_svdClusters);
33 addParam(
"SVDClustersOnTracksName", m_svdClustersOnTracks,
"Name of the SVDClustersOnTracks list", m_svdClustersOnTracks);
34 addParam(
"EventT0Name", m_eventTime,
"Name of the EventT0 list", m_eventTime);
35 addParam(
"SVDEventInfoName", m_svdEventInfo,
"Name of the SVDEventInfo list", m_svdEventInfo);
36 addParam(
"RecoTracksName", m_recotrack,
"Name of the RecoTracks list", m_recotrack);
37 addParam(
"TracksName", m_track,
"Name of the Tracks list", m_track);
40 void SVDTimeValidationCollectorModule::prepare()
43 TH1F hClsTimeOnTracks(
"clsTimeOnTracks__L@layerL@ladderS@sensor@view",
44 "clsTimeOnTracks in @layer.@ladder.@sensor @view/@side",
46 hClsTimeOnTracks.GetXaxis()->SetTitle(
"clsTime_onTracks (ns)");
49 TH1F hClsTimeAll(
"clsTimeAll__L@layerL@ladderS@sensor@view",
50 "clsTimeAll in @layer.@ladder.@sensor @view/@side",
52 hClsTimeAll.GetXaxis()->SetTitle(
"clsTime_all (ns)");
55 TH1F hClsDiffTimeOnTracks(
"clsDiffTimeOnTracks__L@layerL@ladderS@sensor@view",
56 "clsDiffTimeOnTracks in @layer.@ladder.@sensor @view/@side",
58 hClsDiffTimeOnTracks.GetXaxis()->SetTitle(
"clsDiffTime_onTracks (ns)");
61 auto hEventT0 =
new TH1F(
"hEventT0",
"EventT0", 300, -150, 150);
62 registerObject<TH1F>(
"hEventT0", hEventT0);
64 m_svdCls.isRequired(m_svdClusters);
65 m_svdClsOnTrk.isRequired(m_svdClustersOnTracks);
66 m_eventT0.isRequired(m_eventTime);
67 m_svdEI.isRequired(m_svdEventInfo);
68 m_recoTrk.isRequired(m_recotrack);
69 m_trk.isRequired(m_track);
73 for (
auto layer : geoCache.getLayers(VXD::SensorInfoBase::SVD)) {
74 for (
auto ladder : geoCache.getLadders(layer)) {
77 registerObject<TH1F>(_hClsTimeOnTracks->getHistogram(sensor, view)->GetName(), _hClsTimeOnTracks->getHistogram(sensor, view));
78 registerObject<TH1F>(_hClsTimeAll->getHistogram(sensor, view)->GetName(), _hClsTimeAll->getHistogram(sensor, view));
79 registerObject<TH1F>(_hClsDiffTimeOnTracks->getHistogram(sensor, view)->GetName(), _hClsDiffTimeOnTracks->getHistogram(sensor,
88 void SVDTimeValidationCollectorModule::collect()
90 if (m_eventT0->hasEventT0()) {
91 float eventT0 = m_eventT0->getEventT0();
92 getObjectPtr<TH1F>(
"hEventT0")->Fill(eventT0);
95 for (
const auto& svdCluster : m_svdClsOnTrk) {
97 float clTime = svdCluster.getClsTime();
100 auto theVxdID = svdCluster.getSensorID();
101 auto layer_num = theVxdID.getLayerNumber();
102 auto ladder_num = theVxdID.getLadderNumber();
103 auto sensor_num = theVxdID.getSensorNumber();
105 if (svdCluster.isUCluster())
108 auto hClsTimeOnTracks_name = Form(
"clsTimeOnTracks__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
110 auto hClsDiffTimeOnTracks_name = Form(
"clsDiffTimeOnTracks__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
112 getObjectPtr<TH1F>(hClsTimeOnTracks_name)->Fill(clTime);
113 getObjectPtr<TH1F>(hClsDiffTimeOnTracks_name)->Fill(clTime - eventT0);
117 for (
const auto& svdCluster : m_svdCls) {
119 float clTime = svdCluster.getClsTime();
122 auto theVxdID = svdCluster.getSensorID();
123 auto layer_num = theVxdID.getLayerNumber();
124 auto ladder_num = theVxdID.getLadderNumber();
125 auto sensor_num = theVxdID.getSensorNumber();
127 if (svdCluster.isUCluster())
130 auto hClsTimeAll_name = Form(
"clsTimeAll__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
132 getObjectPtr<TH1F>(hClsTimeAll_name)->Fill(clTime);