List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | Friends
HybridGeometryFinderWG::HybridGeometryFinder Class Reference

Module to reconstruct the shower axis for virtual eyes. More...

#include "HybridGeometryFinderWG/HybridGeometryFinder.h"

Inheritance diagram for HybridGeometryFinderWG::HybridGeometryFinder:
Inheritance graph
[legend]

Public Types

enum  ResultFlag { eSuccess, eFailure, eBreakLoop, eContinueLoop }
 Flag returned by module methods to the RunController. More...
 
enum  VersionInfoType {
  eFilename = 1, eRevisionNumber = 2, eDate = 3, eTime = 4,
  eLastEditor = 5
}
 Different types of version info that can be retrieved from GetVersionInfo. More...
 

Public Member Functions

fwk::VModule::ResultFlag Finish ()
 Finish: invoked at end of the run (NOT end of the event) More...
 
utl::StopwatchGetStopwatch ()
 
const utl::StopwatchGetStopwatch () const
 
std::string GetVersionInfo (const VersionInfoType v) const
 Retrieve different sorts of module version info. More...
 
fwk::VModule::ResultFlag Init ()
 Initialize: invoked at beginning of run (NOT beginning of event) More...
 
void InitTiming ()
 
fwk::VModule::ResultFlag Run (evt::Event &event)
 Run: invoked once per event. More...
 
ResultFlag RunWithTiming (evt::Event &event)
 

Static Public Member Functions

static std::string GetResultFlagByName (const ResultFlag flag)
 

Protected Types

enum  InfoLevel { eInfoNone = 0, eInfoFinal = 1, eInfoIntermediate = 2, eInfoDebug = 3 }
 

Protected Attributes

int fInfoLevel = 0
 

Private Member Functions

void CalculateGeometryForTels ()
 Calculate the geometry for all telescopes in this eye. More...
 
bool FitAxis ()
 Fit a hybrid axis. More...
 
int GetDataFromPreviousFit ()
 Take the data from previous fits as first guess. More...
 
bool ReadmitPixel ()
 Try to readmit pixels to the time fit. More...
 
void RecalculateChiSquare ()
 Calculate the ChiSquare for the fitted parameters. More...
 
 REGISTER_MODULE ("HybridGeometryFinderWG", HybridGeometryFinder)
 
bool RemovePixel ()
 Remove a pixel from the fit if the time residue is too high. More...
 
bool SelectHybridStation (const int)
 Select the hottest station for the fit. More...
 
void SelectPixels ()
 Select the pixels for the time fit. More...
 
void StoreData ()
 Store everything in the RecData. More...
 

Static Private Member Functions

static std::vector< double > CalculateAxisForTel (const utl::Point, utl::Vector, const double, const int)
 Calculate the axis parameters for a given telescope. More...
 
static void MinuitFitFuncAxis (int &, double *, double &, double *, int)
 The Minuit fit function for the axis fit. More...
 

Private Attributes

utl::Vector fAxis
 
unsigned int fAxisMinPixel
 The minimum number of pixels needed for the axis fit. More...
 
double fAxisPhi
 
double fAxisPhiError
 
double fAxisTheta
 
double fAxisThetaError
 
double fChiSqAxis
 
std::map< int, double > fChiSqAxisPerTel
 
double fChiSqSDP
 
std::map< int, double > fChiSqSDPPerTel
 
double fChiSqTime
 
std::map< int, double > fChiSqTimePerTel
 
double fChiZero
 
utl::Point fCore
 
double fCovMatrixAxis [5][5]
 
unsigned int fCurTelId
 The current telescope Id. More...
 
double fDeltaStationAxis
 
double fEasting
 
double fEastingError
 
evt::EventfEvent
 The current event. More...
 
int fFdOnly
 Should the reconstruction continue if no SD station is found. More...
 
double fFitStationOffset
 
double fMaxSDPDist
 Maximum difference in Chi_i for a pixel to be considered in the axis fit. More...
 
double fMaxStationToSDPDist
 The maximal distance for the station to the axis. More...
 
double fMaxTimeResidue
 The maximal time residual for a pixel to be not removed. More...
 
std::map< int, unsigned int > fNDofAxisPerTel
 
