Skip to content

Commit b4faaa9

Browse files
DanielWielanekChristianTackeGSI
authored andcommitted
chore(eventdisplay): Refactor PDG To Color
This is part of a bigger patchset by @DanielWielanek. Move the color configuration from FairEventManager to a new FairXMLPdgColor. FairXMLPdgColor can also read config from an xml file, which is not yet used. Co-Authored: Christian Tacke @ChristianTackeGSI
1 parent d4a8417 commit b4faaa9

7 files changed

Lines changed: 256 additions & 123 deletions

File tree

fairroot/eventdisplay/CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ set(sources
3939
tracks/FairEveTracks.cxx
4040
tracks/FairGeoTracksDraw.cxx
4141
tracks/FairGeoTrackHandler.cxx
42+
xml/FairXMLEveConf.cxx
43+
xml/FairXMLPdgColor.cxx
4244
)
4345

4446
fair_change_extensions_if_exists(.cxx .h FILES "${sources}" OUTVAR headers)
@@ -51,6 +53,7 @@ target_include_directories(${target} PUBLIC
5153
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/tracks>
5254
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/gui>
5355
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/datasource>
56+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/xml>
5457
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
5558
)
5659

fairroot/eventdisplay/FairEventManager.cxx

Lines changed: 4 additions & 120 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@
3939
#include <TGeoVolume.h> // for TGeoVolume
4040
#include <TVector3.h>
4141

42-
ClassImp(FairEventManager);
43-
4442
FairEventManager* FairEventManager::fgRinstance = nullptr;
4543

4644
FairEventManager* FairEventManager::Instance()
@@ -70,55 +68,6 @@ FairEventManager::FairEventManager()
7068
{
7169
fgRinstance = this;
7270
AddParticlesToPdgDataBase();
73-
fPDGToColor[22] = 623; // photon
74-
fPDGToColor[-2112] = 2; // anti-neutron
75-
fPDGToColor[-11] = 3; // e+
76-
fPDGToColor[-3122] = 4; // anti-lambda
77-
fPDGToColor[11] = 5; // e-
78-
fPDGToColor[-3222] = 6; // Sigma -
79-
fPDGToColor[12] = 7; // e-neutrino
80-
fPDGToColor[-3212] = 8; // Sigma0
81-
fPDGToColor[-13] = 9; // mu+
82-
fPDGToColor[-3112] = 10; // Sigma+ (PB
83-
fPDGToColor[13] = 11; // mu-
84-
fPDGToColor[-3322] = 12; // Xi0
85-
fPDGToColor[111] = 13; // pi0
86-
fPDGToColor[-3312] = 14; // Xi+
87-
fPDGToColor[211] = 15; // pi+
88-
fPDGToColor[-3334] = 16; // Omega+ (PB)
89-
fPDGToColor[-211] = 17; // pi-
90-
fPDGToColor[-15] = 18; // tau+
91-
fPDGToColor[130] = 19; // K long
92-
fPDGToColor[15] = 20; // tau -
93-
fPDGToColor[321] = 21; // K+
94-
fPDGToColor[411] = 22; // D+
95-
fPDGToColor[-321] = 23; // K-
96-
fPDGToColor[-411] = 24; // D-
97-
fPDGToColor[2112] = 25; // n
98-
fPDGToColor[421] = 26; // D0
99-
fPDGToColor[2212] = 27; // p
100-
fPDGToColor[-421] = 28; // D0
101-
fPDGToColor[-2212] = 29; // anti-proton
102-
fPDGToColor[431] = 30; // Ds+
103-
fPDGToColor[310] = 31; // K short
104-
fPDGToColor[-431] = 32; // anti Ds-
105-
fPDGToColor[221] = 33; // eta
106-
fPDGToColor[4122] = 34; // Lambda_C+
107-
fPDGToColor[3122] = 35; // Lambda
108-
fPDGToColor[24] = 36; // W+
109-
fPDGToColor[3222] = 37; // Sigma+
110-
fPDGToColor[-24] = 38; // W-
111-
fPDGToColor[3212] = 39; // Sigma0
112-
fPDGToColor[23] = 40; // Z
113-
fPDGToColor[3112] = 41; // Sigma -
114-
fPDGToColor[3322] = 42; // Xi0
115-
fPDGToColor[3312] = 43; // Xi-
116-
fPDGToColor[3334] = 44; // Omega- (PB)
117-
fPDGToColor[50000050] = 801; // Cerenkov
118-
fPDGToColor[1000010020] = 45;
119-
fPDGToColor[1000010030] = 48;
120-
fPDGToColor[1000020040] = 50;
121-
fPDGToColor[1000020030] = 55;
12271
}
12372

