Skip to content

Commit 2771a92

Browse files
committed
Add track direction branches to spacepoint timing tree
1 parent c505fda commit 2771a92

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

sbndcode/CRT/CRTAna/CRTTimingAnalysis_module.cc

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ class sbnd::crt::CRTTimingAnalysis : public art::EDAnalyzer {
7070

7171
void AnalyseCRTSpacePoints(const std::vector<art::Ptr<CRTSpacePoint>> &CRTSpacePointVec,
7272
const art::FindOneP<CRTCluster> &spacepointsToClusters,
73-
const art::FindManyP<CRTStripHit> &clustersToStripHits);
73+
const art::FindManyP<CRTStripHit> &clustersToStripHits,
74+
const art::FindOneP<CRTTrack> &spacepointsToTracks);
7475

7576
void ResetSPVariables();
7677

@@ -171,6 +172,9 @@ class sbnd::crt::CRTTimingAnalysis : public art::EDAnalyzer {
171172
std::vector<double> _sp_sh_calib_offset_ts0_set;
172173
std::vector<double> _sp_sh_cable_length_ts1_set;
173174
std::vector<double> _sp_sh_calib_offset_ts1_set;
175+
bool _sp_has_track;
176+
double _sp_norm_angle;
177+
double _sp_path_length;
174178

175179
double _tr_start_x;
176180
double _tr_start_y;
@@ -324,6 +328,9 @@ sbnd::crt::CRTTimingAnalysis::CRTTimingAnalysis(fhicl::ParameterSet const& p)
324328
fSPTree->Branch("sp_sh_calib_offset_ts0_set", "std::vector<double>", &_sp_sh_calib_offset_ts0_set);
325329
fSPTree->Branch("sp_sh_cable_length_ts1_set", "std::vector<double>", &_sp_sh_cable_length_ts1_set);
326330
fSPTree->Branch("sp_sh_calib_offset_ts1_set", "std::vector<double>", &_sp_sh_calib_offset_ts1_set);
331+
fSPTree->Branch("sp_has_track", &_sp_has_track);
332+
fSPTree->Branch("sp_norm_angle", &_sp_norm_angle);
333+
fSPTree->Branch("sp_path_length", &_sp_path_length);
327334

328335
fTrTree = fs->make<TTree>("tracks","");
329336
fTrTree->Branch("run", &_run);
@@ -495,6 +502,9 @@ void sbnd::crt::CRTTimingAnalysis::analyze(art::Event const& e)
495502
// Get CRTSpacePoint to CRTCluster Assns
496503
art::FindOneP<CRTCluster> spacepointsToClusters(CRTSpacePointHandle, e, fCRTSpacePointModuleLabel);
497504

505+
// Get CRTSpacePoint to CRTTrack Assns
506+
art::FindOneP<CRTTrack> spacepointsToTracks(CRTSpacePointHandle, e, fCRTTrackModuleLabel);
507+
498508
// Get CRTClusters
499509
art::Handle<std::vector<CRTCluster>> CRTClusterHandle;
500510
e.getByLabel(fCRTClusterModuleLabel, CRTClusterHandle);
@@ -507,7 +517,7 @@ void sbnd::crt::CRTTimingAnalysis::analyze(art::Event const& e)
507517
art::FindManyP<CRTStripHit> clustersToStripHits(CRTClusterHandle, e, fCRTClusterModuleLabel);
508518

509519
// Fill CRTSpacePoint variables
510-
AnalyseCRTSpacePoints(CRTSpacePointVec, spacepointsToClusters, clustersToStripHits);
520+
AnalyseCRTSpacePoints(CRTSpacePointVec, spacepointsToClusters, clustersToStripHits, spacepointsToTracks);
511521

512522
// Get CRTTracks
513523
art::Handle<std::vector<CRTTrack>> CRTTrackHandle;
@@ -736,13 +746,15 @@ void sbnd::crt::CRTTimingAnalysis::SortReferencing()
736746

737747
void sbnd::crt::CRTTimingAnalysis::AnalyseCRTSpacePoints(const std::vector<art::Ptr<CRTSpacePoint>> &CRTSpacePointVec,
738748
const art::FindOneP<CRTCluster> &spacepointsToClusters,
739-
const art::FindManyP<CRTStripHit> &clustersToStripHits)
749+
const art::FindManyP<CRTStripHit> &clustersToStripHits,
750+
const art::FindOneP<CRTTrack> &spacepointsToTracks)
740751
{
741752
for(auto const& sp : CRTSpacePointVec)
742753
{
743754
ResetSPVariables();
744755

745756
const art::Ptr<CRTCluster> cl = spacepointsToClusters.at(sp.key());
757+
const art::Ptr<CRTTrack> tr = spacepointsToTracks.at(sp.key());
746758

747759
const std::vector<art::Ptr<CRTStripHit>> shs = clustersToStripHits.at(cl.key());
748760
const unsigned n_shs = shs.size();
@@ -790,6 +802,23 @@ void sbnd::crt::CRTTimingAnalysis::AnalyseCRTSpacePoints(const std::vector<art::
790802
_sp_single_timing_chain = timing_chain_set.size() == 1;
791803
_sp_timing_chain = _sp_single_timing_chain ? *timing_chain_set.begin() : -1;
792804

805+
if(tr.isNonnull())
806+
{
807+
_sp_has_track = true;
808+
809+
TVector3 normal;
810+
if(_sp_tagger == kBottomTagger || _sp_tagger == kTopLowTagger || _sp_tagger == kTopHighTagger)
811+
normal = TVector3(0, 1, 0);
812+
else if(_sp_tagger == kWestTagger || _sp_tagger == kEastTagger)
813+
normal = TVector3(1, 0, 0);
814+
else if(_sp_tagger == kSouthTagger || _sp_tagger == kNorthTagger)
815+
normal = TVector3(0, 0, 1);
816+
817+
const TVector3 tr_dir(tr->Direction().X(), tr->Direction().Y(), tr->Direction().Z());
818+
_sp_norm_angle = TMath::RadToDeg() * normal.Angle(tr_dir);
819+
_sp_path_length = 1. / TMath::Cos(normal.Angle(tr_dir));
820+
}
821+
793822
fSPTree->Fill();
794823

795824
fSPTaggerMap[sp.key()] = _sp_tagger;
@@ -824,8 +853,11 @@ void sbnd::crt::CRTTimingAnalysis::ResetSPVariables()
824853
_sp_ts1_rwm_ref_front_face = std::numeric_limits<double>::lowest();
825854
_sp_ts1_ptb_hlt_beam_gate_ref_front_face = std::numeric_limits<double>::lowest();
826855
_sp_dts1 = std::numeric_limits<double>::lowest();
856+
_sp_norm_angle = std::numeric_limits<double>::lowest();
857+
_sp_path_length = std::numeric_limits<double>::lowest();
827858

828859
_sp_single_timing_chain = false;
860+
_sp_has_track = false;
829861

830862
_sp_sh_channel_set.clear();
831863
_sp_sh_mac5_set.clear();

0 commit comments

Comments
 (0)