53int main(
int argc,
char* argv[] ) {
60 fileName = std::getenv(
"ROOTCORE_TEST_FILE");
61 if (fileName.empty()) Error(
APP_NAME,
"Could not open $ROOTCORE_TEST_FILE" );
66 StatusCode::enableFailure();
68 StatusCode::enableFailure();
74 Info(
APP_NAME,
"Opening file: %s", fileName.data() );
75 std::unique_ptr< TFile > ifile( TFile::Open( fileName.data(),
"READ" ) );
81 CHECK( event.readFrom( ifile.get() ) );
82 Info(
APP_NAME,
"Number of events in the file: %i",
83 static_cast< int >( event.getEntries() ) );
89 Long64_t
entries =
event.getEntries();
91 const Long64_t e = atoll( argv[ 2 ] );
110 auto originTool = std::make_unique<InDet::InDetTrackTruthOriginTool> (
"InDetTrackTruthOriginTool" );
111 CHECK( originTool->initialize() );
112 ToolHandle< InDet::IInDetTrackTruthOriginTool > trackTruthOriginToolHandle( originTool.get() );
113 CHECK( filterTool.setProperty(
"trackOriginTool", trackTruthOriginToolHandle) );
116 CHECK( jetFilterTool.setProperty(
"trackOriginTool", trackTruthOriginToolHandle) );
138 std::vector< InDet::InDetTrackSystematicsTool* >
tools = {&smearingTool, &biasingTool, &filterTool, &jetFilterTool};
142 tool->msg().setLevel( MSG::DEBUG );
143 CHECK( tool->initialize() );
144 auto systCode = tool->applySystematicVariation(systSet);
145 if (systCode != StatusCode::SUCCESS) {
146 Error(
APP_NAME,
"Failed to apply systematic variation on tool %s", tool->name().data() );
152 std::string jetCollectionName =
"AntiKt4EMTopoJets";
155 auto outfile = std::make_unique<TFile>(
"InDetTrackSystsToolTester.out.root",
"RECREATE");
157 TH1* d0_before =
new TH1F(
"d0_before",
"original d_{0}",100,-5,5);
158 TH1* z0_before =
new TH1F(
"z0_before",
"original z_{0}",100,-200,200);
159 TH1* qOverP_before =
new TH1F(
"qOverP_before",
"original q/p", 200, -0.05, 0.05);
160 TH1* d0_after =
new TH1F(
"d0_after",
"d_{0} after",100,-5,5);
161 TH1* z0_after =
new TH1F(
"z0_after",
"z_{0} after",100,-200,200);
162 TH1* qOverP_after =
new TH1F(
"qOverP_after",
"q/p after", 200, -0.05, 0.05);
163 TH1* d0_diff =
new TH1F(
"d0_diff",
"#delta d_{0}",100,-1.0,1.0);
164 TH1* z0_diff =
new TH1F(
"z0_diff",
"#delta z_{0}",100,-10.0,10.0);
165 TH1* qOverP_diff =
new TH1F(
"qOverP_diff",
"#delta q/p", 200, -1.e-5, 1.e-5);
169 auto sc =
event.retrieve( ei,
"EventInfo" );
170 if ( !
sc.isSuccess() ) {
171 Error( __func__,
"Could not retreive event ahead of time to detect data/MC" );
179 for( Long64_t entry = 0; entry <
entries; ++entry ) {
182 event.getEntry( entry );
186 CHECK( event.retrieve( ParticlesID ,
"InDetTrackParticles" ) );
190 CHECK( event.retrieve( jets, jetCollectionName ) );
198 if ( !filterTool.
accept(trkCpy) )
continue;
200 if ( doTIDE && !jetFilterTool.
accept( trkCpy, jets ) )
continue;
202 auto d0b = trkCpy->
d0();
203 auto z0b = trkCpy->
z0();
204 auto qOverPb = trkCpy->
qOverP();
207 Error(__func__,
"Could not apply bias correction!" );
210 Error(__func__,
"Could not apply smearing correction!" );
213 auto d0a = trkCpy->
d0();
214 auto z0a = trkCpy->
z0();
215 auto qOverPa = trkCpy->
qOverP();
216 auto d0d = d0a - d0b;
217 auto z0d = z0a - z0b;
218 auto qOverPd = qOverPa - qOverPb;
221 std::cout <<
"d0, before/after/diff:\t" << d0b
222 <<
"/" << d0a <<
"/" << d0d << std::endl;
223 std::cout <<
"z0, before/after/diff:\t" << z0b
224 <<
"/" << z0a <<
"/" << z0d << std::endl;
225 std::cout <<
"q/p, before/after/diff:\t" << qOverPb
226 <<
"/" << qOverPa <<
"/" << qOverPd << std::endl;
230 std::cout <<
"supressing debug output..." << std::endl;
234 d0_before->Fill( d0b );
235 z0_before->Fill( z0b );
236 qOverP_before->Fill( qOverPb );
237 d0_after->Fill( d0a );
238 z0_after->Fill( z0a );
239 qOverP_after->Fill( qOverPa );
240 d0_diff->Fill( d0d );
241 z0_diff->Fill( z0d );
242 qOverP_diff->Fill( qOverPd );