40
41
#include "CLHEP/Vector/Rotation.h"
42
43
#include "src/legacy/Config/MiceModule.hh"
43
#include "src/common_cpp/Recon/SciFi/SciFiEvent.hh"
44
#include "src/common_cpp/Recon/SciFi/SciFiDigit.hh"
44
#include "src/common_cpp/DataStructure/SciFiEvent.hh"
45
#include "src/common_cpp/DataStructure/SciFiDigit.hh"
46
#include "src/common_cpp/DataStructure/ThreeVector.hh"
48
50
class SciFiClusterRec {
50
52
SciFiClusterRec(); // Default constructor
52
SciFiClusterRec(int cluster_exception, double min_npe);
54
SciFiClusterRec(int cluster_exception, double min_npe, std::vector<const MiceModule*> modules);
54
56
~SciFiClusterRec();
57
59
* @arg evt a SciFiEvent to be filled with SciFiClusters
58
60
* @arg modules the SciFi MICE modules
60
void process(SciFiEvent &evt, std::vector<const MiceModule*> modules);
62
void process(SciFiEvent &evt);
62
64
/** @brief Finds the position and direction of the clusters.
63
65
* @arg clust a SciFiCluster
64
* @arg modules the MICE modules
66
void construct(SciFiCluster *clust, std::vector<const MiceModule*> modules);
68
Hep3Vector get_reference_frame_pos(int tracker, std::vector<const MiceModule*> modules);
67
void process_cluster(SciFiCluster *clust);
69
ThreeVector get_reference_frame_pos(int tracker);
71
bool are_neighbours(SciFiDigit *seed_i, SciFiDigit *seed_j);
73
std::vector<SciFiDigit*> get_seeds(SciFiEvent &evt);
75
void make_clusters(SciFiEvent &evt, std::vector<SciFiDigit*> &seeds);
77
const MiceModule* find_plane(int tracker, int station, int plane);
79
// Set relative position & channel number for the Kalman Filter.
80
// This is the position of the cluster relatively to station 1 of the tracker (0 or 1)
81
// with the displacement of the station centre subtracted.
82
void construct(SciFiCluster *clust, const MiceModule* this_plane,
83
ThreeVector &dir, ThreeVector &tracker_ref_frame_pos, double &alpha);
72
87
int _size_exception;
91
std::vector<const MiceModule*> _modules;
75
92
}; // Don't forget this trailing colon!!!!
76
// } // ~namespace MAUS