8 #include <svd/modules/svdTimeValidationCollector/SVDTimeValidationCollectorModule.h>
26 setDescription(
"Collector module used to create the histograms needed for the SVD 6-Sample CoG, 3-Sample CoG and 3-Sample ELS Time calibration");
27 setPropertyFlags(c_ParallelProcessingCertified);
29 addParam(
"SVDClustersName", m_svdClusters,
"Name of the SVDClusters list", m_svdClusters);
30 addParam(
"SVDClustersOnTracksName", m_svdClustersOnTracks,
"Name of the SVDClustersOnTracks list", m_svdClustersOnTracks);
31 addParam(
"EventT0Name", m_eventTime,
"Name of the EventT0 list", m_eventTime);
32 addParam(
"SVDEventInfoName", m_svdEventInfo,
"Name of the SVDEventInfo list", m_svdEventInfo);
33 addParam(
"RecoTracksName", m_recotrack,
"Name of the RecoTracks list", m_recotrack);
34 addParam(
"TracksName", m_track,
"Name of the Tracks list", m_track);
37 void SVDTimeValidationCollectorModule::prepare()
40 TH1F hClsTimeOnTracks(
"clsTimeOnTracks__L@layerL@ladderS@sensor@view",
41 "clsTimeOnTracks in @layer.@ladder.@sensor @view/@side",
43 hClsTimeOnTracks.GetXaxis()->SetTitle(
"clsTime_onTracks (ns)");
46 TH1F hClsTimeAll(
"clsTimeAll__L@layerL@ladderS@sensor@view",
47 "clsTimeAll in @layer.@ladder.@sensor @view/@side",
49 hClsTimeAll.GetXaxis()->SetTitle(
"clsTime_all (ns)");
52 TH1F hClsDiffTimeOnTracks(
"clsDiffTimeOnTracks__L@layerL@ladderS@sensor@view",
53 "clsDiffTimeOnTracks in @layer.@ladder.@sensor @view/@side",
55 hClsDiffTimeOnTracks.GetXaxis()->SetTitle(
"clsDiffTime_onTracks (ns)");
58 auto hEventT0 =
new TH1F(
"hEventT0",
"EventT0", 300, -150, 150);
59 registerObject<TH1F>(
"hEventT0", hEventT0);
61 m_svdCls.isRequired(m_svdClusters);
62 m_svdClsOnTrk.isRequired(m_svdClustersOnTracks);
63 m_eventT0.isRequired(m_eventTime);
64 m_svdEI.isRequired(m_svdEventInfo);
65 m_recoTrk.isRequired(m_recotrack);
66 m_trk.isRequired(m_track);
70 for (
auto layer : geoCache.getLayers(VXD::SensorInfoBase::SVD)) {
71 for (
auto ladder : geoCache.getLadders(layer)) {
74 registerObject<TH1F>(_hClsTimeOnTracks->getHistogram(sensor, view)->GetName(), _hClsTimeOnTracks->getHistogram(sensor, view));
75 registerObject<TH1F>(_hClsTimeAll->getHistogram(sensor, view)->GetName(), _hClsTimeAll->getHistogram(sensor, view));
76 registerObject<TH1F>(_hClsDiffTimeOnTracks->getHistogram(sensor, view)->GetName(), _hClsDiffTimeOnTracks->getHistogram(sensor,
85 void SVDTimeValidationCollectorModule::collect()
87 if (m_eventT0->hasEventT0()) {
88 float eventT0 = m_eventT0->getEventT0();
89 getObjectPtr<TH1F>(
"hEventT0")->Fill(eventT0);
92 for (
const auto& svdCluster : m_svdClsOnTrk) {
94 float clTime = svdCluster.getClsTime();
97 auto theVxdID = svdCluster.getSensorID();
98 auto layer_num = theVxdID.getLayerNumber();
99 auto ladder_num = theVxdID.getLadderNumber();
100 auto sensor_num = theVxdID.getSensorNumber();
102 if (svdCluster.isUCluster())
105 auto hClsTimeOnTracks_name = Form(
"clsTimeOnTracks__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
107 auto hClsDiffTimeOnTracks_name = Form(
"clsDiffTimeOnTracks__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
109 getObjectPtr<TH1F>(hClsTimeOnTracks_name)->Fill(clTime);
110 getObjectPtr<TH1F>(hClsDiffTimeOnTracks_name)->Fill(clTime - eventT0);
114 for (
const auto& svdCluster : m_svdCls) {
116 float clTime = svdCluster.getClsTime();
119 auto theVxdID = svdCluster.getSensorID();
120 auto layer_num = theVxdID.getLayerNumber();
121 auto ladder_num = theVxdID.getLadderNumber();
122 auto sensor_num = theVxdID.getSensorNumber();
124 if (svdCluster.isUCluster())
127 auto hClsTimeAll_name = Form(
"clsTimeAll__L%dL%dS%d%c", layer_num, ladder_num, sensor_num, side);
129 getObjectPtr<TH1F>(hClsTimeAll_name)->Fill(clTime);
Calibration collector module base class.
Collector module used to create the histograms needed for the SVD CoG-Time calibration.
Class to faciliate easy access to sensor information of the VXD like coordinate transformations or pi...
Class to uniquely identify a any structure of the PXD and SVD.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
Abstract base class for different kinds of events.