1 #include "KVDataQualityAuditReporting_INDRA.h"
2 #include "KVDataSetManager.h"
4 #include <KVGeoDNTrajectory.h>
24 myCanvas->SetWindowSize(
w + (
w - myCanvas->GetWw()),
h + (
h - myCanvas->GetWh()));
33 if (!gMultiDetArray) {
42 auto first_page = pdf_file +
"(";
43 auto last_page = pdf_file +
")";
49 std::vector<TString> indra_id_types = {
"PHOS_R_L",
"CI_SI",
"SI_CSI",
"CI_CSI",
"CI_SI75",
"SI75_SILI",
indra_csi_idtype};
50 for (
auto id : indra_id_types) {
51 for (
int ring = 1; ring <= 17; ++ring) {
52 if (
id !=
"PHOS_R_L" && ring == 1)
continue;
53 if (
id ==
"PHOS_R_L" && ring > 1)
break;
54 if ((
id ==
"CI_SI" ||
id ==
"SI_CSI") && ring > 9)
break;
55 if ((
id ==
"CI_CSI" ||
id.Contains(
"SI75")) && ring < 10)
continue;
82 for (
int ring = 1; ring <= 17; ++ring) {
92 for (
int ring = 2; ring <= 17; ++ring) {
96 else if (
id ==
"SI75_SILI") {
97 for (
int ring = 10; ring <= 17; ++ring) {
120 Error(
"INDRA_ring_reporting",
"You need to build INDRA first...");
127 return (
int)
dynamic_cast<KVINDRADetector*
>(idt->GetDetectors()->Last())->GetModuleNumber();
135 mg->SetTitle(
Form(
"Ring %d %s Min/Mean/Max Z vs. Module", ring, idtype.
Data()));
149 for (
int mod = 1; mod <= 24; ++mod) {
156 if (tel) tels.
Add(tel);
176 while (i <= mod_set) {
191 mg->SetTitle(
Form(
"INDRA <A> vs. Z %s Ring %d [%d-%d]", idtype.
Data(), ring, nmods - mod_set + 1, nmods));
195 leg =
gPad->BuildLegend(.11, .89, .61, .69);
199 leg =
gPad->BuildLegend(.11, .89, .61, .69);
203 leg =
gPad->BuildLegend(.11, .89, .61, .69);
205 leg->SetBorderSize(0);
262 while (i <= mod_set) {
271 std::cout << idt->
GetName() <<
" : particles are UNCALIBRATED";
280 if (nuncal == traj->
GetN()) std::cout <<
" ... just like ALL DETECTORS";
282 std::cout <<
" ... just like ";
287 std::cout << dn->
GetName() <<
" ";
291 std::cout << std::endl;
300 mg->SetTitle(
Form(
"INDRA Z thresh. [MeV/u] vs. Z %s Ring %d [%d-%d]", idtype.
Data(), ring, nmods - mod_set + 1, nmods));
318 else if (mod_set > 6) {
325 leg->SetBorderSize(0);
351 while ((obj = it())) {
356 TLatex* tex = ::new
TLatex(0.02336825, 0.86604,
"Max. Z");
370 marker = ::new
TMarker(0.01772764, 0.4453584, 30);
377 tex = ::new
TLatex(0.02497985, 0.4629847,
"Max. Z with identified A");
382 tex = ::new
TLatex(0.02659146, 0.2632197,
"Mean Z");
387 tex = ::new
TLatex(0.02820306, 0.1045828,
"Min. Z");
392 marker = ::new
TMarker(0.01853344, 0.2479436, 20);
399 marker = ::new
TMarker(0.02095085, 0.08578143, 25);
Option_t Option_t SetFillStyle
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
char * Form(const char *fmt,...)
void Error(const char *method, const char *msgfmt,...) const override
TGraph * get_max_Z_for_telescopes(TSeqCollection *idtels, TelescopeIndexFunction F, Marker_t marker_style=20) const
TGraph * get_mean_Z_for_telescopes(TSeqCollection *idtels, TelescopeIndexFunction F, Marker_t marker_style=20) const
TGraph * get_max_Z_with_isotopes_for_telescopes(TSeqCollection *idtels, TelescopeIndexFunction F, Marker_t marker_style=20) const
TGraph * get_min_Z_for_telescopes(TSeqCollection *idtels, TelescopeIndexFunction F, Marker_t marker_style=20) const
Prepare PDF report on data quality audits for INDRA experiments.
void INDRA_ring_Z_threshold_vs_Z(int ring, const TString &idtype, int &pad, int nx, int ny)
void INDRA_ring_mean_A_vs_Z(int ring, const TString &idtype, int &pad, int nx, int ny)
void draw_sidebar_legend()
std::vector< int > markers
void make_canvas(canvas_t style=canvas_t::kLandscape)
Make an A4-size canvas.
const KVDataQualityAudit * fAudit
KVDataQualityAuditReportMaker fReport
void INDRA_ring_reporting_Z(int ring, const TString &idtype)
int get_mod_set(int nmods)
24 => 4 sets of 6, 16 => 2 sets of 8, 12 => 4 sets of 3, 8 => 1 set of 8
void fill_list_of_telescopes(const TString &idtype, TList &tels, int ring)
Bool_t HasTelescope(const TString &tel_name) const
Manage all datasets contained in a given data repository.
virtual Bool_t Init(KVDataRepository *=0)
Path taken by particles through multidetector geometry.
KVGeoDetectorNode * GetNextNode() const
void IterateFrom(const KVGeoDetectorNode *node0=nullptr) const
Information on relative positions of detectors & particle trajectories.
KVDetector * GetDetector() const
const Char_t * GetName() const override
Name of node is same as name of associated detector.
Base class for all detectors or associations of detectors in array which can identify charged particl...
KVDetector * GetDetector(UInt_t n) const
Base class for detectors of INDRA array.
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray", KVExpDB *db=nullptr)
KVIDTelescope * GetIDTelescope(const Char_t *name) const
Return pointer to DeltaE-E ID Telescope with "name".
virtual void SetFillStyle(Style_t fstyle)
virtual void SetLineWidth(Width_t lwidth)
virtual void SetMarkerColor(Color_t mcolor=1)
virtual void SetMarkerStyle(Style_t mstyle=1)
virtual void SetMarkerSize(Size_t msize=1)
virtual void SetTextAngle(Float_t tangle=0)
virtual void SetTextSize(Float_t tsize=1)
void Clear(Option_t *option="") override
TVirtualPad * cd(Int_t subpadnumber=0) override
virtual Int_t GetEntries() const
static const TArrayI & GetPalette()
static Int_t GetColor(const char *hexcolor)
virtual Double_t GetMean(Int_t axis=1) const
void Add(TObject *obj) override
TObject * Remove(const TObjLinkPtr_t &lnk)
TObject * First() const override
void Draw(Option_t *option="") override
const char * GetName() const override
virtual Bool_t InheritsFrom(const char *classname) const
virtual void Draw(Option_t *option="")
void Divide(Int_t nx=1, Int_t ny=1, Float_t xmargin=0.01, Float_t ymargin=0.01, Int_t color=0) override
TList * GetListOfPrimitives() const override
void Print(const char *filename, Option_t *option) override
const char * Data() const
void swap(RVec< T > &lhs, RVec< T > &rhs)