Changeset 3762 for trunk/MagicSoft
- Timestamp:
- 04/15/04 23:31:58 (21 years ago)
- Location:
- trunk/MagicSoft/Mars
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Mars/Changelog
r3761 r3762 27 27 * macros/bootcampstandardanalysis.C 28 28 * macros/pedphotcalc.C 29 * macros/calibrate_data.C 29 30 - updated the macro to the cvs-standard used at the Udine bootcamp 30 31 -
trunk/MagicSoft/Mars/macros/calibrate_data.C
r3567 r3762 23 23 ! 24 24 \* ======================================================================== */ 25 #include "MAGIC.h"26 25 27 26 const TString defpath = "/mnt/Data/rootdata/CrabNebula/2004_01_27/"; … … 57 56 } 58 57 58 MCalibrationCam::PulserColor_t color; 59 60 if (calruns[0] < 20000) 61 color = MCalibrationCam::kCT1; 62 else 63 color = FindColor((MDirIter*)&cruns); 64 65 if (color == MCalibrationCam::kNONE) 66 { 67 TTimer timer("gSystem->ProcessEvents();", 50, kFALSE); 68 69 while (1) 70 { 71 timer.TurnOn(); 72 TString input = Getline("Could not find the correct colour: Type 'q' to exit, " 73 "green, blue, uv or ct1 to go on: "); 74 timer.TurnOff(); 75 76 if (input=="q\n") 77 return ; 78 79 if (input=="green") 80 color = MCalibrationCam::kGREEN; 81 if (input=="blue") 82 color = MCalibrationCam::kBLUE; 83 if (input=="uv") 84 color = MCalibrationCam::kUV; 85 if (input=="ct1") 86 color = MCalibrationCam::kCT1; 87 } 88 } 89 59 90 MStatusDisplay *display = new MStatusDisplay; 60 91 display->SetUpdateTime(3000); … … 75 106 MPedestalCam pedcam; 76 107 MBadPixelsCam badcam; 77 78 108 // 79 109 // for excluding pixels from the beginning: … … 114 144 // Now the short version: 115 145 // 116 /* 117 MJCalibration calloop; 118 calloop.SetInput(&cruns); 119 calloop.SetDisplay(display); 120 if (!calloop.Process(pedloop.GetPedestalCam())) 121 return; 122 #if 0 123 */ 124 // 125 // The longer version: 126 // 127 128 // 129 // Create a empty Parameter List and an empty Task List 130 // 131 MParList plist2; 132 MTaskList tlist2; 133 plist2.AddToList(&tlist2); 134 plist2.AddToList(&pedcam); 135 plist2.AddToList(&badcam); 136 137 gLog << endl;; 138 gLog << "Calculate MCalibrationCam from Runs " << cruns.GetRunsAsString() << endl; 139 gLog << endl; 140 141 MReadMarsFile read2("Events"); 142 read2.DisableAutoScheme(); 143 static_cast<MRead&>(read2).AddFiles(cruns); 144 145 MGeomCamMagic geomcam; 146 MExtractedSignalCam sigcam; 147 MArrivalTimeCam timecam; 148 MCalibrationChargeCam calcam; 149 // MCalibrationChargePINDiode pindiode; 150 // MCalibrationChargeBlindPix blindpix; 151 152 MHCalibrationRelTimeCam histtime; 153 MHCalibrationChargeCam histcharge; 154 // MHCalibrationChargePINDiode histpin; 155 // MHCalibrationChargeBlindPix histblind; 156 // 157 // 158 // Get the previously created MPedestalCam into the new Parameter List 159 // 160 plist2.AddToList(&geomcam); 161 plist2.AddToList(&sigcam); 162 plist2.AddToList(&timecam); 163 plist2.AddToList(&calcam); 164 plist2.AddToList(&histtime); 165 plist2.AddToList(&histcharge); 166 // plist2.AddToList(&histpin); 167 // plist2.AddToList(&histblind); 168 169 // 170 // We saw that the signal jumps between slices, 171 // thus take the sliding window 172 // 173 MExtractSignal2 sigcalc; 174 MExtractPINDiode pincalc; 175 MExtractBlindPixel blindcalc; 176 177 MArrivalTimeCalc2 timecalc; 178 MCalibrationChargeCalc calcalc; 179 MGeomApply geomapl; 180 181 MFillH filltime( "MHCalibrationRelTimeCam" , "MArrivalTimeCam"); 182 // MFillH fillpin ("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode"); 183 // MFillH fillblind("MHCalibrationChargeBlindPix", "MExtractedSignalBlindPixel"); 184 MFillH fillcam ("MHCalibrationChargeCam" , "MExtractedSignalCam"); 185 186 // 187 // Skip the HiGain vs. LoGain calibration 188 // 189 calcalc.SkipHiLoGainCalibration(); 190 191 // 192 // Apply a filter against cosmics 193 // (was directly in MCalibrationCalc in earlier versions) 194 // 195 MFCosmics cosmics; 196 MContinue cont(&cosmics); 197 198 tlist2.AddToList(&read2); 199 tlist2.AddToList(&geomapl); 200 tlist2.AddToList(&sigcalc); 201 // tlist2.AddToList(&blindcalc); 202 // tlist2.AddToList(&pincalc); 203 // 204 // In case, you want to skip the cosmics rejection, 205 // uncomment the next line 206 // 207 tlist2.AddToList(&cont); 208 // 209 // In case, you want to skip the somewhat lengthy calculation 210 // of the arrival times using a spline, uncomment the next two lines 211 // 212 tlist2.AddToList(&timecalc); 213 tlist2.AddToList(&filltime); 214 // tlist2.AddToList(&fillpin); 215 // tlist2.AddToList(&fillblind); 216 tlist2.AddToList(&fillcam); 217 // 218 tlist2.AddToList(&calcalc); 219 // 220 // Create and setup the eventloop 221 // 222 MEvtLoop evtloop; 223 evtloop.SetParList(&plist2); 224 evtloop.SetDisplay(display); 225 226 cout << "***************************" << endl; 227 cout << "** COMPUTING CALIBRATION **" << endl; 228 cout << "***************************" << endl; 229 230 // 231 // Execute second analysis 232 // 233 if (!evtloop.Eventloop()) 234 return; 235 236 tlist2.PrintStatistics(); 237 238 // 239 // print the most important results of all pixels to a file 240 // 241 // MLog gauglog; 242 // gauglog.SetOutputFile(Form("%s%s",calcam.GetName(),".txt"),1); 243 // calcam.SetLogStream(&gauglog); 244 // calcam.Print(); 245 // calcam.SetLogStream(&gLog); 246 // 247 // just one example how to get the plots of individual pixels 248 // 249 // histblind.DrawClone("all"); 250 // histcharge[5].DrawClone("all"); 251 // histcharge(5).DrawClone("all"); 252 // histtime[5].DrawClone("fourierevents"); 253 254 // Create histograms to display 255 MHCamera disp1 (geomcam, "Cal;Charge", "Fitted Mean Charges"); 256 MHCamera disp2 (geomcam, "Cal;SigmaCharge", "Sigma of Fitted Charges"); 257 MHCamera disp3 (geomcam, "Cal;FitProb", "Probability of Fit"); 258 MHCamera disp4 (geomcam, "Cal;RSigma", "Reduced Sigmas"); 259 MHCamera disp5 (geomcam, "Cal;RSigma/Charge", "Reduced Sigma per Charge"); 260 MHCamera disp6 (geomcam, "Cal;FFactorPhe", "Nr. of Photo-electrons (F-Factor Method)"); 261 MHCamera disp7 (geomcam, "Cal;FFactorConv", "Conversion Factor to photons (F-Factor Method)"); 262 MHCamera disp8 (geomcam, "Cal;FFactorFFactor", "Total F-Factor (F-Factor Method)"); 263 MHCamera disp9 (geomcam, "Cal;BlindPixConv", "Conversion Factor to photons (Blind Pixel Method)"); 264 MHCamera disp10 (geomcam, "Cal;BlindPixFFactor","Total F-Factor (Blind Pixel Method)"); 265 MHCamera disp11 (geomcam, "Cal;PINDiodeConv", "Conversion Factor tp photons (PIN Diode Method)"); 266 MHCamera disp12 (geomcam, "Cal;PINDiodeFFactor","Total F-Factor (PIN Diode Method)"); 267 MHCamera disp13 (geomcam, "Cal;Excluded", "Pixels previously excluded"); 268 MHCamera disp14 (geomcam, "Cal;NotFitted", "Pixels that could not be fitted"); 269 MHCamera disp15 (geomcam, "Cal;NotFitValid", "Pixels with not valid fit results"); 270 MHCamera disp16 (geomcam, "Cal;HiGainOscillating", "Oscillating Pixels HI Gain"); 271 MHCamera disp17 (geomcam, "Cal;LoGainOscillating", "Oscillating Pixels LO Gain"); 272 MHCamera disp18 (geomcam, "Cal;HiGainPickup", "Number Pickup events Hi Gain"); 273 MHCamera disp19 (geomcam, "Cal;LoGainPickup", "Number Pickup events Lo Gain"); 274 MHCamera disp20 (geomcam, "Cal;Saturation", "Pixels with saturated Hi Gain"); 275 MHCamera disp21 (geomcam, "Cal;FFactorValid", "Pixels with valid F-Factor calibration"); 276 MHCamera disp22 (geomcam, "Cal;BlindPixelValid", "Pixels with valid BlindPixel calibration"); 277 MHCamera disp23 (geomcam, "Cal;PINdiodeFFactorValid", "Pixels with valid PINDiode calibration"); 278 279 MHCamera disp24 (geomcam, "Cal;Ped", "Pedestals"); 280 MHCamera disp25 (geomcam, "Cal;PedRms", "Pedestal RMS"); 281 282 MHCamera disp26 (geomcam, "time;Time", "Rel. Arrival Times"); 283 MHCamera disp27 (geomcam, "time;SigmaTime", "Sigma of Rel. Arrival Times"); 284 MHCamera disp28 (geomcam, "time;TimeProb", "Probability of Time Fit"); 285 MHCamera disp29 (geomcam, "time;NotFitValid", "Pixels with not valid fit results"); 286 MHCamera disp30 (geomcam, "time;Oscillating", "Oscillating Pixels"); 287 288 MHCamera disp31 (geomcam, "Cal;AbsTimeMean", "Abs. Arrival Times"); 289 MHCamera disp32 (geomcam, "Cal;AbsTimeRms", "RMS of Arrival Times"); 290 291 // Fitted charge means and sigmas 292 disp1.SetCamContent(calcam, 0); 293 disp1.SetCamError( calcam, 1); 294 disp2.SetCamContent(calcam, 2); 295 disp2.SetCamError( calcam, 3); 296 297 // Fit probabilities 298 disp3.SetCamContent(calcam, 4); 299 300 // Reduced Sigmas and reduced sigmas per charge 301 disp4.SetCamContent(calcam, 5); 302 disp4.SetCamError( calcam, 6); 303 disp5.SetCamContent(calcam, 7); 304 disp5.SetCamError( calcam, 8); 305 306 // F-Factor Method 307 disp6.SetCamContent(calcam, 9); 308 disp6.SetCamError( calcam, 10); 309 disp7.SetCamContent(calcam, 11); 310 disp7.SetCamError( calcam, 12); 311 disp8.SetCamContent(calcam, 13); 312 disp8.SetCamError( calcam, 14); 313 314 // Blind Pixel Method 315 disp9.SetCamContent(calcam, 16); 316 disp9.SetCamError( calcam, 17); 317 disp10.SetCamContent(calcam,18); 318 disp10.SetCamError( calcam,19); 319 320 // PIN Diode Method 321 disp11.SetCamContent(calcam,21); 322 disp11.SetCamError( calcam,22); 323 disp12.SetCamContent(calcam,23); 324 disp12.SetCamError( calcam,24); 325 326 // Pixels with defects 327 disp13.SetCamContent(calcam,26); 328 disp14.SetCamContent(badcam,7); 329 disp15.SetCamContent(badcam,9); 330 disp16.SetCamContent(badcam,16); 331 disp17.SetCamContent(badcam,15); 332 disp18.SetCamContent(calcam,27); 333 disp19.SetCamContent(calcam,28); 334 335 // Lo Gain calibration 336 disp20.SetCamContent(calcam,29); 337 338 // Valid flags 339 disp21.SetCamContent(calcam,15); 340 disp22.SetCamContent(calcam,20); 341 disp23.SetCamContent(calcam,25); 342 343 // Pedestals 344 disp24.SetCamContent(calcam,30); 345 disp24.SetCamError( calcam,31); 346 disp25.SetCamContent(calcam,32); 347 disp25.SetCamError( calcam,33); 348 349 // Relative Times 350 disp26.SetCamContent(histtime,0); 351 disp26.SetCamError( histtime,1); 352 disp27.SetCamContent(histtime,2); 353 disp27.SetCamError( histtime,3); 354 disp28.SetCamContent(histtime,4); 355 disp29.SetCamContent(histtime,5); 356 disp30.SetCamContent(histtime,6); 357 358 // Absolute Times 359 disp31.SetCamContent(calcam,34); 360 disp31.SetCamError( calcam,35); 361 disp32.SetCamContent(calcam,35); 362 363 disp1.SetYTitle("Charge [FADC units]"); 364 disp2.SetYTitle("\\sigma_{Charge} [FADC units]"); 365 disp3.SetYTitle("P_{Charge} [1]"); 366 367 disp4.SetYTitle("\\sqrt{\\sigma^{2}_{Charge} - RMS^{2}_{Ped}} [FADC Counts]"); 368 disp5.SetYTitle("Reduced Sigma / Mean Charge [1]"); 369 370 disp6.SetYTitle("Nr. Photo-electrons [1]"); 371 disp7.SetYTitle("Conversion Factor [Ph/FADC Count]"); 372 disp8.SetYTitle("\\sqrt{N_{Ph}}*\\sigma_{Charge}/\\mu_{Charge} [1] "); 373 374 disp9.SetYTitle("Conversion Factor [Phot/FADC Count]"); 375 disp10.SetYTitle("\\sqrt{N_{Ph}}*\\sigma_{Charge}/\\mu_{Charge} [1]"); 376 377 disp11.SetYTitle("Conversion Factor [Phot/FADC Count]"); 378 disp12.SetYTitle("\\sqrt{N_{Ph}}*\\sigma_{Charge}/\\mu_{Charge} [1]"); 379 380 disp13.SetYTitle("[1]"); 381 disp14.SetYTitle("[1]"); 382 disp15.SetYTitle("[1]"); 383 disp16.SetYTitle("[1]"); 384 disp17.SetYTitle("[1]"); 385 disp18.SetYTitle("[1]"); 386 disp19.SetYTitle("[1]"); 387 disp20.SetYTitle("[1]"); 388 disp21.SetYTitle("[1]"); 389 disp22.SetYTitle("[1]"); 390 disp23.SetYTitle("[1]"); 391 392 disp24.SetYTitle("Ped [FADC Counts ]"); 393 disp25.SetYTitle("RMS_{Ped} [FADC Counts ]"); 394 395 disp26.SetYTitle("Time Offset [ns]"); 396 disp27.SetYTitle("Timing resolution [ns]"); 397 disp28.SetYTitle("P_{Time} [1]"); 398 399 disp29.SetYTitle("[1]"); 400 disp30.SetYTitle("[1]"); 401 402 disp31.SetYTitle("Mean Abs. Time [FADC slice]"); 403 disp32.SetYTitle("RMS Abs. Time [FADC slices]"); 404 405 gStyle->SetOptStat(1111); 406 gStyle->SetOptFit(); 407 408 // Charges 409 TCanvas &c1 = display->AddTab("Fit.Charge"); 410 c1.Divide(2, 3); 411 412 CamDraw(c1, disp1,calcam,1, 2 , 2); 413 CamDraw(c1, disp2,calcam,2, 2 , 2); 414 415 // Fit Probability 416 TCanvas &c2 = display->AddTab("Fit.Prob"); 417 c2.Divide(1,3); 418 419 CamDraw(c2, disp3,calcam,1, 1 , 4); 420 421 // Reduced Sigmas 422 TCanvas &c3 = display->AddTab("Red.Sigma"); 423 c3.Divide(2,3); 424 425 CamDraw(c3, disp4,calcam,1, 2 , 2); 426 CamDraw(c3, disp5,calcam,2, 2 , 2); 427 428 // F-Factor Method 429 TCanvas &c4 = display->AddTab("F-Factor"); 430 c4.Divide(3,3); 431 432 CamDraw(c4, disp6,calcam,1, 3 , 2); 433 CamDraw(c4, disp7,calcam,2, 3 , 2); 434 CamDraw(c4, disp8,calcam,3, 3 , 2); 435 436 // Blind Pixel Method 437 TCanvas &c5 = display->AddTab("BlindPix"); 438 c5.Divide(2,3); 439 440 CamDraw(c5, disp9, calcam,1, 2 , 2); 441 CamDraw(c5, disp10,calcam,2, 2 , 2); 442 443 // PIN Diode Method 444 TCanvas &c6 = display->AddTab("PINDiode"); 445 c6.Divide(2,3); 446 447 CamDraw(c6, disp11,calcam,1, 2 , 2); 448 CamDraw(c6, disp12,calcam,2, 2 , 2); 449 450 // Defects 451 TCanvas &c7 = display->AddTab("Defects"); 452 c7.Divide(4,2); 453 454 CamDraw(c7, disp13,calcam,1,4, 0); 455 CamDraw(c7, disp14,calcam,2,4, 0); 456 CamDraw(c7, disp18,calcam,3,4, 0); 457 CamDraw(c7, disp19,calcam,4,4, 0); 458 459 // BadCam 460 TCanvas &c8 = display->AddTab("Defects"); 461 c8.Divide(3,2); 462 463 CamDraw(c8, disp15,badcam,1,3, 0); 464 CamDraw(c8, disp16,badcam,2,3, 0); 465 CamDraw(c8, disp17,badcam,3,3, 0); 466 467 468 // Valid flags 469 TCanvas &c9 = display->AddTab("Validity"); 470 c9.Divide(4,2); 471 472 CamDraw(c9, disp20,calcam,1,4,0); 473 CamDraw(c9, disp21,calcam,2,4,0); 474 CamDraw(c9, disp22,calcam,3,4,0); 475 CamDraw(c9, disp23,calcam,4,4,0); 476 477 478 // Pedestals 479 TCanvas &c10 = display->AddTab("Pedestals"); 480 c10.Divide(2,3); 481 482 CamDraw(c10,disp24,calcam,1,2,1); 483 CamDraw(c10,disp25,calcam,2,2,2); 484 485 // Rel. Times 486 TCanvas &c11 = display->AddTab("Fitted Rel. Times"); 487 c11.Divide(3,3); 488 489 CamDraw(c11,disp26,calcam,1,3,2); 490 CamDraw(c11,disp27,calcam,2,3,2); 491 CamDraw(c11,disp38,calcam,3,3,4); 492 493 // Time Defects 494 TCanvas &c12 = display->AddTab("Time Def."); 495 c12.Divide(2,2); 496 497 CamDraw(c12, disp29,calcam,1,2, 0); 498 CamDraw(c12, disp30,calcam,2,2, 0); 499 500 // Abs. Times 501 TCanvas &c13 = display->AddTab("Abs. Times"); 502 c13.Divide(2,3); 503 504 CamDraw(c13,disp31,calcam,1,2,2); 505 CamDraw(c13,disp32,calcam,2,2,2); 146 // 147 // Now setup the new tasks for the calibration: 148 // --------------------------------------------------- 149 // 150 MCalibrationQECam qecam; 151 MJCalibration calloop; 152 calloop.SetColor(color); 153 calloop.SetInput(&cruns); 154 // calloop.SetFullDisplay(); 155 // 156 // Use as signal extractor MExtractSignal2: 157 // 158 calloop.SetExtractorLevel(2); 159 // 160 // Set the corr. cams: 161 // 162 calloop.SetQECam(qecam); 163 calloop.SetBadPixels(badcam); 164 // 165 // The next two commands are for the display: 166 // 167 calloop.SetDisplay(display); 168 169 // 170 // Apply rel. time calibration: 171 // 172 calloop.SetRelTimeCalibration(); 173 // 174 // Use as arrival time extractor MArrivalTimeCalc2: 175 // 176 calloop.SetArrivalTimeLevel(2); 177 178 // 179 // Do the event-loop: 180 // 181 cout << "***************************" << endl; 182 cout << "** COMPUTING CALIBRATION **" << endl; 183 cout << "***************************" << endl; 184 185 if (!calloop.Process(pedcam)) 186 return; 187 188 MBadPixelsCam &badbad = calloop.GetBadPixels(); 189 MCalibrationChargeCam &calcam = calloop.GetCalibrationCam(); 190 MCalibrationRelTimeCam &timecam = calloop.GetRelTimeCam(); 506 191 507 192 /************************************************************************/ … … 519 204 MSrcPosCam srccam; 520 205 MRawRunHeader runhead; 206 MExtractedSignalCam sigcam; 521 207 522 208 plist3.AddToList(&geomcam ); 523 209 plist3.AddToList(&pedcam ); 524 210 plist3.AddToList(&calcam ); 525 plist3.AddToList(&badcam ); 211 plist3.AddToList(&qecam ); 212 plist3.AddToList(&badbad ); 526 213 plist3.AddToList(&timecam ); 527 214 plist3.AddToList(&sigcam ); 528 plist3.AddToList(&histtime);529 215 plist3.AddToList(&photevt); 530 216 plist3.AddToList(&pedphotcam); … … 537 223 static_cast<MRead&>(read3).AddFiles(druns); 538 224 225 MExtractSignal2 sigcalc; 226 MArrivalTimeCalc2 timecalc; 539 227 MCalibrateData photcalc; 540 228 photcalc.SetCalibrationMode(MCalibrateData::kFfactor); // !!! was only MCalibrate 541 // MPedPhotCalcpedphotcalc; // already done by MCalibrate Data229 // MPedPhotCalc pedphotcalc; // already done by MCalibrate Data 542 230 // MCerPhotCalc cerphotcalc; // already done by MCalibrate Data 543 231 … … 556 244 write.AddContainer("MSrcPosCam" , "RunHeaders"); 557 245 write.AddContainer("MCalibrationChargeCam" , "RunHeaders"); 246 write.AddContainer("MCalibrationQECam" , "RunHeaders"); 558 247 // write.AddContainer("MPedPhotCam","RunHeaders"); // Attention, was in Events - Tree!! 559 248 write.AddContainer("MPedestalCam" , "RunHeaders"); 560 write.AddContainer("M HCalibrationRelTimeCam","RunHeaders");249 write.AddContainer("MCalibrationRelTimeCam", "RunHeaders"); 561 250 562 251 write.AddContainer("MCerPhotEvt" , "Events"); … … 725 414 726 415 416 MCalibrationCam::PulserColor_t FindColor(MDirIter* run) 417 { 418 419 MCalibrationCam::PulserColor_t col = MCalibrationCam::kNONE; 420 421 TString filenames; 422 423 while (!(filenames=run->Next()).IsNull()) 424 { 425 426 filenames.ToLower(); 427 428 if (filenames.Contains("green")) 429 if (col == MCalibrationCam::kNONE) 430 { 431 cout << "Found colour: Green in " << filenames << endl; 432 col = MCalibrationCam::kGREEN; 433 } 434 else if (col != MCalibrationCam::kGREEN) 435 { 436 cout << "Different colour found in " << filenames << "... abort" << endl; 437 return MCalibrationCam::kNONE; 438 } 439 440 if (filenames.Contains("blue")) 441 if (col == MCalibrationCam::kNONE) 442 { 443 cout << "Found colour: Blue in " << filenames << endl; 444 col = MCalibrationCam::kBLUE; 445 } 446 else if (col != MCalibrationCam::kBLUE) 447 { 448 cout << "Different colour found in " << filenames << "... abort" << endl; 449 return MCalibrationCam::kNONE; 450 } 451 452 if (filenames.Contains("uv")) 453 if (col == MCalibrationCam::kNONE) 454 { 455 cout << "Found colour: Uv in " << filenames << endl; 456 col = MCalibrationCam::kUV; 457 } 458 else if (col != MCalibrationCam::kUV) 459 { 460 cout << "Different colour found in " << filenames << "... abort" << endl; 461 return MCalibrationCam::kNONE; 462 } 463 464 if (filenames.Contains("ct1")) 465 if (col == MCalibrationCam::kNONE) 466 { 467 cout << "Found colour: Ct1 in " << filenames << endl; 468 col = MCalibrationCam::kCT1; 469 } 470 else if (col != MCalibrationCam::kCT1) 471 { 472 cout << "Different colour found in " << filenames << "... abort" << endl; 473 return MCalibrationCam::kNONE; 474 } 475 476 } 477 478 479 480 if (col == MCalibrationCam::kNONE) 481 cout << "No colour found in filenames of runs: " << ((MRunIter*)run)->GetRunsAsString() 482 << "... abort" << endl; 483 484 return col; 485 }
Note:
See TracChangeset
for help on using the changeset viewer.