41 #define NUMPSUCH_INROW 18
42 #define NUMPSUCRATE_INCOLUMN 5
43 #define NUMPSURACK_INCOLUMN 6
44 #define NUMPSURACK_INROW 5
45 #define XPSURSIZE 150 // (5)*1.5 boxes
46 #define YPSURSIZE 360 // 18 boxes
48 #define YPSUOFFSET 100
50 #define NUMFEDCH_INCOLUMN 12
51 #define NUMFEDCH_INROW 8
52 #define NUMFED_INCOLUMN 21
53 #define NUMFED_INROW 1
56 #define NUMFEDCRATE_INCOLUMN 1
57 #define NUMFEDCRATE_INROW 31
60 #define XFEDCSIZE 2940 // 14*21 boxes
61 #define YFEDCSIZE 90 // 9 boxes
62 #define XFEDOFFSET 150
63 #define YFEDOFFSET 100
83 void print(
bool print_total=
true,
float minval=0.,
float maxval=0.,
std::string s=
"svgmap");
84 void printall(
bool print_total=
true,
float minval=0.,
float maxval=0.,
std::string s=
"svgmap",
int width=6000,
int height=3200);
87 void save(
bool print_total=
true,
float minval=0.,
float maxval=0.,
std::string s=
"svgmap.svg",
int width=1500,
int height=800);
96 void drawApvPair(
int crate,
int numfed_incrate,
bool total,
TmApvPair* apvPair,std::ofstream * file,
bool useApvPairValue);
97 void drawCcu(
int crate,
int numfed_incrate,
bool total,
TmCcu* ccu,std::ofstream * file,
bool useCcuValue);
98 void drawPsu(
int rack,
int numcrate_inrack,
bool print_total,
TmPsu* psu,std::ofstream *
svgfile,
bool usePsuValue);
99 void drawHV2(
int rack,
int numcrate_inrack,
bool print_total,
TmPsu* psu,std::ofstream * svgfile,
bool usePsuValue);
100 void drawHV3(
int rack,
int numcrate_inrack,
bool print_total,
TmPsu* psu,std::ofstream * svgfile,
bool usePsuValue);
102 void fill(
int layer ,
int ring,
int nmod,
float x );
103 void fill(
int idmod,
float qty );
104 void fillc(
int idmod,
int RGBcode) {
fillc(idmod,(RGBcode>>16) & 0xFF , (RGBcode>>8) & 0xFF, RGBcode & 0xFF);}
106 void fillc(
int layer,
int ring,
int nmod,
int red,
int green,
int blue);
125 void drawPalette(std::ofstream * file,
int xoffset=3660,
int yoffset=1540);
139 std::vector<TColor*>
vc;
148 typedef std::map<const int , int>
SvgFed;
151 typedef std::map<const int , TmCcu*>
MapCcu;
155 typedef std::map<const int , TmPsu*>
MapPsu;
176 double phi1=atan(y/x);
178 if(y<0. && x>0) phi = phi1+2.*
M_PI;
179 if(x<0.)phi=phi1+
M_PI;
180 if(fabs(y)<0.000001 && x>0)phi=0;
181 if(fabs(y)<0.000001&&x<0)phi=
M_PI;
182 if(fabs(x)<0.000001&&y>0)phi=M_PI/2.;
183 if(fabs(x)<0.000001&&y<0)phi=3.*M_PI/2.;
202 layer = ix/(2*
ysize);
203 if(iy < 2*
xsize)layer=layer*2+1;
else layer=layer*2;
217 if(partdet == 1 || partdet == 3){
220 else { ncomponent = 3; }
223 if(partdet == 1 || partdet == 3){
226 else { ncomponent = 4; }
229 if(partdet == 1 || partdet == 3){
232 else { ncomponent = 6; }
313 if(num_crate==1||num_crate==3)
ix = xoffset+
xsize*2;
314 if(num_crate==2||num_crate==4)
ix = xoffset;
315 iy = yoffset+((num_crate-1)/2)*
ysize*4;
333 if(num_lay >12 && num_lay < 19){
339 if(num_lay>33&&num_lay<38){
xmax=2.0;}
340 if(num_lay>37){
ymax=8.;}
344 if(num_lay >12 && num_lay < 19){
350 if(num_lay>33&&num_lay<38){
xmin=-1.;
xmax=1.;}
356 if(num_lay==15||num_lay==14)
iy=(15-num_lay)*2*
ysize;
else
358 if(num_lay>15&&num_lay<31){
360 if(num_lay==16||num_lay==17)
iy=(num_lay-16)*2*
ysize;
else
363 if(num_lay==31){
ix=(int)(1.5*
xsize);
iy=0;}
366 if(num_lay==34){
int il=(num_lay-30)/2;
ix=
xsize;
iy=il*(int)(2.57*
ysize);}
367 if(num_lay>34 && num_lay%2==0){
int il=(num_lay-30)/2;
ix=
xsize;
iy=il*(int)(2.5*
ysize);}
368 if(num_lay>34 && num_lay%2!=0){
int il=(num_lay-30)/2;
ix=2*
xsize;
iy=il*(int)(2.5*
ysize);}
375 if(partdet== 1 || partdet== 3){
378 else{ncomponent = 8;}
381 if(partdet== 1 || partdet== 3){
384 else{ncomponent = 12;}
388 if (layer== 1) ncomponent = 4;
389 if (layer== 2 || layer== 3) ncomponent = 5;
390 if (layer== 4 || layer== 5 || layer== 6) ncomponent = 6;
391 if (layer== 7 || layer== 8 || layer== 9) ncomponent = 7;
394 if (layer== 9) ncomponent = 4;
395 if (layer== 8 || layer== 7) ncomponent = 5;
396 if (layer== 6 || layer== 5 || layer== 4) ncomponent = 6;
397 if (layer== 3 || layer== 2 || layer== 1) ncomponent = 7;
407 int spicchif[] ={24,24,40,56,40,56,80};
408 int spicchib[] ={20,32,44,30,38,46,56,42,48,54,60,66,74};
409 int numero_layer = 0;
412 numero_layer = layer-1;
414 numero_layer = numero_layer+3;
417 numero_layer = numero_layer+7;
419 ncomponent = spicchib[numero_layer];
422 if(subdet== 1)ncomponent=24;
424 ncomponent = spicchif[ring-1];
428 static int layerno(
int subdet,
int leftright,
int layer){
429 if(subdet==6&&leftright==1)
return(10-layer);
430 if(subdet==6&&leftright==2)
return(layer+21);
431 if(subdet==4&&leftright==1)
return(4-layer+9);
432 if(subdet==4&&leftright==2)
return(layer+18);
433 if(subdet==2&&leftright==1)
return(4-layer+12);
434 if(subdet==2&&leftright==2)
return(layer+15);
435 if(subdet==1)
return(layer+30);
436 if(subdet==3)
return(layer+33);
437 if(subdet==5)
return(layer+37);
442 int layer=key/100000;
443 int ring = key - layer*100000;
445 if(layer==34 || layer==35 || layer==38 || layer==39)
return true;
446 if(layer<13 || (layer>18&&layer<31))
447 if(ring==1 || ring==2 || ring==5)
return true;
451 if(det==3 && part==1)
return lay;
452 if(det==2 && part==1)
return lay+9;
453 if(det==1 && part==1)
return lay+12;
454 if(det==1 && part==3)
return lay+15;
455 if(det==2 && part==3)
return lay+18;
456 if(det==3 && part==3)
return lay+21;
457 if(det==1 && part==2)
return lay+30;
458 if(det==2 && part==2)
return lay+33;
459 if(det==3 && part==2)
return lay+37;
465 std::ostringstream ons;
467 if(layer < 10) ons <<
"TEC -z Layer " << layer;
468 if(layer < 13 && layer > 9) ons <<
"TID -z Layer " << layer-9;
469 if(layer < 16 && layer > 12) ons <<
"FPIX -z Layer " << layer-12;
470 if(layer < 19 && layer > 15) ons <<
"FPIX +z Layer " << layer-15;
471 if(layer < 22 && layer > 18) ons <<
"TID +z Layer " << layer-18;
472 if(layer < 31 && layer > 21) ons <<
"TEC +z Layer " << layer-21;
473 if(layer < 34 && layer > 30) ons <<
"TPB Layer " << layer-30;
474 if(layer < 38 && layer > 33) ons <<
"TIB Layer " << layer-33;
475 if(layer > 37) ons <<
"TOB Layer " << layer-37;
void fill_hv_channel2(int rack, int crate, int board, float qty)
#define NUMFEDCRATE_INCOLUMN
TrackerMap(std::string s=" ", int xsize1=340, int ysize1=200)
double ydpixelc(double y)
std::ifstream * findfile(std::string filename)
#define NUMPSURACK_INCOLUMN
double ydpixelfec(double y)
std::string layername(int layer)
int getmoduleCount(int subdet, int partdet, int layer, int ring)
void fillc_hv_channel2(int rack, int crate, int board, int red, int green, int blue)
std::ifstream * inputfile
void addPixel(bool addPixelfl)
void save_as_psutrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="psu_svgmap.svg", int width=100+(360+100)*5+300, int height=50+(150+50)*6+300)
CaloTopology const * topology(0)
~TrackerMap()
default destructor
int module(int fedId, int fedCh)
std::multimap< const int, TmApvPair * > ModApvPair
void defwindow(int num_lay)
#define NUMFEDCH_INCOLUMN
void save_as_HVtrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="psu_svgmap.svg", int width=1500, int height=800)
std::map< const int, int > SvgFed
double xdpixelc(double x)
void defpsuwindow(int num_rack)
int getlayerCount(int subdet, int partdet)
void fill_current_val_fed_channel(int fedId, int fedCh, float current_val)
void add(const std::vector< const T * > &source, std::vector< const T * > &dest)
#define NUMFEDCRATE_INROW
std::multimap< TmPsu *, TmModule * > PsuModule
void fillc_fec_channel(int crate, int slot, int ring, int addr, int red, int green, int blue)
void setTitle(std::string s)
double xdpixelfec(double x)
double phival(double x, double y)
std::map< const int, TmPsu * > MapPsu
void fillc_lv_channel(int rack, int crate, int board, int red, int green, int blue)
std::map< const int, TmApvPair * > SvgApvPair
void showPalette(bool printflag1)
int getringCount(int subdet, int partdet, int layer)
double xdpixelpsu(double x)
void drawHV3(int rack, int numcrate_inrack, bool print_total, TmPsu *psu, std::ofstream *svgfile, bool usePsuValue)
std::map< const int, TmModule * > SmoduleMap
void setPalette(int numpalette)
void save(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap.svg", int width=1500, int height=800)
void deffecwindow(int num_crate)
void load(std::string s="tmap.svg")
std::map< const int, TmCcu * > MapCcu
void drawModule(TmModule *mod, int key, int layer, bool total, std::ofstream *file)
string key
FastSim: produces sample of signal events, overlayed with premixed minbias events.
void drawApvPair(int crate, int numfed_incrate, bool total, TmApvPair *apvPair, std::ofstream *file, bool useApvPairValue)
void fillc_fed_channel(int fedId, int fedCh, int red, int green, int blue)
int getcolor(float value, int palette)
void fillc(int idmod, int RGBcode)
static int layerno(int subdet, int leftright, int layer)
void printlayers(bool print_total=true, float minval=0., float maxval=0., std::string s="layer")
void drawHV2(int rack, int numcrate_inrack, bool print_total, TmPsu *psu, std::ofstream *svgfile, bool usePsuValue)
void drawCcu(int crate, int numfed_incrate, bool total, TmCcu *ccu, std::ofstream *file, bool useCcuValue)
void save_as_fedtrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="fed_svgmap.svg", int width=100+(90+100)*31+300, int height=150+(2940+150)*1+300)
void fill_hv_channel3(int rack, int crate, int board, float qty)
#define NUMPSUCRATE_INCOLUMN
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
void setRange(float min, float max)
void drawPalette(std::ofstream *file, int xoffset=3660, int yoffset=1540)
int nlayer(int det, int part, int lay)
int find_layer(int ix, int iy)
void print(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap")
void fill_fec_channel(int crate, int slot, int ring, int addr, float qty)
void fill_current_val(int idmod, float current_val)
void setText(int idmod, std::string s)
static bool isRingStereo(int key)
void defcwindow(int num_crate)
T mod(const T &a, const T &b)
void fill_lv_channel(int rack, int crate, int board, float qty)
std::map< const int, TmModule * > ImoduleMap
std::vector< TColor * > vc
void onlyPixel(bool onlyPixelfl)
void printall(bool print_total=true, float minval=0., float maxval=0., std::string s="svgmap", int width=6000, int height=3200)
void drawPsu(int rack, int numcrate_inrack, bool print_total, TmPsu *psu, std::ofstream *svgfile, bool usePsuValue)
void fill(int layer, int ring, int nmod, float x)
double ydpixelpsu(double y)
void save_as_fectrackermap(bool print_total=true, float minval=0., float maxval=0., std::string s="fec_svgmap.svg", int width=1500, int height=800)
void fill_fed_channel(int fedId, int fedCh, float qty)
std::multimap< TmCcu *, TmModule * > FecModule
void fillc_hv_channel3(int rack, int crate, int board, int red, int green, int blue)
std::pair< float, float > getAutomaticRange()