14 #include "GaudiKernel/IToolSvc.h"
26 #include "CaloEvent/CaloCluster.h"
27 #include "CaloEvent/CaloClusterContainer.h"
45 ISvcLocator *pSvcLocator) :
47 m_TrackName(
"Tracks"),
72 IToolSvc* p_toolSvc = 0;
73 ATH_CHECK( service(
"ToolSvc", p_toolSvc) );
75 IAlgTool* algTool = 0;
77 StatusCode sc = p_toolSvc->retrieveTool(
"ExtrapolTrackToCaloTool", algTool,
this);
83 return StatusCode::FAILURE;
87 ATH_CHECK( p_toolSvc->retrieveTool(
"TBCaloCoordinate",
tool) );
94 return StatusCode::FAILURE;
98 return StatusCode::SUCCESS;
124 return StatusCode::SUCCESS;
132 return StatusCode::SUCCESS;
139 bool got_a_track =
false;
141 ATH_MSG_DEBUG (
"TBTrackToCaloAlg::CreateTrkImpactInCalo()" );
146 if(
sc != StatusCode::SUCCESS){
172 else ATH_MSG_DEBUG (
" ImpactInCalo pointer not valid for this track");
192 else ATH_MSG_DEBUG (
" ImpactInCalo pointer not valid for this track");
216 ATH_MSG_ERROR (
" No track parameters for this track ??? do nothing " );
221 double trketa_at = 0.;
222 double trkphi_at = 0.;
230 double etaCaloLocal_0 = 0;
231 double phiCaloLocal_0 = 0;
232 double trketa_at_0 = 0.;
233 double trkphi_at_0 = 0.;
238 double etaCaloLocal_1 = 0;
239 double phiCaloLocal_1 = 0;
240 double trketa_at_1 = 0.;
241 double trkphi_at_1 = 0.;
246 double etaCaloLocal_2 = 0;
247 double phiCaloLocal_2 = 0;
248 double trketa_at_2 = 0.;
249 double trkphi_at_2 = 0.;
254 double etaCaloLocal_3 = 0;
255 double phiCaloLocal_3 = 0;
256 double trketa_at_3 = 0.;
257 double trkphi_at_3 = 0.;
259 double x_ctb_tile = 0;
260 double y_ctb_tile = 0;
261 double z_ctb_tile = 0;
262 double etaCaloLocal_tile = 0;
263 double phiCaloLocal_tile = 0;
264 double trketa_at_tile = 0.;
265 double trkphi_at_tile = 0.;
273 ATH_MSG_DEBUG (
" TrackTo ...PS : for eta= " << trketa <<
" dist to Barrel =" << distbar
274 <<
" to endcap =" << distec );
282 pt_calo_ctb,pt_calo_local,trketa_at,trkphi_at);
286 x_ctb_0 = pt_calo_ctb->x();
287 y_ctb_0 = pt_calo_ctb->y();
288 z_ctb_0 = pt_calo_ctb->z();
289 etaCaloLocal_0 = pt_calo_local->eta();
290 phiCaloLocal_0 = pt_calo_local->phi();
291 trketa_at_0 = trketa_at;
292 trkphi_at_0 = trkphi_at;
295 <<
" etaCaloLocal=" << pt_calo_local->eta()
296 <<
" phiCaloLocal=" << pt_calo_local->phi() );
303 ATH_MSG_DEBUG (
" TrackTo ...Strip : for eta= " << trketa <<
" dist to Barrel =" << distbar
304 <<
" to endcap =" << distec );
312 pt_calo_ctb,pt_calo_local,trketa_at,trkphi_at);
316 x_ctb_1 = pt_calo_ctb->x();
317 y_ctb_1 = pt_calo_ctb->y();
318 z_ctb_1 = pt_calo_ctb->z();
319 etaCaloLocal_1 = pt_calo_local->eta();
320 phiCaloLocal_1 = pt_calo_local->phi();
321 trketa_at_1 = trketa_at;
322 trkphi_at_1 = trkphi_at;
325 <<
" etaCaloLocal=" << pt_calo_local->eta()
326 <<
" phiCaloLocal=" << pt_calo_local->phi() );
334 ATH_MSG_DEBUG (
" TrackTo ...Middle : for eta= " << trketa <<
" dist to Barrel =" << distbar
335 <<
" to endcap =" << distec );
343 pt_calo_ctb,pt_calo_local,trketa_at,trkphi_at);
347 x_ctb_2 = pt_calo_ctb->x();
348 y_ctb_2 = pt_calo_ctb->y();
349 z_ctb_2 = pt_calo_ctb->z();
350 etaCaloLocal_2 = pt_calo_local->eta();
351 phiCaloLocal_2 = pt_calo_local->phi();
352 trketa_at_2 = trketa_at;
353 trkphi_at_2 = trkphi_at;
356 <<
" etaCaloLocal=" << pt_calo_local->eta()
357 <<
" phiCaloLocal=" << pt_calo_local->phi() );
372 ATH_MSG_DEBUG (
" TrackTo ...Back : for eta= " << trketa <<
" dist to Barrel =" << distbar
373 <<
" to endcap =" << distec );
381 pt_calo_ctb,pt_calo_local,trketa_at,trkphi_at);
385 x_ctb_3 = pt_calo_ctb->x();
386 y_ctb_3 = pt_calo_ctb->y();
387 z_ctb_3 = pt_calo_ctb->z();
388 etaCaloLocal_3 = pt_calo_local->eta();
389 phiCaloLocal_3 = pt_calo_local->phi();
390 trketa_at_3 = trketa_at;
391 trkphi_at_3 = trkphi_at;
394 <<
" etaCaloLocal=" << pt_calo_local->eta()
395 <<
" phiCaloLocal=" << pt_calo_local->phi() );
402 ATH_MSG_DEBUG (
" TrackTo ...Tile : for eta= " << trketa <<
" dist to Barrel =" << distbar
403 <<
" to endcap =" << distec );
411 pt_calo_ctb,pt_calo_local,trketa_at,trkphi_at);
415 x_ctb_tile = pt_calo_ctb->x();
416 y_ctb_tile = pt_calo_ctb->y();
417 z_ctb_tile = pt_calo_ctb->z();
418 etaCaloLocal_tile = pt_calo_local->eta();
419 phiCaloLocal_tile = pt_calo_local->phi();
420 trketa_at_tile = trketa_at;
421 trkphi_at_tile = trkphi_at;
424 <<
" etaCaloLocal=" << pt_calo_local->eta()
425 <<
" phiCaloLocal=" << pt_calo_local->phi() );
429 ImpactInCalo * imp=
new ImpactInCalo(x_ctb_0, y_ctb_0, z_ctb_0, etaCaloLocal_0, phiCaloLocal_0, trketa_at_0, trkphi_at_0,
430 x_ctb_1, y_ctb_1, z_ctb_1, etaCaloLocal_1, phiCaloLocal_1, trketa_at_1, trkphi_at_1,
431 x_ctb_2, y_ctb_2, z_ctb_2, etaCaloLocal_2, phiCaloLocal_2, trketa_at_2, trkphi_at_2,
432 x_ctb_3, y_ctb_3, z_ctb_3, etaCaloLocal_3, phiCaloLocal_3, trketa_at_3, trkphi_at_3,
433 x_ctb_tile, y_ctb_tile, z_ctb_tile, etaCaloLocal_tile, phiCaloLocal_tile, trketa_at_tile, trkphi_at_tile);
435 if(pt_calo_ctb)
delete pt_calo_ctb;
436 if(pt_calo_local)
delete pt_calo_local;
449 ATH_MSG_DEBUG (
"TBTrackToCaloAlg::CompareImpactWithCluster()" );
459 if(sc1 == StatusCode::SUCCESS && sc2 == StatusCode::SUCCESS ){
462 impact_iterator f_imp = impact_collection->
begin();
463 impact_iterator l_imp = impact_collection->
end();
465 for (
const CaloCluster* cluster : *cluster_container) {
466 double hecluster = cluster->energy()/
GeV;
467 double heta = cluster->eta();
468 double hphi = cluster->phi();
471 <<
"(GeV), etaCaloLocal=" << heta
472 <<
", phiCaloLocal=" << hphi );
474 for ( ; f_imp!=l_imp; ++f_imp){
478 (
"==> Comparison between cluster and impact in Middle : deta="
485 if (sc1 != StatusCode::SUCCESS)
488 if (sc2 != StatusCode::SUCCESS)
507 if(
sc == StatusCode::SUCCESS ){
510 const double impcosPhi =
std::cos(impact->phiCaloLocal_1());
511 const double impeta = impact->etaCaloLocal_1();
513 ATH_MSG_INFO (
"Found an impact in strips : parameters are eta = " << impeta
514 <<
" cosPhi = " << impcosPhi );
532 dynamic_cast<const Trk::Perigee*
>(tr->perigeeParameters());
538 const double trkcosPhi =
cos(aMeasPer->parameters()[
Trk::phi]);
539 const double trketa = aMeasPer->eta();
541 ATH_MSG_INFO (
"Found a Trk::Track : parameters are eta = " << trketa
542 <<
" cosPhi = " << trkcosPhi );
550 ATH_MSG_INFO (
" Now loop on Trk::TrackParticle collection " );
559 ATH_MSG_ERROR (
"Could not get TrkParticle::MeasuredPerigee" );
563 const double partcosPhi =
cos(aMeasPer->parameters()[
Trk::phi]);
564 const double parteta = aMeasPer->eta();
566 ATH_MSG_INFO (
"Found a trackparticle : parameters are eta = " << parteta
567 <<
" cosPhi = " << partcosPhi );
586 if (
sc != StatusCode::SUCCESS )
return 0;
593 double trketa_at = 0.;
594 double trkphi_at = 0.;
598 TrackSeenByCalo(trk,sam,
offset,pt_ctb,pt_local,trketa_at,trkphi_at);
606 double eta = pt_local->eta();
607 double phi = pt_local->phi();
612 int sampling_or_module;
620 double deta =
int(neta/2)*dde->
deta();
621 double dphi =
int(nphi/2)*dde->
dphi();
626 my_list =
new CaloCellList(caloDDMgr, cell_container,subcalo);
640 ATH_MSG_INFO (
"TBTrackToCaloAlg::PrintCellsCrossed()" );
664 dynamic_cast<const Trk::Perigee*
>(tr->perigeeParameters());
669 double d0 = aMeasPer->parameters()[
Trk::d0];
670 double z0 = aMeasPer->parameters()[
Trk::z0];
690 <<
" phi=" <<
cell->phi() <<
" energy=" <<
cell->energy() );
707 ATH_MSG_INFO (
"TBTrackToCaloAlg::PrintBeamPosition()" );
709 ATH_MSG_INFO (
"Just a check... beam direction in calo : " );