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

ClusterManager.h

Go to the documentation of this file.
00001 #ifndef ClusterManager_H
00002 #define ClusterManager_H
00003 #include "NueAna/ParticlePID/ParticleFinder/Managed/HitManager.h"
00004 #include "NueAna/ParticlePID/ParticleFinder/Managed/ManagedHit.h"
00005 #include "NueAna/ParticlePID/ParticleFinder/Managed/ManagedCluster.h"
00006 #include "NueAna/ParticlePID/ParticleFinder/Managed/ClusterSaver.h"
00007 
00008 #include <vector>
00009 #include <map>
00010 
00011 #include "TObject.h"
00012 
00013 namespace Managed
00014 {
00015 
00016 class ClusterSaver;
00017 
00018 class ClusterManager : public TObject
00019 {
00020         public:
00021                 ClusterManager();
00022                 ~ClusterManager();
00023                 
00024 
00025                 void MakeClusters(double min_cluster_e=0.4, double min_strip_e=0.4, double max_t_skip=0.025);
00026 
00027                 void Reset();
00028                 void AddStrip(int myplane, int mystrip, double myenergy, double st, double sz, int view);
00029                 
00030                 void LoadHits();
00031                 
00032                 std::vector<int> GetPlanes();
00033                 std::vector<int> GetStrips(int plane);
00034                 
00035                 Managed::ManagedCluster * GetCluster(int cid);
00036                 Managed::ManagedCluster * GetSavedCluster(int cid);
00037                 
00038                 void SplitEnergy(Managed::ManagedCluster * cluster,double energy, int matchenergy);             
00039                 int MergeClusters(int cid1, int cid2);
00040                 
00041                 void FillClusterMap(std::map<double, std::map<double, std::pair<double, int> > > * cluster_map  );
00042 
00043                 std::vector<int> FindClustersInZ(double z,int view);
00044 
00045 
00046                 std::map<double, std::map<double, int>  > cluster_map;  //loc_z, sum_e_t_, cluster_id
00047                 std::map<double, std::map<double, int>  > cluster_map_u;        //loc_z, sum_e_t_, cluster_id
00048                 std::map<double, std::map<double, int>  > cluster_map_v;        //loc_z, sum_e_t_, cluster_id
00049 
00050                 std::map<double, std::map<double, int>  > * GetClusterMap(int view=0);
00051 
00052                 std::vector<Managed::ManagedCluster> clusters;
00053                 
00054                 //get a vector of indicies in the clusters vector corresponding to a given view
00055                 std::vector<int>  GetViewIndex(int view);
00056                 
00057                 double maxz;
00058                 double minz;
00059                 double maxu;
00060                 double minu;
00061                 double maxv;
00062                 double minv;
00063                                 
00064                 void SetHitManager(Managed::HitManager *h){hitmanager=h;};
00065                 HitManager * GetHitManager(){return hitmanager;};
00066                 
00067                 void SetClusterSaver(Managed::ClusterSaver *cs){clustersaver=cs;};
00068                 Managed::ClusterSaver * GetClusterSaver(){return clustersaver;};
00069                 
00070                 void DumpClusters();
00071                 
00072                 int SaveCluster(int cluster_id, double energy_to_save=0, int status=0);
00073                 
00074                 void ClearInUse(){inuse.clear();};
00075                 
00076                 void MarkUsed(int id){inuse.push_back(id);};
00077                 
00078         private:
00079                 int clusters_are_made;
00080                 std::map<int, std::map<int,int> > loc_map;
00081                 std::vector<ManagedHit> hits;
00082                 HitManager *hitmanager;
00083                 ClusterSaver *clustersaver;
00084                 
00085                 void EraseCluster(int cid);
00086                 
00087                 void AdjustCluster(Managed::ManagedCluster *cluster);
00088                 
00089                 ClassDef(ClusterManager,1);
00090                 
00091                 int needMapRebuild;
00092                 void RebuildClusterMaps();
00093                 
00094                 std::vector<int>inuse;
00095                 
00096                 std::vector<int>clusters_to_delete;
00097 };
00098 
00099 }
00100 
00101 #endif
00102 

Generated on Mon Feb 15 11:06:32 2010 for loon by  doxygen 1.3.9.1