FairShip
Loading...
Searching...
No Matches
run_ACTSTracking.py
Go to the documentation of this file.
1# SPDX-License-Identifier: LGPL-3.0-or-later
2# SPDX-FileCopyrightText: Copyright CERN for the benefit of the SHiP Collaboration
3
4import os
5from argparse import ArgumentParser
6
7import global_variables
8import ROOT
9
10parser = ArgumentParser()
11
12parser.add_argument("-f", "--inputFile", dest="inputFile", help="Input file", required=True)
13parser.add_argument("-g", "--geoFile", dest="geoFile", help="ROOT geofile", required=True)
14parser.add_argument("-o", "--outputDir", dest="outputDir", help="Output directory", required=False, default=os.getcwd())
15parser.add_argument(
16 "-n", "--nEvents", dest="nEvents", help="Num of events to process", type=int, required=False, default=1e6
17)
18parser.add_argument(
19 "--detector",
20 dest="detector",
21 help="Select which detector to perform track reco.",
22 required=False,
23 choices=["SiliconTarget", "MTC", "SND", "StrawTracker"],
24 default="SiliconTarget",
25)
26parser.add_argument("--realPR", dest="realPR", help="Option for pattern recognition", action="store_true")
27parser.add_argument("--vertexing", dest="vertexing", help="Enable vertexing", action="store_true")
28parser.add_argument("--DQM", dest="DQM", help="Option to enable ACTS track and vertex DQM", action="store_true")
29parser.add_argument(
30 "--minHits",
31 dest="minHits",
32 help="Option for minimum required hits to build a valid track",
33 required=False,
34 default=6,
35 type=int,
36)
37parser.add_argument(
38 "--minPt",
39 dest="minPt",
40 help="Option for minimum required transverse momenta to build a valid track",
41 required=False,
42 default=0,
43 type=float,
44)
45
46options = parser.parse_args()
47
48global_variables.inputFile = options.inputFile
49global_variables.geoFile = options.geoFile
50global_variables.outputDir = options.outputDir
51global_variables.detector = options.detector
52global_variables.vertexing = options.vertexing
53global_variables.realPR = options.realPR
54global_variables.DQM = options.DQM
55global_variables.minPt = options.minPt
56global_variables.minHits = options.minHits
57
58
59# Outfile should be in local directory
60tmp = options.inputFile.split("/")
61outFile = tmp[len(tmp) - 1].replace(".root", "_tracked.root")
62outDir = options.inputFile.rsplit("/", 1)[0]
63fullpath = options.outputDir + "" + str(outFile)
64# Clone input file for writing
65os.system("cp " + options.inputFile + " " + fullpath)
66global_variables.outputFile = fullpath
67
68# Determine number of events to loop through
69inFile = ROOT.TFile.Open(options.inputFile)
70fTree = inFile.Get("cbmsim")
71global_variables.nEvents = min(fTree.GetEntries(), options.nEvents)
72inFile.Close()
73
74# If input file has not been converted to ACTS EDM then convert
75if options.inputFile.find("_ACTS.root") < 0:
76 import convertToACTS
77
79 global_variables.inputFile = options.inputFile.replace(".root", "_ACTS.root")
80
81import ACTSReco
82
def runTracking()
Definition: ACTSReco.py:33