Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

StopMuFinderFar Class Reference

Far detector stopping mu filter. More...

#include <StopMuFinderFar.h>

Inheritance diagram for StopMuFinderFar:

StopMuFinder List of all members.

Public Member Functions

 StopMuFinderFar ()
 ~StopMuFinderFar ()
 dtor
void DefaultConfig (void)
void Configure (const Registry &registry)
Bool_t IsStopping (const MomNavigator *)
 filter Stoping mu's

Private Attributes

std::string fCandTrackListName
Double_t fMinZDistance
Double_t fMinRadius
Double_t fMaxRadius
Int_t fMinNPlanes

Detailed Description

Far detector stopping mu filter.

Author:
Sergei avva@fnal.gov 2005-04
$Id:

Definition at line 16 of file StopMuFinderFar.h.


Constructor & Destructor Documentation

StopMuFinderFar::StopMuFinderFar  ) 
 

Definition at line 52 of file StopMuFinderFar.cxx.

References DefaultConfig(), and MSG.

00053 {
00054     MSG("StopMuFilter",Msg::kDebug) 
00055         << "StopMuFinderFar::StopMuFinderFar()" 
00056         << endl;
00057 
00058     DefaultConfig();
00059 } // StopMuFinderFar::StopMuFinderFar() 

StopMuFinderFar::~StopMuFinderFar  ) 
 

dtor

Definition at line 188 of file StopMuFinderFar.cxx.

References MSG.

00189 {
00190     MSG("StopMuFilter",Msg::kDebug)
00191         << "StopMuFinderFar::~StopMuFinderFar()"
00192         << endl;
00193 } // StopMuFinderFar::~StopMuFinderFar()


Member Function Documentation

void StopMuFinderFar::Configure const Registry registry  )  [virtual]
 

Implements StopMuFinder.

Definition at line 79 of file StopMuFinderFar.cxx.

References fCandTrackListName, fMaxRadius, fMinNPlanes, fMinRadius, fMinZDistance, Registry::GetCharString(), Registry::GetDouble(), Registry::GetInt(), Registry::GetType(), Registry::KeyExists(), and MSG.

00080 {
00081     MSG("StopMuFilter",Msg::kDebug)
00082         << "StopMuFinderFar::Configure(const Registry &)"
00083         << endl;
00084 
00085     if ( registry.KeyExists("CandTrackList") ) {
00086         fCandTrackListName = std::string(registry.GetCharString("CandTrackList"));
00087     }
00088     if ( registry.KeyExists("MinZDistance") &&
00089             registry.GetType("MinZDistance") == typeid(Double_t) ) {
00090         fMinZDistance = registry.GetDouble("MinZDistance");
00091     }
00092     if ( registry.KeyExists("MinRadius") &&
00093             registry.GetType("MinRadius") == typeid(Double_t) ) {
00094         fMinRadius = registry.GetDouble("MinRadius");
00095     }
00096     if ( registry.KeyExists("MaxRadius") &&
00097             registry.GetType("MaxRadius") == typeid(Double_t) ) {
00098         fMaxRadius = registry.GetDouble("MaxRadius");
00099     }
00100     if ( registry.KeyExists("MinNPlanes") &&
00101             registry.GetType("MinNPlanes") == typeid(Int_t) ) {
00102         fMinNPlanes = registry.GetInt("MinNPlanes");
00103     }
00104 }

void StopMuFinderFar::DefaultConfig void   )  [virtual]
 

Implements StopMuFinder.

Definition at line 64 of file StopMuFinderFar.cxx.

References fMaxRadius, fMinNPlanes, fMinRadius, fMinZDistance, and MSG.

Referenced by StopMuFinderFar().

00065 {
00066     MSG("StopMuFilter",Msg::kDebug)
00067         << "StopMuFinderFar::DefaultConfig()"
00068         << endl;
00069 
00070     fMinZDistance   =       0.5;
00071     fMinRadius      =       0.5;
00072     fMaxRadius      =       3.5;
00073     fMinNPlanes     =       10;
00074 }

Bool_t StopMuFinderFar::IsStopping const MomNavigator  )  [virtual]
 

filter Stoping mu's

Implements StopMuFinder.

Definition at line 109 of file StopMuFinderFar.cxx.

References fCandTrackListName, DataUtil::GetCandHeader(), CandRecoHandle::GetEndU(), CandRecoHandle::GetEndV(), CandRecoHandle::GetEndZ(), CandRecoHandle::GetNPlane(), RecMinosHdr::GetVldContext(), UgliGeomHandle::GetZExtent(), and MSG.

