00001 #ifndef CHAIN_H
00002 #define CHAIN_H
00003
00004 #include "TObject.h"
00005 #include <vector>
00006
00007 class Chain : public TObject
00008 {
00009 public:
00010
00011 Chain();
00012 ~Chain();
00013
00014 std::vector<double>t;
00015 std::vector<double>z;
00016 std::vector<double>e;
00017 std::vector<int>cluster_id;
00018
00019 std::vector<int> children;
00020
00021 double start_t;
00022 double end_t;
00023 double start_z;
00024 double end_z;
00025
00026 static int lastid;
00027
00028 int particletype;
00029
00030 double sum_e;
00031
00032 int available;
00033
00034 double weighted_t;
00035
00036 int entries;
00037
00038 int good_slope();
00039
00040 void Recalc();
00041
00042 static void ResetCounter();
00043 void updateMuonFrac(double it, double iz, double ie);
00044 void updateNumPeaks(double it, double iz, double ie);
00045 void updateEMLike(double it, double iz, double ie);
00046
00047 double avg_slope;
00048 double avg_offset;
00049 double last_slope;
00050
00051 double front_slope;
00052 double back_slope;
00053 double front_offset;
00054 double back_offset;
00055
00056 void add_to_back(double it, double iz, double ie, int my_cluster_id);
00057 void insert(double it, double iz, double ie, int my_cluster_id);
00058
00059
00060 int parentChain;
00061 int myId;
00062 int level;
00063
00064 double muonfrac;
00065 double interior_muonfrac;
00066 double emlike;
00067 int num_peaks;
00068 int strict_decreasing;
00069 int strict_increasing;
00070
00071
00072 double muon_threshold_max;
00073 double muon_threshold_min;
00074 int muon_min_hits;
00075
00076 void Reverse();
00077 void ClearHits();
00078
00079 void PrintChain();
00080
00081
00082
00083 double a;
00084 double b;
00085
00086 double interpolate(double z);
00087 static double interpolate(double z0, double t0, double z1, double t1, double z2, double t2, double z);
00088
00089 private:
00090
00091 double sum_z;
00092 double sum_t;
00093 double sum_z_z;
00094 double sum_z_t;
00095
00096 int muonlike;
00097
00098 double lastpeake;
00099 int lastpeakprob;
00100
00101 ClassDef(Chain,1)
00102
00103
00104
00105 };
00106
00107 #endif
00108