From 92e996f4771f9c2995c358849593909a4c068edd Mon Sep 17 00:00:00 2001 From: Vardan Tadevosyan <tadevosn@jlab.org> Date: Thu, 7 Aug 2014 09:42:17 -0400 Subject: [PATCH] Add example code to assign energies to tracks. Add TrackEnergies method in THcHallCSpectrometer class. It is called from TrackCalc metod. --- src/THcHallCSpectrometer.cxx | 40 ++++++++++++++++++++++++++++++++++++ src/THcHallCSpectrometer.h | 1 + 2 files changed, 41 insertions(+) diff --git a/src/THcHallCSpectrometer.cxx b/src/THcHallCSpectrometer.cxx index 34d5a39..a34755d 100644 --- a/src/THcHallCSpectrometer.cxx +++ b/src/THcHallCSpectrometer.cxx @@ -51,6 +51,7 @@ #include "THaTriggerTime.h" #include "TMath.h" #include "TList.h" +#include "THcShower.h" #include <iostream> #include <fstream> @@ -312,9 +313,48 @@ Int_t THcHallCSpectrometer::TrackCalc() { // Additioal track calculations. At present, we only calculate beta here. + cout << "THcHallCSpectrometer::TrackCalc is called xxxxxxxxxxxxxxxxx" << endl; + + TrackEnergies(fTracks); + return TrackTimes( fTracks ); } +//_____________________________________________________________________________ +Int_t THcHallCSpectrometer::TrackEnergies( TClonesArray* Tracks ) { + + // Example code for track energy assignments from shower counter. + + // cout << "THcHallCSpectrometer::TrackEnergies called -----------------\n" ; + + if ( !Tracks ) return -1; + + THaTrack *track=0; + Int_t ntrack = GetNTracks(); + + // cout << " number of tracks " << ntrack << endl; + + for ( Int_t itrk=0; itrk < ntrack; itrk++ ) { + + Double_t energy = kBig; + + track = static_cast<THaTrack*>(Tracks->At(itrk)); + + TIter nextDet( fNonTrackingDetectors ); + THaNonTrackingDetector *det; + while ((det = static_cast<THaNonTrackingDetector*>(nextDet()))) { + + THcShower *sh = dynamic_cast<THcShower*>(det); + if ( sh ) energy = sh->GetShEnergy(track); + } + + track->SetEnergy(energy); + cout << "track " << itrk << " energy = " << track->GetEnergy() << endl; + } + + return ntrack; +} + //_____________________________________________________________________________ Int_t THcHallCSpectrometer::TrackTimes( TClonesArray* Tracks ) { // Do the actual track-timing (beta) calculation. diff --git a/src/THcHallCSpectrometer.h b/src/THcHallCSpectrometer.h index f906546..90e1be5 100644 --- a/src/THcHallCSpectrometer.h +++ b/src/THcHallCSpectrometer.h @@ -21,6 +21,7 @@ public: virtual Int_t FindVertices( TClonesArray& tracks ); virtual Int_t TrackCalc(); virtual Int_t TrackTimes( TClonesArray* tracks ); + Int_t TrackEnergies( TClonesArray* tracks ); virtual Int_t ReadRunDatabase( const TDatime& date ); -- GitLab