53 ATH_MSG_DEBUG(
"Using InDetEtaDependentCutsSvc. Individual inclusive track selections from config not used");
56 ATH_MSG_DEBUG(
"Using individual inclusive track selections from config");
59 if (
m_fitter.retrieve().isFailure()) {
60 if(
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
"Could not find Trk::TrkVKalVrtFitter" <<
endmsg;
61 return StatusCode::SUCCESS;
63 if(
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
"InDetVKalVxInJetTool TrkVKalVrtFitter found" <<
endmsg;
67 if(
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG)<<
" No implemented Trk::ITrkVKalVrtFitter interface" <<
endmsg;
68 return StatusCode::SUCCESS;
90 if (Gaudi::Concurrency::ConcurrencyFlags::numThreads() > 1) {
91 ATH_MSG_FATAL(
"Filling histograms not supported in MT jobs.");
92 return StatusCode::FAILURE;
95 SmartIF<ITHistSvc> hist_root{Gaudi::svcLocator()->service(
"THistSvc")};
100 if(
m_multiVertex) histDir=
"/file1/stat/MSVrtInJet"+name()+
"/";
101 else histDir=
"/file1/stat/SVrtInJet"+name()+
"/";
102 m_h = std::make_unique<Hists>();
111 if(
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
" Negative TAG is requested! " <<
endmsg;
112 if(
msgLvl(MSG::DEBUG))
msg(MSG::DEBUG) <<
"Not compatible with negativeTAIL option, so getNegativeTail is set to FALSE." <<
endmsg;
116 for(
int ntv=2; ntv<=10; ntv++)
m_chiScale[ntv]=TMath::ChisquareQuantile(0.9,2.*ntv-3.)/ntv;
134 return StatusCode::SUCCESS;
139 const std::string& histDir)
141 m_hb_massPiPi =
new TH1D(
"massPiPi",
" mass PiPi",160,200., 1000.);
142 m_hb_massPiPi1 =
new TH1D(
"massPiPi1",
" mass PiPi",100,200., 2000.);
143 m_hb_massPPi =
new TH1D(
"massPPi",
" massPPi", 100,1000., 1250.);
144 m_hb_massEE =
new TH1D(
"massEE",
" massEE", 100,0., 200.);
145 m_hb_nvrt2 =
new TH1D(
"nvrt2",
" vertices2", 50,0., 50.);
146 m_hb_ratio =
new TH1D(
"ratio",
" ratio", 51,0., 1.02);
147 m_hb_totmass =
new TH1D(
"totmass",
" totmass", 250,0., 10000.);
148 m_hb_totmassEE =
new TH1D(
"massEEcomvrt",
" totmass EE common vertex", 100,0., 1000.);
149 m_hb_totmass2T0 =
new TH1D(
"mass2trcomvrt0",
" totmass 2tr common vertex", 800,0., 4000.);
150 m_hb_totmass2T1 =
new TH1D(
"mass2trcomvrt1",
" totmass 2tr common vertex", 200,0., 10000.);
151 m_hb_totmass2T2 =
new TH1D(
"mass2trcomvrt2",
" totmass 2tr common vertex", 200,0., 10000.);
152 m_hb_impact =
new TH1D(
"impact",
" impact", 100,0., 20.);
153 m_hb_impactR =
new TH1D(
"impactR",
" impactR", 400,-30., 70.);
154 m_hb_impactZ =
new TH1D(
"impactZ",
" impactZ", 100,-30., 70.);
155 m_hb_impactRZ =
new TH2D(
"impactRZ",
" impactRZ", 40,-10., 10., 60, -30.,30. );
156 m_hb_trkD0 =
new TH1D(
"trkD0",
" d0 of tracks", 100,-20., 20.);
157 m_hb_r2d =
new TH1D(
"r2interact",
"Interaction radius 2tr selected", 150,0., 150.);
158 m_hb_r1dc =
new TH1D(
"r1interactCommon",
"Interaction 1tr radius common", 150,0., 150.);
159 m_hb_r2dc =
new TH1D(
"r2interactCommon",
"Interaction 2tr radius common", 150,0., 150.);
160 m_hb_r3dc =
new TH1D(
"r3interactCommon",
"Interaction 3tr radius common", 150,0., 150.);
161 m_hb_rNdc =
new TH1D(
"rNinteractCommon",
"Interaction Ntr radius common", 150,0., 150.);
162 m_hb_dstToMat =
new TH1D(
"dstToMatL",
"Distance to material layer", 80,0., 40.);
163 m_hb_impV0 =
new TH1D(
"impactV0",
" V0 impact", 100,0., 50.);
164 m_hb_ntrkjet =
new TH1D(
"ntrkjet",
" NTrk in jet", 50,0., 50.);
165 m_hb_jmom =
new TH1D(
"jetmom",
" Jet mom", 200,0., 2000000.);
166 m_hb_mom =
new TH1D(
"jetmomvrt",
" Jet mom with sec. vertex", 200,0., 2000000.);
167 m_hb_signif3D =
new TH1D(
"signif3D",
" Signif3D for initial 2tr vertex", 140,-20., 50.);
168 m_hb_sig3DTot =
new TH1D(
"sig3dcommon",
" Signif3D for common vertex", 140,-20., 50.);
169 m_hb_sig3D1tr =
new TH1D(
"sig3D1tr",
"Signif3D for 1tr vertices", 140,-20., 50.);
170 m_hb_sig3D2tr =
new TH1D(
"sig3D2tr",
"Signif3D for 2tr single vertex", 140,-20., 50.);
171 m_hb_sig3DNtr =
new TH1D(
"sig3DNtr",
"Signif3D for many-tr single vertex", 140,-20., 50.);
172 m_hb_goodvrtN =
new TH1F(
"goodvrtN",
"Number of good vertices", 20,0., 20.);
173 m_hb_distVV =
new TH1D(
"distvv",
"Vertex-Vertex dist", 100,0., 20.);
174 m_hb_diffPS =
new TH1D(
"diffPS",
"Primary-Secondary assoc", 200,-20., 20.);
175 m_hb_trkPtMax =
new TH1D(
"trkPtMax",
"Maximal track Pt to jet", 100, 0., 5000.);
176 m_hb_rawVrtN =
new TH1F(
"rawVrtN",
"Number of raw vertices multivertex case", 20, 0., 20.);
177 m_hb_lifetime =
new TH1F(
"lifetime",
"Distance/momentum", 100, 0., 5.);
178 m_hb_trkPErr =
new TH1F(
"trkPErr",
"Track momentum error for P>10 GeV", 100, 0., 0.5);
179 m_hb_deltaRSVPV =
new TH1F(
"deltaRSVPV",
"SV-PV vs jet dR ", 200, 0., 1.);
180 m_pr_NSelTrkMean =
new TProfile(
"NSelTrkMean",
" NTracks selected vs jet pt", 80, 0., 1600000.);
181 m_pr_effVrt2tr =
new TProfile(
"effVrt2tr",
" 2tr vertex efficiency vs Ntrack", 50, 0., 50.);
182 m_pr_effVrt2trEta=
new TProfile(
"effVrt2trEta",
" 2tr vertex efficiency vs eta", 50, -3., 3.);
183 m_pr_effVrt =
new TProfile(
"effVrt",
"Full vertex efficiency vs Ntrack", 50, 0., 50.);
184 m_pr_effVrtEta =
new TProfile(
"effVrtEta",
"Full vertex efficiency vs eta", 50, -3., 3.);
231 m_tuple =
new TTree(
"Tracks",
"Tracks");
263 m_tuple->Branch(
"VrtDist2D", &
m_curTup->VrtDist2D,
"VrtDist2D[nvrt]/F");
279 m_tuple->Branch(
"NVrtDist2D", &
m_curTup->NVrtDist2D,
"NVrtDist2D[nNVrt]/F");
280 m_tuple->Branch(
"NVrtSig3D", &
m_curTup->NVrtSig3D,
"NVrtSig3D[nNVrt]/F");
289 return StatusCode::SUCCESS;
304 const TLorentzVector & jetDir,
305 const std::vector<const xAOD::IParticle*> & IInpTrk)
309 std::vector<const xAOD::TrackParticle*> InpTrk;
310 std::vector<const xAOD::TrackParticle*> SelSecTrk;
311 std::vector< std::vector<const xAOD::TrackParticle*> > SelSecTrkPerVrt;
312 std::vector<const xAOD::TrackParticle*> xaodTrkFromV0;
313 std::vector<xAOD::Vertex*> listVrtSec(0);
314 double SecVtxMass = 0.;
316 double EnergyJet = 0.;
317 int N2trVertices = 0 ;
324 h.m_curTup->nTrkInJet=0;
327 h.m_curTup->TotM=0.;
h.m_curTup->ewgt=1.;
335 InpTrk.clear(); InpTrk.reserve(IInpTrk.size());
336 std::vector<const xAOD::IParticle*>::const_iterator i_itrk;
337 for (i_itrk = IInpTrk.begin(); i_itrk < IInpTrk.end(); ++i_itrk) {
339 if(tmp)InpTrk.push_back(tmp);
343 std::unique_ptr<workVectorArrxAOD> tmpVectxAOD= std::make_unique<workVectorArrxAOD>();
344 tmpVectxAOD->InpTrk.resize(InpTrk.size());
345 std::copy(InpTrk.begin(),InpTrk.end(), tmpVectxAOD->InpTrk.begin());
347 SelSecTrkPerVrt.swap(tmpVectxAOD->FoundSecondTracks);
348 xaodTrkFromV0.swap(tmpVectxAOD->TrkFromV0);
352 if(secVrt !=
nullptr) listVrtSec.push_back(secVrt);
355 h.m_pr_effVrt->Fill((
float)nRefPVTrk,0.);
356 h.m_pr_effVrtEta->Fill( jetDir.Eta(),0.);
364 N2trVertices = (int)
Results[2];
370 std::vector<const xAOD::IParticle*> iparTrkFromV0(0);
371 for(
auto & i : xaodTrkFromV0)iparTrkFromV0.push_back(i);
381 catch (std::bad_alloc& ba){
382 ATH_MSG_DEBUG(
"Trk::VxSecVKalVertexInfo allocation failure! "<< ba.what());