00001 00002 // 00003 // AlgAltDeMux 00004 // 00005 // An Algorithm class for the Alternative DeMuxing Algoriths 00006 // developed in Cambridge. This algorith replaces AlgAltDeMuxCosmics. 00007 // It is valid for demultiplexing all far detector event classes 00008 // (beam, atmospherics, cosmics and multiple muons) 00009 // 00010 // Author: M. Thomson March 2005 00012 00013 #ifndef ALG_ALTDEMUX_H 00014 #define ALG_ALTDEMUX_H 00015 00016 #include "Algorithm/AlgBase.h" 00017 #include "Plex/PlexSEIdAltL.h" 00018 #include "UgliGeometry/UgliGeomHandle.h" 00019 #include "UgliGeometry/UgliStripHandle.h" 00020 #include "AltDeMuxPatternMaster.h" 00021 #include "AlgAltDeMuxBase.h" 00022 #include "AltDeMuxStructures.h" 00023 00024 class CandDeMuxDigitHandle; 00025 class CandDigitListHandle; 00026 class TObjectItr; 00027 00028 class AlgAltDeMux : public AlgAltDeMuxBase 00029 { 00030 00031 public: 00032 00033 // Constructors and destructors 00034 AlgAltDeMux(); 00035 virtual ~AlgAltDeMux(); 00036 00037 // State testing methods 00038 void Trace(const char *c) const; 00039 00040 // State changing methods 00041 void RunAlg(AlgConfig &acd, CandHandle &ch, CandContext &cx); 00042 00043 protected: 00044 void DeMuxPreparation(CandDeMuxDigitListHandle& cdlh); 00045 void DeMuxGoldenHits(CandDeMuxDigitListHandle& cdlh); 00046 void DeMuxAsMultipleMuon(CandDeMuxDigitListHandle& cdlh); 00047 void DeMuxAsStraightSingleMuon(CandDeMuxDigitListHandle& cdlh); 00048 void DeMuxAsUnknownEventType(CandDeMuxDigitListHandle& cdlh); 00049 void ValidateThroughGoingMuon(CandDeMuxDigitListHandle& cdlh); 00050 void ValidateContainedCandidate(CandDeMuxDigitListHandle& cdlh); 00051 void DeMuxTidyUp(CandDeMuxDigitListHandle& cdlh); 00052 00053 00054 private: 00055 bool showTiming; 00056 Float_t fClearArrayTime; 00057 Float_t fMakePixelMapTime; 00058 Float_t fDisplayPixelMapTime; 00059 Float_t fMakeAltListMapTime; 00060 Float_t fStripNoiseTime; 00061 Float_t fStripCrossTalkTime; 00062 Float_t fStripCrossTalkSinglesTime; 00063 Float_t fFillLowestHighestTime; 00064 Float_t fGetFibreLengthsTime; 00065 Float_t fMakeTimingMask1Time; 00066 Float_t fMakeTimingMask2Time; 00067 Float_t fDeMuxPass0Time; 00068 Float_t fDeMuxPass1Time; 00069 Float_t fHoughTime; 00070 Float_t fFitsTime; 00071 Float_t fNewFitsTime; 00072 Float_t fValidateTime; 00073 Float_t fReMakeMaskTime; 00074 Float_t fEventIDTime; 00075 Float_t fReBuildXTalkTime; 00076 Float_t fThroughMuonTime; 00077 Float_t fDeMuxPass2Time; 00078 Float_t fDeMuxPass3Time; 00079 Float_t fDeMuxPass4Time; 00080 Float_t fAddBackCrossTalkTime; 00081 Float_t fDeMuxPass5Time; 00082 Float_t fDeMuxPass6Time; 00083 Float_t fCleanMultipleTime; 00084 Float_t fContainedTime; 00085 Float_t fTotalTime; 00086 Float_t fReTagCrossTalkTime; 00087 Float_t fDeMuxPreparationTime; 00088 Float_t fDeMuxGoldenHitsTime; 00089 Float_t fDeMuxAsMultipleMuonTime; 00090 Float_t fDeMuxAsStraightSingleMuonTime; 00091 Float_t fDeMuxAsUnknownEventTypeTime; 00092 Float_t fValidateThroughGoingMuonTime; 00093 Float_t fValidateContainedCandidateTime; 00094 Float_t fDeMuxTidyUpTime; 00095 Float_t fSearchAndDestroyTime; 00096 00097 Float_t fNEvents; 00098 00099 ClassDef(AlgAltDeMux,1) // DeMux Golden Algorithm Class 00100 00101 }; 00102 00103 #endif // ALG_ALTDEMUX_H 00104 00105
1.3.9.1