SND@LHC Software
Loading...
Searching...
No Matches
sndPlaneTools.cxx
Go to the documentation of this file.
1#include "sndPlaneTools.h"
2
3#include <vector>
4
5#include "TClonesArray.h"
6#include "Scifi.h"
7#include "MuFilter.h"
8#include "sndConfiguration.h"
9#include "sndScifiPlane.h"
10#include "sndUSPlane.h"
11#include "sndScifiHit.h"
12#include "MuFilterHit.h"
13
14std::vector<snd::analysis_tools::ScifiPlane> snd::analysis_tools::FillScifi(const snd::Configuration &configuration, TClonesArray *sf_hits, Scifi *scifi_geometry)
15{
16
17 std::vector<snd::analysis_tools::ScifiPlane> scifi_planes;
18 int n_sf_hits{sf_hits->GetEntries()};
19
20 const int max_station = configuration.scifi_n_stations;
21 std::vector<std::vector<sndScifiHit*>> stations_hits(max_station);
22
23 for (int i{0}; i < n_sf_hits; ++i) {
24 auto hit = static_cast<sndScifiHit*>(sf_hits->At(i));
25 int station_id = hit->GetStation()-1;
26
27 if (station_id > -1 && station_id < max_station) {
28 stations_hits[station_id].push_back(hit);
29 }
30 else throw std::runtime_error{"Invalid SciFi station"};
31 }
32 for (int st{0}; st < max_station; ++st) {
33 scifi_planes.emplace_back(snd::analysis_tools::ScifiPlane(stations_hits[st], configuration, scifi_geometry, st+1));
34 }
35 return scifi_planes;
36}
37
38
39std::vector<snd::analysis_tools::USPlane> snd::analysis_tools::FillUS(const snd::Configuration &configuration, TClonesArray *mufi_hits, MuFilter *mufilter_geometry)
40{
41
42 std::vector<snd::analysis_tools::USPlane> us_planes;
43 int n_mufi_hits{mufi_hits->GetEntries()};
44
45 const int n_station = configuration.us_n_stations;
46 std::vector<std::vector<MuFilterHit*>> plane_hits(n_station);
47
48 for (int i{0}; i < n_mufi_hits; ++i) {
49 auto hit = static_cast<MuFilterHit*>(mufi_hits->At(i));
50 if (hit->GetSystem()!=2) continue;
51 int station_id = hit->GetPlane();
52 if (station_id > -1 && station_id < n_station) {
53 plane_hits[station_id].push_back(hit);
54 }
55 else throw std::runtime_error{"Invalid US plane"};
56 }
57 for (int st{0}; st < n_station; ++st) {
58 us_planes.emplace_back(snd::analysis_tools::USPlane(plane_hits[st], configuration, mufilter_geometry, st+1));
59 }
60 return us_planes;
61}
int GetPlane()
Definition MuFilterHit.h:42
Definition Scifi.h:20
Int_t GetStation()
Definition sndScifiHit.h:31
std::vector< ScifiPlane > FillScifi(const Configuration &configuration, TClonesArray *sf_hits, Scifi *scifi_geometry)
std::vector< USPlane > FillUS(const Configuration &configuration, TClonesArray *mufi_hits, MuFilter *mufilter_geometry)