@@ -36,6 +36,11 @@ sbnd::LightPropagationCorrection::LightPropagationCorrection(fhicl::ParameterSet
3636 fOpDetX .push_back (pdCenter.X ());
3737 fOpDetY .push_back (pdCenter.Y ());
3838 fOpDetZ .push_back (pdCenter.Z ());
39+ if (fPDSMap .pdType (opch)==" pmt_coated" ) fOpDetType .push_back (0 );
40+ else if (fPDSMap .pdType (opch)==" pmt_uncoated" ) fOpDetType .push_back (1 );
41+ else if (fPDSMap .pdType (opch)==" xarapuca_vuv" ) fOpDetType .push_back (2 );
42+ else if (fPDSMap .pdType (opch)==" xarapuca_vis" ) fOpDetType .push_back (3 );
43+ else fOpDetType .push_back (-1 );
3944 }
4045
4146 auto const & tpc = art::ServiceHandle<geo::Geometry>()->TPC ();
@@ -442,16 +447,18 @@ void sbnd::LightPropagationCorrection::GetPropagationTimeCorrectionPerChannel()
442447 double dy = fSpacePointY [sp] - _opDetY;
443448 double dz = fSpacePointZ [sp] - _opDetZ;
444449 double distanceToOpDet = std::sqrt (dx*dx + dy*dy + dz*dz);
445- // double spToCathode = abs(fSpacePointX[sp]); // Distance from space point to cathode in mm
446- // double cathodeToOpDet = std::sqrt(_opDetX*_opDetX + dy*dy + dz*dz); // Distance from cathode to OpDet in mm
447- // float lightPropTimeVIS = spToCathode/fVGroupVUV + cathodeToOpDet/fVGroupVIS; // Speed
448-
449450 double cathodeToOpDet = std::sqrt (_opDetX*_opDetX + (dy/2 )*(dy/2 ) + (dz/2 )*(dz/2 )); // Distance from cathode to OpDet in mm
450451 double spToCathode = std::sqrt ( fSpacePointX [sp]*fSpacePointX [sp] + (dy/2 )*(dy/2 ) + (dz/2 )*(dz/2 )); // Distance from space point to cathode in mm
451452
452453 float lightPropTimeVIS = spToCathode/fVGroupVUV + cathodeToOpDet/fVGroupVIS ; // Speed
453454 float lightPropTimeVUV = distanceToOpDet / fVGroupVUV ; // Speed of light in mm/ns for VUV
454- float lightPropTime = std::min (lightPropTimeVIS, lightPropTimeVUV);
455+ float lightPropTime = 0 ;
456+ if (fOpDetType [opdet]==0 )
457+ lightPropTime = std::min (lightPropTimeVIS, lightPropTimeVUV);
458+ else if (fOpDetType [opdet]==1 )
459+ lightPropTime = lightPropTimeVIS;
460+ else
461+ throw art::Exception (art::errors::LogicError) << " OpDet Type " << fOpDetType [opdet] << " not supported ." << std::endl;
455462 float partPropTime = std::sqrt ((fSpacePointX [sp]-fRecoVx )*(fSpacePointX [sp]-fRecoVx ) + (fSpacePointY [sp]-fRecoVy )*(fSpacePointY [sp]-fRecoVy ) + (fSpacePointZ [sp]-fRecoVz )*(fSpacePointZ [sp]-fRecoVz ))/fSpeedOfLight ;
456463 float PropTime = lightPropTime + partPropTime;
457464 if (PropTime < minPropTime) minPropTime = PropTime;
0 commit comments