00110 {
00111     MSG("StopMuFilter",Msg::kDebug)
00112         << "StopMuFinderFar::IsStopping(const MomNavigator*)"
00113         << endl;
00114 
00115     // get CandFitTrackList
00116     const CandFitTrackListHandle* candFitTrackList =
00117         GetCandidate<CandFitTrackListHandle> (mom, fCandTrackListName.c_str());
00118 
00119     // no candidate list found
00120     if ( !candFitTrackList ) return kFALSE;
00121 
00122     // set Z extent
00123     // doing it every event makes filter slow, so
00124     // instead do it once and save in static variables
00125     static Bool_t   zExtentSet  = kFALSE;
00126     static Double_t zMinSM1     = 0.;
00127     static Double_t zMaxSM1     = 0.;
00128     static Double_t zMinSM2     = 0.;
00129     static Double_t zMaxSM2     = 0.;
00130 
00131     static const Int_t Sm1 = 0;    // due to some bizarro convention id of SM1 is "0"
00132     static const Int_t Sm2 = 1;    // and id of SM2 is "1"
00133 
00134     if ( ! zExtentSet ) {
00135         // Get CandRecord from mom
00136         const CandHeader* candHeader = GetCandHeader ( mom );
00137         if ( !candHeader ) {
00138             MSG("StopMuFinderFar",Msg::kDebug)
00139                 << "No CandHeader!!" << endl;
00140             return kFALSE;
00141         }
00142 
00143         const VldContext vldc = candHeader->GetVldContext();
00144 
00145         UgliGeomHandle ugh(vldc);
00146 
00147         ugh.GetZExtent(zMinSM1, zMaxSM1, Sm1);
00148         ugh.GetZExtent(zMinSM2, zMaxSM2, Sm2);
00149 
00150         zExtentSet = kTRUE;
00151     }
00152 
00153     typedef list<const CandFitTrackHandle*> FitTrackList;
00154     typedef list<const CandFitTrackHandle*>::const_iterator FitTrackListItor;
00155 
00156     // Convert daughter list to STL
00157     FitTrackList candFitTrackListSTL =
00158         CDL2STLlist<CandFitTrackHandle>(*candFitTrackList);
00159 
00160     // for now only look at events with only one track
00161     if ( candFitTrackListSTL.empty() ) return kFALSE;
00162 
00163     const CandFitTrackHandle* pcfth = *candFitTrackListSTL.begin();
00164 
00165     // check number of planes
00166     if ( pcfth->GetNPlane() < fMinNPlanes ) return kFALSE;
00167 
00168     // get track end coord's
00169     Double_t endu = pcfth->GetEndU();
00170     Double_t endv = pcfth->GetEndV();
00171     Double_t endz = pcfth->GetEndZ();
00172 
00173     // check endtrack position along Z axis
00174     if ( endz<(zMinSM1+fMinZDistance) ||
00175         ( endz>(zMaxSM1-fMinZDistance) && endz<(zMinSM2+fMinZDistance) ) ||
00176         endz>(zMaxSM2-fMinZDistance) ) return kFALSE;
00177 
00178     // check against radius
00179     Double_t radius = sqrt(endu*endu + endv*endv);
00180     if ( radius<fMinRadius || radius>fMaxRadius ) return kFALSE;
00181 
00182     return kTRUE;
00183 } // void StopMuFinderFar::IsStopping(const MomNavigator* mom)


Member Data Documentation

std::string StopMuFinderFar::fCandTrackListName [private]
 

name of the candtrack list

Definition at line 31 of file StopMuFinderFar.h.

Referenced by Configure(), and IsStopping().

Double_t StopMuFinderFar::fMaxRadius [private]
 

Max radius

Definition at line 46 of file StopMuFinderFar.h.

Referenced by Configure(), and DefaultConfig().

Int_t StopMuFinderFar::fMinNPlanes [private]
 

Min #planes

Definition at line 51 of file StopMuFinderFar.h.

Referenced by Configure(), and DefaultConfig().

Double_t StopMuFinderFar::fMinRadius [private]
 

Min radius

Definition at line 41 of file StopMuFinderFar.h.

Referenced by Configure(), and DefaultConfig().

Double_t StopMuFinderFar::fMinZDistance [private]
 

Min distance from front/end face along Z axis

Definition at line 36 of file StopMuFinderFar.h.

Referenced by Configure(), and DefaultConfig().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:10:20 2010 for loon by  doxygen 1.3.9.1