unsigned int fNDofSDP
 
std::map< int, unsigned int > fNDofSDPPerTel
 
unsigned int fNDofTime
 
std::map< int, unsigned int > fNDofTimePerTel
 
double fNorthing
 
double fNorthingError
 
int fPassThrough
 Should the reconstruction continue if no axis is found. More...
 
double fRp
 
utl::AxialVector fSDP
 
double fTCore
 
double fTCoreError
 
std::map< int, std::vector
< double > > 
fTelParameters
 
int fTimeFitModel
 The time fit model used for the axis fit. More...
 
double fTZero
 

Static Private Attributes

static double fgCoreHeight = 1400. * utl::m
 The UTM height used for the core. More...
 
static fevt::EyefgCurEye = NULL
 The current eye. More...
 
static sevt::StationfgFitStation = NULL
 
static int fgHybridFitMode = 0
 
static int fgLaserShots = 0
 Are laser shots reconstructed? More...
 
static unsigned int fgNDofAxis = 0
 
static double fgSDPError = 0.35 * utl::degree
 There error assumed in the SDP fit part. More...
 
static std::vector< unsigned
short int > 
fgStationList
 
static int fgVerbosity = -1
 The level of verbosity: -1 no, 0 med, 1 full, 2 debug output. More...
 
static double fgVerticalCurvature = 0.0001111 / utl::m
 The curvature assumed for the shower front. More...
 

Friends

class AxisParameterCalculator
 

Detailed Description

Module to reconstruct the shower axis for virtual eyes.

Author
Daniel Kruppke-Hansen
Date
01 Mar 2010

Definition at line 42 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

Member Enumeration Documentation

enum fwk::VModule::InfoLevel
protectedinherited
Enumerator
eInfoNone 
eInfoFinal 
eInfoIntermediate 
eInfoDebug 

Definition at line 125 of file VModule.h.

enum fwk::VModule::ResultFlag
inherited

Flag returned by module methods to the RunController.

Enumerator
eSuccess 

Report success to RunController.

eFailure 

Report failure to RunController, causing RunController to terminate execution.

eBreakLoop 

Break current loop. It works for nested loops too!

eContinueLoop 

Skip remaining modules in the current loop and continue with next iteration of the loop.

Definition at line 60 of file VModule.h.

Different types of version info that can be retrieved from GetVersionInfo.

Enumerator
eFilename 
eRevisionNumber 
eDate 
eTime 
eLastEditor 

Definition at line 110 of file VModule.h.

Member Function Documentation

vector< double > HybridGeometryFinderWG::HybridGeometryFinder::CalculateAxisForTel ( const utl::Point  core,
utl::Vector  axis,
const double  tCore,
const int  telId 
)
staticprivate

Calculate the axis parameters for a given telescope.

Take the core at 1400m, the axis in the coreCS and the T0 at the core and calculate all parameters for one telescope. These are CoreX(telCS), CoreY(telCS), AxisTheta(telCS), AxisPhi(telCS), SDPTheta(telCS), SDPPhi(telCS), Chi0, T0, Rp.

Definition at line 530 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References utl::Angle(), fwk::LocalCoordinateSystemConstructor< Policy >::Create(), utl::cross(), utl::Vector::GetMag(), utl::BasicVector< HepVector >::GetPhi(), utl::BasicVector< HepVector >::GetTheta(), utl::BasicVector< HepVector >::GetX(), utl::BasicVector< HepVector >::GetY(), utl::BasicVector< HepVector >::GetZ(), utl::kPi, utl::kPiOnTwo, utl::kSpeedOfLight, utl::AxialVector::Normalize(), and utl::Vector::Normalize().

void HybridGeometryFinderWG::HybridGeometryFinder::CalculateGeometryForTels ( )
private

Calculate the geometry for all telescopes in this eye.

Definition at line 513 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References fdet::Eye::GetId(), fdet::Eye::TelescopesBegin(), and fdet::Eye::TelescopesEnd().

fwk::VModule::ResultFlag HybridGeometryFinderWG::HybridGeometryFinder::Finish ( )
virtual

Finish: invoked at end of the run (NOT end of the event)

