54int main(
int argc,
char* argv[] ) {
61 fileName = std::getenv(
"ROOTCORE_TEST_FILE");
62 if (fileName.empty()) Error(
APP_NAME,
"Could not open $ROOTCORE_TEST_FILE" );
67 StatusCode::enableFailure();
69 StatusCode::enableFailure();
75 Info(
APP_NAME,
"Opening file: %s", fileName.data() );
76 std::unique_ptr< TFile > ifile( TFile::Open( fileName.data(),
"READ" ) );
82 CHECK( event.readFrom( ifile.get() ) );
83 Info(
APP_NAME,
"Number of events in the file: %i",
84 static_cast< int >( event.getEntries() ) );
90 Long64_t
entries =
event.getEntries();
92 const Long64_t e = atoll( argv[ 2 ] );
111 auto originTool = std::make_unique<InDet::InDetTrackTruthOriginTool> (
"InDetTrackTruthOriginTool" );
112 CHECK( originTool->initialize() );
113 ToolHandle< InDet::IInDetTrackTruthOriginTool > trackTruthOriginToolHandle( originTool.get() );
114 CHECK( filterTool.setProperty(
"trackOriginTool", trackTruthOriginToolHandle) );
117 CHECK( jetFilterTool.setProperty(
"trackOriginTool", trackTruthOriginToolHandle) );
139 std::vector< InDet::InDetTrackSystematicsTool* >
tools = {&smearingTool, &biasingTool, &filterTool, &jetFilterTool};
143 tool->msg().setLevel( MSG::DEBUG );
144 CHECK( tool->initialize() );
145 auto systCode = tool->applySystematicVariation(systSet);
146 if (systCode != StatusCode::SUCCESS) {
147 Error(
APP_NAME,
"Failed to apply systematic variation on tool %s", tool->name().data() );
153 std::string jetCollectionName =
"AntiKt4EMTopoJets";
156 auto outfile = std::make_unique<TFile>(
"InDetTrackSystsToolTester.out.root",
"RECREATE");
158 TH1* d0_before =
new TH1F(
"d0_before",
"original d_{0}",100,-5,5);
159 TH1* z0_before =
new TH1F(
"z0_before",
"original z_{0}",100,-200,200);
160 TH1* qOverP_before =
new TH1F(
"qOverP_before",
"original q/p", 200, -0.05, 0.05);
161 TH1* d0_after =
new TH1F(
"d0_after",
"d_{0} after",100,-5,5);
162 TH1* z0_after =
new TH1F(
"z0_after",
"z_{0} after",100,-200,200);
163 TH1* qOverP_after =
new TH1F(
"qOverP_after",
"q/p after", 200, -0.05, 0.05);
164 TH1* d0_diff =
new TH1F(
"d0_diff",
"#delta d_{0}",100,-1.0,1.0);
165 TH1* z0_diff =
new TH1F(
"z0_diff",
"#delta z_{0}",100,-10.0,10.0);
166 TH1* qOverP_diff =
new TH1F(
"qOverP_diff",
"#delta q/p", 200, -1.e-5, 1.e-5);
170 auto sc =
event.retrieve( ei,
"EventInfo" );
171 if ( !
sc.isSuccess() ) {
172 Error( __func__,
"Could not retreive event ahead of time to detect data/MC" );
180 for( Long64_t entry = 0; entry <
entries; ++entry ) {
183 event.getEntry( entry );
187 CHECK( event.retrieve( ParticlesID ,
"InDetTrackParticles" ) );
191 CHECK( event.retrieve( jets, jetCollectionName ) );
199 if ( !filterTool.
accept(trkCpy) )
continue;
201 if ( doTIDE && !jetFilterTool.
accept( trkCpy, jets ) )
continue;
203 auto d0b = trkCpy->
d0();
204 auto z0b = trkCpy->
z0();
205 auto qOverPb = trkCpy->
qOverP();
208 Error(__func__,
"Could not apply bias correction!" );
211 Error(__func__,
"Could not apply smearing correction!" );
214 auto d0a = trkCpy->
d0();
215 auto z0a = trkCpy->
z0();
216 auto qOverPa = trkCpy->
qOverP();
217 auto d0d = d0a - d0b;
218 auto z0d = z0a - z0b;
219 auto qOverPd = qOverPa - qOverPb;
222 std::cout <<
"d0, before/after/diff:\t" << d0b
223 <<
"/" << d0a <<
"/" << d0d << std::endl;
224 std::cout <<
"z0, before/after/diff:\t" << z0b
225 <<
"/" << z0a <<
"/" << z0d << std::endl;
226 std::cout <<
"q/p, before/after/diff:\t" << qOverPb
227 <<
"/" << qOverPa <<
"/" << qOverPd << std::endl;
231 std::cout <<
"supressing debug output..." << std::endl;
235 d0_before->Fill( d0b );
236 z0_before->Fill( z0b );
237 qOverP_before->Fill( qOverPb );
238 d0_after->Fill( d0a );
239 z0_after->Fill( z0a );
240 qOverP_after->Fill( qOverPa );
241 d0_diff->Fill( d0d );
242 z0_diff->Fill( z0d );
243 qOverP_diff->Fill( qOverPd );