12473
void FairEventManager::Init(Int_t visopt, Int_t vislvl, Int_t maxvisnds)
@@ -253,14 +202,6 @@ void FairEventManager::Close() {}
253202

254203
void FairEventManager::DisplaySettings() {}
255204

256-
Int_t FairEventManager::Color(int pdg)
257-
{
258-
if (fPDGToColor.find(pdg) != fPDGToColor.end()) {
259-
return fPDGToColor[pdg];
260-
}
261-
return 0;
262-
}
263-
264205
void FairEventManager::AddParticlesToPdgDataBase(Int_t /*pdg*/)
265206
{
266207
// Add particles to the PDG data base
@@ -371,14 +312,14 @@ void FairEventManager::LoadXMLSettings()
371312
FairXMLNode *color = colors->GetChild(j);
372313
TString pgd_code = color->GetAttrib("pdg")->GetValue();
373314
TString color_code = color->GetAttrib("color")->GetValue();
374-
fPDGToColor[pgd_code.Atoi()] = StringToColor(color_code);
315+
fPDGColor.SetColor(pgd_code.Atoi(), FairXMLPdgColor::StringToColor(color_code));
375316
}
376317
}
377318
}
378319
gEve->Redraw3D();
379320
}
380321

381-
void FairEventManager::LoadXMLDetector(TGeoNode *node, FairXMLNode *xml, Int_t depth)
322+
void FairEventManager::LoadXMLDetector(TGeoNode* node, FairXMLNode* xml, Int_t depth)
382323
{
383324
TString name = xml->GetAttrib("name")->GetValue();
384325
TString node_name = node->GetName();
@@ -388,8 +329,8 @@ void FairEventManager::LoadXMLDetector(TGeoNode *node, FairXMLNode *xml, Int_t d
388329
TString transparency = xml->GetAttrib("transparency")->GetValue();
389330
TString color = xml->GetAttrib("color")->GetValue();
390331
if (!color.EqualTo("")) {
391-
node->GetVolume()->SetFillColor(StringToColor(color));
392-
node->GetVolume()->SetLineColor(StringToColor(color));
332+
node->GetVolume()->SetFillColor(FairXMLPdgColor::StringToColor(color));
333+
node->GetVolume()->SetLineColor(FairXMLPdgColor::StringToColor(color));
393334
}
394335
if (!transparency.EqualTo("")) {
395336
node->GetVolume()->SetTransparency((Char_t)(transparency.Atoi()));
@@ -419,63 +360,6 @@ void FairEventManager::LoadXMLDetector(TGeoNode *node, FairXMLNode *xml, Int_t d
419360
}
420361
}
421362

422-
Int_t FairEventManager::StringToColor(TString color) const
423-
{
424-
if (color.Contains("k")) {
425-
Int_t plus_index = color.First('+');
426-
Int_t minus_index = color.First('-');
427-
Int_t cut = plus_index;
428-
if (cut == -1)
429-
cut = minus_index;
430-
if (cut == -1)
431-
cut = color.Length();
432-
TString col_name(color(0, cut));
433-
Int_t col_val = 0;
434-
if (col_name.EqualTo("kWhite")) {
435-
col_val = 0;
436-
} else if (col_name.EqualTo("kBlack")) {
437-
col_val = 1;
438-
} else if (col_name.EqualTo("kGray")) {
439-
col_val = 920;
440-
} else if (col_name.EqualTo("kRed")) {
441-
col_val = 632;
442-
} else if (col_name.EqualTo("kGreen")) {
443-
col_val = 416;
444-
} else if (col_name.EqualTo("kBlue")) {
445-
col_val = 600;
446-
} else if (col_name.EqualTo("kYellow")) {
447-
col_val = 400;
448-
} else if (col_name.EqualTo("kMagenta")) {
449-
col_val = 616;
450-
} else if (col_name.EqualTo("kCyan")) {
451-
col_val = 432;
452-
} else if (col_name.EqualTo("kOrange")) {
453-
col_val = 800;
454-
} else if (col_name.EqualTo("kSpring")) {
455-
col_val = 820;
456-
} else if (col_name.EqualTo("kTeal")) {
457-
col_val = 840;
458-
} else if (col_name.EqualTo("kAzure")) {
459-
col_val = 860;
460-
} else if (col_name.EqualTo("kViolet")) {
461-
col_val = 880;
462-
} else if (col_name.EqualTo("kPink")) {
463-
col_val = 900;
464-
}
465-
TString col_num(color(cut + 1, color.Length()));
466-
if (col_num.Length() > 0) {
467-
if (color.Contains("+")) {
468-
col_val += col_num.Atoi();
469-
} else {
470-
col_val -= col_num.Atoi();
471-
}
472-
}
473-
return col_val;
474-
} else {
475-
return color.Atoi();
476-
}
477-
}
478-
479363
void FairEventManager::SetTransparency(Bool_t use_xml, Int_t trans)
480364
{
481365
if (!use_xml) { // high transparency

fairroot/eventdisplay/FairEventManager.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
#include "FairEveAnimationControl.h"
1616
#include "FairRunAna.h" // for FairRunAna
17+
#include "FairXMLPdgColor.h"
1718

1819
#include <Rtypes.h> // for Float_t, Int_t, Bool_t, etc
1920
#include <TEveEventManager.h> // for TEveEventManager
@@ -50,7 +51,7 @@ class FairEventManager : public TEveEventManager
5051
virtual void PrevEvent(); // *MENU*
5152
virtual void Close();
5253
virtual void DisplaySettings(); // *Menu*
53-
virtual Int_t Color(Int_t pdg);
54+
virtual Int_t Color(Int_t pdg) { return fPDGColor.GetColor(pdg); }
5455
void AddTask(FairTask* t) { fRunAna->AddTask(t); }
5556
virtual void Init(Int_t visopt = 1, Int_t vislvl = 3, Int_t maxvisnds = 10000);
5657
virtual Int_t GetCurrentEvent() { return fEntry; }
@@ -151,7 +152,10 @@ class FairEventManager : public TEveEventManager
151152
TEveProjectionAxes* GetRhoZAxes() const { return fAxesRho; };
152153
virtual void LoadXMLSettings();
153154
void LoadXMLDetector(TGeoNode* node, FairXMLNode* xml, Int_t depth = 0);
154-
Int_t StringToColor(TString color) const;
155+
[[deprecated("Use FairXMLPdgColor::StringToColor")]] Int_t StringToColor(const TString& color) const
156+
{
157+
return FairXMLPdgColor::StringToColor(color);
158+
}
155159

156160
private:
157161
FairRunAna* fRunAna; //!
@@ -181,8 +185,8 @@ class FairEventManager : public TEveEventManager
181185
TEveProjectionAxes* fAxesRho{nullptr}; //!
182186
TEveText* fEventTimeText{nullptr}; //!
183187
TEveText* fEventNumberText{nullptr}; //!
188+
FairXMLPdgColor fPDGColor{}; //!
184189
TString fXMLConfig;
185-
std::map<int, int> fPDGToColor;
186190
void SetTransparencyForLayer(TGeoNode* node, Int_t depth, Char_t transparency);
187191
static FairEventManager* fgRinstance; //!
188192
FairEventManager(const FairEventManager&);
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/********************************************************************************
2+
* Copyright (C) 2020-2023 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3+
* *
4+
* This software is distributed under the terms of the *
5+
* GNU Lesser General Public Licence (LGPL) version 3, *
6+
* copied verbatim in the file "LICENSE" *
7+
********************************************************************************/
8+
9+
/*
10+
* FairXMLEveConf.cxx
11+
*
12+
* Created on: 21 paź 2021
13+
* Author: Daniel Wielanek
14+
* E-mail: daniel.wielanek@gmail.com
15+
* Warsaw University of Technology, Faculty of Physics
16+
*/
17+
#include "FairXMLEveConf.h"
18+
19+
Int_t FairXMLEveConf::StringToColor(const TString& color)
20+
{
21+
if (color.Contains("k")) {
22+
Int_t plus_index = color.First('+');
23+
Int_t minus_index = color.First('-');
24+
Int_t cut = plus_index;
25+
if (cut == -1)
26+
cut = minus_index;
27+
if (cut == -1)
28+
cut = color.Length();
29+
TString col_name(color(0, cut));
30+
Int_t col_val = 0;
31+
if (col_name.EqualTo("kWhite")) {
32+
col_val = 0;
33+
} else if (col_name.EqualTo("kBlack")) {
34+
col_val = 1;
35+
} else if (col_name.EqualTo("kGray")) {
36+
col_val = 920;
37+
} else if (col_name.EqualTo("kRed")) {
38+
col_val = 632;
39+
} else if (col_name.EqualTo("kGreen")) {
40+
col_val = 416;
41+
} else if (col_name.EqualTo("kBlue")) {
42+
col_val = 600;
43+
} else if (col_name.EqualTo("kYellow")) {
44+
col_val = 400;
45+
} else if (col_name.EqualTo("kMagenta")) {
46+
col_val = 616;
47+
} else if (col_name.EqualTo("kCyan")) {
48+
col_val = 432;
49+
} else if (col_name.EqualTo("kOrange")) {
50+
col_val = 800;
51+
} else if (col_name.EqualTo("kSpring")) {
52+
col_val = 820;
53+
} else if (col_name.EqualTo("kTeal")) {
54+
col_val = 840;
55+
} else if (col_name.EqualTo("kAzure")) {
56+
col_val = 860;
57+
} else if (col_name.EqualTo("kViolet")) {
58+
col_val = 880;
59+
} else if (col_name.EqualTo("kPink")) {
60+
col_val = 900;
61+
}
62+
TString col_num(color(cut + 1, color.Length()));
63+
if (col_num.Length() > 0) {
64+
if (color.Contains("+")) {
65+
col_val += col_num.Atoi();
66+
} else {
67+
col_val -= col_num.Atoi();
68+
}
69+
}
70+
return col_val;
71+
} else {
72+
return color.Atoi();
73+
}
74+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/********************************************************************************
2+
* Copyright (C) 2020-2023 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3+
* *
4+
* This software is distributed under the terms of the *
5+
* GNU Lesser General Public Licence (LGPL) version 3, *
6+
* copied verbatim in the file "LICENSE" *
7+
********************************************************************************/
8+
9+
/*
10+
* FairXMLEveConf.h
11+
*
12+
* Created on: 21 paź 2021
13+
* Author: Daniel Wielanek
14+
* E-mail: daniel.wielanek@gmail.com
15+
* Warsaw University of Technology, Faculty of Physics
16+
*/
17+
#ifndef FAIRROOT_EVENTDISPLAY_XML_FAIRXMLEVECONF_H_
18+
#define FAIRROOT_EVENTDISPLAY_XML_FAIRXMLEVECONF_H_
19+
20+
#include <TString.h>
21+
22+
struct FairXMLEveConf
23+
{
24+
FairXMLEveConf() = default;
25+
virtual ~FairXMLEveConf() = default;
26+
static Int_t StringToColor(const TString& color);
27+
};
28+
29+
#endif /* FAIRROOT_EVENTDISPLAY_XML_FAIRXMLEVECONF_H_ */

0 commit comments

Comments
 (0)