This method is for things that should be done at the end of the run (for example, closing files or writing out histograms) {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 320 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References io::eSuccess.

bool HybridGeometryFinderWG::HybridGeometryFinder::FitAxis ( )
private
int HybridGeometryFinderWG::HybridGeometryFinder::GetDataFromPreviousFit ( )
private
std::string fwk::VModule::GetResultFlagByName ( const ResultFlag  flag)
staticinherited
utl::Stopwatch& fwk::VModule::GetStopwatch ( )
inlineinherited

Definition at line 106 of file VModule.h.

References fwk::VModule::fStopwatch.

const utl::Stopwatch& fwk::VModule::GetStopwatch ( ) const
inlineinherited

Definition at line 107 of file VModule.h.

References fwk::VModule::fStopwatch.

std::string fwk::VModule::GetVersionInfo ( const VersionInfoType  v) const
inherited
fwk::VModule::ResultFlag HybridGeometryFinderWG::HybridGeometryFinder::Init ( )
virtual

Initialize: invoked at beginning of run (NOT beginning of event)

This method is for things that should be done once at the beginning of a run (for example, booking histograms, performing calculations that need to be done only once, initializing parameters) {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 90 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References fdet::FTimeFitModel::eRealisticAtm, ERROR, io::eSuccess, fdet::FTimeFitModel::eVacuumAtm, utl::Branch::GetChild(), utl::Branch::GetData(), fwk::CentralConfig::GetInstance(), fwk::CentralConfig::GetTopBranch(), INFO, and fdet::FTimeFitModel::SetModel().

void fwk::VModule::InitTiming ( )
inlineinherited

Definition at line 95 of file VModule.h.

References fwk::VModule::fStopwatch, and utl::Stopwatch::Reset().

void HybridGeometryFinderWG::HybridGeometryFinder::MinuitFitFuncAxis ( int &  ,
double *  ,
double &  f,
double *  par,
int   
)
staticprivate
bool HybridGeometryFinderWG::HybridGeometryFinder::ReadmitPixel ( )
private
void HybridGeometryFinderWG::HybridGeometryFinder::RecalculateChiSquare ( )
private
HybridGeometryFinderWG::HybridGeometryFinder::REGISTER_MODULE ( "HybridGeometryFinderWG"  ,
HybridGeometryFinder   
)
private
bool HybridGeometryFinderWG::HybridGeometryFinder::RemovePixel ( )
private
fwk::VModule::ResultFlag HybridGeometryFinderWG::HybridGeometryFinder::Run ( evt::Event event)
virtual

Run: invoked once per event.

This method is for things that should be done once per event {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 153 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References fevt::ComponentSelector::eHasData, io::eSuccess, fevt::FEvent::EyesBegin(), evt::Event::GetFEvent(), fdet::Eye::GetId(), evt::Event::HasFEvent(), evt::Event::HasSEvent(), INFO, and fdet::Eye::IsVirtual().

ResultFlag fwk::VModule::RunWithTiming ( evt::Event event)
inlineinherited
bool HybridGeometryFinderWG::HybridGeometryFinder::SelectHybridStation ( const int  prevEye)
private
void HybridGeometryFinderWG::HybridGeometryFinder::SelectPixels ( )
private
void HybridGeometryFinderWG::HybridGeometryFinder::StoreData ( )
private

Store everything in the RecData.

Stores all the data for the eye and each telescope. Also does an error propagation for the parameters and calculates the chi_i values for each pixel.

Definition at line 1596 of file HybridGeometryFinderWG/HybridGeometryFinder.cc.

References fevt::EyeRecData::AddSDPPixel(), evt::ShowerFRecData::AddStationId(), utl::Angle(), fwk::LocalCoordinateSystemConstructor< Policy >::Create(), utl::cross(), utl::degree, fevt::ComponentSelector::eHasData, utl::CorrelationMatrix::Get(), fdet::Pixel::GetDirection(), fdet::FDetector::GetEye(), fevt::EyeRecData::GetFRecShower(), fdet::FDetector::GetPixel(), fdet::Telescope::GetPosition(), fdet::Eye::GetPosition(), utl::NumericalErrorPropagation::GetPropagatedCorrelations(), utl::NumericalErrorPropagation::GetPropagatedErrors(), evt::ShowerFRecData::GetStationIds(), fdet::Eye::GetTelescope(), fevt::EyeRecData::HasFRecShower(), INFO, utl::kSpeedOfLight, utl::BasicVector< HepVector >::kSpherical, utl::m, fevt::EyeRecData::MakeFRecShower(), utl::ns, fevt::EyeRecData::RemoveSDPPixel(), fevt::EyeRecData::SDPPixelsBegin(), fevt::EyeRecData::SDPPixelsEnd(), utl::CorrelationMatrix::Set(), evt::ShowerRecData::SetAxis(), evt::ShowerFRecData::SetAxis(), fevt::TelescopeRecData::SetAxisFitChiSquare(), fevt::EyeRecData::SetAxisFitChiSquare(), fevt::TelescopeRecData::SetAxisFitCorrelations(), fevt::EyeRecData::SetAxisFitCorrelations(), fevt::TelescopeRecData::SetChiZero(), fevt::EyeRecData::SetChiZero(), evt::ShowerRecData::SetCorePosition(), evt::ShowerFRecData::SetCorePosition(), evt::ShowerFRecData::SetCoreTime(), fevt::TelescopeRecData::SetRp(), fevt::EyeRecData::SetRp(), fevt::TelescopeRecData::SetSDP(), fevt::EyeRecData::SetSDP(), fevt::TelescopeRecData::SetSDPCorrThetaPhi(), fevt::EyeRecData::SetSDPCorrThetaPhi(), fevt::TelescopeRecData::SetSDPFitChiSquare(), fevt::EyeRecData::SetSDPFitChiSquare(), fevt::TelescopeRecData::SetSDPPhiError(), fevt::EyeRecData::SetSDPPhiError(), fevt::TelescopeRecData::SetSDPThetaError(), fevt::EyeRecData::SetSDPThetaError(), evt::ShowerFRecData::SetSDTimeResidual(), fevt::TelescopeRecData::SetTimeFitChiSquare(), fevt::EyeRecData::SetTimeFitChiSquare(), fevt::TelescopeRecData::SetTimeFitCorrelations(), fevt::EyeRecData::SetTimeFitCorrelations(), fevt::TelescopeRecData::SetTZero(), fevt::EyeRecData::SetTZero(), fdet::Eye::TelescopesBegin(), fdet::Eye::TelescopesEnd(), fevt::EyeRecData::TimeFitPixelsBegin(), and fevt::EyeRecData::TimeFitPixelsEnd().

Friends And Related Function Documentation

friend class AxisParameterCalculator
friend

Member Data Documentation

utl::Vector HybridGeometryFinderWG::HybridGeometryFinder::fAxis
private
unsigned int HybridGeometryFinderWG::HybridGeometryFinder::fAxisMinPixel
private

The minimum number of pixels needed for the axis fit.

Definition at line 184 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fAxisPhi
private
double HybridGeometryFinderWG::HybridGeometryFinder::fAxisPhiError
private
double HybridGeometryFinderWG::HybridGeometryFinder::fAxisTheta
private
double HybridGeometryFinderWG::HybridGeometryFinder::fAxisThetaError
private
double HybridGeometryFinderWG::HybridGeometryFinder::fChiSqAxis
private
std::map<int, double> HybridGeometryFinderWG::HybridGeometryFinder::fChiSqAxisPerTel
private
double HybridGeometryFinderWG::HybridGeometryFinder::fChiSqSDP
private
std::map<int, double> HybridGeometryFinderWG::HybridGeometryFinder::fChiSqSDPPerTel
private
double HybridGeometryFinderWG::HybridGeometryFinder::fChiSqTime
private
std::map<int, double> HybridGeometryFinderWG::HybridGeometryFinder::fChiSqTimePerTel
private
double HybridGeometryFinderWG::HybridGeometryFinder::fChiZero
private
utl::Point HybridGeometryFinderWG::HybridGeometryFinder::fCore
private
double HybridGeometryFinderWG::HybridGeometryFinder::fCovMatrixAxis[5][5]
private
unsigned int HybridGeometryFinderWG::HybridGeometryFinder::fCurTelId
private

The current telescope Id.

Definition at line 214 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fDeltaStationAxis
private
double HybridGeometryFinderWG::HybridGeometryFinder::fEasting
private
double HybridGeometryFinderWG::HybridGeometryFinder::fEastingError
private
evt::Event* HybridGeometryFinderWG::HybridGeometryFinder::fEvent
private

The current event.

Definition at line 208 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

int HybridGeometryFinderWG::HybridGeometryFinder::fFdOnly
private

Should the reconstruction continue if no SD station is found.

Definition at line 202 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fFitStationOffset
private
double HybridGeometryFinderWG::HybridGeometryFinder::fgCoreHeight = 1400. * utl::m
staticprivate

The UTM height used for the core.

Definition at line 175 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

fevt::Eye * HybridGeometryFinderWG::HybridGeometryFinder::fgCurEye = NULL
staticprivate

The current eye.

Definition at line 211 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

sevt::Station * HybridGeometryFinderWG::HybridGeometryFinder::fgFitStation = NULL
staticprivate
int HybridGeometryFinderWG::HybridGeometryFinder::fgHybridFitMode = 0
staticprivate
int HybridGeometryFinderWG::HybridGeometryFinder::fgLaserShots = 0
staticprivate

Are laser shots reconstructed?

Definition at line 199 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

unsigned int HybridGeometryFinderWG::HybridGeometryFinder::fgNDofAxis = 0
staticprivate
double HybridGeometryFinderWG::HybridGeometryFinder::fgSDPError = 0.35 * utl::degree
staticprivate

There error assumed in the SDP fit part.

Definition at line 178 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

vector< unsigned short int > HybridGeometryFinderWG::HybridGeometryFinder::fgStationList
staticprivate
int HybridGeometryFinderWG::HybridGeometryFinder::fgVerbosity = -1
staticprivate

The level of verbosity: -1 no, 0 med, 1 full, 2 debug output.

Definition at line 172 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fgVerticalCurvature = 0.0001111 / utl::m
staticprivate

The curvature assumed for the shower front.

Definition at line 190 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

int fwk::VModule::fInfoLevel = 0
protectedinherited
double HybridGeometryFinderWG::HybridGeometryFinder::fMaxSDPDist
private

Maximum difference in Chi_i for a pixel to be considered in the axis fit.

Definition at line 187 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fMaxStationToSDPDist
private

The maximal distance for the station to the axis.

Definition at line 193 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fMaxTimeResidue
private

The maximal time residual for a pixel to be not removed.

Definition at line 196 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

std::map<int, unsigned int> HybridGeometryFinderWG::HybridGeometryFinder::fNDofAxisPerTel
private
unsigned int HybridGeometryFinderWG::HybridGeometryFinder::fNDofSDP
private
std::map<int, unsigned int> HybridGeometryFinderWG::HybridGeometryFinder::fNDofSDPPerTel
private
unsigned int HybridGeometryFinderWG::HybridGeometryFinder::fNDofTime
private
std::map<int, unsigned int> HybridGeometryFinderWG::HybridGeometryFinder::fNDofTimePerTel
private
double HybridGeometryFinderWG::HybridGeometryFinder::fNorthing
private
double HybridGeometryFinderWG::HybridGeometryFinder::fNorthingError
private
int HybridGeometryFinderWG::HybridGeometryFinder::fPassThrough
private

Should the reconstruction continue if no axis is found.

Definition at line 205 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fRp
private
utl::AxialVector HybridGeometryFinderWG::HybridGeometryFinder::fSDP
private
double HybridGeometryFinderWG::HybridGeometryFinder::fTCore
private
double HybridGeometryFinderWG::HybridGeometryFinder::fTCoreError
private
std::map<int, std::vector<double> > HybridGeometryFinderWG::HybridGeometryFinder::fTelParameters
private
int HybridGeometryFinderWG::HybridGeometryFinder::fTimeFitModel
private

The time fit model used for the axis fit.

Definition at line 181 of file HybridGeometryFinderWG/HybridGeometryFinder.h.

double HybridGeometryFinderWG::HybridGeometryFinder::fTZero
private

The documentation for this class was generated from the following files:

, generated on Tue Sep 26 2023.