00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef ALGDEMUXCOSMICS_H
00013 #define ALGDEMUXCOSMICS_H
00014
00015 #include "Algorithm/AlgBase.h"
00016
00017 class DmxPlaneItr;
00018 class DmxStatus;
00019
00020 class AlgDeMuxCosmics : public AlgBase
00021 {
00022
00023 public:
00024
00025
00026 AlgDeMuxCosmics();
00027 virtual ~AlgDeMuxCosmics();
00028
00029
00030 virtual void Trace(const char *c) const;
00031
00032
00033 virtual void RunAlg(AlgConfig &acd, CandHandle &ch, CandContext &cx);
00034
00035 private:
00036
00037 Double_t fRequiredMatedSignalRatio;
00038 Double_t fSlopeRMS;
00039 Int_t fStrayPlanes;
00040 UInt_t fPlanesInSet;
00041 Int_t fStrayCut;
00042 void FindFit(DmxPlaneItr &planeItr, Double_t &prevChiSq,
00043 Double_t &a1, Double_t &a2, Double_t &a3,
00044 Double_t &a4, Int_t* hypotheses,
00045 Int_t direction, Int_t leverArm, Float_t offset);
00046 Bool_t FindPlanesToDropFromFit(DmxPlaneItr &planeItr, Double_t a1, Double_t a2,
00047 Double_t a3, Double_t a4,
00048 Int_t direction, Int_t leverArm, Float_t offset);
00049 void SetPlanesToDeterminedFit(DmxPlaneItr &planeItr, Double_t a1, Double_t a2,
00050 Double_t a3, Double_t a4, Float_t offset);
00051 void SetPlanesToDeterminedFit(DmxPlaneItr &planeItr, Double_t a, Double_t b);
00052 void FindCosmicSolution(DmxPlaneItr &planeItr, DmxPlaneItr &validPlaneItr,
00053 DmxStatus *status, Double_t &a1, Double_t &a2,
00054 Double_t &a3, Double_t &a4, Double_t &chiSq, Float_t offset);
00055 void FindWindowCosmicSolution(DmxPlaneItr &validPlaneItr, DmxStatus *status,
00056 Double_t &a1, Double_t &a2, Double_t &a3,
00057 Double_t &a4, Double_t &chiSq, Float_t offset);
00058 void UseSingleFit(DmxPlaneItr &planeItr, DmxPlaneItr &validPlaneItr,
00059 DmxStatus *status);
00060 void UseSlidingWindow(DmxPlaneItr &planeItr, DmxPlaneItr &validPlaneItr,
00061 DmxPlaneItr &windowPlaneItr, DmxStatus *status,
00062 Int_t vertex, Int_t endPlane);
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088 ClassDef(AlgDeMuxCosmics,1)
00089
00090 };
00091
00092 #endif // ALGDEMUXCOSMICS_H
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121