161 def create_path(self):
162 """
163 Sets up a path that plays back pregenerated events or generates events
164 based on the properties in the base class.
165 """
166 path = super().create_path()
167
168 path.add_module("TFCDC_WireHitPreparer",
169 flightTimeEstimation="outwards",
170 UseNLoops=0.5
171 )
172
173 path.add_module("TFCDC_ClusterPreparer")
174
175
176 if self.monte_carlo == "no":
177
178 path.add_module("TFCDC_SegmentFinderFacetAutomaton",
179 SegmentOrientation="outwards"
180 )
181
182 path.add_module("TFCDC_SegmentFitter",
183 inputSegments="CDCSegment2DVector",
184 updateDriftLength=True,
185 useAlphaInDriftLength=True,
186 )
187
188 elif self.monte_carlo == "medium":
189
190 path.add_module("TFCDC_SegmentFinderFacetAutomaton",
191 FacetFilter="truth",
192 FacetRelationFilter="truth",
193 SegmentOrientation="outwards"
194 )
195
196 path.add_module("TFCDC_SegmentFitter",
197 inputSegments="CDCSegment2DVector",
198 updateDriftLength=True,
199 useAlphaInDriftLength=True,
200 )
201
202 elif self.monte_carlo == "full":
203
204
205 path.add_module("TFCDC_SegmentCreatorMCTruth",
206 reconstructedDriftLength=False,
207 reconstructedPositions=True,
208
209 )
210
211 path.add_module("TFCDC_SegmentFitter",
212 inputSegments="CDCSegment2DVector",
213 updateDriftLength=False,
214
215 )
216
217 else:
218 raise ValueError("Invalid degree of Monte Carlo information")
219
220 path.add_module("TFCDC_SegmentOrienter",
221 SegmentOrientation="outwards",
222
223 inputSegments="CDCSegment2DVector",
224 segments="CDCSegment2DVectorOriented"
225 )
226
227 path.add_module("TFCDC_TrackFinderSegmentPairAutomaton",
228 inputSegments="CDCSegment2DVectorOriented",
229 WriteSegmentPairs=True,
230 SegmentPairFilter="truth",
231 SegmentPairFilterParameters={"allowReverse": True},
232 SegmentPairRelationFilter="none"
233 )
234
235 path.add_module(AxialStereoPairFitterModule(fit_method=self.get_fit_method()))
236 return path
237
238