File indexing completed on 2024-09-07 04:34:48
0001
0002
0003
0004
0005 #include "CalibCalorimetry/EcalCorrelatedNoiseAnalysisAlgos/interface/TEcnaHistos.h"
0006
0007
0008
0009
0010
0011
0012
0013 ClassImp(TEcnaHistos);
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046
0047 TEcnaHistos::~TEcnaHistos() {
0048
0049
0050 if (fT1DRunNumber != nullptr) {
0051 delete[] fT1DRunNumber;
0052 fCdelete++;
0053 }
0054
0055
0056
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067 if (fCnew != fCdelete) {
0068 std::cout << "*TEcnaHistos> WRONG MANAGEMENT OF ALLOCATIONS: fCnew = " << fCnew << ", fCdelete = " << fCdelete
0069 << fTTBELL << std::endl;
0070 } else {
0071
0072
0073 }
0074
0075 #define MGRA
0076 #ifndef MGRA
0077 if (fCnewRoot != fCdeleteRoot) {
0078 std::cout << "*TEcnaHistos> WRONG MANAGEMENT OF ROOT ALLOCATIONS: fCnewRoot = " << fCnewRoot
0079 << ", fCdeleteRoot = " << fCdeleteRoot << std::endl;
0080 } else {
0081 std::cout << "*TEcnaHistos> BRAVO! GOOD MANAGEMENT OF ROOT ALLOCATIONS:"
0082 << " fCnewRoot = " << fCnewRoot << ", fCdeleteRoot = " << fCdeleteRoot << std::endl;
0083 }
0084 #endif
0085
0086
0087
0088
0089
0090 }
0091
0092
0093
0094
0095
0096
0097 TEcnaHistos::TEcnaHistos() {
0098
0099
0100
0101
0102 Init();
0103 }
0104
0105 TEcnaHistos::TEcnaHistos(TEcnaObject* pObjectManager, const TString& SubDet) {
0106
0107
0108 Long_t i_this = (Long_t)this;
0109 pObjectManager->RegisterPointer("TEcnaHistos", i_this);
0110
0111 Init();
0112
0113
0114
0115
0116 fCnaParCout = nullptr;
0117 Long_t iCnaParCout = pObjectManager->GetPointerValue("TEcnaParCout");
0118 if (iCnaParCout == 0) {
0119 fCnaParCout = new TEcnaParCout(pObjectManager);
0120 } else {
0121 fCnaParCout = (TEcnaParCout*)iCnaParCout;
0122 }
0123
0124
0125 fCnaParPaths = nullptr;
0126 Long_t iCnaParPaths = pObjectManager->GetPointerValue("TEcnaParPaths");
0127 if (iCnaParPaths == 0) {
0128 fCnaParPaths = new TEcnaParPaths(pObjectManager);
0129 } else {
0130 fCnaParPaths = (TEcnaParPaths*)iCnaParPaths;
0131 }
0132
0133 fCfgResultsRootFilePath = fCnaParPaths->ResultsRootFilePath();
0134 fCfgHistoryRunListFilePath = fCnaParPaths->HistoryRunListFilePath();
0135
0136
0137 fEcal = nullptr;
0138 Long_t iParEcal = pObjectManager->GetPointerValue("TEcnaParEcal");
0139 if (iParEcal == 0) {
0140 fEcal = new TEcnaParEcal(pObjectManager, SubDet.Data());
0141 } else {
0142 fEcal = (TEcnaParEcal*)iParEcal;
0143 }
0144
0145
0146 fEcalNumbering = nullptr;
0147 Long_t iEcalNumbering = pObjectManager->GetPointerValue("TEcnaNumbering");
0148 if (iEcalNumbering == 0) {
0149 fEcalNumbering = new TEcnaNumbering(pObjectManager, SubDet.Data());
0150 } else {
0151 fEcalNumbering = (TEcnaNumbering*)iEcalNumbering;
0152 }
0153
0154
0155 fCnaParHistos = nullptr;
0156 Long_t iCnaParHistos = pObjectManager->GetPointerValue("TEcnaParHistos");
0157 if (iCnaParHistos == 0) {
0158 fCnaParHistos = new TEcnaParHistos(pObjectManager, SubDet.Data());
0159 } else {
0160 fCnaParHistos = (TEcnaParHistos*)iCnaParHistos;
0161 }
0162
0163
0164 fCnaWrite = nullptr;
0165 Long_t iCnaWrite = pObjectManager->GetPointerValue("TEcnaWrite");
0166 if (iCnaWrite == 0) {
0167 fCnaWrite = new TEcnaWrite(pObjectManager, SubDet.Data());
0168 } else {
0169 fCnaWrite = (TEcnaWrite*)iCnaWrite;
0170 }
0171
0172
0173 fMyRootFile = nullptr;
0174 Long_t iMyRootFile = pObjectManager->GetPointerValue("TEcnaRead");
0175 if (iMyRootFile == 0) {
0176 fMyRootFile = new TEcnaRead(pObjectManager, SubDet.Data());
0177 } else {
0178 fMyRootFile = (TEcnaRead*)iMyRootFile;
0179 }
0180
0181 fMyRootFile->PrintNoComment();
0182
0183
0184
0185
0186
0187
0188
0189 SetEcalSubDetector(SubDet.Data());
0190
0191 SetAllYminYmaxMemoFromDefaultValues();
0192 }
0193
0194 void TEcnaHistos::Init() {
0195
0196 fCnew = 0;
0197 fCdelete = 0;
0198 fCnewRoot = 0;
0199 fCdeleteRoot = 0;
0200
0201 fCnaCommand = 0;
0202 fCnaError = 0;
0203
0204
0205 fTTBELL = '\007';
0206
0207 fT1DRunNumber = nullptr;
0208
0209
0210 fMemoPlotH1SamePlus = 0;
0211 fMemoPlotD_NOE_ChNb = 0;
0212 fMemoPlotD_NOE_ChDs = 0;
0213 fMemoPlotD_Ped_ChNb = 0;
0214 fMemoPlotD_Ped_ChDs = 0;
0215 fMemoPlotD_TNo_ChNb = 0;
0216 fMemoPlotD_TNo_ChDs = 0;
0217 fMemoPlotD_MCs_ChNb = 0;
0218 fMemoPlotD_MCs_ChDs = 0;
0219 fMemoPlotD_LFN_ChNb = 0;
0220 fMemoPlotD_LFN_ChDs = 0;
0221 fMemoPlotD_HFN_ChNb = 0;
0222 fMemoPlotD_HFN_ChDs = 0;
0223 fMemoPlotD_SCs_ChNb = 0;
0224 fMemoPlotD_SCs_ChDs = 0;
0225 fMemoPlotD_MSp_SpNb = 0;
0226 fMemoPlotD_SSp_SpNb = 0;
0227 fMemoPlotD_MSp_SpDs = 0;
0228 fMemoPlotD_SSp_SpDs = 0;
0229 fMemoPlotD_Adc_EvDs = 0;
0230 fMemoPlotD_Adc_EvNb = 0;
0231 fMemoPlotH_Ped_Date = 0;
0232 fMemoPlotH_TNo_Date = 0;
0233 fMemoPlotH_MCs_Date = 0;
0234 fMemoPlotH_LFN_Date = 0;
0235 fMemoPlotH_HFN_Date = 0;
0236 fMemoPlotH_SCs_Date = 0;
0237 fMemoPlotH_Ped_RuDs = 0;
0238 fMemoPlotH_TNo_RuDs = 0;
0239 fMemoPlotH_MCs_RuDs = 0;
0240 fMemoPlotH_LFN_RuDs = 0;
0241 fMemoPlotH_HFN_RuDs = 0;
0242 fMemoPlotH_SCs_RuDs = 0;
0243
0244 fMemoColorH1SamePlus = 0;
0245 fMemoColorD_NOE_ChNb = 0;
0246 fMemoColorD_NOE_ChDs = 0;
0247 fMemoColorD_Ped_ChNb = 0;
0248 fMemoColorD_Ped_ChDs = 0;
0249 fMemoColorD_TNo_ChNb = 0;
0250 fMemoColorD_TNo_ChDs = 0;
0251 fMemoColorD_MCs_ChNb = 0;
0252 fMemoColorD_MCs_ChDs = 0;
0253 fMemoColorD_LFN_ChNb = 0;
0254 fMemoColorD_LFN_ChDs = 0;
0255 fMemoColorD_HFN_ChNb = 0;
0256 fMemoColorD_HFN_ChDs = 0;
0257 fMemoColorD_SCs_ChNb = 0;
0258 fMemoColorD_SCs_ChDs = 0;
0259 fMemoColorD_MSp_SpNb = 0;
0260 fMemoColorD_SSp_SpNb = 0;
0261 fMemoColorD_MSp_SpDs = 0;
0262 fMemoColorD_SSp_SpDs = 0;
0263 fMemoColorD_Adc_EvDs = 0;
0264 fMemoColorD_Adc_EvNb = 0;
0265 fMemoColorH_Ped_Date = 0;
0266 fMemoColorH_TNo_Date = 0;
0267 fMemoColorH_MCs_Date = 0;
0268 fMemoColorH_LFN_Date = 0;
0269 fMemoColorH_HFN_Date = 0;
0270 fMemoColorH_SCs_Date = 0;
0271 fMemoColorH_Ped_RuDs = 0;
0272 fMemoColorH_TNo_RuDs = 0;
0273 fMemoColorH_MCs_RuDs = 0;
0274 fMemoColorH_LFN_RuDs = 0;
0275 fMemoColorH_HFN_RuDs = 0;
0276 fMemoColorH_SCs_RuDs = 0;
0277
0278
0279 fCanvSameH1SamePlus = 0;
0280 fCanvSameD_NOE_ChNb = 0;
0281 fCanvSameD_NOE_ChDs = 0;
0282 fCanvSameD_Ped_ChNb = 0;
0283 fCanvSameD_Ped_ChDs = 0;
0284 fCanvSameD_TNo_ChNb = 0;
0285 fCanvSameD_TNo_ChDs = 0;
0286 fCanvSameD_MCs_ChNb = 0;
0287 fCanvSameD_MCs_ChDs = 0;
0288 fCanvSameD_LFN_ChNb = 0;
0289 fCanvSameD_LFN_ChDs = 0;
0290 fCanvSameD_HFN_ChNb = 0;
0291 fCanvSameD_HFN_ChDs = 0;
0292 fCanvSameD_SCs_ChNb = 0;
0293 fCanvSameD_SCs_ChDs = 0;
0294 fCanvSameD_MSp_SpNb = 0;
0295 fCanvSameD_SSp_SpNb = 0;
0296 fCanvSameD_MSp_SpDs = 0;
0297 fCanvSameD_SSp_SpDs = 0;
0298 fCanvSameD_Adc_EvDs = 0;
0299 fCanvSameD_Adc_EvNb = 0;
0300 fCanvSameH_Ped_Date = 0;
0301 fCanvSameH_TNo_Date = 0;
0302 fCanvSameH_MCs_Date = 0;
0303 fCanvSameH_LFN_Date = 0;
0304 fCanvSameH_HFN_Date = 0;
0305 fCanvSameH_SCs_Date = 0;
0306 fCanvSameH_Ped_RuDs = 0;
0307 fCanvSameH_TNo_RuDs = 0;
0308 fCanvSameH_MCs_RuDs = 0;
0309 fCanvSameH_LFN_RuDs = 0;
0310 fCanvSameH_HFN_RuDs = 0;
0311 fCanvSameH_SCs_RuDs = 0;
0312
0313
0314 fFlagScaleX.Resize(charArrLen);
0315 fFlagScaleX = "LIN";
0316
0317 fFlagScaleY.Resize(charArrLen);
0318 fFlagScaleY = "LIN";
0319
0320 fFlagColPal.Resize(charArrLen);
0321 fFlagColPal = "Black/Red/Blue";
0322
0323
0324 fFlagGeneralTitle.Resize(charArrLen);
0325 fFlagGeneralTitle = "";
0326
0327
0328 fOptScaleLinx = 31400;
0329 fOptScaleLogx = 31401;
0330 fOptScaleLiny = 31402;
0331 fOptScaleLogy = 31403;
0332
0333 fOptVisLine = 1101;
0334 fOptVisPolm = 1102;
0335
0336
0337 fCovarianceMatrix.Resize(charArrLen);
0338 fCovarianceMatrix = "Cov";
0339 fCorrelationMatrix.Resize(charArrLen);
0340 fCorrelationMatrix = "Cor";
0341
0342 fLFBetweenStins.Resize(charArrLen);
0343 fLFBetweenStins = "MttLF";
0344 fHFBetweenStins.Resize(charArrLen);
0345 fHFBetweenStins = "MttHF";
0346
0347 fLFBetweenChannels.Resize(charArrLen);
0348 fLFBetweenChannels = "MccLF";
0349 fHFBetweenChannels.Resize(charArrLen);
0350 fHFBetweenChannels = "MccHF";
0351
0352 fBetweenSamples.Resize(charArrLen);
0353 fBetweenSamples = "Mss";
0354
0355
0356 fTextPaveAlign = 12;
0357 fTextPaveFont = 100;
0358 fTextPaveSize = (Float_t)0.025;
0359 fTextBorderSize = 1;
0360
0361
0362 fXMemoH1SamePlus = "";
0363 fXMemoD_NOE_ChNb = "";
0364 fXMemoD_NOE_ChDs = "";
0365 fXMemoD_Ped_ChNb = "";
0366 fXMemoD_Ped_ChDs = "";
0367 fXMemoD_TNo_ChNb = "";
0368 fXMemoD_TNo_ChDs = "";
0369 fXMemoD_MCs_ChNb = "";
0370 fXMemoD_MCs_ChDs = "";
0371 fXMemoD_LFN_ChNb = "";
0372 fXMemoD_LFN_ChDs = "";
0373 fXMemoD_HFN_ChNb = "";
0374 fXMemoD_HFN_ChDs = "";
0375 fXMemoD_SCs_ChNb = "";
0376 fXMemoD_SCs_ChDs = "";
0377 fXMemoD_MSp_SpNb = "";
0378 fXMemoD_MSp_SpDs = "";
0379 fXMemoD_SSp_SpNb = "";
0380 fXMemoD_SSp_SpDs = "";
0381 fXMemoD_Adc_EvDs = "";
0382 fXMemoD_Adc_EvNb = "";
0383 fXMemoH_Ped_Date = "";
0384 fXMemoH_TNo_Date = "";
0385 fXMemoH_MCs_Date = "";
0386 fXMemoH_LFN_Date = "";
0387 fXMemoH_HFN_Date = "";
0388 fXMemoH_SCs_Date = "";
0389 fXMemoH_Ped_RuDs = "";
0390 fXMemoH_TNo_RuDs = "";
0391 fXMemoH_MCs_RuDs = "";
0392 fXMemoH_LFN_RuDs = "";
0393 fXMemoH_HFN_RuDs = "";
0394 fXMemoH_SCs_RuDs = "";
0395
0396 fYMemoH1SamePlus = "";
0397 fYMemoD_NOE_ChNb = "";
0398 fYMemoD_NOE_ChDs = "";
0399 fYMemoD_Ped_ChNb = "";
0400 fYMemoD_Ped_ChDs = "";
0401 fYMemoD_TNo_ChNb = "";
0402 fYMemoD_TNo_ChDs = "";
0403 fYMemoD_MCs_ChNb = "";
0404 fYMemoD_MCs_ChDs = "";
0405 fYMemoD_LFN_ChNb = "";
0406 fYMemoD_LFN_ChDs = "";
0407 fYMemoD_HFN_ChNb = "";
0408 fYMemoD_HFN_ChDs = "";
0409 fYMemoD_SCs_ChNb = "";
0410 fYMemoD_SCs_ChDs = "";
0411 fYMemoD_MSp_SpNb = "";
0412 fYMemoD_MSp_SpDs = "";
0413 fYMemoD_SSp_SpNb = "";
0414 fYMemoD_SSp_SpDs = "";
0415 fYMemoD_Adc_EvDs = "";
0416 fYMemoD_Adc_EvNb = "";
0417 fYMemoH_Ped_Date = "";
0418 fYMemoH_TNo_Date = "";
0419 fYMemoH_MCs_Date = "";
0420 fYMemoH_LFN_Date = "";
0421 fYMemoH_HFN_Date = "";
0422 fYMemoH_SCs_Date = "";
0423 fYMemoH_Ped_RuDs = "";
0424 fYMemoH_TNo_RuDs = "";
0425 fYMemoH_MCs_RuDs = "";
0426 fYMemoH_LFN_RuDs = "";
0427 fYMemoH_HFN_RuDs = "";
0428 fYMemoH_SCs_RuDs = "";
0429
0430 fNbBinsMemoH1SamePlus = 0;
0431 fNbBinsMemoD_NOE_ChNb = 0;
0432 fNbBinsMemoD_NOE_ChDs = 0;
0433 fNbBinsMemoD_Ped_ChNb = 0;
0434 fNbBinsMemoD_Ped_ChDs = 0;
0435 fNbBinsMemoD_TNo_ChNb = 0;
0436 fNbBinsMemoD_TNo_ChDs = 0;
0437 fNbBinsMemoD_MCs_ChNb = 0;
0438 fNbBinsMemoD_MCs_ChDs = 0;
0439 fNbBinsMemoD_LFN_ChNb = 0;
0440 fNbBinsMemoD_LFN_ChDs = 0;
0441 fNbBinsMemoD_HFN_ChNb = 0;
0442 fNbBinsMemoD_HFN_ChDs = 0;
0443 fNbBinsMemoD_SCs_ChNb = 0;
0444 fNbBinsMemoD_SCs_ChDs = 0;
0445 fNbBinsMemoD_MSp_SpNb = 0;
0446 fNbBinsMemoD_MSp_SpDs = 0;
0447 fNbBinsMemoD_SSp_SpNb = 0;
0448 fNbBinsMemoD_SSp_SpDs = 0;
0449 fNbBinsMemoD_Adc_EvDs = 0;
0450 fNbBinsMemoD_Adc_EvNb = 0;
0451 fNbBinsMemoH_Ped_Date = 0;
0452 fNbBinsMemoH_TNo_Date = 0;
0453 fNbBinsMemoH_MCs_Date = 0;
0454 fNbBinsMemoH_LFN_Date = 0;
0455 fNbBinsMemoH_HFN_Date = 0;
0456 fNbBinsMemoH_SCs_Date = 0;
0457 fNbBinsMemoH_Ped_RuDs = 0;
0458 fNbBinsMemoH_TNo_RuDs = 0;
0459 fNbBinsMemoH_MCs_RuDs = 0;
0460 fNbBinsMemoH_LFN_RuDs = 0;
0461 fNbBinsMemoH_HFN_RuDs = 0;
0462 fNbBinsMemoH_SCs_RuDs = 0;
0463
0464
0465 fCurrentCanvas = nullptr;
0466
0467 fCurrentCanvasName = "?";
0468
0469 fCanvH1SamePlus = nullptr;
0470 fCanvD_NOE_ChNb = nullptr;
0471 fCanvD_NOE_ChDs = nullptr;
0472 fCanvD_Ped_ChNb = nullptr;
0473 fCanvD_Ped_ChDs = nullptr;
0474 fCanvD_TNo_ChNb = nullptr;
0475 fCanvD_TNo_ChDs = nullptr;
0476 fCanvD_MCs_ChNb = nullptr;
0477 fCanvD_MCs_ChDs = nullptr;
0478 fCanvD_LFN_ChNb = nullptr;
0479 fCanvD_LFN_ChDs = nullptr;
0480 fCanvD_HFN_ChNb = nullptr;
0481 fCanvD_HFN_ChDs = nullptr;
0482 fCanvD_SCs_ChNb = nullptr;
0483 fCanvD_SCs_ChDs = nullptr;
0484 fCanvD_MSp_SpNb = nullptr;
0485 fCanvD_MSp_SpDs = nullptr;
0486 fCanvD_SSp_SpNb = nullptr;
0487 fCanvD_SSp_SpDs = nullptr;
0488 fCanvD_Adc_EvDs = nullptr;
0489 fCanvD_Adc_EvNb = nullptr;
0490 fCanvH_Ped_Date = nullptr;
0491 fCanvH_TNo_Date = nullptr;
0492 fCanvH_MCs_Date = nullptr;
0493 fCanvH_LFN_Date = nullptr;
0494 fCanvH_HFN_Date = nullptr;
0495 fCanvH_SCs_Date = nullptr;
0496 fCanvH_Ped_RuDs = nullptr;
0497 fCanvH_TNo_RuDs = nullptr;
0498 fCanvH_MCs_RuDs = nullptr;
0499 fCanvH_LFN_RuDs = nullptr;
0500 fCanvH_HFN_RuDs = nullptr;
0501 fCanvH_SCs_RuDs = nullptr;
0502
0503 fClosedH1SamePlus = kFALSE;
0504 fClosedD_NOE_ChNb = kFALSE;
0505 fClosedD_NOE_ChDs = kFALSE;
0506 fClosedD_Ped_ChNb = kFALSE;
0507 fClosedD_Ped_ChDs = kFALSE;
0508 fClosedD_TNo_ChNb = kFALSE;
0509 fClosedD_TNo_ChDs = kFALSE;
0510 fClosedD_MCs_ChNb = kFALSE;
0511 fClosedD_MCs_ChDs = kFALSE;
0512 fClosedD_LFN_ChNb = kFALSE;
0513 fClosedD_LFN_ChDs = kFALSE;
0514 fClosedD_HFN_ChNb = kFALSE;
0515 fClosedD_HFN_ChDs = kFALSE;
0516 fClosedD_SCs_ChNb = kFALSE;
0517 fClosedD_SCs_ChDs = kFALSE;
0518 fClosedD_MSp_SpNb = kFALSE;
0519 fClosedD_MSp_SpDs = kFALSE;
0520 fClosedD_SSp_SpNb = kFALSE;
0521 fClosedD_SSp_SpDs = kFALSE;
0522 fClosedD_Adc_EvDs = kFALSE;
0523 fClosedD_Adc_EvNb = kFALSE;
0524 fClosedH_Ped_Date = kFALSE;
0525 fClosedH_TNo_Date = kFALSE;
0526 fClosedH_MCs_Date = kFALSE;
0527 fClosedH_LFN_Date = kFALSE;
0528 fClosedH_HFN_Date = kFALSE;
0529 fClosedH_SCs_Date = kFALSE;
0530 fClosedH_Ped_RuDs = kFALSE;
0531 fClosedH_TNo_RuDs = kFALSE;
0532 fClosedH_MCs_RuDs = kFALSE;
0533 fClosedH_LFN_RuDs = kFALSE;
0534 fClosedH_HFN_RuDs = kFALSE;
0535 fClosedH_SCs_RuDs = kFALSE;
0536
0537 fCurrentPad = nullptr;
0538
0539 fPadH1SamePlus = nullptr;
0540 fPadD_NOE_ChNb = nullptr;
0541 fPadD_NOE_ChDs = nullptr;
0542 fPadD_Ped_ChNb = nullptr;
0543 fPadD_Ped_ChDs = nullptr;
0544 fPadD_TNo_ChNb = nullptr;
0545 fPadD_TNo_ChDs = nullptr;
0546 fPadD_MCs_ChNb = nullptr;
0547 fPadD_MCs_ChDs = nullptr;
0548 fPadD_LFN_ChNb = nullptr;
0549 fPadD_LFN_ChDs = nullptr;
0550 fPadD_HFN_ChNb = nullptr;
0551 fPadD_HFN_ChDs = nullptr;
0552 fPadD_SCs_ChNb = nullptr;
0553 fPadD_SCs_ChDs = nullptr;
0554 fPadD_MSp_SpNb = nullptr;
0555 fPadD_MSp_SpDs = nullptr;
0556 fPadD_SSp_SpNb = nullptr;
0557 fPadD_SSp_SpDs = nullptr;
0558 fPadD_Adc_EvDs = nullptr;
0559 fPadD_Adc_EvNb = nullptr;
0560 fPadH_Ped_Date = nullptr;
0561 fPadH_TNo_Date = nullptr;
0562 fPadH_MCs_Date = nullptr;
0563 fPadH_LFN_Date = nullptr;
0564 fPadH_HFN_Date = nullptr;
0565 fPadH_SCs_Date = nullptr;
0566 fPadH_Ped_RuDs = nullptr;
0567 fPadH_TNo_RuDs = nullptr;
0568 fPadH_MCs_RuDs = nullptr;
0569 fPadH_LFN_RuDs = nullptr;
0570 fPadH_HFN_RuDs = nullptr;
0571 fPadH_SCs_RuDs = nullptr;
0572
0573 fPavTxtH1SamePlus = nullptr;
0574 fPavTxtD_NOE_ChNb = nullptr;
0575 fPavTxtD_NOE_ChDs = nullptr;
0576 fPavTxtD_Ped_ChNb = nullptr;
0577 fPavTxtD_Ped_ChDs = nullptr;
0578 fPavTxtD_TNo_ChNb = nullptr;
0579 fPavTxtD_TNo_ChDs = nullptr;
0580 fPavTxtD_MCs_ChNb = nullptr;
0581 fPavTxtD_MCs_ChDs = nullptr;
0582 fPavTxtD_LFN_ChNb = nullptr;
0583 fPavTxtD_LFN_ChDs = nullptr;
0584 fPavTxtD_HFN_ChNb = nullptr;
0585 fPavTxtD_HFN_ChDs = nullptr;
0586 fPavTxtD_SCs_ChNb = nullptr;
0587 fPavTxtD_SCs_ChDs = nullptr;
0588 fPavTxtD_MSp_SpNb = nullptr;
0589 fPavTxtD_MSp_SpDs = nullptr;
0590 fPavTxtD_SSp_SpNb = nullptr;
0591 fPavTxtD_SSp_SpDs = nullptr;
0592 fPavTxtD_Adc_EvDs = nullptr;
0593 fPavTxtD_Adc_EvNb = nullptr;
0594 fPavTxtH_Ped_Date = nullptr;
0595 fPavTxtH_TNo_Date = nullptr;
0596 fPavTxtH_MCs_Date = nullptr;
0597 fPavTxtH_LFN_Date = nullptr;
0598 fPavTxtH_HFN_Date = nullptr;
0599 fPavTxtH_SCs_Date = nullptr;
0600 fPavTxtH_Ped_RuDs = nullptr;
0601 fPavTxtH_TNo_RuDs = nullptr;
0602 fPavTxtH_MCs_RuDs = nullptr;
0603 fPavTxtH_LFN_RuDs = nullptr;
0604 fPavTxtH_HFN_RuDs = nullptr;
0605 fPavTxtH_SCs_RuDs = nullptr;
0606
0607 fImpH1SamePlus = nullptr;
0608 fImpD_NOE_ChNb = nullptr;
0609 fImpD_NOE_ChDs = nullptr;
0610 fImpD_Ped_ChNb = nullptr;
0611 fImpD_Ped_ChDs = nullptr;
0612 fImpD_TNo_ChNb = nullptr;
0613 fImpD_TNo_ChDs = nullptr;
0614 fImpD_MCs_ChNb = nullptr;
0615 fImpD_MCs_ChDs = nullptr;
0616 fImpD_LFN_ChNb = nullptr;
0617 fImpD_LFN_ChDs = nullptr;
0618 fImpD_HFN_ChNb = nullptr;
0619 fImpD_HFN_ChDs = nullptr;
0620 fImpD_SCs_ChNb = nullptr;
0621 fImpD_SCs_ChDs = nullptr;
0622 fImpD_MSp_SpNb = nullptr;
0623 fImpD_MSp_SpDs = nullptr;
0624 fImpD_SSp_SpNb = nullptr;
0625 fImpD_SSp_SpDs = nullptr;
0626 fImpD_Adc_EvDs = nullptr;
0627 fImpD_Adc_EvNb = nullptr;
0628 fImpH_Ped_Date = nullptr;
0629 fImpH_TNo_Date = nullptr;
0630 fImpH_MCs_Date = nullptr;
0631 fImpH_LFN_Date = nullptr;
0632 fImpH_HFN_Date = nullptr;
0633 fImpH_SCs_Date = nullptr;
0634 fImpH_Ped_RuDs = nullptr;
0635 fImpH_TNo_RuDs = nullptr;
0636 fImpH_MCs_RuDs = nullptr;
0637 fImpH_LFN_RuDs = nullptr;
0638 fImpH_HFN_RuDs = nullptr;
0639 fImpH_SCs_RuDs = nullptr;
0640
0641 fNbBinsProj = 100;
0642
0643
0644
0645 fNbOfListFileH_Ped_Date = 0;
0646 fNbOfListFileH_TNo_Date = 0;
0647 fNbOfListFileH_MCs_Date = 0;
0648 fNbOfListFileH_LFN_Date = 0;
0649 fNbOfListFileH_HFN_Date = 0;
0650 fNbOfListFileH_SCs_Date = 0;
0651
0652 fNbOfListFileH_Ped_RuDs = 0;
0653 fNbOfListFileH_TNo_RuDs = 0;
0654 fNbOfListFileH_MCs_RuDs = 0;
0655 fNbOfListFileH_LFN_RuDs = 0;
0656 fNbOfListFileH_HFN_RuDs = 0;
0657 fNbOfListFileH_SCs_RuDs = 0;
0658
0659 fNbOfExistingRuns = 0;
0660
0661 fFapNbOfRuns = -1;
0662 fFapMaxNbOfRuns = -1;
0663
0664 fFapFileRuns.Resize(charArrLen);
0665 fFapFileRuns = "(file with list of runs parameters: no info)";
0666
0667 fStartEvolTime = 0;
0668 fStopEvolTime = 0;
0669 fStartEvolDate = "Start date: not known";
0670 fStopEvolDate = "Stop date: not known";
0671
0672 fStartEvolRun = 0;
0673 fStopEvolRun = 0;
0674
0675 fRunType = "Run type: not known";
0676
0677 fFapNbOfEvts = 0;
0678
0679 fMyRootFileName.Resize(charArrLen);
0680 fMyRootFileName = "No ROOT file name available (fMyRootFileName).";
0681
0682 fFapAnaType = "Analysis name: not known";
0683 fFapNbOfSamples = 0;
0684 fFapRunNumber = 0;
0685 fFapFirstReqEvtNumber = 0;
0686 fFapLastReqEvtNumber = 0;
0687 fFapReqNbOfEvts = 0;
0688 fFapStexNumber = 0;
0689
0690
0691 fAlreadyRead = 1;
0692 fMemoAlreadyRead = 0;
0693 fTobeRead = 0;
0694 fZerv = 0;
0695 fUnev = 1;
0696 TVectorD fReadHistoDummy(fUnev);
0697 TMatrixD fReadMatrixDummy(fUnev, fUnev);
0698
0699
0700 fAsciiFileName = "?";
0701
0702 }
0703
0704
0705 void TEcnaHistos::SetEcalSubDetector(const TString& SubDet) {
0706
0707
0708 fFlagSubDet.Resize(charArrLen);
0709 fFlagSubDet = fEcal->GetEcalSubDetector();
0710
0711
0712 fFapStexName.Resize(charArrLen);
0713 fFapStexName = "no info for Stex";
0714 fFapStinName.Resize(charArrLen);
0715 fFapStinName = "no info for Stin";
0716 fFapXtalName.Resize(charArrLen);
0717 fFapXtalName = "no info for Xtal";
0718 fFapEchaName.Resize(charArrLen);
0719 fFapEchaName = "no info for Echa";
0720
0721 if (fFlagSubDet == "EB") {
0722 fFapStexName = "SM";
0723 fFapStinName = "Tower";
0724 fFapXtalName = "Xtal";
0725 fFapEchaName = "Chan";
0726 fFapStexBarrel = fEcalNumbering->GetSMHalfBarrel(fFapStexNumber);
0727 }
0728
0729 if (fFlagSubDet == "EE") {
0730 fFapStexName = "Dee";
0731 fFapStinName = "SC";
0732 fFapXtalName = "Xtal";
0733 fFapEchaName = "Chan";
0734 fFapStexType = fEcalNumbering->GetEEDeeType(fFapStexNumber);
0735 fFapStexDir = "right";
0736 fFapStinQuadType = "top";
0737 }
0738
0739
0740 fOnlyOnePlot.Resize(charArrLen);
0741 fOnlyOnePlot = fCnaParHistos->GetCodeOnlyOnePlot();
0742
0743 fSeveralPlot.Resize(charArrLen);
0744 fSeveralPlot = fCnaParHistos->GetCodeSeveralPlot();
0745
0746 fSameOnePlot.Resize(charArrLen);
0747 fSameOnePlot = fCnaParHistos->GetCodeSameOnePlot();
0748
0749 fAllXtalsInStinPlot.Resize(charArrLen);
0750 fAllXtalsInStinPlot = fCnaParHistos->GetCodeAllXtalsInStinPlot();
0751
0752 fPlotAllXtalsInStin = fCnaParHistos->GetCodePlotAllXtalsInStin();
0753
0754 }
0755
0756
0757
0758
0759
0760
0761
0762
0763 void TEcnaHistos::FileParameters(const TString& xArgAnaType,
0764 const Int_t& xArgNbOfSamples,
0765 const Int_t& xArgRunNumber,
0766 const Int_t& xArgFirstReqEvtNumber,
0767 const Int_t& xArgLastReqEvtNumber,
0768 const Int_t& xArgReqNbOfEvts,
0769 const Int_t& xArgStexNumber) {
0770
0771
0772 fFapAnaType = xArgAnaType;
0773 fFapNbOfSamples = xArgNbOfSamples;
0774 fFapRunNumber = xArgRunNumber;
0775 fFapFirstReqEvtNumber = xArgFirstReqEvtNumber;
0776 fFapLastReqEvtNumber = xArgLastReqEvtNumber;
0777 fFapReqNbOfEvts = xArgReqNbOfEvts;
0778 fFapStexNumber = xArgStexNumber;
0779
0780 InitSpecParBeforeFileReading();
0781 }
0782
0783 void TEcnaHistos::FileParameters(TEcnaRead* MyRootFile) {
0784
0785
0786 InitSpecParBeforeFileReading();
0787
0788
0789 fFapAnaType = MyRootFile->GetAnalysisName();
0790 fFapNbOfSamples = MyRootFile->GetNbOfSamples();
0791 fFapRunNumber = MyRootFile->GetRunNumber();
0792 fFapFirstReqEvtNumber = MyRootFile->GetFirstReqEvtNumber();
0793 fFapLastReqEvtNumber = MyRootFile->GetLastReqEvtNumber();
0794 fFapReqNbOfEvts = MyRootFile->GetReqNbOfEvts();
0795 fFapStexNumber = MyRootFile->GetStexNumber();
0796
0797
0798 fStartDate = MyRootFile->GetStartDate();
0799 fStopDate = MyRootFile->GetStopDate();
0800 fRunType = MyRootFile->GetRunType();
0801
0802 fFapNbOfEvts = MyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);
0803 }
0804
0805
0806
0807
0808
0809
0810
0811
0812
0813 void TEcnaHistos::GeneralTitle(const TString& title) { fFlagGeneralTitle = title.Data(); }
0814 void TEcnaHistos::SetHistoScaleX(const TString& option_scale) {
0815 fFlagScaleX = "LIN";
0816 if (option_scale == "LOG") {
0817 fFlagScaleX = "LOG";
0818 }
0819 }
0820 void TEcnaHistos::SetHistoScaleY(const TString& option_scale) {
0821 fFlagScaleY = "LIN";
0822 if (option_scale == "LOG") {
0823 fFlagScaleY = "LOG";
0824 }
0825 }
0826 void TEcnaHistos::SetHistoColorPalette(const TString& option_palette) {
0827 fFlagColPal = "Black/Red/Blue";
0828 if (!(option_palette == "Rainbow" || option_palette == "rainbow")) {
0829 fFlagColPal = "Black/Red/Blue";
0830 }
0831 if (option_palette == "Rainbow" || option_palette == "rainbow") {
0832 fFlagColPal = "Rainbow";
0833 }
0834 }
0835 void TEcnaHistos::StartStopDate(const TString& start_date, const TString& stop_date) {
0836 fStartDate = start_date.Data();
0837 fStopDate = stop_date.Data();
0838 }
0839 void TEcnaHistos::RunType(const TString& run_type) { fRunType = run_type.Data(); }
0840 void TEcnaHistos::NumberOfEvents(const Int_t& nb_of_evts) { fFapNbOfEvts = nb_of_evts; }
0841
0842 Bool_t TEcnaHistos::StatusFileFound() { return fStatusFileFound; }
0843 Bool_t TEcnaHistos::StatusDataExist() { return fStatusDataExist; }
0844
0845
0846
0847
0848
0849
0850
0851
0852
0853
0854
0855
0856
0857
0858
0859
0860
0861
0862
0863
0864
0865
0866
0867
0868
0869
0870
0871
0872
0873
0874
0875
0876
0877
0878
0879
0880
0881
0882
0883
0884
0885
0886
0887
0888
0889
0890
0891
0892
0893
0894
0895
0896
0897
0898
0899
0900
0901
0902 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
0903 const TString& UserCorOrCov,
0904 const TString& UserBetweenWhat) {
0905 PlotMatrix(read_matrix_corcc, UserCorOrCov, UserBetweenWhat, "");
0906 }
0907
0908 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix_corcc,
0909 const TString& UserCorOrCov,
0910 const TString& UserBetweenWhat,
0911 const TString& UserPlotOption) {
0912 TString CallingMethod = "2D";
0913
0914 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
0915
0916 TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
0917 TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
0918
0919 if (BetweenWhat != "?" && CorOrCov != "?") {
0920 if (BetweenWhat == "MttLF" || BetweenWhat == "MttHF") {
0921 fAlreadyRead = 1;
0922 ViewMatrix(read_matrix_corcc, fAlreadyRead, fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
0923 }
0924 if (BetweenWhat == "MccLF") {
0925 StexHocoVecoLHFCorcc("LF");
0926 }
0927 if (BetweenWhat == "MccHF") {
0928 StexHocoVecoLHFCorcc("HF");
0929 }
0930 } else {
0931 fFlagUserHistoMin = "OFF";
0932 fFlagUserHistoMax = "OFF";
0933 std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;
0934 }
0935 }
0936
0937 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov, const TString& UserBetweenWhat) {
0938 PlotMatrix(UserCorOrCov, UserBetweenWhat, "");
0939 }
0940
0941 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov,
0942 const TString& UserBetweenWhat,
0943 const TString& UserPlotOption) {
0944 TString CallingMethod = "2D";
0945
0946 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
0947
0948 TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
0949 TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
0950
0951 if (BetweenWhat != "?" && CorOrCov != "?") {
0952 if (BetweenWhat == "MttLF" || BetweenWhat == "MttHF") {
0953 ViewMatrix(fReadMatrixDummy, fTobeRead, fZerv, fZerv, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
0954 }
0955 if (BetweenWhat == "MccLF") {
0956 StexHocoVecoLHFCorcc("LF");
0957 }
0958 if (BetweenWhat == "MccHF") {
0959 StexHocoVecoLHFCorcc("HF");
0960 }
0961 } else {
0962 fFlagUserHistoMin = "OFF";
0963 fFlagUserHistoMax = "OFF";
0964 std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;
0965 }
0966 }
0967
0968
0969
0970 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
0971 const TString& UserCorOrCov,
0972 const TString& UserBetweenWhat,
0973 const Int_t& arg_n1,
0974 const Int_t& arg_n2) {
0975 PlotMatrix(read_matrix, UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");
0976 }
0977
0978 void TEcnaHistos::PlotMatrix(const TMatrixD& read_matrix,
0979 const TString& UserCorOrCov,
0980 const TString& UserBetweenWhat,
0981 const Int_t& arg_n1,
0982 const Int_t& arg_n2,
0983 const TString& UserPlotOption) {
0984 TString CallingMethod = "2D";
0985
0986 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
0987
0988 TString BetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
0989 TString CorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
0990
0991 if (BetweenWhat != "?" && CorOrCov != "?") {
0992 if (BetweenWhat == "MccLF" || BetweenWhat == "MccHF") {
0993 Int_t cStexStin_A = arg_n1;
0994 Int_t cStexStin_B = arg_n2;
0995 fAlreadyRead = 1;
0996 ViewMatrix(read_matrix, fAlreadyRead, cStexStin_A, cStexStin_B, fZerv, CorOrCov, BetweenWhat, StandardPlotOption);
0997 }
0998
0999 if (BetweenWhat == "Mss") {
1000 Int_t n1StexStin = arg_n1;
1001 Int_t i0StinEcha = arg_n2;
1002 if (fFlagSubDet == "EE") {
1003 n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);
1004 }
1005 fAlreadyRead = 1;
1006 ViewMatrix(read_matrix, fAlreadyRead, n1StexStin, fZerv, i0StinEcha, CorOrCov, BetweenWhat, StandardPlotOption);
1007 }
1008 } else {
1009 fFlagUserHistoMin = "OFF";
1010 fFlagUserHistoMax = "OFF";
1011 std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;
1012 }
1013 }
1014
1015 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov,
1016 const TString& UserBetweenWhat,
1017 const Int_t& arg_n1,
1018 const Int_t& arg_n2) {
1019 PlotMatrix(UserCorOrCov, UserBetweenWhat, arg_n1, arg_n2, "");
1020 }
1021
1022 void TEcnaHistos::PlotMatrix(const TString& UserCorOrCov,
1023 const TString& UserBetweenWhat,
1024 const Int_t& arg_n1,
1025 const Int_t& arg_n2,
1026 const TString& UserPlotOption) {
1027 TString CallingMethod = "2D";
1028
1029 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1030
1031 TString StandardBetweenWhat = fCnaParHistos->BuildStandardBetweenWhatCode(CallingMethod, UserBetweenWhat);
1032 TString StandardCorOrCov = fCnaParHistos->BuildStandardCovOrCorCode(CallingMethod, UserCorOrCov);
1033
1034 if (StandardBetweenWhat != "?" && StandardCorOrCov != "?") {
1035 if (StandardBetweenWhat == "MccLF" || StandardBetweenWhat == "MccHF") {
1036 Int_t cStexStin_A = arg_n1;
1037 Int_t cStexStin_B = arg_n2;
1038 ViewMatrix(fReadMatrixDummy,
1039 fTobeRead,
1040 cStexStin_A,
1041 cStexStin_B,
1042 fZerv,
1043 StandardCorOrCov,
1044 StandardBetweenWhat,
1045 StandardPlotOption);
1046 }
1047
1048 if (StandardBetweenWhat == "Mss") {
1049 Int_t n1StexStin = arg_n1;
1050 Int_t i0StinEcha = arg_n2;
1051 if (fFlagSubDet == "EE") {
1052 n1StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, arg_n1);
1053 }
1054
1055 ViewMatrix(fReadMatrixDummy,
1056 fTobeRead,
1057 n1StexStin,
1058 fZerv,
1059 i0StinEcha,
1060 StandardCorOrCov,
1061 StandardBetweenWhat,
1062 StandardPlotOption);
1063 }
1064 } else {
1065 fFlagUserHistoMin = "OFF";
1066 fFlagUserHistoMax = "OFF";
1067 std::cout << "!TEcnaHistos::PlotMatrix(...)> Histo cannot be reached." << fTTBELL << std::endl;
1068 }
1069 }
1070
1071
1072
1073
1074
1075
1076
1077 void TEcnaHistos::PlotDetector(const TString& UserHistoCode, const TString& UserDetector) {
1078 TString CallingMethod = "2DS";
1079
1080 TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1081 if (StandardHistoCode != "?") {
1082 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1083 TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1084 if (StandardDetectorCode != "?") {
1085
1086
1087
1088
1089
1090 if (StandardDetectorCode == "SM" || StandardDetectorCode == "Dee") {
1091 ViewStex(fReadHistoDummy, fTobeRead, TechHistoCode);
1092 }
1093 if (StandardDetectorCode == "EB" || StandardDetectorCode == "EE") {
1094 ViewStas(fReadHistoDummy, fTobeRead, TechHistoCode);
1095 }
1096 } else {
1097 fFlagUserHistoMin = "OFF";
1098 fFlagUserHistoMax = "OFF";
1099 std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;
1100 }
1101 } else {
1102 fFlagUserHistoMin = "OFF";
1103 fFlagUserHistoMax = "OFF";
1104 std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;
1105 }
1106 }
1107
1108 void TEcnaHistos::PlotDetector(const TVectorD& read_histo, const TString& UserHistoCode, const TString& UserDetector) {
1109 TString CallingMethod = "2DS";
1110
1111 TString StandardHistoCode = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, UserHistoCode);
1112 if (StandardHistoCode != "?") {
1113 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(StandardHistoCode);
1114 TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1115 if (StandardDetectorCode != "?") {
1116 fAlreadyRead = 1;
1117
1118
1119
1120
1121
1122
1123 if (StandardDetectorCode == "SM" || StandardDetectorCode == "Dee") {
1124 ViewStex(read_histo, fAlreadyRead, TechHistoCode);
1125 }
1126 if (StandardDetectorCode == "EB" || StandardDetectorCode == "EE") {
1127 ViewStas(read_histo, fAlreadyRead, TechHistoCode);
1128 }
1129 } else {
1130 fFlagUserHistoMin = "OFF";
1131 fFlagUserHistoMax = "OFF";
1132 std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;
1133 }
1134 } else {
1135 fFlagUserHistoMin = "OFF";
1136 fFlagUserHistoMax = "OFF";
1137 std::cout << "!TEcnaHistos::PlotDetector(...)> Histo cannot be reached." << fTTBELL << std::endl;
1138 }
1139 }
1140
1141
1142
1143
1144
1145
1146 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1147 const TString& User_X_Quantity,
1148 const TString& User_Y_Quantity,
1149 const TString& UserDetector) {
1150 Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, UserDetector, "");
1151 }
1152
1153 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1154 const TString& User_X_Quantity,
1155 const TString& User_Y_Quantity,
1156 const TString& UserDetector,
1157 const TString& UserPlotOption) {
1158 TString CallingMethod = "1D";
1159
1160 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1161
1162 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1163 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1164
1165 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1166 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1167 if (fAlreadyRead > 1) {
1168 fAlreadyRead = 1;
1169 }
1170 TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1171 if (StandardDetectorCode != "?") {
1172 if (StandardDetectorCode == "EB" || StandardDetectorCode == "EE") {
1173 fFapStexNumber = 0;
1174 }
1175 ViewHisto(InputHisto, fAlreadyRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1176 } else {
1177 fFlagUserHistoMin = "OFF";
1178 fFlagUserHistoMax = "OFF";
1179 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1180 }
1181 } else {
1182 fFlagUserHistoMin = "OFF";
1183 fFlagUserHistoMax = "OFF";
1184 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1185 }
1186 }
1187
1188 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1189 const TString& User_Y_Quantity,
1190 const TString& UserDetector) {
1191 Plot1DHisto(User_X_Quantity, User_Y_Quantity, UserDetector, "");
1192 }
1193
1194 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1195 const TString& User_Y_Quantity,
1196 const TString& UserDetector,
1197 const TString& UserPlotOption) {
1198 TString CallingMethod = "1D";
1199
1200 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1201
1202 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1203 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1204
1205 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1206 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1207 TString StandardDetectorCode = fCnaParHistos->BuildStandardDetectorCode(UserDetector);
1208 if (StandardDetectorCode != "?") {
1209 if (StandardDetectorCode == "EB" || StandardDetectorCode == "EE") {
1210 fFapStexNumber = 0;
1211 }
1212 ViewHisto(fReadHistoDummy, fTobeRead, fZerv, fZerv, fZerv, TechHistoCode, StandardPlotOption);
1213 } else {
1214 fFlagUserHistoMin = "OFF";
1215 fFlagUserHistoMax = "OFF";
1216 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1217 }
1218 } else {
1219 fFlagUserHistoMin = "OFF";
1220 fFlagUserHistoMax = "OFF";
1221 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1222 }
1223 }
1224
1225
1226
1227 #define PLUD
1228 #ifdef PLUD
1229 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1230 const TString& User_X_Quantity,
1231 const TString& User_Y_Quantity,
1232 const Int_t& n1StexStin) {
1233 Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, "");
1234 }
1235
1236 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1237 const TString& User_X_Quantity,
1238 const TString& User_Y_Quantity,
1239 const Int_t& n1StexStin,
1240 const TString& UserPlotOption) {
1241 TString CallingMethod = "1DX";
1242 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1243 Int_t i0StinEcha = 0;
1244 Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, StandardPlotOption);
1245 }
1246 #endif
1247
1248 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1249 const TString& User_X_Quantity,
1250 const TString& User_Y_Quantity,
1251 const Int_t& n1StexStin,
1252 const Int_t& i0StinEcha) {
1253 Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");
1254 }
1255
1256 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1257 const TString& User_X_Quantity,
1258 const TString& User_Y_Quantity,
1259 const Int_t& n1StexStin,
1260 const Int_t& i0StinEcha,
1261 const TString& UserPlotOption) {
1262 TString CallingMethod = "1D";
1263 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1264 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1265 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1266
1267 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1268
1269 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1270 fAlreadyRead = 1;
1271 if (StandardPlotOption != fAllXtalsInStinPlot) {
1272 ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1273 }
1274
1275 if (StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin()) {
1276 if (Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp") {
1277 XtalSamplesEv(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);
1278 }
1279 if (Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS") {
1280 EvSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);
1281 }
1282 if (Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp") {
1283 XtalSamplesSigma(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);
1284 }
1285 if (Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS") {
1286 SigmaSamplesXtals(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, StandardPlotOption);
1287 }
1288 }
1289 } else {
1290 fFlagUserHistoMin = "OFF";
1291 fFlagUserHistoMax = "OFF";
1292 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1293 }
1294 }
1295
1296 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1297 const TString& User_Y_Quantity,
1298 const Int_t& n1StexStin,
1299 const Int_t& i0StinEcha) {
1300 Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, "");
1301 }
1302
1303 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1304 const TString& User_Y_Quantity,
1305 const Int_t& n1StexStin,
1306 const Int_t& i0StinEcha,
1307 const TString& UserPlotOption) {
1308 TString CallingMethod = "1D";
1309
1310 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1311
1312 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1313 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1314
1315 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1316 if (StandardPlotOption != fAllXtalsInStinPlot) {
1317 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1318 ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, fZerv, TechHistoCode, StandardPlotOption);
1319 }
1320 if (StandardPlotOption == fAllXtalsInStinPlot && fAlreadyRead >= 1 && fAlreadyRead <= fEcal->MaxCrysInStin()) {
1321 if (Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "MSp") {
1322 XtalSamplesEv(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);
1323 }
1324 if (Standard_X_Quantity == "MSp" && Standard_Y_Quantity == "NOS") {
1325 EvSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);
1326 }
1327 if (Standard_X_Quantity == "Smp" && Standard_Y_Quantity == "SSp") {
1328 XtalSamplesSigma(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);
1329 }
1330 if (Standard_X_Quantity == "SSp" && Standard_Y_Quantity == "NOS") {
1331 SigmaSamplesXtals(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, StandardPlotOption);
1332 }
1333 }
1334 } else {
1335 fFlagUserHistoMin = "OFF";
1336 fFlagUserHistoMax = "OFF";
1337 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1338 }
1339 }
1340
1341 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1342 const TString& User_X_Quantity,
1343 const TString& User_Y_Quantity,
1344 const Int_t& n1StexStin,
1345 const Int_t& i0StinEcha,
1346 const Int_t& n1Sample) {
1347 Plot1DHisto(InputHisto, User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");
1348 }
1349
1350 void TEcnaHistos::Plot1DHisto(const TVectorD& InputHisto,
1351 const TString& User_X_Quantity,
1352 const TString& User_Y_Quantity,
1353 const Int_t& n1StexStin,
1354 const Int_t& i0StinEcha,
1355 const Int_t& n1Sample,
1356 const TString& UserPlotOption) {
1357 TString CallingMethod = "1D";
1358
1359 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1360
1361 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1362 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1363
1364 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1365
1366 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1367 Int_t i0Sample = n1Sample - 1;
1368 fAlreadyRead = 1;
1369 ViewHisto(InputHisto, fAlreadyRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1370 } else {
1371 fFlagUserHistoMin = "OFF";
1372 fFlagUserHistoMax = "OFF";
1373 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1374 }
1375 }
1376
1377 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1378 const TString& User_Y_Quantity,
1379 const Int_t& n1StexStin,
1380 const Int_t& i0StinEcha,
1381 const Int_t& n1Sample) {
1382 Plot1DHisto(User_X_Quantity, User_Y_Quantity, n1StexStin, i0StinEcha, n1Sample, "");
1383 }
1384
1385 void TEcnaHistos::Plot1DHisto(const TString& User_X_Quantity,
1386 const TString& User_Y_Quantity,
1387 const Int_t& n1StexStin,
1388 const Int_t& i0StinEcha,
1389 const Int_t& n1Sample,
1390 const TString& UserPlotOption) {
1391 TString CallingMethod = "1D";
1392
1393 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1394
1395 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1396 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1397
1398 Int_t i0Sample = n1Sample - 1;
1399
1400 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1401 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1402 ViewHisto(fReadHistoDummy, fTobeRead, n1StexStin, i0StinEcha, i0Sample, TechHistoCode, StandardPlotOption);
1403 } else {
1404 fFlagUserHistoMin = "OFF";
1405 fFlagUserHistoMax = "OFF";
1406 std::cout << "!TEcnaHistos::Plot1DHisto(...)> Histo cannot be reached." << fTTBELL << std::endl;
1407 }
1408 }
1409
1410
1411
1412
1413
1414
1415 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity,
1416 const TString& User_Y_Quantity,
1417 const TString& list_of_run_file_name,
1418 const Int_t& StexStin_A,
1419 const Int_t& i0StinEcha) {
1420 PlotHistory(User_X_Quantity, User_Y_Quantity, list_of_run_file_name, StexStin_A, i0StinEcha, "");
1421 }
1422
1423 void TEcnaHistos::PlotHistory(const TString& User_X_Quantity,
1424 const TString& User_Y_Quantity,
1425 const TString& list_of_run_file_name,
1426 const Int_t& StexStin_A,
1427 const Int_t& i0StinEcha,
1428 const TString& UserPlotOption) {
1429 TString CallingMethod = "Time";
1430
1431 TString StandardPlotOption = fCnaParHistos->BuildStandardPlotOption(CallingMethod, UserPlotOption);
1432
1433 TString Standard_X_Quantity = fCnaParHistos->BuildStandard1DHistoCodeX(CallingMethod, User_X_Quantity);
1434 TString Standard_Y_Quantity = fCnaParHistos->BuildStandard1DHistoCodeY(CallingMethod, User_Y_Quantity);
1435
1436 if (Standard_X_Quantity != "?" && Standard_Y_Quantity != "?") {
1437 TString TechHistoCode = fCnaParHistos->GetTechHistoCode(Standard_X_Quantity, Standard_Y_Quantity);
1438 ViewHistime(list_of_run_file_name, StexStin_A, i0StinEcha, TechHistoCode, StandardPlotOption);
1439 } else {
1440 fFlagUserHistoMin = "OFF";
1441 fFlagUserHistoMax = "OFF";
1442 std::cout << "!TEcnaHistos::PlotHistory(...)> Histo cannot be reached." << fTTBELL << std::endl;
1443 }
1444 }
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490 void TEcnaHistos::ViewMatrix(const TMatrixD& arg_read_matrix,
1491 const Int_t& arg_AlreadyRead,
1492 const Int_t& StexStin_A,
1493 const Int_t& StexStin_B,
1494 const Int_t& MatrixBinIndex,
1495 const TString& CorOrCov,
1496 const TString& BetweenWhat,
1497 const TString& PlotOption) {
1498
1499
1500 if ((fFapStexNumber > 0) && (fFapStexNumber <= fEcal->MaxStexInStas())) {
1501 Bool_t OKArray = kFALSE;
1502 Bool_t OKData = kFALSE;
1503 TVectorD vStin(fEcal->MaxStinEcnaInStex());
1504
1505 if (arg_AlreadyRead == fTobeRead) {
1506 fMyRootFile->PrintNoComment();
1507 fMyRootFile->FileParameters(fFapAnaType,
1508 fFapNbOfSamples,
1509 fFapRunNumber,
1510 fFapFirstReqEvtNumber,
1511 fFapLastReqEvtNumber,
1512 fFapReqNbOfEvts,
1513 fFapStexNumber,
1514 fCfgResultsRootFilePath.Data());
1515 OKArray = fMyRootFile->LookAtRootFile();
1516 if (OKArray == kTRUE) {
1517 fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);
1518 TString fp_name_short = fMyRootFile->GetRootFileNameShort();
1519
1520
1521
1522 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
1523 vStin(i) = (Double_t)0.;
1524 }
1525 vStin = fMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
1526
1527 fStartDate = fMyRootFile->GetStartDate();
1528 fStopDate = fMyRootFile->GetStopDate();
1529 fRunType = fMyRootFile->GetRunType();
1530
1531 if (fMyRootFile->DataExist() == kTRUE) {
1532 OKData = kTRUE;
1533 }
1534 }
1535 }
1536 if (arg_AlreadyRead >= 1) {
1537 OKArray = kTRUE;
1538 OKData = kTRUE;
1539 if (fFlagSubDet == "EB") {
1540 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
1541 vStin(i) = i;
1542 }
1543 }
1544 if (fFlagSubDet == "EE") {
1545 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
1546 vStin(i) = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i));
1547 }
1548 }
1549 }
1550
1551 if (OKArray == kTRUE)
1552 {
1553 fStatusFileFound = kTRUE;
1554
1555 if (OKData == kTRUE) {
1556 fStatusDataExist = kTRUE;
1557
1558 Int_t Stin_X_ok = 0;
1559 Int_t Stin_Y_ok = 0;
1560
1561 if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins)) {
1562 Stin_X_ok = 1;
1563 Stin_Y_ok = 1;
1564 }
1565 if (BetweenWhat == fBetweenSamples) {
1566 Stin_Y_ok = 1;
1567 }
1568
1569 for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++) {
1570 if (vStin(index_Stin) == StexStin_A) {
1571 Stin_X_ok = 1;
1572 }
1573 if (vStin(index_Stin) == StexStin_B) {
1574 Stin_Y_ok = 1;
1575 }
1576 }
1577
1578 if (Stin_X_ok == 1 && Stin_Y_ok == 1) {
1579 Int_t MatSize = -1;
1580 Int_t ReadMatSize = -1;
1581 Int_t i0StinEcha = -1;
1582
1583
1584 if (BetweenWhat == fBetweenSamples) {
1585 ReadMatSize = fFapNbOfSamples;
1586 MatSize = fEcal->MaxSampADC();
1587 i0StinEcha = (Int_t)MatrixBinIndex;
1588 }
1589
1590 if (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels) {
1591 ReadMatSize = fEcal->MaxCrysInStin();
1592 MatSize = fEcal->MaxCrysInStin();
1593 }
1594
1595 if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins)) {
1596 ReadMatSize = fEcal->MaxStinEcnaInStex();
1597 MatSize = fEcal->MaxStinInStex();
1598 }
1599
1600
1601 if ((BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) ||
1602 (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels
1603 ) ||
1604 ((BetweenWhat == fBetweenSamples) && (i0StinEcha >= 0) && (i0StinEcha < fEcal->MaxCrysInStin()))) {
1605 TMatrixD read_matrix(ReadMatSize, ReadMatSize);
1606 for (Int_t i = 0; i - ReadMatSize < 0; i++) {
1607 for (Int_t j = 0; j - ReadMatSize < 0; j++) {
1608 read_matrix(i, j) = (Double_t)0.;
1609 }
1610 }
1611
1612 Bool_t OKData = kFALSE;
1613 if (arg_AlreadyRead == fTobeRead) {
1614 if (BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix) {
1615 read_matrix = fMyRootFile->ReadCovariancesBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);
1616 }
1617
1618 if (BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix) {
1619 read_matrix = fMyRootFile->ReadCorrelationsBetweenSamples(StexStin_A, i0StinEcha, ReadMatSize);
1620 }
1621
1622 if (BetweenWhat == fLFBetweenChannels && CorOrCov == fCovarianceMatrix) {
1623 read_matrix =
1624 fMyRootFile->ReadLowFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);
1625 }
1626
1627 if (BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix) {
1628 read_matrix =
1629 fMyRootFile->ReadLowFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);
1630 }
1631
1632 if (BetweenWhat == fHFBetweenChannels && CorOrCov == fCovarianceMatrix) {
1633 read_matrix =
1634 fMyRootFile->ReadHighFrequencyCovariancesBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);
1635 }
1636
1637 if (BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix) {
1638 read_matrix =
1639 fMyRootFile->ReadHighFrequencyCorrelationsBetweenChannels(StexStin_A, StexStin_B, ReadMatSize);
1640 }
1641
1642 if (BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix) {
1643 read_matrix = fMyRootFile->ReadLowFrequencyMeanCorrelationsBetweenStins(ReadMatSize);
1644 }
1645
1646 if (BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix) {
1647 read_matrix = fMyRootFile->ReadHighFrequencyMeanCorrelationsBetweenStins(ReadMatSize);
1648 }
1649
1650 OKData = fMyRootFile->DataExist();
1651 } else {
1652 read_matrix = arg_read_matrix;
1653 OKData = kTRUE;
1654 }
1655
1656 if (OKData == kTRUE) {
1657 fStatusDataExist = kTRUE;
1658
1659 if (PlotOption == "ASCII") {
1660 WriteMatrixAscii(BetweenWhat, CorOrCov, StexStin_A, MatrixBinIndex, ReadMatSize, read_matrix);
1661 } else {
1662
1663 char f_in_mat_tit[charArrLen];
1664
1665 if (BetweenWhat == fBetweenSamples && CorOrCov == fCovarianceMatrix) {
1666 sprintf(f_in_mat_tit, "Covariance(Sample, Sample')");
1667 }
1668 if (BetweenWhat == fBetweenSamples && CorOrCov == fCorrelationMatrix) {
1669 sprintf(f_in_mat_tit, "Correlation(Sample, Sample')");
1670 }
1671
1672 if (fFlagSubDet == "EB") {
1673 if (BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix) {
1674 sprintf(f_in_mat_tit, "Mean LF |Cor(Xtal,Xtal')| for each (Tower,Tower')");
1675 }
1676 if (BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix) {
1677 sprintf(f_in_mat_tit, "Mean HF |Cor(Xtal,Xtal')| for each (Tower,Tower')");
1678 }
1679 }
1680 if (fFlagSubDet == "EE") {
1681 if (BetweenWhat == fLFBetweenStins && CorOrCov == fCorrelationMatrix) {
1682 sprintf(f_in_mat_tit, "Mean LF |Cor(Xtal,Xtal')| for each (SC,SC')");
1683 }
1684 if (BetweenWhat == fHFBetweenStins && CorOrCov == fCorrelationMatrix) {
1685 sprintf(f_in_mat_tit, "Mean HF |Cor(Xtal,Xtal')| for each (SC,SC')");
1686 }
1687 }
1688
1689 if (BetweenWhat == fLFBetweenChannels && CorOrCov == fCorrelationMatrix) {
1690 if (fFlagSubDet == "EB") {
1691 sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");
1692 }
1693 if (fFlagSubDet == "EE") {
1694 sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");
1695 }
1696 }
1697 if (BetweenWhat == fHFBetweenChannels && CorOrCov == fCorrelationMatrix) {
1698 if (fFlagSubDet == "EB") {
1699 sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') matrix elts for (Tow,Tow')");
1700 }
1701 if (fFlagSubDet == "EE") {
1702 sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') matrix elts for (SC,SC')");
1703 }
1704 }
1705
1706
1707 TString axis_x_var_name;
1708 TString axis_y_var_name;
1709
1710 char f_in_axis_x[charArrLen];
1711 char f_in_axis_y[charArrLen];
1712
1713 if (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins) {
1714 if (fFlagSubDet == "EB") {
1715 sprintf(f_in_axis_x, " %s number ", fFapStinName.Data());
1716 }
1717 if (fFlagSubDet == "EE") {
1718 sprintf(f_in_axis_x, " %s number for construction ", fFapStinName.Data());
1719 }
1720
1721 axis_x_var_name = f_in_axis_x;
1722 axis_y_var_name = f_in_axis_x;
1723 }
1724 if (BetweenWhat == fBetweenSamples) {
1725 axis_x_var_name = " Sample ";
1726 axis_y_var_name = " Sample ";
1727 }
1728 if (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels) {
1729 sprintf(f_in_axis_x, " Crystal %s %d ", fFapStinName.Data(), StexStin_A);
1730 sprintf(f_in_axis_y, " Crystal %s %d ", fFapStinName.Data(), StexStin_B);
1731 axis_x_var_name = f_in_axis_x;
1732 axis_y_var_name = f_in_axis_y;
1733 }
1734
1735 Int_t nb_binx = MatSize;
1736 Int_t nb_biny = MatSize;
1737 Axis_t xinf_bid = (Axis_t)0.;
1738 Axis_t xsup_bid = (Axis_t)MatSize;
1739 Axis_t yinf_bid = (Axis_t)0.;
1740 Axis_t ysup_bid = (Axis_t)MatSize;
1741
1742 if ((fFlagSubDet == "EE") && (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins)) {
1743 if (fFapStexNumber == 1 || fFapStexNumber == 3) {
1744 xinf_bid += fEcal->MaxStinInStex();
1745 xsup_bid += fEcal->MaxStinInStex();
1746 yinf_bid += fEcal->MaxStinInStex();
1747 ysup_bid += fEcal->MaxStinInStex();
1748 }
1749 }
1750
1751 TH2D* h_fbid0 =
1752 new TH2D("bidim", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
1753 fCnewRoot++;
1754 h_fbid0->Reset();
1755
1756 h_fbid0->GetXaxis()->SetTitle(axis_x_var_name);
1757 h_fbid0->GetYaxis()->SetTitle(axis_y_var_name);
1758
1759
1760 if ((fFlagSubDet == "EE") && (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins)) {
1761 for (Int_t i = 0; i < ReadMatSize; i++) {
1762 for (Int_t j = 0; j < ReadMatSize; j++) {
1763 Int_t ip = i + 1;
1764 Double_t xi_bid = (Double_t)fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, ip);
1765 Int_t jp = j + 1;
1766 Double_t xj_bid = (Double_t)fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, jp);
1767 if (xi_bid > 0 && xj_bid > 0) {
1768 Int_t xi_bid_m = xi_bid - 1;
1769 Int_t xj_bid_m = xj_bid - 1;
1770 h_fbid0->Fill(xi_bid_m, xj_bid_m, read_matrix(i, j));
1771 }
1772 }
1773 }
1774 } else {
1775 for (Int_t i = 0; i - ReadMatSize < 0; i++) {
1776 Double_t xi = (Double_t)i;
1777 for (Int_t j = 0; j < ReadMatSize; j++) {
1778 Double_t xj = (Double_t)j;
1779 Double_t mat_val = (Double_t)read_matrix(i, j);
1780 h_fbid0->Fill(xi, xj, (Double_t)mat_val);
1781 }
1782 }
1783 }
1784
1785
1786
1787 TString quantity_code = "D_MCs_ChNb";
1788 if (CorOrCov == fCorrelationMatrix) {
1789 if (BetweenWhat == fBetweenSamples) {
1790 quantity_code = "D_MCs_ChNb";
1791 }
1792
1793 if (BetweenWhat == fLFBetweenChannels) {
1794 quantity_code = "H2LFccMosMatrix";
1795 }
1796 if (BetweenWhat == fHFBetweenChannels) {
1797 quantity_code = "H2HFccMosMatrix";
1798 }
1799
1800 if (BetweenWhat == fLFBetweenStins) {
1801 quantity_code = "H2LFccMosMatrix";
1802 }
1803 if (BetweenWhat == fHFBetweenStins) {
1804 quantity_code = "H2HFccMosMatrix";
1805 }
1806 }
1807 if (CorOrCov == fCovarianceMatrix) {
1808 quantity_code = "H2HFccMosMatrix";
1809 }
1810
1811 SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
1812 SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
1813
1814 if (fUserHistoMin == fUserHistoMax) {
1815 fFlagUserHistoMin = "AUTO";
1816 fFlagUserHistoMax = "AUTO";
1817 }
1818
1819 if (fFlagUserHistoMin == "ON") {
1820 SetYminMemoFromValue(quantity_code, fUserHistoMin);
1821 fFlagUserHistoMin = "OFF";
1822 }
1823 if (fFlagUserHistoMax == "ON") {
1824 SetYmaxMemoFromValue(quantity_code, fUserHistoMax);
1825 fFlagUserHistoMax = "OFF";
1826 }
1827
1828 if (fFlagUserHistoMin == "AUTO") {
1829 SetYminMemoFromValue(quantity_code, h_fbid0->GetMinimum());
1830 fFlagUserHistoMin = "OFF";
1831 }
1832 if (fFlagUserHistoMax == "AUTO") {
1833 SetYmaxMemoFromValue(quantity_code, h_fbid0->GetMaximum());
1834 fFlagUserHistoMax = "OFF";
1835 }
1836
1837 if (CorOrCov == fCorrelationMatrix) {
1838 if (BetweenWhat == fBetweenSamples) {
1839 SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_MCs_ChNb");
1840 }
1841 if (BetweenWhat == fLFBetweenStins || BetweenWhat == fLFBetweenChannels) {
1842 SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2LFccMosMatrix");
1843 }
1844 if (BetweenWhat == fHFBetweenStins || BetweenWhat == fHFBetweenChannels) {
1845 SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");
1846 }
1847
1848
1849
1850
1851
1852
1853
1854
1855 }
1856 if (CorOrCov == fCovarianceMatrix) {
1857 if (BetweenWhat == fBetweenSamples) {
1858 SetYminMemoFromPreviousMemo("D_TNo_ChNb");
1859 SetYmaxMemoFromPreviousMemo("D_TNo_ChNb");
1860 SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "D_TNo_ChNb");
1861 }
1862 if (BetweenWhat == fLFBetweenStins || BetweenWhat == fHFBetweenStins ||
1863 BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels) {
1864 SetHistoFrameYminYmaxFromMemo((TH1D*)h_fbid0, "H2HFccMosMatrix");
1865 }
1866 }
1867
1868
1869 char f_in[charArrLen];
1870
1871 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
1872 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
1873
1874
1875 TString HistoType;
1876 HistoType.Resize(charArrLen);
1877 HistoType = "(no quantity type info)";
1878
1879 if (PlotOption == "COLZ") {
1880 HistoType = "colz";
1881 }
1882 if (PlotOption == "BOX") {
1883 HistoType = "colz";
1884 }
1885 if (PlotOption == "TEXT") {
1886 HistoType = "colz";
1887 }
1888 if (PlotOption == "CONTZ") {
1889 HistoType = "colz";
1890 }
1891 if (PlotOption == "LEGO2Z") {
1892 HistoType = "lego";
1893 }
1894 if (PlotOption == "SURF1Z") {
1895 HistoType = "surf";
1896 }
1897 if (PlotOption == "SURF2Z") {
1898 HistoType = "surf";
1899 }
1900 if (PlotOption == "SURF3Z") {
1901 HistoType = "surf";
1902 }
1903 if (PlotOption == "SURF4") {
1904 HistoType = "surf";
1905 }
1906
1907 if (fFlagSubDet == "EB") {
1908 fFapStexBarrel = fEcalNumbering->GetSMHalfBarrel(fFapStexNumber);
1909 SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1910 }
1911 if (fFlagSubDet == "EE") {
1912 fFapStexType = fEcalNumbering->GetEEDeeType(fFapStexNumber);
1913 fFapStinQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(StexStin_A);
1914 SetAllPavesViewMatrix(BetweenWhat.Data(), StexStin_A, StexStin_B, i0StinEcha);
1915 }
1916
1917
1918 TString name_cov_cor;
1919 name_cov_cor.Resize(charArrLen);
1920 name_cov_cor = "?";
1921 if (CorOrCov == fCovarianceMatrix) {
1922 name_cov_cor = "Covariance";
1923 }
1924 if (CorOrCov == fCorrelationMatrix) {
1925 name_cov_cor = "Correlation";
1926 }
1927
1928 TString name_chan_samp;
1929 name_chan_samp.Resize(charArrLen);
1930 name_chan_samp = "?";
1931
1932 if (BetweenWhat == fLFBetweenStins) {
1933 name_chan_samp = "LFccMos";
1934 }
1935 if (BetweenWhat == fHFBetweenStins) {
1936 name_chan_samp = "HFccMos";
1937 }
1938
1939 if (BetweenWhat == fLFBetweenChannels) {
1940 name_chan_samp = "LF_cc";
1941 }
1942 if (BetweenWhat == fHFBetweenChannels) {
1943 name_chan_samp = "HF_cc";
1944 }
1945
1946 if (BetweenWhat == fBetweenSamples) {
1947 name_chan_samp = "Between_Samples";
1948 }
1949
1950 TString name_visu;
1951 name_visu.Resize(charArrLen);
1952 name_visu = "?";
1953
1954 name_visu = PlotOption;
1955
1956 if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins)) {
1957 sprintf(f_in,
1958 "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s",
1959 name_cov_cor.Data(),
1960 name_chan_samp.Data(),
1961 fFapAnaType.Data(),
1962 fFapNbOfSamples,
1963 fFapRunNumber,
1964 fFapFirstReqEvtNumber,
1965 fFapLastReqEvtNumber,
1966 fFapStexName.Data(),
1967 fFapStexNumber,
1968 name_visu.Data());
1969 }
1970
1971 if (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels) {
1972 sprintf(f_in,
1973 "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_%s",
1974 name_cov_cor.Data(),
1975 name_chan_samp.Data(),
1976 fFapAnaType.Data(),
1977 fFapNbOfSamples,
1978 fFapRunNumber,
1979 fFapFirstReqEvtNumber,
1980 fFapLastReqEvtNumber,
1981 fFapStexName.Data(),
1982 fFapStexNumber,
1983 fFapStexName.Data(),
1984 StexStin_A,
1985 fFapStexName.Data(),
1986 StexStin_B,
1987 name_visu.Data());
1988 }
1989
1990 if (BetweenWhat == fBetweenSamples) {
1991 sprintf(f_in,
1992 "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%sX%d_%sY%d_ElecChannel_%d_%s",
1993 name_cov_cor.Data(),
1994 name_chan_samp.Data(),
1995 fFapAnaType.Data(),
1996 fFapNbOfSamples,
1997 fFapRunNumber,
1998 fFapFirstReqEvtNumber,
1999 fFapLastReqEvtNumber,
2000 fFapStexName.Data(),
2001 fFapStexNumber,
2002 fFapStexName.Data(),
2003 StexStin_A,
2004 fFapStexName.Data(),
2005 StexStin_B,
2006 MatrixBinIndex,
2007 name_visu.Data());
2008 }
2009
2010
2011
2012 SetHistoPresentation((TH1D*)h_fbid0, HistoType);
2013 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
2014 fCnewRoot++;
2015 fCurrentCanvas = MainCanvas;
2016 fCurrentCanvasName = f_in;
2017
2018
2019
2020
2021
2022 if (fPavComGeneralTitle != nullptr) {
2023 fPavComGeneralTitle->Draw();
2024 }
2025 fPavComStex->Draw();
2026
2027 if (BetweenWhat == fLFBetweenChannels || BetweenWhat == fHFBetweenChannels) {
2028 fPavComStin->Draw();
2029 }
2030 if (BetweenWhat == fBetweenSamples) {
2031 fPavComStin->Draw();
2032 fPavComXtal->Draw();
2033 }
2034
2035 fPavComAnaRun->Draw();
2036 fPavComNbOfEvts->Draw();
2037
2038 Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2039 Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2040 MainCanvas->Divide(1, 1, x_margin, y_margin);
2041 gPad->cd(1);
2042
2043
2044 Int_t logy = 0;
2045 gPad->SetLogy(logy);
2046 if ((BetweenWhat == fLFBetweenStins) || (BetweenWhat == fHFBetweenStins)) {
2047 gPad->SetGrid(1, 1);
2048 }
2049 h_fbid0->DrawCopy(PlotOption);
2050 h_fbid0->SetStats(true);
2051 gPad->Update();
2052 h_fbid0->Delete();
2053 h_fbid0 = nullptr;
2054 fCdeleteRoot++;
2055
2056
2057 }
2058 }
2059 else {
2060 fStatusDataExist = kFALSE;
2061 }
2062 }
2063
2064
2065
2066 else {
2067 if (BetweenWhat == fBetweenSamples) {
2068 std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* ==> Wrong channel number in " << fFapStinName.Data()
2069 << ". Value = " << i0StinEcha << " (required range: [0, " << fEcal->MaxCrysInStin() - 1 << "] )"
2070 << fTTBELL << std::endl;
2071 }
2072
2073
2074
2075
2076
2077
2078
2079
2080 }
2081 } else
2082 {
2083
2084 if (Stin_X_ok != 1) {
2085 if (fFlagSubDet == "EB") {
2086 std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> " << fFapStinName.Data() << " " << StexStin_A
2087 << ", " << fFapStinName.Data() << " not found. Available numbers = ";
2088 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2089 if (vStin(i) > 0) {
2090 std::cout << vStin(i) << ", ";
2091 }
2092 }
2093 }
2094
2095 if (fFlagSubDet == "EE") {
2096 std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> " << fFapStinName.Data() << " "
2097 << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_A) << ", "
2098 << fFapStinName.Data() << " not found. Available numbers = ";
2099 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2100 if (vStin(i) > 0) {
2101 std::cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";
2102 }
2103 }
2104 }
2105 std::cout << fTTBELL << std::endl;
2106 }
2107 if (Stin_Y_ok != 1) {
2108 if (fFlagSubDet == "EB") {
2109 std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> " << fFapStinName.Data() << " " << StexStin_B
2110 << ", " << fFapStinName.Data() << " not found. Available numbers = ";
2111 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2112 if (vStin(i) > 0) {
2113 std::cout << vStin(i) << ", ";
2114 }
2115 }
2116 }
2117
2118 if (fFlagSubDet == "EE") {
2119 std::cout << "*TEcnaHistos::ViewMatrix(...)> *ERROR* =====> " << fFapStinName.Data() << " "
2120 << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, StexStin_B) << ", "
2121 << fFapStinName.Data() << " not found. Available numbers = ";
2122 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2123 if (vStin(i) > 0) {
2124 std::cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";
2125 }
2126 }
2127 }
2128 std::cout << fTTBELL << std::endl;
2129 }
2130 }
2131 }
2132 else {
2133 fStatusDataExist = kFALSE;
2134 std::cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
2135 << " Histo not available." << fTTBELL << std::endl;
2136 fFlagUserHistoMin = "OFF";
2137 fFlagUserHistoMax = "OFF";
2138 }
2139 }
2140 else {
2141 fStatusFileFound = kFALSE;
2142 std::cout << "!TEcnaHistos::ViewMatrix(...)> *ERROR* =====> "
2143 << " ROOT file not found" << fTTBELL << std::endl;
2144 }
2145 }
2146 else {
2147 std::cout << "!TEcnaHistos::ViewMatrix(...)> " << fFapStexName.Data() << " = " << fFapStexNumber
2148 << ". Out of range (range = [1," << fEcal->MaxStexInStas() << "]) " << fTTBELL << std::endl;
2149 }
2150 }
2151
2152
2153
2154
2155
2156
2157
2158 void TEcnaHistos::CorrelationsBetweenSamples(const Int_t& StinNumber) {
2159 TString CorOrCov = fCorrelationMatrix;
2160 ViewStin(StinNumber, CorOrCov);
2161 }
2162
2163 void TEcnaHistos::CovariancesBetweenSamples(const Int_t& StinNumber) {
2164 TString CorOrCov = fCovarianceMatrix;
2165 ViewStin(StinNumber, CorOrCov);
2166 }
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177 void TEcnaHistos::ViewStin(const Int_t& cStexStin, const TString& CorOrCov) {
2178
2179
2180
2181
2182
2183 if ((fFapStexNumber > 0) && fFapStexNumber <= fEcal->MaxStexInStas()) {
2184 Int_t StexStin = cStexStin;
2185 if (fFlagSubDet == "EE") {
2186 StexStin = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(fFapStexNumber, cStexStin);
2187 }
2188
2189 fMyRootFile->PrintNoComment();
2190 fMyRootFile->FileParameters(fFapAnaType,
2191 fFapNbOfSamples,
2192 fFapRunNumber,
2193 fFapFirstReqEvtNumber,
2194 fFapLastReqEvtNumber,
2195 fFapReqNbOfEvts,
2196 fFapStexNumber,
2197 fCfgResultsRootFilePath.Data());
2198
2199 if (fMyRootFile->LookAtRootFile() == kTRUE)
2200 {
2201 fStatusFileFound = kTRUE;
2202
2203 fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);
2204 TString fp_name_short = fMyRootFile->GetRootFileNameShort();
2205
2206
2207
2208 TVectorD vStin(fEcal->MaxStinEcnaInStex());
2209 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2210 vStin(i) = (Double_t)0.;
2211 }
2212 vStin = fMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
2213
2214 if (fMyRootFile->DataExist() == kTRUE) {
2215 fStatusDataExist = kTRUE;
2216
2217 Int_t Stin_ok = 0;
2218 for (Int_t index_Stin = 0; index_Stin < fEcal->MaxStinEcnaInStex(); index_Stin++) {
2219 if (vStin(index_Stin) == StexStin) {
2220 Stin_ok++;
2221 }
2222 }
2223
2224 if (Stin_ok == 1) {
2225 fStartDate = fMyRootFile->GetStartDate();
2226 fStopDate = fMyRootFile->GetStopDate();
2227 fRunType = fMyRootFile->GetRunType();
2228
2229
2230 char f_in_mat_tit[charArrLen];
2231
2232 if (CorOrCov == fCovarianceMatrix) {
2233 sprintf(f_in_mat_tit, "Xtal's Cov(s,s') matrices in %s.", fFapStinName.Data());
2234 }
2235 if (CorOrCov == fCorrelationMatrix) {
2236 sprintf(f_in_mat_tit, "Xtal's Cor(s,s') matrices in %s.", fFapStinName.Data());
2237 }
2238
2239
2240 Int_t GeoBidSize = fEcal->MaxSampADC() * fEcal->MaxCrysHocoInStin();
2241 Int_t nb_binx = GeoBidSize;
2242 Int_t nb_biny = GeoBidSize;
2243 Axis_t xinf_bid = (Axis_t)0.;
2244 Axis_t xsup_bid = (Axis_t)GeoBidSize;
2245 Axis_t yinf_bid = (Axis_t)0.;
2246 Axis_t ysup_bid = (Axis_t)GeoBidSize;
2247
2248
2249
2250
2251 TH2D* h_geo_bid =
2252 new TH2D("geobidim_ViewStin", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
2253 fCnewRoot++;
2254
2255 h_geo_bid->Reset();
2256
2257
2258
2259
2260 Int_t ReadMatSize = fFapNbOfSamples;
2261 Int_t MatSize = fEcal->MaxSampADC();
2262 TMatrixD read_matrix(ReadMatSize, ReadMatSize);
2263 for (Int_t i = 0; i - ReadMatSize < 0; i++) {
2264 for (Int_t j = 0; j - ReadMatSize < 0; j++) {
2265 read_matrix(i, j) = (Double_t)0.;
2266 }
2267 }
2268
2269 Int_t i_data_exist = 0;
2270
2271 for (Int_t n_crys = 0; n_crys < fEcal->MaxCrysInStin(); n_crys++) {
2272 if (CorOrCov == fCovarianceMatrix) {
2273 read_matrix = fMyRootFile->ReadCovariancesBetweenSamples(StexStin, n_crys, ReadMatSize);
2274 }
2275 if (CorOrCov == fCorrelationMatrix) {
2276 read_matrix = fMyRootFile->ReadCorrelationsBetweenSamples(StexStin, n_crys, ReadMatSize);
2277 }
2278
2279 if (fMyRootFile->DataExist() == kFALSE) {
2280 fStatusDataExist = kFALSE;
2281 break;
2282 } else {
2283 fStatusDataExist = kTRUE;
2284 i_data_exist++;
2285
2286 for (Int_t i_samp = 0; i_samp < ReadMatSize; i_samp++) {
2287 Int_t i_xgeo = GetXSampInStin(fFapStexNumber, StexStin, n_crys, i_samp);
2288 for (Int_t j_samp = 0; j_samp < ReadMatSize; j_samp++) {
2289 Int_t j_ygeo = GetYSampInStin(fFapStexNumber, StexStin, n_crys, j_samp);
2290 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)j_ygeo, (Double_t)read_matrix(i_samp, j_samp));
2291 }
2292 }
2293 }
2294 }
2295
2296
2297
2298 TString quantity_code = "D_MCs_ChNb";
2299 if (CorOrCov == fCorrelationMatrix) {
2300 quantity_code = "D_MCs_ChNb";
2301 }
2302 if (CorOrCov == fCovarianceMatrix) {
2303 quantity_code = "H2HFccMosMatrix";
2304 }
2305
2306
2307 SetYminMemoFromValue(quantity_code, fCnaParHistos->GetYminDefaultValue(quantity_code));
2308 SetYmaxMemoFromValue(quantity_code, fCnaParHistos->GetYmaxDefaultValue(quantity_code));
2309
2310 if (fUserHistoMin == fUserHistoMax) {
2311 fFlagUserHistoMin = "AUTO";
2312 fFlagUserHistoMax = "AUTO";
2313 }
2314
2315 if (fFlagUserHistoMin == "ON") {
2316 SetYminMemoFromValue(quantity_code, fUserHistoMin);
2317 fFlagUserHistoMin = "OFF";
2318 }
2319 if (fFlagUserHistoMax == "ON") {
2320 SetYmaxMemoFromValue(quantity_code, fUserHistoMax);
2321 fFlagUserHistoMax = "OFF";
2322 }
2323
2324 if (fFlagUserHistoMin == "AUTO") {
2325 SetYminMemoFromValue(quantity_code, h_geo_bid->GetMinimum());
2326 fFlagUserHistoMin = "OFF";
2327 }
2328 if (fFlagUserHistoMax == "AUTO") {
2329 SetYmaxMemoFromValue(quantity_code, h_geo_bid->GetMaximum());
2330 fFlagUserHistoMax = "OFF";
2331 }
2332
2333 if (CorOrCov == fCorrelationMatrix) {
2334 SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_MCs_ChNb");
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344 }
2345 if (CorOrCov == fCovarianceMatrix) {
2346 SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, "D_TNo_ChNb");
2347 }
2348
2349
2350 if (i_data_exist > 0) {
2351 char f_in[charArrLen];
2352
2353
2354 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2355 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2356
2357
2358 SetAllPavesViewStin(StexStin);
2359
2360
2361 TString name_cov_cor;
2362 name_cov_cor.Resize(charArrLen);
2363 name_cov_cor = "?";
2364 if (CorOrCov == fCovarianceMatrix) {
2365 name_cov_cor = "CovSS_Matrices_in_";
2366 }
2367 if (CorOrCov == fCorrelationMatrix) {
2368 name_cov_cor = "CorSS_Matrices_in_";
2369 }
2370
2371 TString name_visu;
2372 name_visu.Resize(charArrLen);
2373 name_visu = "colz";
2374
2375 sprintf(f_in,
2376 "%s_%s_%s_S1_%d_R%d_%d_%d_%s%d_%s%d_%s",
2377 name_cov_cor.Data(),
2378 fFapStinName.Data(),
2379 fFapAnaType.Data(),
2380 fFapNbOfSamples,
2381 fFapRunNumber,
2382 fFapFirstReqEvtNumber,
2383 fFapLastReqEvtNumber,
2384 fFapStexName.Data(),
2385 fFapStexNumber,
2386 fFapStinName.Data(),
2387 StexStin,
2388 name_visu.Data());
2389
2390 SetHistoPresentation((TH1D*)h_geo_bid, "Stin");
2391
2392 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
2393 fCnewRoot++;
2394 fCurrentCanvas = MainCanvas;
2395 fCurrentCanvasName = f_in;
2396
2397
2398
2399
2400 if (fPavComGeneralTitle != nullptr) {
2401 fPavComGeneralTitle->Draw();
2402 }
2403 fPavComStex->Draw();
2404 fPavComStin->Draw();
2405 fPavComAnaRun->Draw();
2406 fPavComNbOfEvts->Draw();
2407
2408 Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2409 Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2410 MainCanvas->Divide(1, 1, x_margin, y_margin);
2411 gPad->cd(1);
2412
2413 Int_t logy = 0;
2414 gPad->SetLogy(logy);
2415
2416 h_geo_bid->DrawCopy("COLZ");
2417
2418
2419 Int_t size_Hoco = fEcal->MaxCrysHocoInStin();
2420 Int_t size_Veco = fEcal->MaxCrysVecoInStin();
2421
2422 ViewStinGrid(fFapStexNumber, StexStin, MatSize, size_Hoco, size_Veco, " ");
2423
2424 gPad->Update();
2425
2426 h_geo_bid->SetStats(true);
2427
2428
2429 }
2430
2431 h_geo_bid->Delete();
2432 h_geo_bid = nullptr;
2433 fCdeleteRoot++;
2434 } else {
2435 std::cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> " << fFapStinName.Data() << " " << cStexStin
2436 << " not found."
2437 << " Available numbers = ";
2438 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
2439 if (vStin(i) > 0) {
2440 if (fFlagSubDet == "EB") {
2441 std::cout << (Int_t)vStin(i) << ", ";
2442 }
2443 if (fFlagSubDet == "EE") {
2444 std::cout << fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(fFapStexNumber, (Int_t)vStin(i)) << ", ";
2445 }
2446 }
2447 }
2448 std::cout << fTTBELL << std::endl;
2449 }
2450 }
2451 else {
2452 fStatusDataExist = kFALSE;
2453 }
2454 }
2455 else {
2456 fStatusFileFound = kFALSE;
2457
2458 std::cout << "!TEcnaHistos::ViewStin(...)> *ERROR* =====> "
2459 << " ROOT file not found" << fTTBELL << std::endl;
2460 }
2461 } else {
2462 std::cout << "!TEcnaHistos::ViewStin(...)> " << fFapStexName.Data() << " = " << fFapStexNumber
2463 << ". Out of range (range = [1," << fEcal->MaxStexInStas() << "]) " << fTTBELL << std::endl;
2464 }
2465 }
2466
2467
2468
2469
2470
2471
2472
2473 void TEcnaHistos::StinCrystalNumbering(const Int_t& StexNumber, const Int_t& cStexStin) {
2474
2475
2476
2477 if (fFlagSubDet == "EB") {
2478 TowerCrystalNumbering(StexNumber, cStexStin);
2479 }
2480 if (fFlagSubDet == "EE") {
2481 SCCrystalNumbering(StexNumber, cStexStin);
2482 }
2483 }
2484
2485
2486
2487
2488
2489
2490
2491
2492 void TEcnaHistos::TowerCrystalNumbering(const Int_t& SMNumber, const Int_t& n1SMTow) {
2493
2494
2495 if ((SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB())) {
2496 fFapStexBarrel = fEcalNumbering->GetSMHalfBarrel(SMNumber);
2497
2498 Int_t MatSize = fEcal->MaxSampADC();
2499 Int_t size_eta = fEcal->MaxCrysEtaInTow();
2500 Int_t size_phi = fEcal->MaxCrysPhiInTow();
2501
2502
2503
2504 Int_t nb_bins = fEcal->MaxSampADC();
2505 Int_t nx_gbins = nb_bins * size_eta;
2506 Int_t ny_gbins = nb_bins * size_phi;
2507
2508 Axis_t xinf_gbid = (Axis_t)0.;
2509 Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC() * size_eta;
2510 Axis_t yinf_gbid = (Axis_t)0.;
2511 Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC() * size_phi;
2512
2513 TString fg_name = "M0' crystals";
2514 TString fg_tit = "Xtal numbering (chan. in tow, chan. in SM, Xtal in SM, hashed)";
2515
2516
2517 TH2D* h_gbid;
2518 h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(), nx_gbins, xinf_gbid, xsup_gbid, ny_gbins, yinf_gbid, ysup_gbid);
2519 fCnewRoot++;
2520 h_gbid->Reset();
2521
2522
2523
2524 char f_in[charArrLen];
2525
2526
2527
2528 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2529 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2530
2531
2532 Color_t couleur_noir = fCnaParHistos->SetColorsForNumbers("crystal");
2533 Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
2534 Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
2535
2536 gStyle->SetPalette(1, nullptr);
2537
2538
2539 fCnaParHistos->SetViewHistoStyle("Stin");
2540
2541
2542
2543 SetAllPavesViewStinCrysNb(SMNumber, n1SMTow);
2544
2545
2546
2547
2548 sprintf(f_in, "Crystal_Numbering_for_%s_X_%d_%s%d", fFapStinName.Data(), n1SMTow, fFapStexName.Data(), SMNumber);
2549
2550 SetHistoPresentation((TH1D*)h_gbid, "Stin");
2551
2552 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
2553 fCnewRoot++;
2554 fCurrentCanvas = MainCanvas;
2555 fCurrentCanvasName = f_in;
2556
2557
2558
2559
2560 Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2561 Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2562 MainCanvas->Divide(1, 1, x_margin, y_margin);
2563
2564 fPavComStex->Draw();
2565 fPavComStin->Draw();
2566 fPavComLVRB->Draw();
2567
2568 Bool_t b_true = true;
2569 Bool_t b_false = false;
2570 gPad->cd(1);
2571
2572 gStyle->SetMarkerColor(couleur_rouge);
2573
2574 Int_t logy = 0;
2575 gPad->SetLogy(logy);
2576
2577
2578
2579 h_gbid->SetStats(b_false);
2580 h_gbid->DrawCopy("COLZ");
2581
2582
2583
2584
2585
2586 char f_in_elec[charArrLen];
2587 TString TowerLvrbType = fEcalNumbering->GetTowerLvrbType(n1SMTow);
2588 TText* text_elec_num = new TText();
2589 fCnewRoot++;
2590 if (TowerLvrbType == "top") {
2591 text_elec_num->SetTextColor(couleur_rouge);
2592 }
2593 if (TowerLvrbType == "bottom") {
2594 text_elec_num->SetTextColor(couleur_bleu_fonce);
2595 }
2596 text_elec_num->SetTextSize(0.04);
2597
2598 char f_in_sme[charArrLen];
2599 TText* text_sme_num = new TText();
2600 fCnewRoot++;
2601 if (TowerLvrbType == "top") {
2602 text_sme_num->SetTextColor(couleur_rouge);
2603 }
2604 if (TowerLvrbType == "bottom") {
2605 text_sme_num->SetTextColor(couleur_bleu_fonce);
2606 }
2607 text_sme_num->SetTextSize(0.03);
2608
2609 char f_in_sm[charArrLen];
2610 TText* text_sm_num = new TText();
2611 fCnewRoot++;
2612 text_sm_num->SetTextColor(couleur_noir);
2613 text_sm_num->SetTextSize(0.03);
2614
2615 char f_in_hsd[charArrLen];
2616 TText* text_hsd_num = new TText();
2617 fCnewRoot++;
2618 text_hsd_num->SetTextColor(couleur_noir);
2619 text_hsd_num->SetTextSize(0.03);
2620
2621
2622 Int_t i_samp = 0;
2623
2624 Double_t off_set = (Double_t)1.;
2625
2626
2627
2628 for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInTow(); i_chan++) {
2629 Int_t i_xgeo = GetXSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2630 Int_t i_ygeo = GetYSampInStin(SMNumber, n1SMTow, i_chan, i_samp);
2631
2632 Double_t xgi = i_xgeo + 3. * off_set;
2633 Double_t ygj = i_ygeo + 7. * off_set;
2634
2635 Double_t xgi_sme = i_xgeo + 3. * off_set;
2636 Double_t ygj_sme = i_ygeo + 5. * off_set;
2637
2638 Double_t xgi_sm = i_xgeo + 3. * off_set;
2639 Double_t ygj_sm = i_ygeo + 3. * off_set;
2640
2641 Double_t xgi_hsd = i_xgeo + 3. * off_set;
2642 Double_t ygj_hsd = i_ygeo + 1. * off_set;
2643
2644 Int_t i_crys_sme = fEcalNumbering->Get0SMEchaFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2645 Int_t i_crys_sm = fEcalNumbering->Get1SMCrysFrom1SMTowAnd0TowEcha(n1SMTow, i_chan);
2646
2647 Double_t Eta = fEcalNumbering->GetEta(SMNumber, n1SMTow, i_chan);
2648 Double_t Phi = fEcalNumbering->GetPhi(SMNumber, n1SMTow, i_chan);
2649
2650 Int_t i_crys_hsd = fEcalNumbering->GetHashedNumberFromIEtaAndIPhi((Int_t)Eta, (Int_t)Phi);
2651
2652
2653
2654 sprintf(f_in_elec, "%d", i_chan);
2655 text_elec_num->DrawText(xgi, ygj, f_in_elec);
2656
2657 sprintf(f_in_sme, "%d", i_crys_sme);
2658 text_sme_num->DrawText(xgi_sme, ygj_sme, f_in_sme);
2659
2660 sprintf(f_in_sm, "%d", i_crys_sm);
2661 text_sm_num->DrawText(xgi_sm, ygj_sm, f_in_sm);
2662
2663 sprintf(f_in_hsd, "%d", i_crys_hsd);
2664 text_sm_num->DrawText(xgi_hsd, ygj_hsd, f_in_hsd);
2665 }
2666 text_sm_num->Delete();
2667 text_sm_num = nullptr;
2668 fCdeleteRoot++;
2669 text_sme_num->Delete();
2670 text_sme_num = nullptr;
2671 fCdeleteRoot++;
2672 text_elec_num->Delete();
2673 text_elec_num = nullptr;
2674 fCdeleteRoot++;
2675 text_hsd_num->Delete();
2676 text_hsd_num = nullptr;
2677 fCdeleteRoot++;
2678
2679 ViewStinGrid(SMNumber, n1SMTow, MatSize, size_eta, size_phi, "CrystalNumbering");
2680
2681 gPad->Update();
2682 h_gbid->SetStats(b_true);
2683
2684 h_gbid->Delete();
2685 h_gbid = nullptr;
2686 fCdeleteRoot++;
2687
2688 } else {
2689 std::cout << "!TEcnaHistos::TowerCrystalNumbering(...)> SM = " << SMNumber << ". Out of range ( range = [1,"
2690 << fEcal->MaxSMInEB() << "] )" << fTTBELL << std::endl;
2691 }
2692 }
2693
2694
2695
2696
2697
2698
2699
2700
2701 void TEcnaHistos::SCCrystalNumbering(const Int_t& DeeNumber, const Int_t& n1DeeSCCons) {
2702
2703
2704 if ((DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE())) {
2705 Int_t n1DeeSCEcna = fEcalNumbering->Get1DeeSCEcnaFromDeeSCCons(DeeNumber, n1DeeSCCons);
2706 fFapStexType = fEcalNumbering->GetEEDeeType(DeeNumber);
2707 fFapStinQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
2708
2709
2710 Int_t size_IX = fEcal->MaxCrysIXInSC();
2711 Int_t size_IY = fEcal->MaxCrysIYInSC();
2712
2713
2714
2715 Int_t nb_bins = fEcal->MaxSampADC();
2716 Int_t nx_gbins = nb_bins * size_IX;
2717 Int_t ny_gbins = nb_bins * size_IY;
2718
2719 Axis_t xinf_gbid = (Axis_t)0.;
2720 Axis_t xsup_gbid = (Axis_t)fEcal->MaxSampADC() * size_IX;
2721 Axis_t yinf_gbid = (Axis_t)0.;
2722 Axis_t ysup_gbid = (Axis_t)fEcal->MaxSampADC() * size_IY;
2723
2724 TString fg_name = "crystalnbring";
2725 TString fg_tit = "Xtal numbering for construction";
2726
2727 TH2D* h_gbid;
2728 h_gbid = new TH2D(fg_name.Data(), fg_tit.Data(), nx_gbins, xinf_gbid, xsup_gbid, ny_gbins, yinf_gbid, ysup_gbid);
2729 fCnewRoot++;
2730 h_gbid->Reset();
2731
2732
2733
2734 char f_in[charArrLen];
2735
2736
2737
2738 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
2739 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
2740
2741
2742 Color_t couleur_rouge = fCnaParHistos->ColorDefinition("rouge");
2743
2744
2745 gStyle->SetPalette(1, nullptr);
2746
2747 fCnaParHistos->SetViewHistoStyle("Stin");
2748
2749
2750 SetAllPavesViewStinCrysNb(DeeNumber, n1DeeSCEcna);
2751
2752
2753
2754 sprintf(
2755 f_in, "Crystal_Numbering_for_%s_X_%d_%s%d", fFapStinName.Data(), n1DeeSCEcna, fFapStexName.Data(), DeeNumber);
2756
2757 SetHistoPresentation((TH1D*)h_gbid, "Stin");
2758
2759 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
2760 fCnewRoot++;
2761 fCurrentCanvas = MainCanvas;
2762 fCurrentCanvasName = f_in;
2763
2764
2765
2766
2767 Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
2768 Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
2769
2770 MainCanvas->Divide(1, 1, x_margin, y_margin);
2771
2772 fPavComStex->Draw();
2773 fPavComStin->Draw();
2774 fPavComCxyz->Draw();
2775
2776 Bool_t b_true = true;
2777 Bool_t b_false = false;
2778 gPad->cd(1);
2779
2780 gStyle->SetMarkerColor(couleur_rouge);
2781
2782 Int_t logy = 0;
2783 gPad->SetLogy(logy);
2784
2785
2786 h_gbid->SetStats(b_false);
2787 fCnaParHistos->SetViewHistoOffsets((TH1D*)h_gbid, "Stin", " ");
2788 h_gbid->DrawCopy("COLZ");
2789
2790
2791
2792 TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
2793 TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
2794 TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
2795 Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
2796
2797 char f_in_elec[charArrLen];
2798 TText* text_elec_num = new TText();
2799 fCnewRoot++;
2800 text_elec_num->SetTextColor(couleur_SC);
2801 text_elec_num->SetTextSize(0.06);
2802
2803
2804 Int_t i_samp = 0;
2805 Double_t off_set = (Double_t)(fEcal->MaxSampADC() / 3);
2806
2807
2808
2809 for (Int_t i_chan = 0; i_chan < fEcal->MaxCrysInSC(); i_chan++) {
2810 Int_t i_xgeo = GetXSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2811 Int_t i_ygeo = GetYSampInStin(DeeNumber, n1DeeSCEcna, i_chan, i_samp);
2812
2813 Double_t xgi = i_xgeo + off_set;
2814 Double_t ygj = i_ygeo + 2 * off_set;
2815
2816
2817 Int_t i_chan_p = i_chan + 1;
2818 sprintf(f_in_elec, "%d", i_chan_p);
2819 text_elec_num->DrawText(xgi, ygj, f_in_elec);
2820 }
2821 text_elec_num->Delete();
2822 text_elec_num = nullptr;
2823 fCdeleteRoot++;
2824
2825 ViewStinGrid(DeeNumber, n1DeeSCEcna, fEcal->MaxSampADC(), size_IX, size_IY, "CrystalNumbering");
2826
2827 gPad->Update();
2828 h_gbid->SetStats(b_true);
2829
2830 h_gbid->Delete();
2831 h_gbid = nullptr;
2832 fCdeleteRoot++;
2833
2834 } else {
2835 std::cout << "!TEcnaHistos::SCCrystalNumbering(...)> Dee = " << DeeNumber << ". Out of range ( range = [1,"
2836 << fEcal->MaxDeeInEE() << "] )" << fTTBELL << std::endl;
2837 }
2838 }
2839
2840
2841
2842
2843
2844
2845
2846 Int_t TEcnaHistos::GetXSampInStin(const Int_t& StexNumber,
2847 const Int_t& StexStin,
2848 const Int_t& i0StinEcha,
2849 const Int_t& i_samp) {
2850
2851
2852 Int_t ix_geo = -1;
2853
2854 if (fFlagSubDet == "EB") {
2855 TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2856 TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2857 if ((btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top")) {
2858 ix_geo =
2859 ((fEcal->MaxCrysHocoInStin() - 1) - (i0StinEcha / fEcal->MaxCrysHocoInStin())) * fEcal->MaxSampADC() + i_samp;
2860 }
2861 if ((btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom")) {
2862 ix_geo = (i0StinEcha / fEcal->MaxCrysHocoInStin()) * fEcal->MaxSampADC() + i_samp;
2863 }
2864 }
2865
2866 if (fFlagSubDet == "EE") {
2867 TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
2868 if (DeeDir == "right") {
2869 ix_geo = (fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha) - 1) * fEcal->MaxSampADC() + i_samp;
2870 }
2871 if (DeeDir == "left") {
2872 ix_geo = (fEcal->MaxCrysHocoInStin() - fEcalNumbering->GetIXCrysInSC(StexNumber, StexStin, i0StinEcha)) *
2873 fEcal->MaxSampADC() +
2874 i_samp;
2875 }
2876 }
2877
2878 return ix_geo;
2879 }
2880
2881 Int_t TEcnaHistos::GetYSampInStin(const Int_t& StexNumber,
2882 const Int_t& StexStin,
2883 const Int_t& i0StinEcha,
2884 const Int_t& j_samp) {
2885
2886
2887 Int_t jy_geo = -1;
2888
2889 if (fFlagSubDet == "EB") {
2890 TString ctype = fEcalNumbering->GetStinLvrbType(StexStin);
2891 TString btype = fEcalNumbering->GetStexHalfStas(StexNumber);
2892
2893
2894
2895 if ((btype == "EB+" && ctype == "top") || (btype == "EB-" && ctype == "bottom")) {
2896 if (i0StinEcha >= 0 && i0StinEcha <= 4) {
2897 jy_geo = (i0StinEcha - 0) * fEcal->MaxSampADC() + j_samp;
2898 }
2899 if (i0StinEcha >= 5 && i0StinEcha <= 9) {
2900 jy_geo = -(i0StinEcha - 9) * fEcal->MaxSampADC() + j_samp;
2901 }
2902 if (i0StinEcha >= 10 && i0StinEcha <= 14) {
2903 jy_geo = (i0StinEcha - 10) * fEcal->MaxSampADC() + j_samp;
2904 }
2905 if (i0StinEcha >= 15 && i0StinEcha <= 19) {
2906 jy_geo = -(i0StinEcha - 19) * fEcal->MaxSampADC() + j_samp;
2907 }
2908 if (i0StinEcha >= 20 && i0StinEcha <= 24) {
2909 jy_geo = (i0StinEcha - 20) * fEcal->MaxSampADC() + j_samp;
2910 }
2911 }
2912
2913 if ((btype == "EB+" && ctype == "bottom") || (btype == "EB-" && ctype == "top")) {
2914 if (i0StinEcha >= 0 && i0StinEcha <= 4) {
2915 jy_geo = ((fEcal->MaxCrysVecoInStin() - 1) - (i0StinEcha - 0)) * fEcal->MaxSampADC() + j_samp;
2916 }
2917 if (i0StinEcha >= 5 && i0StinEcha <= 9) {
2918 jy_geo = ((fEcal->MaxCrysVecoInStin() - 1) + (i0StinEcha - 9)) * fEcal->MaxSampADC() + j_samp;
2919 }
2920 if (i0StinEcha >= 10 && i0StinEcha <= 14) {
2921 jy_geo = ((fEcal->MaxCrysVecoInStin() - 1) - (i0StinEcha - 10)) * fEcal->MaxSampADC() + j_samp;
2922 }
2923 if (i0StinEcha >= 15 && i0StinEcha <= 19) {
2924 jy_geo = ((fEcal->MaxCrysVecoInStin() - 1) + (i0StinEcha - 19)) * fEcal->MaxSampADC() + j_samp;
2925 }
2926 if (i0StinEcha >= 20 && i0StinEcha <= 24) {
2927 jy_geo = ((fEcal->MaxCrysVecoInStin() - 1) - (i0StinEcha - 20)) * fEcal->MaxSampADC() + j_samp;
2928 }
2929 }
2930 }
2931
2932 if (fFlagSubDet == "EE") {
2933 jy_geo = (fEcalNumbering->GetJYCrysInSC(StexNumber, StexStin, i0StinEcha) - 1) * fEcal->MaxSampADC() + j_samp;
2934 }
2935
2936 return jy_geo;
2937 }
2938
2939
2940
2941
2942
2943
2944
2945 void TEcnaHistos::ViewStinGrid(const Int_t& StexNumber,
2946 const Int_t& StexStin,
2947 const Int_t& MatSize,
2948 const Int_t& size_Hoco,
2949 const Int_t& size_Veco,
2950 const TString& chopt) {
2951
2952
2953 if (fFlagSubDet == "EB") {
2954 ViewTowerGrid(StexNumber, StexStin, MatSize, size_Hoco, size_Veco, chopt);
2955 }
2956 if (fFlagSubDet == "EE") {
2957 ViewSCGrid(StexNumber, StexStin, MatSize, size_Hoco, size_Veco, chopt);
2958 }
2959
2960 }
2961
2962
2963
2964
2965
2966
2967
2968 void TEcnaHistos::ViewTowerGrid(const Int_t& SMNumber,
2969 const Int_t& n1SMTow,
2970 const Int_t& MatSize,
2971 const Int_t& size_eta,
2972 const Int_t& size_phi,
2973 const TString& chopt) {
2974
2975
2976 Double_t xline = 0.;
2977
2978 Double_t yline_bot = 0.;
2979 Double_t yline_top = (Double_t)(MatSize * size_eta);
2980
2981 for (Int_t i = 0; i < size_eta; i++) {
2982 xline = xline + (Double_t)MatSize;
2983 TLine* lin;
2984 lin = new TLine(xline, yline_bot, xline, yline_top);
2985 fCnewRoot++;
2986 lin->Draw();
2987
2988 }
2989
2990 Double_t xline_left = 0;
2991 Double_t xline_right = (Double_t)(MatSize * size_eta);
2992
2993 Double_t yline = -(Double_t)MatSize;
2994
2995 for (Int_t j = 0; j < size_eta + 1; j++) {
2996 yline = yline + (Double_t)MatSize;
2997 TLine* lin;
2998 lin = new TLine(xline_left, yline, xline_right, yline);
2999 fCnewRoot++;
3000 lin->Draw();
3001
3002 }
3003
3004
3005
3006
3007
3008 Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber, n1SMTow);
3009 Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber, n1SMTow);
3010
3011 TString x_var_name = GetEtaPhiAxisTitle("ietaTow");
3012 TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
3013
3014 Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
3015 Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
3016 Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
3017 Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("Towx");
3018 Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("Towx");
3019
3020 new TF1("f1", x_direction.Data(), eta_min, eta_max);
3021 fCnewRoot++;
3022
3023 TGaxis* sup_axis_x = nullptr;
3024
3025 if (x_direction == "-x")
3026 {
3027 sup_axis_x = new TGaxis(
3028 -(Float_t)MatSize, (Float_t)0, (Float_t)(size_eta * MatSize), (Float_t)0., "f1", size_eta, "BCS", 0.);
3029 fCnewRoot++;
3030 std::cout << "TEcnaHistosEB::ViewTowerGrid()> non foreseen case. eta with -x direction." << fTTBELL << std::endl;
3031 }
3032
3033 if (x_direction == "x")
3034 {
3035 sup_axis_x =
3036 new TGaxis((Float_t)0., (Float_t)0., (Float_t)(size_eta * MatSize), (Float_t)0., "f1", size_eta, "CS", 0.);
3037 fCnewRoot++;
3038 }
3039
3040 if (sup_axis_x != nullptr) {
3041 sup_axis_x->SetTitle(x_var_name);
3042 sup_axis_x->SetTitleSize(tit_siz_x);
3043 sup_axis_x->SetTitleOffset(tit_off_x);
3044 sup_axis_x->SetLabelSize(lab_siz_x);
3045 sup_axis_x->SetLabelOffset(lab_off_x);
3046 sup_axis_x->SetTickSize(tic_siz_x);
3047 sup_axis_x->Draw("SAME");
3048 }
3049
3050
3051 Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
3052 Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
3053 Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
3054 Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("Towy");
3055 Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("Towy");
3056
3057 if (chopt == "CrystalNumbering") {
3058 Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber, n1SMTow);
3059 Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber, n1SMTow);
3060
3061 TString y_var_name = GetEtaPhiAxisTitle("phi");
3062 TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
3063
3064 new TF1("f2", y_direction.Data(), phi_min, phi_max);
3065 fCnewRoot++;
3066 TGaxis* sup_axis_y = nullptr;
3067
3068 if (y_direction == "-x")
3069 {
3070 sup_axis_y = new TGaxis((Float_t)(size_eta * MatSize),
3071 (Float_t)0.,
3072 (Float_t)(size_eta * MatSize),
3073 (Float_t)(size_phi * MatSize),
3074 "f2",
3075 size_phi,
3076 "+CS",
3077 0.);
3078 fCnewRoot++;
3079 }
3080
3081 if (y_direction == "x")
3082 {
3083 sup_axis_y =
3084 new TGaxis((Float_t)0., (Float_t)0., (Float_t)0., (Float_t)(size_phi * MatSize), "f2", size_phi, "BCS", 0.);
3085 fCnewRoot++;
3086 }
3087
3088 if (sup_axis_y != nullptr) {
3089 sup_axis_y->SetTitle(y_var_name);
3090 sup_axis_y->SetTitleSize(tit_siz_y);
3091 sup_axis_y->SetTitleOffset(tit_off_y);
3092 sup_axis_y->SetLabelSize(lab_siz_y);
3093 sup_axis_y->SetLabelOffset(lab_off_y);
3094 sup_axis_y->SetTickSize(tic_siz_y);
3095 sup_axis_y->Draw("SAME");
3096 }
3097 }
3098
3099
3100 Double_t j_phi_min = fEcalNumbering->GetJPhiMin(SMNumber, n1SMTow);
3101 Double_t j_phi_max = fEcalNumbering->GetJPhiMax(SMNumber, n1SMTow);
3102
3103 TString jy_var_name = GetEtaPhiAxisTitle("jphiTow");
3104 TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
3105
3106 new TF1("f3", jy_direction.Data(), j_phi_min, j_phi_max);
3107 fCnewRoot++;
3108 TGaxis* sup_axis_jy = nullptr;
3109
3110 sup_axis_jy =
3111 new TGaxis((Float_t)0., (Float_t)0., (Float_t)0., (Float_t)(size_phi * MatSize), "f3", size_phi, "SC", 0.);
3112 fCnewRoot++;
3113
3114 sup_axis_jy->SetTitle(jy_var_name);
3115 sup_axis_jy->SetTitleSize(tit_siz_y);
3116 sup_axis_jy->SetTitleOffset(tit_off_y);
3117 sup_axis_jy->SetLabelSize(lab_siz_y);
3118 sup_axis_jy->SetLabelOffset(lab_off_y);
3119 sup_axis_jy->SetTickSize(tic_siz_y);
3120 sup_axis_jy->Draw("SAME");
3121 }
3122
3123
3124
3125
3126
3127
3128
3129 void TEcnaHistos::ViewSCGrid(const Int_t& DeeNumber,
3130 const Int_t& n1DeeSCEcna,
3131 const Int_t& MatSize,
3132 const Int_t& size_IX,
3133 const Int_t& size_IY,
3134 const TString& chopt) {
3135
3136
3137 Double_t xline = 0.;
3138
3139 Double_t yline_bot = 0.;
3140 Double_t yline_top = (Double_t)(MatSize * size_IX);
3141
3142 for (Int_t i = 0; i < size_IX; i++) {
3143 xline = xline + (Double_t)MatSize;
3144 TLine* lin;
3145 lin = new TLine(xline, yline_bot, xline, yline_top);
3146 fCnewRoot++;
3147 lin->Draw();
3148
3149 }
3150
3151 Double_t xline_left = 0;
3152 Double_t xline_right = (Double_t)(MatSize * size_IX);
3153
3154 Double_t yline = -(Double_t)MatSize;
3155
3156 for (Int_t j = 0; j < size_IX + 1; j++) {
3157 yline = yline + (Double_t)MatSize;
3158 TLine* lin;
3159 lin = new TLine(xline_left, yline, xline_right, yline);
3160 fCnewRoot++;
3161 lin->Draw();
3162
3163 }
3164
3165
3166
3167
3168
3169 Double_t IX_min = fEcalNumbering->GetIIXMin(n1DeeSCEcna) - 0.5;
3170 Double_t IX_max = fEcalNumbering->GetIIXMax(n1DeeSCEcna) + 0.5;
3171
3172 Float_t axis_x_inf = 0;
3173 Float_t axis_x_sup = 0;
3174 Float_t axis_y_inf = 0;
3175 Float_t axis_y_sup = 0;
3176 Int_t axis_nb_div = 1;
3177 Double_t IX_values_min = 0;
3178 Double_t IX_values_max = 0;
3179 Option_t* axis_chopt = "CS";
3180
3181 Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
3182 Float_t lab_siz_x = fCnaParHistos->AxisLabelSize();
3183 Float_t tic_siz_x = fCnaParHistos->AxisTickSize();
3184 Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SCx");
3185 Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SCx");
3186
3187 TString StrDee = "iIXSC";
3188 if (DeeNumber == 1) {
3189 StrDee = "iIXDee1";
3190 }
3191 if (DeeNumber == 2) {
3192 StrDee = "iIXDee2";
3193 }
3194 if (DeeNumber == 3) {
3195 StrDee = "iIXDee3";
3196 }
3197 if (DeeNumber == 4) {
3198 StrDee = "iIXDee4";
3199 }
3200
3201 TString x_var_name = GetIXIYAxisTitle(StrDee.Data());
3202 TString x_direction = fEcalNumbering->GetXDirectionEE(DeeNumber);
3203
3204 TGaxis* sup_axis_x = nullptr;
3205
3206 if (DeeNumber == 1)
3207 {
3208 axis_x_inf = 0;
3209 axis_y_inf = 0;
3210 axis_x_sup = size_IX * MatSize;
3211 axis_y_sup = 0;
3212 axis_nb_div = size_IX;
3213 IX_values_min = -IX_min;
3214 IX_values_max = -IX_max;
3215 axis_chopt = "CS";
3216 }
3217 if (DeeNumber == 2)
3218 {
3219 axis_x_inf = 0;
3220 axis_y_inf = 0;
3221 axis_x_sup = size_IX * MatSize;
3222 axis_y_sup = 0;
3223 axis_nb_div = size_IX;
3224 IX_values_min = IX_min;
3225 IX_values_max = IX_max;
3226 axis_chopt = "CS";
3227 }
3228 if (DeeNumber == 3)
3229 {
3230 axis_x_inf = 0;
3231 axis_y_inf = 0;
3232 axis_x_sup = size_IX * MatSize;
3233 axis_y_sup = 0;
3234 axis_nb_div = size_IX;
3235 IX_values_min = IX_min;
3236 IX_values_max = IX_max;
3237 axis_chopt = "CS";
3238 }
3239 if (DeeNumber == 4)
3240 {
3241 axis_x_inf = 0;
3242 axis_y_inf = 0;
3243 axis_x_sup = size_IX * MatSize;
3244 axis_y_sup = 0;
3245 axis_nb_div = size_IX;
3246 IX_values_min = -IX_min;
3247 IX_values_max = -IX_max;
3248 axis_chopt = "CS";
3249 }
3250
3251 new TF1("f1", x_direction.Data(), IX_values_min, IX_values_max);
3252 fCnewRoot++;
3253 sup_axis_x = new TGaxis(axis_x_inf, axis_y_inf, axis_x_sup, axis_y_sup, "f1", axis_nb_div, axis_chopt, 0.);
3254 fCnewRoot++;
3255
3256 sup_axis_x->SetTitle(x_var_name);
3257 sup_axis_x->SetTitleSize(tit_siz_x);
3258 sup_axis_x->SetTitleOffset(tit_off_x);
3259 sup_axis_x->SetLabelSize(lab_siz_x);
3260 sup_axis_x->SetLabelOffset(lab_off_x);
3261 sup_axis_x->SetTickSize(tic_siz_x);
3262 sup_axis_x->Draw("SAME");
3263
3264
3265
3266 Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
3267 Float_t lab_siz_y = fCnaParHistos->AxisLabelSize();
3268 Float_t tic_siz_y = fCnaParHistos->AxisTickSize();
3269 Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SCy");
3270 Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SCy");
3271
3272 Double_t j_IY_min = fEcalNumbering->GetJIYMin(DeeNumber, n1DeeSCEcna) - 0.5;
3273 Double_t j_IY_max = fEcalNumbering->GetJIYMax(DeeNumber, n1DeeSCEcna) + 0.5;
3274
3275 TString jy_var_name = GetIXIYAxisTitle("jIYSC");
3276 TString jy_direction = fEcalNumbering->GetJYDirectionEE(DeeNumber);
3277
3278 new TF1("f2", jy_direction.Data(), j_IY_min, j_IY_max);
3279 fCnewRoot++;
3280
3281 TGaxis* sup_axis_jy =
3282 new TGaxis((Float_t)0., (Float_t)0., (Float_t)0., (Float_t)(size_IY * MatSize), "f2", size_IY, "CS", 0.);
3283 fCnewRoot++;
3284
3285 sup_axis_jy->SetTitle(jy_var_name);
3286 sup_axis_jy->SetTitleSize(tit_siz_y);
3287 sup_axis_jy->SetTitleOffset(tit_off_y);
3288 sup_axis_jy->SetLabelSize(lab_siz_y);
3289 sup_axis_jy->SetLabelOffset(lab_off_y);
3290 sup_axis_jy->SetTickSize(tic_siz_y);
3291 sup_axis_jy->Draw();
3292
3293 }
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309 void TEcnaHistos::ViewStex(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead, const TString& HistoCode) {
3310
3311
3312 Bool_t OKFileExists = kFALSE;
3313 Bool_t OKData = kFALSE;
3314
3315 Int_t n1StexStin = -1;
3316
3317 if (arg_AlreadyRead == fTobeRead) {
3318 fMyRootFile->PrintNoComment();
3319 fMyRootFile->FileParameters(fFapAnaType,
3320 fFapNbOfSamples,
3321 fFapRunNumber,
3322 fFapFirstReqEvtNumber,
3323 fFapLastReqEvtNumber,
3324 fFapReqNbOfEvts,
3325 fFapStexNumber,
3326 fCfgResultsRootFilePath.Data());
3327
3328 if (fMyRootFile->LookAtRootFile() == kTRUE) {
3329 OKFileExists = kTRUE;
3330 }
3331
3332 if (OKFileExists == kTRUE) {
3333 fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);
3334 TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3335
3336
3337
3338 fStartDate = fMyRootFile->GetStartDate();
3339 fStopDate = fMyRootFile->GetStopDate();
3340 fRunType = fMyRootFile->GetRunType();
3341 }
3342 }
3343 if (arg_AlreadyRead >= 1) {
3344 OKFileExists = kTRUE;
3345 }
3346
3347 if (OKFileExists == kTRUE) {
3348 fStatusFileFound = kTRUE;
3349
3350
3351 char f_in_mat_tit[charArrLen];
3352 sprintf(f_in_mat_tit, "?");
3353
3354 if (HistoCode == "D_NOE_ChNb") {
3355 sprintf(f_in_mat_tit, "Number of events");
3356 }
3357 if (HistoCode == "D_Ped_ChNb") {
3358 sprintf(f_in_mat_tit, "Pedestals");
3359 }
3360 if (HistoCode == "D_TNo_ChNb") {
3361 sprintf(f_in_mat_tit, "Total noise");
3362 }
3363 if (HistoCode == "D_MCs_ChNb") {
3364 sprintf(f_in_mat_tit, "Mean cor(s,s')");
3365 }
3366 if (HistoCode == "D_LFN_ChNb") {
3367 sprintf(f_in_mat_tit, "Low frequency noise");
3368 }
3369 if (HistoCode == "D_HFN_ChNb") {
3370 sprintf(f_in_mat_tit, "High frequency noise");
3371 }
3372 if (HistoCode == "D_SCs_ChNb") {
3373 sprintf(f_in_mat_tit, "Sigma of cor(s,s')");
3374 }
3375
3376
3377 Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex() * fEcal->MaxCrysHocoInStin();
3378 Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex() * fEcal->MaxCrysVecoInStin();
3379
3380 Int_t nb_binx = GeoBidSizeHoco;
3381 Int_t nb_biny = GeoBidSizeVeco;
3382 Axis_t xinf_bid = (Axis_t)0.;
3383 Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3384 Axis_t yinf_bid = (Axis_t)0.;
3385 Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3386
3387 TString axis_x_var_name = " #Hoco ";
3388 TString axis_y_var_name = " #Veco ";
3389
3390
3391
3392 TH2D* h_geo_bid =
3393 new TH2D("geobidim_ViewStex", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
3394 fCnewRoot++;
3395
3396 h_geo_bid->Reset();
3397
3398
3399 TVectorD partial_histp(fEcal->MaxCrysEcnaInStex());
3400 for (Int_t i = 0; i < fEcal->MaxCrysEcnaInStex(); i++) {
3401 partial_histp(i) = (Double_t)0.;
3402 }
3403
3404 if (arg_AlreadyRead == fTobeRead) {
3405 if (HistoCode == "D_NOE_ChNb") {
3406 partial_histp = fMyRootFile->ReadNumberOfEvents(fEcal->MaxCrysEcnaInStex());
3407 }
3408 if (HistoCode == "D_Ped_ChNb") {
3409 partial_histp = fMyRootFile->ReadPedestals(fEcal->MaxCrysEcnaInStex());
3410 }
3411 if (HistoCode == "D_TNo_ChNb") {
3412 partial_histp = fMyRootFile->ReadTotalNoise(fEcal->MaxCrysEcnaInStex());
3413 }
3414 if (HistoCode == "D_MCs_ChNb") {
3415 partial_histp = fMyRootFile->ReadMeanCorrelationsBetweenSamples(fEcal->MaxCrysEcnaInStex());
3416 }
3417 if (HistoCode == "D_LFN_ChNb") {
3418 partial_histp = fMyRootFile->ReadLowFrequencyNoise(fEcal->MaxCrysEcnaInStex());
3419 }
3420 if (HistoCode == "D_HFN_ChNb") {
3421 partial_histp = fMyRootFile->ReadHighFrequencyNoise(fEcal->MaxCrysEcnaInStex());
3422 }
3423 if (HistoCode == "D_SCs_ChNb") {
3424 partial_histp = fMyRootFile->ReadSigmaOfCorrelationsBetweenSamples(fEcal->MaxCrysEcnaInStex());
3425 }
3426
3427 OKData = fMyRootFile->DataExist();
3428 }
3429
3430 if (arg_AlreadyRead >= 1) {
3431 partial_histp = arg_read_histo;
3432 OKData = kTRUE;
3433 }
3434
3435
3436 TMatrixD read_matrix(nb_binx, nb_biny);
3437 for (Int_t i = 0; i < nb_binx; i++) {
3438 for (Int_t j = 0; j < nb_biny; j++) {
3439 read_matrix(i, j) = (Double_t)0.;
3440 }
3441 }
3442
3443 if (OKData == kTRUE) {
3444 fStatusDataExist = kTRUE;
3445
3446 for (Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++) {
3447 if (arg_AlreadyRead == fTobeRead) {
3448 n1StexStin = fMyRootFile->GetStexStinFromIndex(i0StexStinEcna);
3449 }
3450 if (arg_AlreadyRead >= 1) {
3451 n1StexStin = i0StexStinEcna + 1;
3452 }
3453
3454 if (n1StexStin != -1) {
3455
3456 for (Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++) {
3457 Int_t iStexEcha = (n1StexStin - 1) * fEcal->MaxCrysInStin() + i0StinEcha;
3458 Int_t i_xgeo = GetXCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3459 Int_t i_ygeo = GetYCrysInStex(fFapStexNumber, n1StexStin, i0StinEcha);
3460
3461 if (i_xgeo >= 0 && i_xgeo < nb_binx && i_ygeo >= 0 && i_ygeo < nb_biny) {
3462 read_matrix(i_xgeo, i_ygeo) = partial_histp(iStexEcha);
3463 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)read_matrix(i_xgeo, i_ygeo));
3464 }
3465 }
3466 }
3467 }
3468
3469
3470
3471
3472
3473 SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3474 SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3475
3476 if (fUserHistoMin == fUserHistoMax) {
3477 fFlagUserHistoMin = "AUTO";
3478 fFlagUserHistoMax = "AUTO";
3479 }
3480
3481 if (fFlagUserHistoMin == "ON") {
3482 SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
3483 fFlagUserHistoMin = "OFF";
3484 }
3485 if (fFlagUserHistoMax == "ON") {
3486 SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
3487 fFlagUserHistoMax = "OFF";
3488 }
3489
3490 if (fFlagUserHistoMin == "AUTO") {
3491 SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum());
3492 fFlagUserHistoMin = "OFF";
3493 }
3494 if (fFlagUserHistoMax == "AUTO") {
3495 SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum());
3496 fFlagUserHistoMax = "OFF";
3497 }
3498
3499 SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515 char f_in[charArrLen];
3516
3517
3518 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3519 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3520
3521 if (fFlagSubDet == "EB") {
3522 canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3523 canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");
3524 }
3525 if (fFlagSubDet == "EE") {
3526 canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3527 canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");
3528 }
3529
3530
3531 SetAllPavesViewStex(fFapStexNumber);
3532
3533
3534 TString name_cov_cor;
3535 name_cov_cor.Resize(charArrLen);
3536 name_cov_cor = "?";
3537
3538 if (HistoCode == "D_NOE_ChNb") {
3539 name_cov_cor = "Nb_Of_D_Adc_EvDs";
3540 }
3541 if (HistoCode == "D_Ped_ChNb") {
3542 name_cov_cor = "Pedestals";
3543 }
3544 if (HistoCode == "D_TNo_ChNb") {
3545 name_cov_cor = "Total_noise";
3546 }
3547 if (HistoCode == "D_MCs_ChNb") {
3548 name_cov_cor = "Mean_Corss";
3549 }
3550 if (HistoCode == "D_LFN_ChNb") {
3551 name_cov_cor = "Low_Fq_Noise";
3552 }
3553 if (HistoCode == "D_HFN_ChNb") {
3554 name_cov_cor = "High_Fq_Noise";
3555 }
3556 if (HistoCode == "D_SCs_ChNb") {
3557 name_cov_cor = "Sigma_Corss";
3558 }
3559
3560 TString name_visu;
3561 name_visu.Resize(charArrLen);
3562 name_visu = "colz";
3563
3564 TString flag_already_read;
3565 flag_already_read.Resize(charArrLen);
3566 flag_already_read = "?";
3567 sprintf(f_in, "M%d", arg_AlreadyRead);
3568 flag_already_read = f_in;
3569
3570 sprintf(f_in,
3571 "%s_%s_S1_%d_R%d_%d_%d_%s%d_%s_HocoVeco_R%s",
3572 name_cov_cor.Data(),
3573 fFapAnaType.Data(),
3574 fFapNbOfSamples,
3575 fFapRunNumber,
3576 fFapFirstReqEvtNumber,
3577 fFapLastReqEvtNumber,
3578 fFapStexName.Data(),
3579 fFapStexNumber,
3580 name_visu.Data(),
3581 flag_already_read.Data());
3582
3583 if (fFlagSubDet == "EB") {
3584 SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");
3585 }
3586 if (fFlagSubDet == "EE") {
3587 SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");
3588 }
3589
3590 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
3591 fCnewRoot++;
3592 fCurrentCanvas = MainCanvas;
3593 fCurrentCanvasName = f_in;
3594
3595
3596
3597
3598 if (fPavComGeneralTitle != nullptr) {
3599 fPavComGeneralTitle->Draw();
3600 }
3601 fPavComStex->Draw();
3602 fPavComAnaRun->Draw();
3603 fPavComNbOfEvts->Draw();
3604
3605
3606 Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3607 Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3608 Double_t x_margin = x_low;
3609 Double_t y_margin = y_low;
3610 MainCanvas->Divide(1, 1, x_margin, y_margin);
3611
3612 gPad->cd(1);
3613
3614 if (fFlagSubDet == "EE") {
3615 Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3616 Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3617 TVirtualPad* main_subpad = gPad;
3618 main_subpad->SetPad(x_low, y_low, x_up, y_up);
3619 }
3620
3621
3622 h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3623 h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3624
3625 h_geo_bid->DrawCopy("COLZ");
3626
3627
3628 ViewStexGrid(fFapStexNumber, " ");
3629 gPad->Draw();
3630 gPad->Update();
3631
3632
3633 Bool_t b_true = true;
3634 h_geo_bid->SetStats(b_true);
3635 h_geo_bid->Delete();
3636 h_geo_bid = nullptr;
3637 fCdeleteRoot++;
3638
3639
3640 }
3641 }
3642 else {
3643 fStatusFileFound = kFALSE;
3644
3645 std::cout << "!TEcnaHistos::ViewStex(...)> *ERROR* =====> "
3646 << " ROOT file not found" << fTTBELL << std::endl;
3647 }
3648 }
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658 void TEcnaHistos::StexHocoVecoLHFCorcc(const TString& Freq) {
3659
3660
3661 fMyRootFile->PrintNoComment();
3662 fMyRootFile->FileParameters(fFapAnaType,
3663 fFapNbOfSamples,
3664 fFapRunNumber,
3665 fFapFirstReqEvtNumber,
3666 fFapLastReqEvtNumber,
3667 fFapReqNbOfEvts,
3668 fFapStexNumber,
3669 fCfgResultsRootFilePath.Data());
3670
3671 if (fMyRootFile->LookAtRootFile() == kTRUE)
3672 {
3673 fStatusFileFound = kTRUE;
3674
3675 fFapNbOfEvts = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, fFapStexNumber);
3676 TString fp_name_short = fMyRootFile->GetRootFileNameShort();
3677
3678
3679
3680 fStartDate = fMyRootFile->GetStartDate();
3681 fStopDate = fMyRootFile->GetStopDate();
3682 fRunType = fMyRootFile->GetRunType();
3683
3684
3685 char f_in_mat_tit[charArrLen];
3686
3687 if (fFlagSubDet == "EB" && Freq == "LF") {
3688 sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each tower in SM");
3689 }
3690 if (fFlagSubDet == "EB" && Freq == "HF") {
3691 sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each tower in SM");
3692 }
3693 if (fFlagSubDet == "EE" && Freq == "LF") {
3694 sprintf(f_in_mat_tit, "LF Cor(Xtal,Xtal') for each SC in Dee");
3695 }
3696 if (fFlagSubDet == "EE" && Freq == "HF") {
3697 sprintf(f_in_mat_tit, "HF Cor(Xtal,Xtal') for each SC in Dee");
3698 }
3699
3700
3701 Int_t GeoBidSizeHoco = fEcal->MaxStinHocoInStex() * fEcal->MaxCrysInStin();
3702 Int_t GeoBidSizeVeco = fEcal->MaxStinVecoInStex() * fEcal->MaxCrysInStin();
3703
3704 Int_t nb_binx = GeoBidSizeHoco;
3705 Int_t nb_biny = GeoBidSizeVeco;
3706 Axis_t xinf_bid = (Axis_t)0.;
3707 Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
3708 Axis_t yinf_bid = (Axis_t)0.;
3709 Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
3710
3711 TString axis_x_var_name = " #Hoco ";
3712 TString axis_y_var_name = " #varVeco ";
3713
3714
3715 TVectorD Stin_numbers(fEcal->MaxStinEcnaInStex());
3716 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
3717 Stin_numbers(i) = (Double_t)0.;
3718 }
3719 Stin_numbers = fMyRootFile->ReadStinNumbers(fEcal->MaxStinEcnaInStex());
3720
3721 if (fMyRootFile->DataExist() == kTRUE) {
3722 fStatusDataExist = kTRUE;
3723
3724
3725 TMatrixD partial_matrix(fEcal->MaxCrysEcnaInStex(), fEcal->MaxCrysEcnaInStex());
3726 for (Int_t i = 0; i < fEcal->MaxCrysEcnaInStex(); i++) {
3727 for (Int_t j = 0; j < fEcal->MaxCrysEcnaInStex(); j++) {
3728 partial_matrix(i, j) = (Double_t)0.;
3729 }
3730 }
3731
3732 if (Freq == "LF") {
3733 partial_matrix = fMyRootFile->ReadLowFrequencyCorrelationsBetweenChannels(fEcal->MaxCrysEcnaInStex());
3734 }
3735 if (Freq == "HF") {
3736 partial_matrix = fMyRootFile->ReadHighFrequencyCorrelationsBetweenChannels(fEcal->MaxCrysEcnaInStex());
3737 }
3738
3739 if (fMyRootFile->DataExist() == kTRUE) {
3740 fStatusDataExist = kTRUE;
3741
3742
3743 TH2D* h_geo_bid = new TH2D(
3744 "geobidim_HocoVecoLHFCorcc", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
3745 fCnewRoot++;
3746 h_geo_bid->Reset();
3747
3748 fFapStexBarrel = fEcalNumbering->GetStexHalfStas(fFapStexNumber);
3749
3750 for (Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++) {
3751 Int_t n1StexStin = (Int_t)Stin_numbers(i0StexStinEcna);
3752 Int_t offset_x = ((n1StexStin - 1) / fEcal->MaxStinVecoInStex()) * fEcal->MaxCrysInStin();
3753 Int_t offset_y = ((n1StexStin - 1) % fEcal->MaxStinVecoInStex()) * fEcal->MaxCrysInStin();
3754
3755 if (n1StexStin != -1) {
3756
3757
3758 for (Int_t i0StinEcha = 0; i0StinEcha < fEcal->MaxCrysInStin(); i0StinEcha++) {
3759 for (Int_t j0StinEcha = 0; j0StinEcha < fEcal->MaxCrysInStin(); j0StinEcha++) {
3760 Int_t i_xgeo = offset_x + i0StinEcha;
3761 Int_t i_ygeo = offset_y + j0StinEcha;
3762
3763 if (i_xgeo >= 0 && i_xgeo < nb_binx && i_ygeo >= 0 && i_ygeo < nb_biny) {
3764 Int_t iEcha = (n1StexStin - 1) * fEcal->MaxCrysInStin() + i0StinEcha;
3765 Int_t jEcha = (n1StexStin - 1) * fEcal->MaxCrysInStin() + j0StinEcha;
3766
3767 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)partial_matrix(iEcha, jEcha));
3768 }
3769 }
3770 }
3771 }
3772 }
3773
3774
3775
3776 TString HistoCode = "H2CorccInStins";
3777
3778
3779
3780 SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
3781 SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
3782
3783 if (fUserHistoMin == fUserHistoMax) {
3784 fFlagUserHistoMin = "AUTO";
3785 fFlagUserHistoMax = "AUTO";
3786 }
3787
3788 if (fFlagUserHistoMin == "ON") {
3789 SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
3790 fFlagUserHistoMin = "OFF";
3791 }
3792 if (fFlagUserHistoMax == "ON") {
3793 SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
3794 fFlagUserHistoMax = "OFF";
3795 }
3796
3797 if (fFlagUserHistoMin == "AUTO") {
3798 SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum());
3799 fFlagUserHistoMin = "OFF";
3800 }
3801 if (fFlagUserHistoMax == "AUTO") {
3802 SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum());
3803 fFlagUserHistoMax = "OFF";
3804 }
3805
3806 SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
3807
3808
3809
3810 char f_in[charArrLen];
3811
3812
3813
3814 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
3815 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
3816
3817 if (fFlagSubDet == "EB") {
3818 canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
3819 canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");
3820 }
3821 if (fFlagSubDet == "EE") {
3822 canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
3823 canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");
3824 }
3825
3826
3827 SetAllPavesViewStex(fFapStexNumber);
3828
3829
3830 TString name_cov_cor;
3831 name_cov_cor.Resize(charArrLen);
3832 if (Freq == "LF") {
3833 name_cov_cor = "StexLFCorcc";
3834 }
3835 if (Freq == "HF") {
3836 name_cov_cor = "StexHFCorcc";
3837 }
3838
3839 TString name_visu;
3840 name_visu.Resize(charArrLen);
3841 name_visu = "colz";
3842
3843 sprintf(f_in,
3844 "%s_%s_S1_%d_R%d_%d_%d_Stex%s%d_%s_HocoVeco",
3845 name_cov_cor.Data(),
3846 fFapAnaType.Data(),
3847 fFapNbOfSamples,
3848 fFapRunNumber,
3849 fFapFirstReqEvtNumber,
3850 fFapLastReqEvtNumber,
3851 fFapStexName.Data(),
3852 fFapStexNumber,
3853 name_visu.Data());
3854
3855 if (fFlagSubDet == "EB") {
3856 SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEB");
3857 }
3858 if (fFlagSubDet == "EE") {
3859 SetHistoPresentation((TH1D*)h_geo_bid, "Stex2DEE");
3860 }
3861
3862 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
3863 fCnewRoot++;
3864 fCurrentCanvas = MainCanvas;
3865 fCurrentCanvasName = f_in;
3866
3867
3868
3869
3870
3871 if (fPavComGeneralTitle != nullptr) {
3872 fPavComGeneralTitle->Draw();
3873 }
3874 fPavComStex->Draw();
3875 fPavComAnaRun->Draw();
3876 fPavComNbOfEvts->Draw();
3877
3878
3879 Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
3880 Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
3881 Double_t x_margin = x_low;
3882 Double_t y_margin = y_low;
3883 MainCanvas->Divide(1, 1, x_margin, y_margin);
3884
3885 gPad->cd(1);
3886
3887 if (fFlagSubDet == "EE") {
3888 Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
3889 Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
3890 TVirtualPad* main_subpad = gPad;
3891 main_subpad->SetPad(x_low, y_low, x_up, y_up);
3892 }
3893
3894 h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
3895 h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
3896
3897 h_geo_bid->DrawCopy("COLZ");
3898
3899
3900 ViewStexGrid(fFapStexNumber, "corcc");
3901 gPad->Draw();
3902 gPad->Update();
3903
3904
3905 Bool_t b_true = true;
3906 h_geo_bid->SetStats(b_true);
3907 h_geo_bid->Delete();
3908 h_geo_bid = nullptr;
3909 fCdeleteRoot++;
3910
3911
3912 }
3913 }
3914 }
3915 else {
3916 fStatusFileFound = kFALSE;
3917
3918 std::cout << "!TEcnaHistos::StexHocoVecoLHFCorcc(...)> *ERROR* =====> "
3919 << " ROOT file not found" << fTTBELL << std::endl;
3920 }
3921 }
3922
3923
3924
3925
3926
3927
3928 Int_t TEcnaHistos::GetXCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin, const Int_t& i0StinEcha) {
3929
3930
3931
3932 Int_t ix_geo = 0;
3933
3934 if (fFlagSubDet == "EB") {
3935 TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3936 Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, i0StinEcha, StexNumber);
3937 ix_geo = (n1StexCrys - 1) / fEcal->MaxCrysVecoInStex();
3938 if (ctype == "EB-") {
3939 ix_geo = fEcal->MaxCrysHocoInStex() - ix_geo - 1;
3940 }
3941 }
3942
3943 if (fFlagSubDet == "EE") {
3944 TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(StexNumber);
3945 ix_geo = 0;
3946 if (DeeDir == "right") {
3947 ix_geo = fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha) - 1;
3948 }
3949 if (DeeDir == "left") {
3950 ix_geo = fEcal->MaxCrysIXInDee() - fEcalNumbering->GetIXCrysInDee(StexNumber, n1StexStin, i0StinEcha);
3951 }
3952 }
3953
3954 return ix_geo;
3955 }
3956
3957 Int_t TEcnaHistos::GetYCrysInStex(const Int_t& StexNumber, const Int_t& n1StexStin, const Int_t& j0StinEcha) {
3958
3959
3960
3961 Int_t iy_geo = 0;
3962
3963 if (fFlagSubDet == "EB") {
3964 TString ctype = fEcalNumbering->GetStexHalfStas(StexNumber);
3965 Int_t n1StexCrys = fEcalNumbering->Get1StexCrysFrom1StexStinAnd0StinEcha(n1StexStin, j0StinEcha, StexNumber);
3966 Int_t ix_geo = (n1StexCrys - 1) / fEcal->MaxCrysVecoInStex();
3967 iy_geo = n1StexCrys - 1 - ix_geo * fEcal->MaxCrysVecoInStex();
3968 if (ctype == "EB-") {
3969 iy_geo = fEcal->MaxCrysVecoInStex() - iy_geo - 1;
3970 }
3971 }
3972
3973 if (fFlagSubDet == "EE") {
3974 iy_geo = fEcalNumbering->GetJYCrysInDee(StexNumber, n1StexStin, j0StinEcha) - 1;
3975 }
3976
3977 return iy_geo;
3978 }
3979
3980
3981
3982
3983
3984
3985
3986
3987 void TEcnaHistos::StexStinNumbering(const Int_t& StexNumber) {
3988
3989
3990 if (fFlagSubDet == "EB") {
3991 SMTowerNumbering(StexNumber);
3992 }
3993 if (fFlagSubDet == "EE") {
3994 DeeSCNumbering(StexNumber);
3995 }
3996 }
3997
3998
3999
4000
4001
4002
4003
4004
4005 void TEcnaHistos::ViewStexStinNumberingPad(const Int_t& StexNumber) {
4006
4007
4008 if (fFlagSubDet == "EB") {
4009 ViewSMTowerNumberingPad(StexNumber);
4010 }
4011 if (fFlagSubDet == "EE") {
4012 ViewDeeSCNumberingPad(StexNumber);
4013 }
4014 }
4015
4016
4017
4018
4019
4020
4021
4022
4023 void TEcnaHistos::ViewStexGrid(const Int_t& StexNumber, const TString& c_option) {
4024
4025
4026 if (fFlagSubDet == "EB") {
4027 ViewSMGrid(StexNumber, c_option);
4028 }
4029 if (fFlagSubDet == "EE") {
4030 ViewDeeGrid(StexNumber, c_option);
4031 }
4032
4033 }
4034
4035
4036
4037
4038 void TEcnaHistos::SMTowerNumbering(const Int_t& SMNumber) {
4039
4040
4041 if ((SMNumber > 0) && (SMNumber <= fEcal->MaxSMInEB())) {
4042 Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM() * fEcal->MaxCrysEtaInTow();
4043 Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM() * fEcal->MaxCrysPhiInTow();
4044
4045 Int_t nb_binx = GeoBidSizeEta;
4046 Int_t nb_biny = GeoBidSizePhi;
4047 Axis_t xinf_bid = (Axis_t)0.;
4048 Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
4049 Axis_t yinf_bid = (Axis_t)0.;
4050 Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
4051
4052 TString axis_x_var_name = " #eta ";
4053 TString axis_y_var_name = " #varphi ";
4054
4055
4056
4057
4058 char f_in_mat_tit[charArrLen];
4059
4060 if (SMNumber <= fEcal->MaxSMPhiInEB()) {
4061 sprintf(f_in_mat_tit, " SM tower numbering");
4062 }
4063 if (SMNumber > fEcal->MaxSMPhiInEB()) {
4064 sprintf(f_in_mat_tit, " SM tower numbering ");
4065 }
4066
4067
4068
4069 TH2D* h_empty_bid =
4070 new TH2D("grid_bidim_eta_phi", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
4071 fCnewRoot++;
4072 h_empty_bid->Reset();
4073
4074 h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
4075 h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
4076
4077
4078
4079 char f_in[charArrLen];
4080
4081
4082
4083 UInt_t canv_h = fCnaParHistos->CanvasFormatH("etaphiSM");
4084 UInt_t canv_w = fCnaParHistos->CanvasFormatW("etaphiSM");
4085
4086
4087
4088 fFapStexBarrel = fEcalNumbering->GetSMHalfBarrel(SMNumber);
4089
4090
4091 SetAllPavesViewStex("Numbering", SMNumber);
4092
4093
4094
4095 sprintf(f_in, "tower_numbering_for_SuperModule_SM%d", SMNumber);
4096
4097 SetHistoPresentation((TH1D*)h_empty_bid, "Stex2DEB");
4098
4099 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
4100 fCnewRoot++;
4101 fCurrentCanvas = MainCanvas;
4102 fCurrentCanvasName = f_in;
4103
4104
4105
4106
4107 fPavComStex->Draw();
4108
4109 Double_t x_margin = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
4110 Double_t y_margin = fCnaParHistos->BoxTopY("bottom_right_box") + 0.005;
4111 MainCanvas->Divide(1, 1, x_margin, y_margin);
4112 gPad->cd(1);
4113
4114 h_empty_bid->DrawCopy("COL");
4115
4116 ViewSMTowerNumberingPad(SMNumber);
4117 gPad->Update();
4118
4119
4120 Bool_t b_true = true;
4121 h_empty_bid->SetStats(b_true);
4122
4123 h_empty_bid->Delete();
4124 h_empty_bid = nullptr;
4125 fCdeleteRoot++;
4126
4127
4128
4129 } else {
4130 std::cout << "!TEcnaHistos::SMTowerNumbering(...)> SM = " << SMNumber << ". Out of range ( range = [1,"
4131 << fEcal->MaxSMInEB() << "] )" << fTTBELL << std::endl;
4132 }
4133 }
4134
4135
4136 void TEcnaHistos::ViewSMTowerNumberingPad(const Int_t& SMNumber) {
4137
4138
4139 gStyle->SetTitleW(0.2);
4140 gStyle->SetTitleH(0.07);
4141
4142 ViewSMGrid(SMNumber, " ");
4143
4144 Color_t couleur_rouge = fCnaParHistos->SetColorsForNumbers("lvrb_top");
4145 Color_t couleur_bleu_fonce = fCnaParHistos->SetColorsForNumbers("lvrb_bottom");
4146
4147
4148
4149 char f_in[charArrLen];
4150 gStyle->SetTextSize(0.075);
4151
4152
4153 Int_t y_channel = 12;
4154 Int_t x_channel = 12;
4155
4156 Int_t max_tow_phi = fEcal->MaxTowPhiInSM() * fEcal->MaxCrysPhiInTow();
4157
4158
4159
4160 TText* text_SMtow_num = new TText();
4161 fCnewRoot++;
4162
4163 for (Int_t i_SMtow = 1; i_SMtow <= fEcal->MaxTowInSM(); i_SMtow++) {
4164 if (fEcalNumbering->GetTowerLvrbType(i_SMtow) == "top") {
4165 text_SMtow_num->SetTextColor(couleur_rouge);
4166 }
4167 if (fEcalNumbering->GetTowerLvrbType(i_SMtow) == "bottom") {
4168 text_SMtow_num->SetTextColor(couleur_bleu_fonce);
4169 }
4170
4171
4172 Double_t x_from_eta = fEcalNumbering->GetEta(SMNumber, i_SMtow, x_channel) - (Double_t)1;
4173 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4174 x_from_eta = fEcal->MaxTowEtaInSM() * fEcal->MaxCrysEtaInTow() + x_from_eta + (Double_t)1;
4175 }
4176
4177
4178 Double_t y_from_phi =
4179 max_tow_phi - 1 - (fEcalNumbering->GetPhi(SMNumber, i_SMtow, y_channel) - fEcalNumbering->GetPhiMin(SMNumber));
4180 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4181 y_from_phi = -y_from_phi + fEcal->MaxTowPhiInSM() * fEcal->MaxCrysPhiInTow() - (Double_t)1;
4182 }
4183
4184 sprintf(f_in, "%d", i_SMtow);
4185 text_SMtow_num->DrawText(x_from_eta, y_from_phi, f_in);
4186 }
4187
4188 text_SMtow_num->Delete();
4189 text_SMtow_num = nullptr;
4190 fCdeleteRoot++;
4191
4192
4193 Double_t offset_tow_tex_eta = (Double_t)8.;
4194 Double_t offset_tow_tex_phi = (Double_t)15.;
4195
4196 Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
4197 Double_t x_legend = (Double_t)0.;
4198 Double_t y_legend = (Double_t)0.;
4199
4200 Int_t ref_tower = fEcal->MaxTowInSM();
4201
4202
4203 gStyle->SetTextSize(0.075);
4204 gStyle->SetTextColor(couleur_rouge);
4205 x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
4206 y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
4207
4208 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
4209 x_legend = x_legend + offset_tow_tex_eta;
4210 y_legend = y_legend + offset_tow_tex_phi;
4211 }
4212 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4213 x_legend = -x_legend + offset_tow_tex_eta;
4214 y_legend = y_legend + offset_tow_tex_phi;
4215 }
4216
4217 sprintf(f_in, "xx");
4218 TText* text_legend_rouge = new TText(x_legend, y_legend, f_in);
4219 fCnewRoot++;
4220 text_legend_rouge->Draw();
4221 gStyle->SetTextSize(0.05);
4222 x_legend = x_legend - (Double_t)3.5;
4223 y_legend = y_legend - (Double_t)2.;
4224 sprintf(f_in, " LVRB ");
4225 TText* text_legend_rouge_expl = new TText(x_legend, y_legend, f_in);
4226 fCnewRoot++;
4227 text_legend_rouge_expl->Draw();
4228 y_legend = y_legend - (Double_t)1.75;
4229 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
4230 sprintf(f_in, " <--- ");
4231 }
4232 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4233 sprintf(f_in, " ---> ");
4234 }
4235 TText* text_legend_rouge_expm = new TText(x_legend, y_legend, f_in);
4236 fCnewRoot++;
4237 text_legend_rouge_expm->Draw();
4238
4239
4240
4241 gStyle->SetTextSize(0.075);
4242 gStyle->SetTextColor(couleur_bleu_fonce);
4243 x_legend = fEcalNumbering->GetEta(SMNumber, ref_tower, x_channel);
4244 y_legend = fEcalNumbering->GetPhi(SMNumber, ref_tower, y_channel) - fEcalNumbering->GetPhiMin(SMNumber);
4245
4246 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
4247 x_legend = x_legend + offset_tow_tex_eta;
4248 y_legend = y_legend + offset_tow_tex_phi / 3;
4249 }
4250 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4251 x_legend = -x_legend + offset_tow_tex_eta;
4252 y_legend = y_legend + offset_tow_tex_phi / 3;
4253 }
4254
4255 sprintf(f_in, "xx");
4256 TText* text_legend_bleu = new TText(x_legend, y_legend, f_in);
4257 fCnewRoot++;
4258 text_legend_bleu->Draw();
4259
4260 gStyle->SetTextSize(0.05);
4261 x_legend = x_legend - (Double_t)3.5;
4262 y_legend = y_legend - (Double_t)2.;
4263 sprintf(f_in, " LVRB ");
4264 TText* text_legend_bleu_expl = new TText(x_legend, y_legend, f_in);
4265 fCnewRoot++;
4266 text_legend_bleu_expl->Draw();
4267 y_legend = y_legend - (Double_t)1.75;
4268 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") {
4269 sprintf(f_in, " ---> ");
4270 }
4271 if (fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") {
4272 sprintf(f_in, " <--- ");
4273 }
4274 TText* text_legend_bleu_expm = new TText(x_legend, y_legend, f_in);
4275 fCnewRoot++;
4276 text_legend_bleu_expm->Draw();
4277
4278
4279 gStyle->SetTextColor(couleur_noir);
4280 }
4281
4282
4283 void TEcnaHistos::ViewSMGrid(const Int_t& SMNumber, const TString& c_option) {
4284
4285
4286 Int_t GeoBidSizeEta = fEcal->MaxTowEtaInSM() * fEcal->MaxCrysEtaInTow();
4287 Int_t GeoBidSizePhi = fEcal->MaxTowPhiInSM() * fEcal->MaxCrysPhiInTow();
4288
4289 if (c_option == "corcc") {
4290 GeoBidSizeEta = fEcal->MaxTowEtaInSM() * fEcal->MaxCrysInTow();
4291 GeoBidSizePhi = fEcal->MaxTowPhiInSM() * fEcal->MaxCrysInTow();
4292 }
4293
4294 Int_t nb_binx = GeoBidSizeEta;
4295 Int_t nb_biny = GeoBidSizePhi;
4296 Axis_t xinf_bid = (Axis_t)0.;
4297 Axis_t xsup_bid = (Axis_t)GeoBidSizeEta;
4298 Axis_t yinf_bid = (Axis_t)0.;
4299 Axis_t ysup_bid = (Axis_t)GeoBidSizePhi;
4300
4301
4302
4303 Int_t size_eta = fEcal->MaxCrysEtaInTow();
4304 Int_t size_phi = fEcal->MaxCrysPhiInTow();
4305 if (c_option == "corcc") {
4306 size_eta = fEcal->MaxCrysInTow();
4307 size_phi = fEcal->MaxCrysInTow();
4308 }
4309 Int_t max_x = nb_binx / size_eta;
4310 Int_t max_y = nb_biny / size_phi;
4311
4312
4313 Double_t yline = (Double_t)yinf_bid;
4314
4315 Double_t xline_left = (Double_t)xinf_bid;
4316 Double_t xline_right = (Double_t)xsup_bid;
4317
4318 for (Int_t j = 0; j < max_y; j++) {
4319 yline = yline + (Double_t)size_phi;
4320 TLine* lin;
4321 lin = new TLine(xline_left, yline, xline_right, yline);
4322 fCnewRoot++;
4323 lin->Draw();
4324
4325 }
4326
4327
4328 Double_t xline = (Double_t)xinf_bid - (Double_t)size_eta;
4329
4330 Double_t yline_bot = (Double_t)yinf_bid;
4331 Double_t yline_top = (Double_t)ysup_bid;
4332
4333 Color_t coul_surligne = fCnaParHistos->ColorDefinition("noir");
4334 Color_t coul_textmodu = fCnaParHistos->ColorDefinition("vert36");
4335
4336
4337 gStyle->SetTextColor(coul_textmodu);
4338 gStyle->SetTextSize(0.075);
4339
4340 char f_in[charArrLen];
4341
4342 for (Int_t i = 0; i < max_x; i++) {
4343 xline = xline + (Double_t)size_eta;
4344 TLine* lin;
4345 lin = new TLine(xline, yline_bot, xline, yline_top);
4346 fCnewRoot++;
4347
4348
4349 if ((fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 4 || i == 8 || i == 12)) {
4350 lin->SetLineWidth(2);
4351 lin->SetLineColor(coul_surligne);
4352 }
4353 if ((fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 5 || i == 9 || i == 13)) {
4354 lin->SetLineWidth(2);
4355 lin->SetLineColor(coul_surligne);
4356 }
4357
4358 lin->Draw();
4359
4360
4361
4362 if ((fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB-") && (i == 2 || i == 6 || i == 10 || i == 14)) {
4363 if (i == 2) {
4364 sprintf(f_in, "M4");
4365 }
4366 if (i == 6) {
4367 sprintf(f_in, "M3");
4368 }
4369 if (i == 10) {
4370 sprintf(f_in, "M2");
4371 }
4372 if (i == 14) {
4373 sprintf(f_in, "M1");
4374 }
4375
4376 TText* text_num_module = new TText(xline + 1, yline_top + 1, f_in);
4377 fCnewRoot++;
4378 text_num_module->Draw();
4379
4380 }
4381 if ((fEcalNumbering->GetSMHalfBarrel(SMNumber) == "EB+") && (i == 3 || i == 7 || i == 11 || i == 15)) {
4382 if (i == 3) {
4383 sprintf(f_in, "M1");
4384 }
4385 if (i == 7) {
4386 sprintf(f_in, "M2");
4387 }
4388 if (i == 11) {
4389 sprintf(f_in, "M3");
4390 }
4391 if (i == 15) {
4392 sprintf(f_in, "M4");
4393 }
4394
4395 TText* text_num_module = new TText(xline, yline_top + 1, f_in);
4396 fCnewRoot++;
4397 text_num_module->Draw();
4398
4399 }
4400 }
4401
4402
4403
4404 Int_t MatSize = fEcal->MaxCrysEtaInTow();
4405 if (c_option == "corcc") {
4406 MatSize = fEcal->MaxCrysInTow();
4407 }
4408
4409 Int_t size_eta_sm = fEcal->MaxTowEtaInSM();
4410 Int_t size_phi_sm = fEcal->MaxTowPhiInSM();
4411
4412
4413 Double_t eta_min = fEcalNumbering->GetIEtaMin(SMNumber);
4414 Double_t eta_max = fEcalNumbering->GetIEtaMax(SMNumber);
4415
4416 TString x_var_name = GetHocoVecoAxisTitle("ietaSM");
4417 ;
4418 TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
4419
4420 Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
4421 Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("SMx");
4422 Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
4423 Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("SMx");
4424 Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("SMx");
4425
4426 new TF1("f1", x_direction.Data(), eta_min, eta_max);
4427 fCnewRoot++;
4428 TGaxis* sup_axis_x = nullptr;
4429
4430 if (x_direction == "-x")
4431 {
4432 sup_axis_x = new TGaxis(
4433 (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm * MatSize), (Float_t)0., "f1", size_eta_sm, "SC", 0.);
4434 fCnewRoot++;
4435 }
4436
4437 if (x_direction == "x")
4438 {
4439 sup_axis_x = new TGaxis(
4440 (Float_t)0., (Float_t)0., (Float_t)(size_eta_sm * MatSize), (Float_t)0., "f1", size_eta_sm, "SC", 0.);
4441 fCnewRoot++;
4442 }
4443
4444 if (sup_axis_x != nullptr) {
4445 sup_axis_x->SetTitle(x_var_name);
4446 sup_axis_x->SetTitleSize(tit_siz_x);
4447 sup_axis_x->SetTitleOffset(tit_off_x);
4448 sup_axis_x->SetLabelSize(lab_siz_x);
4449 sup_axis_x->SetLabelOffset(lab_off_x);
4450 sup_axis_x->SetTickSize(tic_siz_x);
4451 sup_axis_x->Draw("SAME");
4452 }
4453
4454
4455 Double_t phi_min = fEcalNumbering->GetPhiMin(SMNumber);
4456 Double_t phi_max = fEcalNumbering->GetPhiMax(SMNumber);
4457
4458 TString y_var_name = GetHocoVecoAxisTitle("phi");
4459 TString y_direction = fEcalNumbering->GetYDirectionEB(SMNumber);
4460
4461 Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
4462 Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("SMy");
4463 Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
4464 Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("SMy");
4465 Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("SMy");
4466
4467 new TF1("f2", y_direction.Data(), phi_min, phi_max);
4468 fCnewRoot++;
4469 TGaxis* sup_axis_y = nullptr;
4470
4471 if (y_direction == "-x")
4472 {
4473 sup_axis_y = new TGaxis(-(Float_t)1.5 * (Float_t)size_eta,
4474 (Float_t)0.,
4475 -(Float_t)1.5 * (Float_t)size_eta,
4476 (Float_t)(size_phi_sm * MatSize),
4477 "f2",
4478 (Int_t)size_phi_sm,
4479 "SC",
4480 0.);
4481 fCnewRoot++;
4482 }
4483
4484 if (y_direction == "x")
4485 {
4486 sup_axis_y = new TGaxis(-(Float_t)1.5 * (Float_t)size_eta,
4487 (Float_t)0.,
4488 -(Float_t)1.5 * (Float_t)size_eta,
4489 (Float_t)(size_phi_sm * MatSize),
4490 "f2",
4491 (Int_t)size_phi_sm,
4492 "SC",
4493 0.);
4494 fCnewRoot++;
4495 }
4496
4497 if (sup_axis_y != nullptr) {
4498 sup_axis_y->SetTitle(y_var_name);
4499 sup_axis_y->SetTitleSize(tit_siz_y);
4500 sup_axis_y->SetTitleOffset(tit_off_y);
4501 sup_axis_y->SetLabelSize(lab_siz_y);
4502 sup_axis_y->SetLabelOffset(lab_off_y);
4503 sup_axis_y->SetTickSize(tic_siz_y);
4504 sup_axis_y->Draw("SAME");
4505 }
4506
4507
4508 Double_t jphi_min = fEcalNumbering->GetJPhiMin(SMNumber);
4509 Double_t jphi_max = fEcalNumbering->GetJPhiMax(SMNumber);
4510
4511 TString jy_var_name = " ";
4512 TString jy_direction = fEcalNumbering->GetJYDirectionEB(SMNumber);
4513
4514 new TF1("f3", jy_direction.Data(), jphi_min, jphi_max);
4515 fCnewRoot++;
4516 TGaxis* sup_axis_jy = nullptr;
4517
4518
4519 sup_axis_jy = new TGaxis(
4520 (Float_t)0., (Float_t)0., (Float_t)0., (Float_t)(size_phi_sm * MatSize), "f3", (Int_t)size_phi_sm, "SC", 0.);
4521 fCnewRoot++;
4522
4523 if (jy_direction == "-x")
4524 {
4525 jy_var_name = GetEtaPhiAxisTitle("jphiSMB+");
4526 }
4527
4528 if (jy_direction == "x")
4529 {
4530 jy_var_name = GetEtaPhiAxisTitle("jphiSMB-");
4531 }
4532
4533 lab_off_y = fCnaParHistos->AxisLabelOffset("SMyInEB");
4534
4535 sup_axis_jy->SetTitle(jy_var_name);
4536 sup_axis_jy->SetTitleSize(tit_siz_y);
4537 sup_axis_jy->SetTitleOffset(tit_off_y);
4538 sup_axis_jy->SetLabelSize(lab_siz_y);
4539 sup_axis_jy->SetLabelOffset(lab_off_y);
4540 sup_axis_jy->SetTickSize(tic_siz_y);
4541 sup_axis_jy->Draw("SAME");
4542
4543
4544
4545 gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
4546
4547 }
4548
4549
4550 void TEcnaHistos::DeeSCNumbering(const Int_t& DeeNumber) {
4551
4552
4553 if ((DeeNumber > 0) && (DeeNumber <= fEcal->MaxDeeInEE())) {
4554 Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee() * fEcal->MaxCrysIXInSC();
4555 Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee() * fEcal->MaxCrysIYInSC();
4556
4557 Int_t nb_binx = GeoBidSizeIX;
4558 Int_t nb_biny = GeoBidSizeIY;
4559 Axis_t xinf_bid = (Axis_t)0.;
4560 Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4561 Axis_t yinf_bid = (Axis_t)0.;
4562 Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4563
4564 TString axis_x_var_name = " IX ";
4565 TString axis_y_var_name = " IY ";
4566
4567
4568
4569
4570 char f_in_mat_tit[charArrLen];
4571
4572 sprintf(f_in_mat_tit, " Dee SC numbering ");
4573
4574
4575
4576 TH2D* h_empty_bid =
4577 new TH2D("grid_bidim_IX_IY", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
4578 fCnewRoot++;
4579
4580 h_empty_bid->Reset();
4581
4582 h_empty_bid->GetXaxis()->SetTitle(axis_x_var_name);
4583 h_empty_bid->GetYaxis()->SetTitle(axis_y_var_name);
4584
4585
4586
4587 char f_in[charArrLen];
4588
4589
4590
4591 UInt_t canv_h = fCnaParHistos->CanvasFormatH("IXIYDee");
4592 UInt_t canv_w = fCnaParHistos->CanvasFormatW("IXIYDee");
4593
4594
4595 fFapStexType = fEcalNumbering->GetEEDeeType(DeeNumber);
4596
4597
4598 SetAllPavesViewStex("Numbering", DeeNumber);
4599
4600
4601
4602 sprintf(f_in, "SC_numbering_for_Dee_Dee%d", DeeNumber);
4603 SetHistoPresentation((TH1D*)h_empty_bid, "Stex2DEENb");
4604 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
4605 fCnewRoot++;
4606 fCurrentCanvas = MainCanvas;
4607 fCurrentCanvasName = f_in;
4608
4609
4610
4611
4612 fPavComStex->Draw();
4613 fPavComCxyz->Draw();
4614
4615 Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
4616 Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
4617 Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
4618 Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_Dee") - 0.005;
4619
4620 Double_t x_margin = x_low;
4621 Double_t y_margin = y_low;
4622
4623 MainCanvas->Divide(1, 1, x_margin, y_margin);
4624
4625
4626 gPad->cd(1);
4627 TVirtualPad* main_subpad = gPad;
4628 main_subpad->SetPad(x_low, y_low, x_up, y_up);
4629
4630 h_empty_bid->DrawCopy("COL");
4631
4632 ViewDeeSCNumberingPad(DeeNumber);
4633
4634 gPad->Update();
4635
4636
4637 Bool_t b_true = true;
4638 h_empty_bid->SetStats(b_true);
4639
4640 h_empty_bid->Delete();
4641 h_empty_bid = nullptr;
4642 fCdeleteRoot++;
4643
4644
4645 } else {
4646 std::cout << "!TEcnaHistos::DeeSCNumbering(...)> Dee = " << DeeNumber << ". Out of range ( range = [1,"
4647 << fEcal->MaxDeeInEE() << "] )" << fTTBELL << std::endl;
4648 }
4649 }
4650
4651
4652 void TEcnaHistos::ViewDeeSCNumberingPad(const Int_t& DeeNumber) {
4653
4654
4655 gStyle->SetTitleW(0.4);
4656 gStyle->SetTitleH(0.08);
4657
4658 ViewDeeGrid(DeeNumber, " ");
4659
4660
4661
4662 char f_in[charArrLen];
4663 gStyle->SetTextSize(0.0325);
4664
4665
4666 Int_t x_channel = 0;
4667 TText* text_DSSC_num = new TText();
4668 fCnewRoot++;
4669 TText* text_DeeSCCons_num = new TText();
4670 fCnewRoot++;
4671
4672 for (Int_t n1DeeSCEcna = 1; n1DeeSCEcna <= fEcal->MaxSCEcnaInDee(); n1DeeSCEcna++) {
4673 TString DeeDir = fEcalNumbering->GetDeeDirViewedFromIP(DeeNumber);
4674 TString SCQuadType = fEcalNumbering->GetSCQuadFrom1DeeSCEcna(n1DeeSCEcna);
4675 if (SCQuadType == "top" && DeeDir == "right") {
4676 x_channel = 13;
4677 }
4678 if (SCQuadType == "top" && DeeDir == "left") {
4679 x_channel = 7;
4680 }
4681 if (SCQuadType == "bottom" && DeeDir == "left") {
4682 x_channel = 11;
4683 }
4684 if (SCQuadType == "bottom" && DeeDir == "right") {
4685 x_channel = 17;
4686 }
4687 Int_t i_SCEcha = (Int_t)x_channel;
4688
4689 Double_t x_from_IX = (Double_t)GetXCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4690 Double_t y_from_IY = (Double_t)GetYCrysInStex(DeeNumber, n1DeeSCEcna, i_SCEcha);
4691 Double_t y_from_IYp = y_from_IY + (Double_t)1.;
4692 Double_t y_from_IYm = y_from_IY - (Double_t)1.;
4693
4694 TString DeeEndcap = fEcalNumbering->GetEEDeeEndcap(DeeNumber);
4695 Color_t couleur_SC = GetSCColor(DeeEndcap, DeeDir, SCQuadType);
4696 text_DSSC_num->SetTextColor(couleur_SC);
4697 text_DeeSCCons_num->SetTextColor((Color_t)1);
4698
4699 Int_t i_DSSC = fEcalNumbering->GetDSSCFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4700 Int_t i_DeeSCCons = fEcalNumbering->GetDeeSCConsFrom1DeeSCEcna(DeeNumber, n1DeeSCEcna);
4701 if (i_DSSC > 0) {
4702 if (
4703
4704 !(i_DeeSCCons == 33 && n1DeeSCEcna == 60) && !(i_DeeSCCons == 33 && n1DeeSCEcna == 119) &&
4705
4706 !(i_DeeSCCons == 29 && n1DeeSCEcna == 32) &&
4707 !(i_DeeSCCons == 29 && n1DeeSCEcna == 138) && !(i_DeeSCCons == 29 && n1DeeSCEcna == 157) &&
4708 !(i_DeeSCCons == 58 && n1DeeSCEcna == 176) && !(i_DeeSCCons == 58 && n1DeeSCEcna == 193) &&
4709
4710 !(i_DeeSCCons == 149 && n1DeeSCEcna == 188) &&
4711
4712 !(i_DeeSCCons == 112 && n1DeeSCEcna == 29) && !(i_DeeSCCons == 112 && n1DeeSCEcna == 144) &&
4713 !(i_DeeSCCons == 112 && n1DeeSCEcna == 165) && !(i_DeeSCCons == 119 && n1DeeSCEcna == 102) &&
4714 !(i_DeeSCCons == 119 && n1DeeSCEcna == 123) &&
4715
4716 !(i_DeeSCCons == 132 && n1DeeSCEcna == 41) &&
4717
4718
4719 !(i_DeeSCCons == 182 && n1DeeSCEcna == 60) && !(i_DeeSCCons == 182 && n1DeeSCEcna == 119) &&
4720
4721 !(i_DeeSCCons == 178 && n1DeeSCEcna == 32) &&
4722 !(i_DeeSCCons == 178 && n1DeeSCEcna == 138) && !(i_DeeSCCons == 178 && n1DeeSCEcna == 157) &&
4723 !(i_DeeSCCons == 207 && n1DeeSCEcna == 176) && !(i_DeeSCCons == 207 && n1DeeSCEcna == 193) &&
4724
4725 !(i_DeeSCCons == 298 && n1DeeSCEcna == 188) &&
4726
4727 !(i_DeeSCCons == 261 && n1DeeSCEcna == 29) &&
4728 !(i_DeeSCCons == 261 && n1DeeSCEcna == 144) && !(i_DeeSCCons == 261 && n1DeeSCEcna == 165) &&
4729 !(i_DeeSCCons == 268 && n1DeeSCEcna == 102) && !(i_DeeSCCons == 268 && n1DeeSCEcna == 123) &&
4730
4731 !(i_DeeSCCons == 281 && n1DeeSCEcna == 41)) {
4732 sprintf(f_in, "%d", i_DSSC);
4733 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4734 sprintf(f_in, "%d", i_DeeSCCons);
4735 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4736 }
4737
4738
4739
4740 if (i_DeeSCCons == 33 && n1DeeSCEcna == 60) {
4741 sprintf(f_in, "30a");
4742 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4743 sprintf(f_in, "33a");
4744 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4745 }
4746 if (i_DeeSCCons == 33 && n1DeeSCEcna == 119) {
4747 sprintf(f_in, "30b");
4748 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4749 sprintf(f_in, "33b");
4750 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4751 }
4752
4753 if (i_DeeSCCons == 29 && n1DeeSCEcna == 32) {
4754 sprintf(f_in, " 3c-25c");
4755 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4756 sprintf(f_in, "29c-58c");
4757 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4758 }
4759 if (i_DeeSCCons == 29 && n1DeeSCEcna == 138) {
4760 sprintf(f_in, "3a");
4761 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4762 sprintf(f_in, "29a");
4763 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4764 }
4765 if (i_DeeSCCons == 29 && n1DeeSCEcna == 157) {
4766 sprintf(f_in, "3b");
4767 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4768 sprintf(f_in, "29b");
4769 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4770 }
4771
4772 if (i_DeeSCCons == 58 && n1DeeSCEcna == 176) {
4773 sprintf(f_in, "25a");
4774 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4775 sprintf(f_in, "58a");
4776 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4777 }
4778 if (i_DeeSCCons == 58 && n1DeeSCEcna == 193) {
4779 sprintf(f_in, "25b");
4780 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4781 sprintf(f_in, "58b");
4782 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4783 }
4784
4785 if (i_DeeSCCons == 149 && n1DeeSCEcna == 188) {
4786 sprintf(f_in, "34a");
4787 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4788 sprintf(f_in, "149a");
4789 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4790 }
4791
4792 if (i_DeeSCCons == 112 && n1DeeSCEcna == 29) {
4793 sprintf(f_in, " 14a-21a");
4794 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4795 sprintf(f_in, "112a-119a");
4796 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4797 }
4798 if (i_DeeSCCons == 112 && n1DeeSCEcna == 144) {
4799 sprintf(f_in, "14c");
4800 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4801 sprintf(f_in, "112c");
4802 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4803 }
4804 if (i_DeeSCCons == 112 && n1DeeSCEcna == 165) {
4805 sprintf(f_in, "14b");
4806 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4807 sprintf(f_in, "112b");
4808 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4809 }
4810
4811 if (i_DeeSCCons == 119 && n1DeeSCEcna == 102) {
4812 sprintf(f_in, "21c");
4813 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4814 sprintf(f_in, "119c");
4815 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4816 }
4817 if (i_DeeSCCons == 119 && n1DeeSCEcna == 123) {
4818 sprintf(f_in, "21b");
4819 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4820 sprintf(f_in, "119b");
4821 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4822 }
4823
4824 if (i_DeeSCCons == 132 && n1DeeSCEcna == 41) {
4825 sprintf(f_in, "3a");
4826 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4827 sprintf(f_in, "132a");
4828 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4829 }
4830
4831
4832 if (i_DeeSCCons == 182 && n1DeeSCEcna == 60) {
4833 sprintf(f_in, "30a");
4834 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4835 sprintf(f_in, "182a");
4836 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4837 }
4838 if (i_DeeSCCons == 182 && n1DeeSCEcna == 119) {
4839 sprintf(f_in, "30b");
4840 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4841 sprintf(f_in, "182b");
4842 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4843 }
4844
4845 if (i_DeeSCCons == 178 && n1DeeSCEcna == 32) {
4846 sprintf(f_in, " 3c-25c");
4847 text_DSSC_num->DrawText(x_from_IX - 6, y_from_IYp, f_in);
4848 sprintf(f_in, "178c-207c");
4849 text_DeeSCCons_num->DrawText(x_from_IX - 6, y_from_IYm, f_in);
4850 }
4851 if (i_DeeSCCons == 178 && n1DeeSCEcna == 138) {
4852 sprintf(f_in, "3a");
4853 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4854 sprintf(f_in, "178a");
4855 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4856 }
4857 if (i_DeeSCCons == 178 && n1DeeSCEcna == 157) {
4858 sprintf(f_in, "3b");
4859 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4860 sprintf(f_in, "178b");
4861 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4862 }
4863
4864 if (i_DeeSCCons == 207 && n1DeeSCEcna == 176) {
4865 sprintf(f_in, "25a");
4866 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4867 sprintf(f_in, "207a");
4868 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4869 }
4870 if (i_DeeSCCons == 207 && n1DeeSCEcna == 193) {
4871 sprintf(f_in, "25b");
4872 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4873 sprintf(f_in, "207b");
4874 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4875 }
4876
4877 if (i_DeeSCCons == 298 && n1DeeSCEcna == 188) {
4878 sprintf(f_in, "34a");
4879 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4880 sprintf(f_in, "298a");
4881 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4882 }
4883
4884 if (i_DeeSCCons == 261 && n1DeeSCEcna == 29) {
4885 sprintf(f_in, " 14a-21a");
4886 text_DSSC_num->DrawText(x_from_IX - 6, y_from_IYp, f_in);
4887 sprintf(f_in, "261a-268a");
4888 text_DeeSCCons_num->DrawText(x_from_IX - 6, y_from_IYm, f_in);
4889 }
4890 if (i_DeeSCCons == 261 && n1DeeSCEcna == 144) {
4891 sprintf(f_in, "14c");
4892 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4893 sprintf(f_in, "261c");
4894 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4895 }
4896 if (i_DeeSCCons == 261 && n1DeeSCEcna == 165) {
4897 sprintf(f_in, "14b");
4898 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4899 sprintf(f_in, "261b");
4900 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4901 }
4902
4903 if (i_DeeSCCons == 268 && n1DeeSCEcna == 102) {
4904 sprintf(f_in, "21c");
4905 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4906 sprintf(f_in, "268c");
4907 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4908 }
4909 if (i_DeeSCCons == 268 && n1DeeSCEcna == 123) {
4910 sprintf(f_in, "21b");
4911 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4912 sprintf(f_in, "268b");
4913 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4914 }
4915
4916 if (i_DeeSCCons == 281 && n1DeeSCEcna == 41) {
4917 sprintf(f_in, "20a");
4918 text_DSSC_num->DrawText(x_from_IX, y_from_IYp, f_in);
4919 sprintf(f_in, "281a");
4920 text_DeeSCCons_num->DrawText(x_from_IX, y_from_IYm, f_in);
4921 }
4922 }
4923 }
4924
4925
4926
4927
4928 Color_t coul_textcolors = fCnaParHistos->ColorDefinition("noir");
4929 sprintf(f_in, "color: nb in Data Sector, black: nb for construction");
4930 Int_t x_colors = 3;
4931 Int_t y_colors = -14;
4932
4933 TText* text_colors = new TText(x_colors, y_colors, f_in);
4934 fCnewRoot++;
4935 text_colors->SetTextSize(0.03);
4936 text_colors->SetTextColor(coul_textcolors);
4937 text_colors->Draw();
4938
4939 Color_t couleur_noir = fCnaParHistos->ColorDefinition("noir");
4940 gStyle->SetTextColor(couleur_noir);
4941 }
4942
4943
4944 void TEcnaHistos::ViewDeeGrid(const Int_t& DeeNumber, const TString& c_option) {
4945
4946
4947 Int_t GeoBidSizeIX = fEcal->MaxSCIXInDee() * fEcal->MaxCrysIXInSC();
4948 Int_t GeoBidSizeIY = fEcal->MaxSCIYInDee() * fEcal->MaxCrysIYInSC();
4949
4950 if (c_option == "corcc") {
4951 GeoBidSizeIX = fEcal->MaxSCIXInDee() * fEcal->MaxCrysInSC();
4952 GeoBidSizeIY = fEcal->MaxSCIYInDee() * fEcal->MaxCrysInSC();
4953 }
4954
4955 Int_t nb_binx = GeoBidSizeIX;
4956 Int_t nb_biny = GeoBidSizeIY;
4957 Axis_t xinf_bid = (Axis_t)0.;
4958 Axis_t xsup_bid = (Axis_t)GeoBidSizeIX;
4959
4960 Axis_t yinf_bid = (Axis_t)0.;
4961 Axis_t ysup_bid = (Axis_t)GeoBidSizeIY;
4962 Double_t ymid_bid = (Double_t)(ysup_bid - yinf_bid) / 2.;
4963
4964
4965
4966 Int_t size_IX = fEcal->MaxCrysIXInSC();
4967 Int_t size_IY = fEcal->MaxCrysIYInSC();
4968
4969 if (c_option == "corcc") {
4970 size_IX = fEcal->MaxCrysInSC();
4971 size_IY = fEcal->MaxCrysInSC();
4972 }
4973
4974 Int_t max_x = nb_binx / size_IX;
4975 Int_t max_y = nb_biny / size_IY;
4976 Int_t max_yd = max_y / 2;
4977
4978
4979
4980 Int_t coefcc_x = (Int_t)1;
4981 Int_t coefcc_y = (Int_t)1;
4982 if (c_option == "corcc") {
4983 coefcc_x = fEcal->MaxCrysIXInSC();
4984 coefcc_y = fEcal->MaxCrysIYInSC();
4985 }
4986
4987
4988 Double_t yline = (Double_t)yinf_bid - (Double_t)size_IY;
4989
4990 Double_t xline_beg = (Double_t)xinf_bid;
4991 Double_t xline_end = (Double_t)xsup_bid;
4992
4993
4994 Int_t x_min[11] = {11, 11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
4995 Int_t x_max[11] = {50, 50, 47, 45, 45, 42, 37, 35, 30, 15, 50};
4996 for (Int_t i = 0; i < 11; i++) {
4997 x_min[i] = coefcc_x * x_min[i];
4998 x_max[i] = coefcc_x * x_max[i];
4999 }
5000
5001 for (Int_t j = 0; j < max_y; j++) {
5002 if (j < max_yd)
5003 {
5004 if (DeeNumber == 1 || DeeNumber == 3) {
5005 xline_beg = xinf_bid + (Double_t)x_min[10 - j];
5006 xline_end = xinf_bid + (Double_t)x_max[10 - j];
5007 }
5008 if (DeeNumber == 2 || DeeNumber == 4) {
5009 xline_beg = xsup_bid - (Double_t)x_max[10 - j];
5010 xline_end = xsup_bid - (Double_t)x_min[10 - j];
5011 }
5012 }
5013
5014 if (j == max_yd)
5015 {
5016 if (DeeNumber == 1 || DeeNumber == 3) {
5017 xline_beg = xinf_bid + (Double_t)x_min[0];
5018 xline_end = xinf_bid + (Double_t)x_max[0];
5019 }
5020 if (DeeNumber == 2 || DeeNumber == 4) {
5021 xline_beg = xsup_bid - (Double_t)x_max[0];
5022 xline_end = xsup_bid - (Double_t)x_min[0];
5023 }
5024 }
5025
5026 if (j > max_yd)
5027 {
5028 if (DeeNumber == 1 || DeeNumber == 3) {
5029 xline_beg = xinf_bid + (Double_t)x_min[j - 10];
5030 xline_end = xinf_bid + (Double_t)x_max[j - 10];
5031 }
5032 if (DeeNumber == 2 || DeeNumber == 4) {
5033 xline_beg = xsup_bid - (Double_t)x_max[j - 10];
5034 xline_end = xsup_bid - (Double_t)x_min[j - 10];
5035 }
5036 }
5037
5038 yline = yline + (Double_t)size_IY;
5039 TLine* lin;
5040 lin = new TLine(xline_beg, yline, xline_end, yline);
5041 fCnewRoot++;
5042 lin->Draw();
5043
5044
5045 }
5046
5047
5048 Double_t xline = (Double_t)xinf_bid - (Double_t)size_IX;
5049
5050 Double_t yline_haut_bot = (Double_t)ymid_bid;
5051 Double_t yline_haut_top = (Double_t)ysup_bid;
5052
5053 Double_t yline_bas_bot;
5054 Double_t yline_bas_top;
5055
5056
5057
5058 Int_t y_min[11] = {0, 11, 7, 0, 0, 0, 0, 0, 0, 0, 0};
5059 Int_t y_max[11] = {50, 50, 47, 45, 45, 42, 38, 35, 30, 15, 10};
5060 for (Int_t i = 0; i < 11; i++) {
5061 y_min[i] = coefcc_y * y_min[i];
5062 y_max[i] = coefcc_y * y_max[i];
5063 }
5064
5065 gStyle->SetTextSize(0.075);
5066
5067 for (Int_t i = 0; i <= max_x; i++) {
5068 if (DeeNumber == 1 || DeeNumber == 3) {
5069 yline_haut_bot = ymid_bid + (Double_t)y_min[i];
5070 yline_haut_top = ymid_bid + (Double_t)y_max[i];
5071 }
5072 if (DeeNumber == 2 || DeeNumber == 4) {
5073 yline_haut_bot = ymid_bid + (Double_t)y_min[10 - i];
5074 yline_haut_top = ymid_bid + (Double_t)y_max[10 - i];
5075 }
5076 yline_bas_bot = ysup_bid - yline_haut_top;
5077 yline_bas_top = ysup_bid - yline_haut_bot;
5078
5079 xline = xline + (Double_t)size_IX;
5080 TLine* lin_haut;
5081 lin_haut = new TLine(xline, yline_haut_bot, xline, yline_haut_top);
5082 fCnewRoot++;
5083 lin_haut->Draw();
5084
5085 TLine* lin_bas;
5086 lin_bas = new TLine(xline, yline_bas_bot, xline, yline_bas_top);
5087 fCnewRoot++;
5088 lin_bas->Draw();
5089
5090 }
5091
5092 Float_t fcoefcc_x = (Float_t)coefcc_x;
5093 Float_t fcoefcc_y = (Float_t)coefcc_y;
5094
5095 EEDataSectors(fcoefcc_x, fcoefcc_y, DeeNumber, "Dee");
5096 EEGridAxis(DeeNumber, "Dee", c_option);
5097
5098 }
5099
5100
5101
5102
5103
5104
5105 void TEcnaHistos::SqrtContourLevels(const Int_t& nb_niv, Double_t* cont_niv) {
5106
5107
5108 Int_t nb_niv2 = (nb_niv + 1) / 2;
5109
5110 for (Int_t num_niv = 0; num_niv < nb_niv2; num_niv++) {
5111 Int_t ind_niv = num_niv + nb_niv2 - 1;
5112 if (ind_niv < 0 || ind_niv > nb_niv) {
5113 std::cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
5114 << "wrong contour levels for correlation matrix" << fTTBELL << std::endl;
5115 } else {
5116 cont_niv[ind_niv] = (Double_t)(num_niv * num_niv) / ((Double_t)((nb_niv2 - 1) * (nb_niv2 - 1)));
5117 }
5118 }
5119 for (Int_t num_niv = -1; num_niv > -nb_niv2; num_niv--) {
5120 Int_t ind_niv = num_niv + nb_niv2 - 1;
5121 if (ind_niv < 0 || ind_niv > nb_niv) {
5122 std::cout << "!TEcnaHistos::ContourLevels(...)> *** ERROR *** "
5123 << "wrong contour levels for correlation matrix" << fTTBELL << std::endl;
5124 } else {
5125 cont_niv[ind_niv] = -(Double_t)(num_niv * num_niv) / ((Double_t)((nb_niv2 - 1) * (nb_niv2 - 1)));
5126 }
5127 }
5128 }
5129
5130
5131
5132
5133
5134
5135 TString TEcnaHistos::GetHocoVecoAxisTitle(const TString& chcode) {
5136 TString xname = " ";
5137
5138 if (fFlagSubDet == "EB") {
5139 xname = GetEtaPhiAxisTitle(chcode);
5140 }
5141 if (fFlagSubDet == "EE") {
5142 xname = GetIXIYAxisTitle(chcode);
5143 }
5144
5145 return xname;
5146 }
5147
5148 TString TEcnaHistos::GetEtaPhiAxisTitle(const TString& chcode) {
5149 TString xname = " ";
5150
5151 if (chcode == "ietaEB") {
5152 xname = "i#eta Xtal ";
5153 }
5154 if (chcode == "ietaSM") {
5155 xname = "i#eta Xtal ";
5156 }
5157 if (chcode == "ietaTow") {
5158 xname = "i#eta Xtal ";
5159 }
5160
5161 if (chcode == "iphiEB") {
5162 xname = " i#varphi Xtal";
5163 }
5164 if (chcode == "jphiEB+") {
5165 xname = " i#varphi Xtal";
5166 }
5167 if (chcode == "jphiEB-") {
5168 xname = " i#varphi Xtal";
5169 }
5170 if (chcode == "jphiSMB+") {
5171 xname = " i#varphi Xtal";
5172 }
5173 if (chcode == "jphiSMB-") {
5174 xname = "i#varphi Xtal ";
5175 }
5176 if (chcode == "jphiTow") {
5177 xname = "i#varphi Xtal in SM ";
5178 }
5179 if (chcode == "phi") {
5180 xname = "i#varphi Xtal in EB ";
5181 }
5182
5183 return xname;
5184 }
5185
5186 TString TEcnaHistos::GetIXIYAxisTitle(const TString& chcode) {
5187 TString xname = " ";
5188
5189 if (chcode == "iIXDee") {
5190 xname = "IX(SC)";
5191 }
5192
5193 if (chcode == "iIXDee1") {
5194 xname = " -IX Xtal";
5195 }
5196 if (chcode == "iIXDee2") {
5197 xname = " IX Xtal ";
5198 }
5199 if (chcode == "iIXDee3") {
5200 xname = " IX Xtal";
5201 }
5202 if (chcode == "iIXDee4") {
5203 xname = "-IX Xtal ";
5204 }
5205
5206 if (chcode == "iIXEE") {
5207 xname = " IX Xtal";
5208 }
5209
5210 if (chcode == "iIXSC") {
5211 xname = "IX Xtal";
5212 }
5213
5214 if (chcode == "jIYDee") {
5215 xname = "IY Xtal";
5216 }
5217 if (chcode == "jIYSC") {
5218 xname = "IY Xtal";
5219 }
5220 if (chcode == "IY") {
5221 xname = "IY";
5222 }
5223
5224 return xname;
5225 }
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235 void TEcnaHistos::ViewStas(const TVectorD& arg_read_histo, const Int_t& arg_AlreadyRead, const TString& HistoCode) {
5236
5237
5238
5239 char f_in_mat_tit[charArrLen];
5240
5241 if (HistoCode == "D_NOE_ChNb") {
5242 sprintf(f_in_mat_tit, "Number of Events");
5243 }
5244 if (HistoCode == "D_Ped_ChNb") {
5245 sprintf(f_in_mat_tit, "Pedestals");
5246 }
5247 if (HistoCode == "D_TNo_ChNb") {
5248 sprintf(f_in_mat_tit, "Total noise");
5249 }
5250 if (HistoCode == "D_MCs_ChNb") {
5251 sprintf(f_in_mat_tit, "Mean cor(s,s')");
5252 }
5253 if (HistoCode == "D_LFN_ChNb") {
5254 sprintf(f_in_mat_tit, "Low frequency noise");
5255 }
5256 if (HistoCode == "D_HFN_ChNb") {
5257 sprintf(f_in_mat_tit, "High frequency noise");
5258 }
5259 if (HistoCode == "D_SCs_ChNb") {
5260 sprintf(f_in_mat_tit, "Sigma of cor(s,s')");
5261 }
5262
5263
5264 Int_t GeoBidSizeHoco = fEcal->MaxStinVecoInStas();
5265 Int_t GeoBidSizeVeco = fEcal->MaxStinHocoInStas();
5266
5267 Int_t vertic_empty_strips = 3;
5268 Int_t vertic_empty_strip_1 = 1;
5269
5270 if (fFlagSubDet == "EE") {
5271
5272 GeoBidSizeHoco = fEcal->MaxStinHocoInStas() + vertic_empty_strips;
5273 GeoBidSizeVeco = fEcal->MaxStinVecoInStas();
5274 }
5275
5276 Int_t nb_binx = GeoBidSizeHoco;
5277 Int_t nb_biny = GeoBidSizeVeco;
5278 Axis_t xinf_bid = (Axis_t)0.;
5279 Axis_t xsup_bid = (Axis_t)GeoBidSizeHoco;
5280 Axis_t yinf_bid = (Axis_t)0.;
5281 Axis_t ysup_bid = (Axis_t)GeoBidSizeVeco;
5282
5283 TString axis_x_var_name = " #Hoco ";
5284 TString axis_y_var_name = " #varVeco ";
5285
5286
5287
5288 TH2D* h_geo_bid =
5289 new TH2D("geobidim_ViewStas", f_in_mat_tit, nb_binx, xinf_bid, xsup_bid, nb_biny, yinf_bid, ysup_bid);
5290 fCnewRoot++;
5291 h_geo_bid->Reset();
5292
5293 Int_t CounterExistingFile = 0;
5294 Int_t CounterDataExist = 0;
5295
5296 Int_t* xFapNbOfEvts = new Int_t[fEcal->MaxStexInStas()];
5297 fCnew++;
5298 for (Int_t i = 0; i < fEcal->MaxStexInStas(); i++) {
5299 xFapNbOfEvts[i] = 0;
5300 }
5301
5302
5303
5304
5305 for (Int_t iStasStex = 0; iStasStex < fEcal->MaxStexInStas(); iStasStex++) {
5306 TVectorD partial_histp(fEcal->MaxStinEcnaInStex());
5307 for (Int_t i = 0; i < fEcal->MaxStinEcnaInStex(); i++) {
5308 partial_histp(i) = (Double_t)0.;
5309 }
5310
5311 Bool_t OKFileExists = kFALSE;
5312 Bool_t OKDataExist = kFALSE;
5313
5314 if (arg_AlreadyRead == fTobeRead) {
5315 fMyRootFile->PrintNoComment();
5316 Int_t n1StasStex = iStasStex + 1;
5317 fMyRootFile->FileParameters(fFapAnaType,
5318 fFapNbOfSamples,
5319 fFapRunNumber,
5320 fFapFirstReqEvtNumber,
5321 fFapLastReqEvtNumber,
5322 fFapReqNbOfEvts,
5323 n1StasStex,
5324 fCfgResultsRootFilePath.Data());
5325
5326 if (fMyRootFile->LookAtRootFile() == kTRUE) {
5327 OKFileExists = kTRUE;
5328 }
5329
5330 if (OKFileExists == kTRUE) {
5331 xFapNbOfEvts[iStasStex] = fMyRootFile->GetNumberOfEvents(fFapReqNbOfEvts, n1StasStex);
5332 TString fp_name_short = fMyRootFile->GetRootFileNameShort();
5333
5334
5335
5336
5337 if (iStasStex == 0) {
5338 fStartTime = fMyRootFile->GetStartTime();
5339 fStopTime = fMyRootFile->GetStopTime();
5340 fStartDate = fMyRootFile->GetStartDate();
5341 fStopDate = fMyRootFile->GetStopDate();
5342 }
5343
5344 time_t xStartTime = fMyRootFile->GetStartTime();
5345 time_t xStopTime = fMyRootFile->GetStopTime();
5346 TString xStartDate = fMyRootFile->GetStartDate();
5347 TString xStopDate = fMyRootFile->GetStopDate();
5348
5349 if (xStartTime < fStartTime) {
5350 fStartTime = xStartTime;
5351 fStartDate = xStartDate;
5352 }
5353 if (xStopTime > fStopTime) {
5354 fStopTime = xStopTime;
5355 fStopDate = xStopDate;
5356 }
5357
5358 fRunType = fMyRootFile->GetRunType();
5359
5360
5361 if (HistoCode == "D_NOE_ChNb") {
5362 partial_histp = fMyRootFile->ReadAverageNumberOfEvents(fEcal->MaxStinEcnaInStex());
5363 }
5364 if (HistoCode == "D_Ped_ChNb") {
5365 partial_histp = fMyRootFile->ReadAveragePedestals(fEcal->MaxStinEcnaInStex());
5366 }
5367 if (HistoCode == "D_TNo_ChNb") {
5368 partial_histp = fMyRootFile->ReadAverageTotalNoise(fEcal->MaxStinEcnaInStex());
5369 }
5370 if (HistoCode == "D_MCs_ChNb") {
5371 partial_histp = fMyRootFile->ReadAverageMeanCorrelationsBetweenSamples(fEcal->MaxStinEcnaInStex());
5372 }
5373 if (HistoCode == "D_LFN_ChNb") {
5374 partial_histp = fMyRootFile->ReadAverageLowFrequencyNoise(fEcal->MaxStinEcnaInStex());
5375 }
5376 if (HistoCode == "D_HFN_ChNb") {
5377 partial_histp = fMyRootFile->ReadAverageHighFrequencyNoise(fEcal->MaxStinEcnaInStex());
5378 }
5379 if (HistoCode == "D_SCs_ChNb") {
5380 partial_histp = fMyRootFile->ReadAverageSigmaOfCorrelationsBetweenSamples(fEcal->MaxStinEcnaInStex());
5381 }
5382
5383 if (fMyRootFile->DataExist() == kTRUE) {
5384 OKDataExist = kTRUE;
5385 }
5386 } else {
5387 fStatusFileFound = kFALSE;
5388 std::cout << "!TEcnaHistos::ViewStas(...)> *ERROR* =====> "
5389 << " ROOT file not found" << fTTBELL << std::endl;
5390 }
5391 }
5392
5393 if (arg_AlreadyRead == 1) {
5394 OKDataExist = kTRUE;
5395 for (Int_t i0Stin = 0; i0Stin < fEcal->MaxStinEcnaInStex(); i0Stin++) {
5396 partial_histp(i0Stin) = arg_read_histo(fEcal->MaxStinEcnaInStex() * iStasStex + i0Stin);
5397 }
5398 }
5399
5400 if (OKDataExist == kTRUE) {
5401 fStatusFileFound = kTRUE;
5402 CounterExistingFile++;
5403
5404
5405 TMatrixD read_matrix(nb_binx, nb_biny);
5406 for (Int_t i = 0; i < nb_binx; i++) {
5407 for (Int_t j = 0; j < nb_biny; j++) {
5408 read_matrix(i, j) = (Double_t)0.;
5409 }
5410 }
5411
5412 if (OKDataExist == kTRUE) {
5413 fStatusDataExist = kTRUE;
5414 CounterDataExist++;
5415
5416 for (Int_t i0StexStinEcna = 0; i0StexStinEcna < fEcal->MaxStinEcnaInStex(); i0StexStinEcna++) {
5417
5418 Int_t i_xgeo = GetXStinInStas(iStasStex, i0StexStinEcna, vertic_empty_strip_1);
5419 Int_t i_ygeo = GetYStinInStas(iStasStex, i0StexStinEcna);
5420
5421 if (i_xgeo >= 0 && i_xgeo < nb_binx && i_ygeo >= 0 && i_ygeo < nb_biny) {
5422 Int_t n1StexStinEcna = i0StexStinEcna + 1;
5423
5424 if (fFlagSubDet == "EB") {
5425 read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
5426 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)read_matrix(i_xgeo, i_ygeo));
5427 }
5428
5429 if (fFlagSubDet == "EE") {
5430
5431 if (!((n1StexStinEcna == 10 || n1StexStinEcna == 11 || n1StexStinEcna == 29 || n1StexStinEcna == 32))) {
5432 read_matrix(i_xgeo, i_ygeo) = partial_histp(i0StexStinEcna);
5433 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)read_matrix(i_xgeo, i_ygeo));
5434 }
5435 if (n1StexStinEcna == 29) {
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447 read_matrix(i_xgeo, i_ygeo) =
5448 partial_histp(i0StexStinEcna) * (Double_t)(5. / 6.) + partial_histp(9) / (Double_t)6.;
5449 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)read_matrix(i_xgeo, i_ygeo));
5450 }
5451
5452 if (n1StexStinEcna == 32) {
5453
5454
5455 read_matrix(i_xgeo, i_ygeo) =
5456 partial_histp(i0StexStinEcna) * (Double_t)(5. / 6.) + partial_histp(10) / (Double_t)6.;
5457 h_geo_bid->Fill((Double_t)i_xgeo, (Double_t)i_ygeo, (Double_t)read_matrix(i_xgeo, i_ygeo));
5458 }
5459 }
5460 }
5461 }
5462 }
5463 else {
5464 fStatusDataExist = kFALSE;
5465
5466 std::cout << "!TEcnaHistos::ViewStas(...)> "
5467 << " Data not available for " << fFapStexName << " " << iStasStex + 1
5468 << " (Quantity not present in the ROOT file)" << fTTBELL << std::endl;
5469 }
5470 }
5471 else {
5472 fStatusFileFound = kFALSE;
5473
5474 std::cout << "!TEcnaHistos::ViewStas(...)> "
5475 << " Data not available for " << fFapStexName << " " << iStasStex + 1 << " (ROOT file not found)"
5476 << fTTBELL << std::endl;
5477 }
5478
5479 if (fFapNbOfEvts <= xFapNbOfEvts[iStasStex]) {
5480 fFapNbOfEvts = xFapNbOfEvts[iStasStex];
5481 }
5482
5483 }
5484
5485
5486 delete[] xFapNbOfEvts;
5487 xFapNbOfEvts = nullptr;
5488 fCdelete++;
5489
5490 if (CounterExistingFile > 0 && CounterDataExist > 0) {
5491
5492
5493
5494 SetYminMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYminDefaultValue(HistoCode.Data()));
5495 SetYmaxMemoFromValue(HistoCode.Data(), fCnaParHistos->GetYmaxDefaultValue(HistoCode.Data()));
5496
5497 if (fUserHistoMin == fUserHistoMax) {
5498 fFlagUserHistoMin = "AUTO";
5499 fFlagUserHistoMax = "AUTO";
5500 }
5501
5502 if (fFlagUserHistoMin == "ON") {
5503 SetYminMemoFromValue(HistoCode.Data(), fUserHistoMin);
5504 fFlagUserHistoMin = "OFF";
5505 }
5506 if (fFlagUserHistoMax == "ON") {
5507 SetYmaxMemoFromValue(HistoCode.Data(), fUserHistoMax);
5508 fFlagUserHistoMax = "OFF";
5509 }
5510
5511 if (fFlagUserHistoMin == "AUTO") {
5512 SetYminMemoFromValue(HistoCode.Data(), h_geo_bid->GetMinimum());
5513 fFlagUserHistoMin = "OFF";
5514 }
5515 if (fFlagUserHistoMax == "AUTO") {
5516 SetYmaxMemoFromValue(HistoCode.Data(), h_geo_bid->GetMaximum());
5517 fFlagUserHistoMax = "OFF";
5518 }
5519
5520 SetHistoFrameYminYmaxFromMemo((TH1D*)h_geo_bid, HistoCode);
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536 char f_in[charArrLen];
5537
5538
5539 UInt_t canv_h = fCnaParHistos->CanvasFormatH("petit");
5540 UInt_t canv_w = fCnaParHistos->CanvasFormatW("petit");
5541
5542 if (fFlagSubDet == "EB") {
5543 canv_w = fCnaParHistos->CanvasFormatW("phietaEB");
5544 canv_h = fCnaParHistos->CanvasFormatH("phietaEB");
5545 }
5546 if (fFlagSubDet == "EE") {
5547 canv_w = fCnaParHistos->CanvasFormatW("IYIXEE");
5548 canv_h = fCnaParHistos->CanvasFormatH("IYIXEE");
5549 }
5550
5551
5552 SetAllPavesViewStas();
5553
5554
5555 TString name_cov_cor;
5556 name_cov_cor.Resize(charArrLen);
5557 name_cov_cor = "?";
5558
5559 if (HistoCode == "D_NOE_ChNb") {
5560 name_cov_cor = "Number_of_Events";
5561 }
5562 if (HistoCode == "D_Ped_ChNb") {
5563 name_cov_cor = "Pedestals";
5564 }
5565 if (HistoCode == "D_TNo_ChNb") {
5566 name_cov_cor = "Total_noise";
5567 }
5568 if (HistoCode == "D_MCs_ChNb") {
5569 name_cov_cor = "Mean_Corss";
5570 }
5571 if (HistoCode == "D_LFN_ChNb") {
5572 name_cov_cor = "Low_Fq_Noise";
5573 }
5574 if (HistoCode == "D_HFN_ChNb") {
5575 name_cov_cor = "High_Fq_Noise";
5576 }
5577 if (HistoCode == "D_SCs_ChNb") {
5578 name_cov_cor = "Sigma_Corss";
5579 }
5580
5581 TString name_visu;
5582 name_visu.Resize(charArrLen);
5583 name_visu = "colz";
5584
5585 sprintf(f_in,
5586 "%s_%s_S1_%d_R%d_%d_%d_%s_%s_HocoVeco_R%d",
5587 name_cov_cor.Data(),
5588 fFapAnaType.Data(),
5589 fFapNbOfSamples,
5590 fFapRunNumber,
5591 fFapFirstReqEvtNumber,
5592 fFapLastReqEvtNumber,
5593 fFlagSubDet.Data(),
5594 name_visu.Data(),
5595 arg_AlreadyRead);
5596
5597 if (fFlagSubDet == "EB") {
5598 SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEB");
5599 }
5600 if (fFlagSubDet == "EE") {
5601 SetHistoPresentation((TH1D*)h_geo_bid, "Stas2DEE");
5602 }
5603
5604 TCanvas* MainCanvas = new TCanvas(f_in, f_in, canv_w, canv_h);
5605 fCnewRoot++;
5606 fCurrentCanvas = MainCanvas;
5607 fCurrentCanvasName = f_in;
5608
5609
5610
5611
5612 if (fPavComGeneralTitle != nullptr) {
5613 fPavComGeneralTitle->Draw();
5614 }
5615
5616 fPavComStas->Draw();
5617 fPavComAnaRun->Draw();
5618 fPavComNbOfEvts->Draw();
5619
5620
5621 Double_t x_low = fCnaParHistos->BoxLeftX("bottom_left_box") - 0.005;
5622 Double_t y_low = fCnaParHistos->BoxTopY("bottom_left_box") + 0.005;
5623 Double_t x_margin = x_low;
5624 Double_t y_margin = y_low;
5625 MainCanvas->Divide(1, 1, x_margin, y_margin);
5626
5627 gPad->cd(1);
5628
5629 if (fFlagSubDet == "EE") {
5630 Double_t x_up = fCnaParHistos->BoxRightX("bottom_right_box") + 0.005;
5631 Double_t y_up = fCnaParHistos->BoxBottomY("top_left_box_EE") - 0.005;
5632 TVirtualPad* main_subpad = gPad;
5633 main_subpad->SetPad(x_low, y_low, x_up, y_up);
5634 }
5635
5636
5637 h_geo_bid->GetXaxis()->SetTitle(axis_x_var_name);
5638 h_geo_bid->GetYaxis()->SetTitle(axis_y_var_name);
5639
5640 h_geo_bid->DrawCopy("COLZ");
5641
5642
5643 ViewStasGrid(vertic_empty_strips);
5644 gPad->Draw();
5645 gPad->Update();
5646
5647
5648 }
5649
5650
5651 Bool_t b_true = true;
5652 h_geo_bid->SetStats(b_true);
5653 h_geo_bid->Delete();
5654 h_geo_bid = nullptr;
5655 fCdeleteRoot++;
5656
5657 }
5658
5659
5660
5661
5662
5663
5664 Int_t TEcnaHistos::GetXStinInStas(const Int_t& iStasStex,
5665 const Int_t& StexStinEcna,
5666 const Int_t& vertic_empty_strip_1) {
5667
5668
5669
5670 Int_t ix_geo = 0;
5671 Int_t n1StasStex = iStasStex + 1;
5672 TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5673
5674 if (fFlagSubDet == "EB") {
5675 if (ctype == "EB-") {
5676 ix_geo = (iStasStex - fEcal->MaxStexInStasMinus()) * fEcal->MaxStinVecoInStex() +
5677 StexStinEcna % fEcal->MaxStinVecoInStex();
5678 }
5679 if (ctype == "EB+") {
5680 ix_geo = iStasStex * fEcal->MaxStinVecoInStex() + fEcal->MaxStinVecoInStex() - 1 -
5681 StexStinEcna % fEcal->MaxStinVecoInStex();
5682 }
5683 }
5684
5685 if (fFlagSubDet == "EE") {
5686 TString LeftRightFromIP = fEcalNumbering->GetDeeDirViewedFromIP(n1StasStex);
5687
5688 if (ctype == "EE-" && LeftRightFromIP == "left") {
5689 ix_geo = fEcal->MaxStinHocoInStex() - StexStinEcna / fEcal->MaxStinVecoInStex() - 1 + vertic_empty_strip_1;
5690 }
5691 if (ctype == "EE-" && LeftRightFromIP == "right") {
5692 ix_geo = fEcal->MaxStinHocoInStex() + StexStinEcna / fEcal->MaxStinVecoInStex() + vertic_empty_strip_1;
5693 }
5694 if (ctype == "EE+" && LeftRightFromIP == "left") {
5695 ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex) + fEcal->MaxStinHocoInStex() -
5696 StexStinEcna / fEcal->MaxStinVecoInStex() - 1;
5697 }
5698 if (ctype == "EE+" && LeftRightFromIP == "right") {
5699 ix_geo = (Int_t)fCnaParHistos->DeeOffsetX(fFlagSubDet, n1StasStex) + StexStinEcna / fEcal->MaxStinVecoInStex();
5700 }
5701 }
5702 return ix_geo;
5703 }
5704
5705 Int_t TEcnaHistos::GetYStinInStas(const Int_t& iStasStex, const Int_t& StexStinEcna) {
5706
5707
5708
5709 Int_t iy_geo = 0;
5710
5711 if (fFlagSubDet == "EB") {
5712 Int_t n1StasStex = iStasStex + 1;
5713 TString ctype = fEcalNumbering->GetStexHalfStas(n1StasStex);
5714 if (ctype == "EB+") {
5715 iy_geo = StexStinEcna / fEcal->MaxStinVecoInStex() + fEcal->MaxStinHocoInStex();
5716 }
5717 if (ctype == "EB-") {
5718 iy_geo = fEcal->MaxStinHocoInStex() - 1 - StexStinEcna / fEcal->MaxStinVecoInStex();
5719 }
5720 }
5721
5722 if (fFlagSubDet == "EE") {
5723 iy_geo = StexStinEcna % fEcal->MaxStinVecoInStex();
5724 }
5725 return iy_geo;
5726 }
5727
5728
5729
5730
5731
5732
5733
5734 void TEcnaHistos::ViewStasGrid(const Int_t& vertic_empty_strips) {
5735
5736
5737 if (fFlagSubDet == "EB") {
5738 ViewEBGrid();
5739 }
5740 if (fFlagSubDet == "EE") {
5741 ViewEEGrid(vertic_empty_strips);
5742 }
5743
5744 }
5745
5746 void TEcnaHistos::ViewEBGrid() {
5747
5748
5749 Int_t GeoBidSizeEta = fEcal->MaxSMEtaInEB() * fEcal->MaxTowEtaInSM();
5750 Int_t GeoBidSizePhi = fEcal->MaxSMPhiInEB() * fEcal->MaxTowPhiInSM();
5751
5752 Int_t size_y = fEcal->MaxTowEtaInSM();
5753 Int_t size_x = fEcal->MaxTowPhiInSM();
5754
5755 Int_t nb_binx = GeoBidSizePhi;
5756 Int_t nb_biny = GeoBidSizeEta;
5757 Axis_t xinf_bid = (Axis_t)0.;
5758 Axis_t xsup_bid = (Axis_t)nb_binx;
5759 Axis_t yinf_bid = (Axis_t)0.;
5760 Axis_t ysup_bid = (Axis_t)nb_biny;
5761
5762
5763
5764 Int_t max_x = nb_binx / size_x;
5765 Int_t max_y = nb_biny / size_y;
5766
5767
5768 Double_t yline = (Double_t)yinf_bid;
5769
5770 Double_t xline_left = (Double_t)xinf_bid;
5771 Double_t xline_right = (Double_t)xsup_bid;
5772
5773 for (Int_t j = 0; j < max_y; j++) {
5774 yline = yline + (Double_t)size_y;
5775 TLine* lin;
5776 lin = new TLine(xline_left, yline, xline_right, yline);
5777 fCnewRoot++;
5778 lin->Draw();
5779
5780 }
5781
5782
5783 Double_t xline = (Double_t)xinf_bid - (Double_t)size_x;
5784
5785 Double_t yline_bot = (Double_t)yinf_bid;
5786 Double_t yline_top = (Double_t)ysup_bid;
5787
5788 for (Int_t i = 0; i < max_x; i++) {
5789 xline = xline + (Double_t)size_x;
5790 TLine* lin;
5791 lin = new TLine(xline, yline_bot, xline, yline_top);
5792 fCnewRoot++;
5793 lin->Draw();
5794 }
5795
5796
5797 Double_t yTextBot = yline_bot - (yline_top - yline_bot) / 25.;
5798 Double_t yTextTop = yline_top + (yline_top - yline_bot) / 120.;
5799 xline = (Double_t)xinf_bid - (Double_t)size_x;
5800
5801 char f_in[charArrLen];
5802 TText* text_SM = new TText();
5803 fCnewRoot++;
5804 for (Int_t i = 0; i < max_x; i++) {
5805 xline = xline + (Double_t)size_x;
5806 text_SM->SetTextColor(fCnaParHistos->ColorDefinition("bleu_fonce"));
5807 text_SM->SetTextSize((Double_t)0.03);
5808 sprintf(f_in, " +%d", i + 1);
5809 text_SM->DrawText(xline, yTextTop, f_in);
5810 sprintf(f_in, " %d", -i - 1);
5811 text_SM->DrawText(xline, yTextBot, f_in);
5812 }
5813
5814
5815
5816 Int_t SMNumber = 1;
5817
5818
5819 Int_t MatSize = fEcal->MaxTowPhiInSM();
5820 Int_t size_x_eb = fEcal->MaxSMPhiInEB();
5821 Double_t phi_min = 0;
5822 Double_t phi_max = 360;
5823
5824 TString x_var_name = GetHocoVecoAxisTitle("iphiEB");
5825 ;
5826 TString x_direction = fEcalNumbering->GetXDirectionEB(SMNumber);
5827
5828 new TF1("f1", x_direction.Data(), phi_min, phi_max);
5829 fCnewRoot++;
5830 TGaxis* sup_axis_x = nullptr;
5831
5832 if (x_direction == "-x")
5833 {
5834 sup_axis_x =
5835 new TGaxis((Float_t)0., (Float_t)0., (Float_t)(size_x_eb * MatSize), (Float_t)0., "f1", size_x_eb, "SC", 0.);
5836 fCnewRoot++;
5837 }
5838
5839 if (x_direction == "x")
5840 {
5841 sup_axis_x =
5842 new TGaxis((Float_t)0., (Float_t)0., (Float_t)(size_x_eb * MatSize), (Float_t)0., "f1", size_x_eb, "SC", 0.);
5843 fCnewRoot++;
5844 }
5845
5846 Float_t tit_siz_x = fCnaParHistos->AxisTitleSize();
5847 Float_t lab_siz_x = fCnaParHistos->AxisLabelSize("EBx");
5848 Float_t tic_siz_x = fCnaParHistos->AxisTickSize("SMx");
5849 Float_t tit_off_x = fCnaParHistos->AxisTitleOffset("EBx");
5850 Float_t lab_off_x = fCnaParHistos->AxisLabelOffset("EBx");
5851
5852 if (sup_axis_x != nullptr) {
5853 sup_axis_x->SetTitle(x_var_name);
5854 sup_axis_x->SetTitleSize(tit_siz_x);
5855 sup_axis_x->SetTitleOffset(tit_off_x);
5856 sup_axis_x->SetLabelSize(lab_siz_x);
5857 sup_axis_x->SetLabelOffset(lab_off_x);
5858 sup_axis_x->SetTickSize(tic_siz_x);
5859 sup_axis_x->Draw("SAME");
5860 }
5861
5862
5863 MatSize = fEcal->MaxTowEtaInSM();
5864 Int_t size_y_eb = fEcal->MaxSMEtaInEB();
5865
5866 Double_t eta_min = (Double_t)(-85.);
5867 Double_t eta_max = (Double_t)85.;
5868
5869 TString y_var_name = GetHocoVecoAxisTitle("ietaEB");
5870
5871 TGaxis* sup_axis_y = nullptr;
5872 sup_axis_y = new TGaxis(
5873 (Float_t)0., (Float_t)0., (Float_t)0., (Float_t)(size_y_eb * MatSize), eta_min, eta_max, MatSize / 2, "SC", 0.);
5874 fCnewRoot++;
5875
5876 Float_t tit_siz_y = fCnaParHistos->AxisTitleSize();
5877 Float_t lab_siz_y = fCnaParHistos->AxisLabelSize("EBy");
5878 Float_t tic_siz_y = fCnaParHistos->AxisTickSize("SMy");
5879 Float_t tit_off_y = fCnaParHistos->AxisTitleOffset("EBy");
5880 Float_t lab_off_y = fCnaParHistos->AxisLabelOffset("EBy");
5881
5882 sup_axis_y->SetTitle(y_var_name);
5883 sup_axis_y->SetTitleSize(tit_siz_y);
5884 sup_axis_y->SetTitleOffset(tit_off_y);
5885 sup_axis_y->SetLabelColor(1);
5886 sup_axis_y->SetLabelSize(lab_siz_y);
5887 sup_axis_y->SetLabelOffset(lab_off_y);
5888 sup_axis_y->SetTickSize(tic_siz_y);
5889 sup_axis_y->Draw("SAME");
5890
5891
5892
5893 gStyle->SetTextColor(fCnaParHistos->ColorDefinition("noir"));
5894
5895 }
5896
5897 void TEcnaHistos::ViewEEGrid(const Int_t& vertic_empty_strips) {
5898
5899
5900 Float_t coefcc_x = (Float_t)1. / (Float_t)5.;
5901 Float_t coefcc_y = (Float_t)1. / (Float_t)5.;
5902
5903 for (Int_t DeeNumber = 1; DeeNumber <= 4; DeeNumber++) {
5904 EEDataSectors(coefcc_x, coefcc_y, DeeNumber, "EE");
5905 EEGridAxis(DeeNumber, "EE", " ");
5906 }
5907
5908
5909 Double_t xline = (Double_t)coefcc_x * ((Double_t)2. * fEcal->MaxCrysIXInDee() +
5910 ((Double_t)vertic_empty_strips) / (Double_t)2. * fEcal->MaxCrysIXInSC());
5911
5912 Double_t yline_bot = (Double_t)coefcc_y * (Double_t)0.;
5913 Double_t yline_top = (Double_t)coefcc_y * (Double_t)fEcal->MaxCrysIYInDee();
5914
5915 TLine* lin;
5916 lin = new TLine(xline, yline_bot, xline, yline_top);
5917 fCnewRoot++;
5918 lin->Draw();
5919
5920
5921
5922 xline = (Double_t)coefcc_x *
5923 (3 * fEcal->MaxCrysIXInDee() + ((Double_t)vertic_empty_strips - 1.) * fEcal->MaxCrysIXInSC());
5924 TLine* lin12;
5925 lin12 = new TLine(xline, yline_bot, xline, yline_top);
5926 fCnewRoot++;
5927 lin12->SetLineStyle(2);
5928 lin12->Draw();
5929
5930 xline =
5931 (Double_t)coefcc_x * (fEcal->MaxCrysIXInDee() + ((Double_t)vertic_empty_strips) / 3. * fEcal->MaxCrysIXInSC());
5932 TLine* lin34;
5933 lin34 = new TLine(xline, yline_bot, xline, yline_top);
5934 fCnewRoot++;
5935 lin34->SetLineStyle(2);
5936 lin34->Draw();
5937
5938
5939 Double_t xline_end =
5940 (Double_t)coefcc_x * (4 * fEcal->MaxCrysIXInDee() + vertic_empty_strips * fEcal->MaxCrysIXInSC());
5941 Double_t yline_mid = (Double_t)coefcc_x * fEcal->MaxCrysIYInDee() / 2;
5942
5943 TLine* linh;
5944 linh = new TLine(0., yline_mid, xline_end, yline_mid);
5945 fCnewRoot++;
5946 linh->SetLineStyle(2);
5947 linh->Draw();
5948
5949 }
5950
5951
5952 void TEcnaHistos::EEDataSectors(const Float_t& coefcc_x,
5953 const Float_t& coefcc_y,
5954 const Int_t& DeeNumber,
5955 const TString& opt_plot) {
5956
5957
5958
5959 Int_t LineWidth = 2;
5960 if (opt_plot == "Dee") {
5961 LineWidth = 3;
5962 }
5963
5964 Int_t ngmax = 0;
5965
5966 ngmax = 13;
5967 Float_t xg_dee_int_bot[13] = {0, 5, 5, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11};
5968 Float_t yg_dee_int_bot[13] = {39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 50};
5969
5970 for (Int_t i = 0; i < ngmax; i++) {
5971 xg_dee_int_bot[i] = coefcc_x * xg_dee_int_bot[i];
5972 yg_dee_int_bot[i] = coefcc_y * yg_dee_int_bot[i];
5973 }
5974
5975 Float_t XgDeeIntBotRight[13];
5976 Float_t YgDeeIntBotRight[13];
5977 Float_t XgDeeIntTopRight[13];
5978 Float_t YgDeeIntTopRight[13];
5979
5980 for (Int_t i = 0; i < ngmax; i++) {
5981 XgDeeIntBotRight[i] = xg_dee_int_bot[i];
5982 YgDeeIntBotRight[i] = yg_dee_int_bot[i];
5983 XgDeeIntTopRight[i] = XgDeeIntBotRight[i];
5984 YgDeeIntTopRight[i] = coefcc_y * fEcal->MaxCrysIYInDee() - YgDeeIntBotRight[i];
5985 if (DeeNumber == 2 || DeeNumber == 4) {
5986 XgDeeIntBotRight[i] = -XgDeeIntBotRight[i] + coefcc_x * fEcal->MaxCrysIXInDee();
5987 XgDeeIntTopRight[i] = -XgDeeIntTopRight[i] + coefcc_x * fEcal->MaxCrysIXInDee();
5988 }
5989 XgDeeIntBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5990 XgDeeIntTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
5991 }
5992
5993 TGraph* BDeeIntBotRight = new TGraph(ngmax, XgDeeIntBotRight, YgDeeIntBotRight);
5994 BDeeIntBotRight->SetLineWidth(LineWidth);
5995 BDeeIntBotRight->DrawGraph(ngmax, XgDeeIntBotRight, YgDeeIntBotRight);
5996
5997 TGraph* BDeeIntTopRight = new TGraph(ngmax, XgDeeIntTopRight, YgDeeIntTopRight);
5998 BDeeIntTopRight->SetLineWidth(LineWidth);
5999 BDeeIntTopRight->DrawGraph(ngmax, XgDeeIntTopRight, YgDeeIntTopRight);
6000
6001
6002 ngmax = 21;
6003 Float_t xg_dee_ext_bot[21] = {0, 10, 10, 15, 15, 25, 25, 30, 30, 35, 35, 37, 37, 42, 42, 45, 45, 47, 47, 50, 50};
6004 Float_t yg_dee_ext_bot[21] = {0, 0, 3, 3, 5, 5, 8, 8, 13, 13, 15, 15, 20, 20, 25, 25, 35, 35, 40, 40, 50};
6005 for (Int_t i = 0; i < ngmax; i++) {
6006 xg_dee_ext_bot[i] = coefcc_x * xg_dee_ext_bot[i];
6007 yg_dee_ext_bot[i] = coefcc_y * yg_dee_ext_bot[i];
6008 }
6009
6010 Float_t XgDeeExtBotRight[21];
6011 Float_t YgDeeExtBotRight[21];
6012 Float_t XgDeeExtTopRight[21];
6013 Float_t YgDeeExtTopRight[21];
6014
6015 for (Int_t i = 0; i < ngmax; i++) {
6016 XgDeeExtBotRight[i] = xg_dee_ext_bot[i];
6017 YgDeeExtBotRight[i] = yg_dee_ext_bot[i];
6018 XgDeeExtTopRight[i] = XgDeeExtBotRight[i];
6019 YgDeeExtTopRight[i] = coefcc_y * fEcal->MaxCrysIYInDee() - YgDeeExtBotRight[i];
6020 if (DeeNumber == 2 || DeeNumber == 4) {
6021 XgDeeExtBotRight[i] = -XgDeeExtBotRight[i] + coefcc_x * fEcal->MaxCrysIXInDee();
6022 XgDeeExtTopRight[i] = -XgDeeExtTopRight[i] + coefcc_x * fEcal->MaxCrysIXInDee();
6023 }
6024 XgDeeExtBotRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
6025 XgDeeExtTopRight[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
6026 }
6027
6028 TGraph* BDeeExtBotRight = new TGraph(ngmax, XgDeeExtBotRight, YgDeeExtBotRight);
6029 BDeeExtBotRight->SetLineWidth(LineWidth);
6030 BDeeExtBotRight->DrawGraph(ngmax, XgDeeExtBotRight, YgDeeExtBotRight);
6031
6032 TGraph* BDeeExtTopRight = new TGraph(ngmax, XgDeeExtTopRight, YgDeeExtTopRight);
6033 BDeeExtTopRight->SetLineWidth(LineWidth);
6034 BDeeExtTopRight->DrawGraph(ngmax, XgDeeExtTopRight, YgDeeExtTopRight);
6035
6036 char f_in[charArrLen];
6037
6038
6039
6040
6041 if (opt_plot == "EE") {
6042 ngmax = 2;
6043 Float_t xg_dee_data_sec9[2] = {0, 0};
6044 Float_t yg_dee_data_sec9[2] = {61, 100};
6045 for (Int_t i = 0; i < ngmax; i++) {
6046 xg_dee_data_sec9[i] = coefcc_x * xg_dee_data_sec9[i];
6047 yg_dee_data_sec9[i] = coefcc_y * yg_dee_data_sec9[i];
6048 }
6049
6050 Float_t XgDeeDataSec9[11];
6051 Float_t YgDeeDataSec9[11];
6052 for (Int_t i = 0; i < ngmax; i++) {
6053 XgDeeDataSec9[i] = xg_dee_data_sec9[i];
6054 YgDeeDataSec9[i] = yg_dee_data_sec9[i];
6055 if (DeeNumber == 2 || DeeNumber == 4) {
6056 XgDeeDataSec9[i] = -XgDeeDataSec9[i] + coefcc_x * fEcal->MaxCrysIXInDee();
6057 }
6058 XgDeeDataSec9[i] += fCnaParHistos->DeeOffsetX(opt_plot, DeeNumber);
6059 }
6060 TGraph* BDeeDataSec9 = new TGraph(ngmax, XgDeeDataSec9, YgDeeDataSec9);
6061 BDeeDataSec9->SetLineWidth(LineWidth);
6062 BDeeDataSec9->DrawGraph(ngmax, XgDeeDataSec9, YgDeeDataSec9);
6063 }
6064
6065
6066 ngmax = 11;
6067 Float_t xg_dee_data_sec1[11] = {7, 10, 10, 15, 15, 20, 20, 25, 25, 30, 30};
6068 Float_t yg_dee_data_sec1[11] = {60, 60, 65, 65, 70, 70, 75, 75, 85, 85, 87};
6069 for (Int_t i = 0; i < ngmax; i++) {
6070 xg_dee_data_sec1[i] = coefcc_x * xg_dee_data_sec1[i];
6071 yg_dee_data_sec1[i] = coefcc_y * yg_dee_data_sec1[i];
6072 }
6073
6074 Float_t XgDeeDataSec1[11];
6075 Float_t YgDeeDataSec1[11];
6076 for (Int_t i = 0; i < ngmax; i++) {
6077