Ignore:
Timestamp:
09/09/04 18:03:23 (20 years ago)
Author:
gaug
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Mars/mjobs
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mjobs/MJCalibration.cc

    r4870 r4909  
    111111
    112112#include "MPedestalCam.h"
     113#include "MCalibColorSteer.h"
     114
     115#include "MCalibrationIntensityChargeCam.h"
     116#include "MCalibrationIntensityRelTimeCam.h"
     117#include "MCalibrationIntensityQECam.h"
     118
    113119#include "MCalibrationCam.h"
    114120#include "MCalibrationQECam.h"
     
    122128#include "MCalibrationChargeBlindCamTwoNewStyle.h"
    123129#include "MCalibrationChargeCalc.h"
     130#include "MCalibColorSet.h"
    124131
    125132#include "MHGausEvents.h"
     
    170177
    171178const Float_t  MJCalibration::fgRefConvFADC2PheInner      = 0.14;       
    172 const Float_t  MJCalibration::fgRefConvFADC2PheOuter      = 0.45;       
     179const Float_t  MJCalibration::fgRefConvFADC2PheOuter      = 0.4;       
    173180const Float_t  MJCalibration::fgRefConvFADC2PhotInner     = 0.8;
    174181const Float_t  MJCalibration::fgRefConvFADC2PhotOuter     = 3.8;
     
    184191//
    185192// - Sets fRuns to 0, fExtractor to NULL, fTimeExtractor to NULL, fColor to kNONE,
    186 //   fDisplay to kNormalDisplay, fRelTime to kFALSE, fDataCheck to kFALSE,
     193//   fDisplay to kNormalDisplay, kRelTimes to kFALSE, kataCheck to kFALSE, kDebug to kFALSE,
     194//   kIntensity to kFALSE
    187195// - SetUseBlindPixel()
    188196// - SetUsePINDiode()
     
    191199    : fRuns(0), fExtractor(NULL), fTimeExtractor(NULL),
    192200      fColor(MCalibrationCam::kNONE), fDisplayType(kNormalDisplay),
    193       fRelTimes(kFALSE), fDataCheck(kFALSE), fDebug(kFALSE), fGeometry("MGeomCamMagic")
     201      fGeometry("MGeomCamMagic")
    194202{
    195     fName  = name  ? name  : "MJCalibration";
    196     fTitle = title ? title : "Tool to create the calibration constants for one calibration run";
    197 
    198     SetUseBlindPixel();
    199     SetUsePINDiode();
     203
     204  fName  = name  ? name  : "MJCalibration";
     205  fTitle = title ? title : "Tool to create the calibration constants for one calibration run";
     206 
     207  SetUseBlindPixel();
     208  SetUsePINDiode();
     209 
     210  SetRelTimeCalibration( kFALSE );
     211  SetDataCheck         ( kFALSE );
     212  SetDebug             ( kFALSE );
     213  SetIntensity         ( kFALSE );
    200214}
    201215
     
    297311    MHCamera disp34(geomcam, "TimeOscillating",   "Oscillating Pixels");
    298312    MHCamera disp35(geomcam, "TotalConv",         "Conversion Factor to photons");
    299 
     313   
     314    MCalibrationChargeCam  *cam    = NULL;
     315    MCalibrationQECam      *qecam  = NULL;
     316    MCalibrationRelTimeCam *relcam = NULL;
     317
     318    if (IsIntensity())
     319      {
     320        cam    = (MCalibrationChargeCam*) fIntensCalibCam.GetCam();
     321        qecam  = (MCalibrationQECam*)     fIntensQECam.GetCam();
     322        relcam = (MCalibrationRelTimeCam*)fIntensRelTimeCam.GetCam();
     323      }
     324    else
     325      {
     326        cam    = &fCalibrationCam;
     327        qecam  = &fQECam;
     328        relcam = &fRelTimeCam;
     329      }
     330   
    300331    // Fitted charge means and sigmas
    301     disp1.SetCamContent(fCalibrationCam,  0);
    302     disp1.SetCamError(  fCalibrationCam,  1);
    303     disp2.SetCamContent(fCalibrationCam,  2);
    304     disp2.SetCamError(  fCalibrationCam,  3);
     332    disp1.SetCamContent(*cam,  0);
     333    disp1.SetCamError(  *cam,  1);
     334    disp2.SetCamContent(*cam,  2);
     335    disp2.SetCamError(  *cam,  3);
    305336
    306337    // Reduced Sigmas and reduced sigmas per charge
    307     disp3.SetCamContent(fCalibrationCam,  5);
    308     disp3.SetCamError(  fCalibrationCam,  6);
    309     disp4.SetCamContent(fCalibrationCam,  7);
    310     disp4.SetCamError(  fCalibrationCam,  8);
     338    disp3.SetCamContent(*cam,  5);
     339    disp3.SetCamError(  *cam,  6);
     340    disp4.SetCamContent(*cam,  7);
     341    disp4.SetCamError(  *cam,  8);
    311342
    312343    // F-Factor Method
    313     disp5.SetCamContent(fCalibrationCam,  9);
    314     disp5.SetCamError(  fCalibrationCam, 10);
    315     disp6.SetCamContent(fCalibrationCam, 11);
    316     disp6.SetCamError(  fCalibrationCam, 12);
    317     disp7.SetCamContent(fCalibrationCam, 13);
    318     disp7.SetCamError(  fCalibrationCam, 14);
     344    disp5.SetCamContent(*cam,  9);
     345    disp5.SetCamError(  *cam, 10);
     346    disp6.SetCamContent(*cam, 11);
     347    disp6.SetCamError(  *cam, 12);
     348    disp7.SetCamContent(*cam, 13);
     349    disp7.SetCamError(  *cam, 14);
    319350
    320351    // Quantum Efficiencies
    321     disp8.SetCamContent (fQECam, 0 );
    322     disp8.SetCamError   (fQECam, 1 );
    323     disp9.SetCamContent (fQECam, 2 );
    324     disp9.SetCamError   (fQECam, 3 );
    325     disp10.SetCamContent(fQECam, 4 );
    326     disp10.SetCamError  (fQECam, 5 );
    327     disp11.SetCamContent(fQECam, 6 );
    328     disp11.SetCamError  (fQECam, 7 );
     352    disp8.SetCamContent (*qecam, 0 );
     353    disp8.SetCamError   (*qecam, 1 );
     354    disp9.SetCamContent (*qecam, 2 );
     355    disp9.SetCamError   (*qecam, 3 );
     356    disp10.SetCamContent(*qecam, 4 );
     357    disp10.SetCamError  (*qecam, 5 );
     358    disp11.SetCamContent(*qecam, 6 );
     359    disp11.SetCamError  (*qecam, 7 );
    329360
    330361    // Valid flags
    331     disp12.SetCamContent(fQECam, 8 );
    332     disp13.SetCamContent(fQECam, 9 );
    333     disp14.SetCamContent(fQECam, 10);
    334     disp15.SetCamContent(fQECam, 11);
     362    disp12.SetCamContent(*qecam, 8 );
     363    disp13.SetCamContent(*qecam, 9 );
     364    disp14.SetCamContent(*qecam, 10);
     365    disp15.SetCamContent(*qecam, 11);
    335366
    336367    // Conversion Hi-Lo
    337     disp16.SetCamContent(fCalibrationCam, 25);
    338     disp17.SetCamContent(fCalibrationCam, 16);
    339     disp17.SetCamError  (fCalibrationCam, 17);
    340     disp18.SetCamContent(fCalibrationCam, 18);
    341     disp18.SetCamError  (fCalibrationCam, 19);
     368    disp16.SetCamContent(*cam, 25);
     369    disp17.SetCamContent(*cam, 16);
     370    disp17.SetCamError  (*cam, 17);
     371    disp18.SetCamContent(*cam, 18);
     372    disp18.SetCamError  (*cam, 19);
    342373
    343374    // Pickup and Blackout
    344     disp19.SetCamContent(fCalibrationCam, 21);
    345     disp20.SetCamContent(fCalibrationCam, 22);
    346     disp21.SetCamContent(fCalibrationCam, 23);
    347     disp22.SetCamContent(fCalibrationCam, 24);
     375    disp19.SetCamContent(*cam, 21);
     376    disp20.SetCamContent(*cam, 22);
     377    disp21.SetCamContent(*cam, 23);
     378    disp22.SetCamContent(*cam, 24);
    348379
    349380    // Pixels with defects
    350     disp23.SetCamContent(fCalibrationCam, 20);
     381    disp23.SetCamContent(*cam, 20);
    351382    disp24.SetCamContent(fBadPixels, 6);
    352383    disp25.SetCamContent(fBadPixels, 7);
     
    357388
    358389    // Arrival Times
    359     disp28.SetCamContent(fCalibrationCam, 26);
    360     disp28.SetCamError(  fCalibrationCam, 27);
    361     disp29.SetCamContent(fCalibrationCam, 27);
     390    disp28.SetCamContent(*cam, 26);
     391    disp28.SetCamError(  *cam, 27);
     392    disp29.SetCamContent(*cam, 27);
    362393
    363394    disp1.SetYTitle("Q [FADC counts]");
     
    403434      {
    404435
    405         MCalibrationChargePix &pix = (MCalibrationChargePix&)fCalibrationCam[i];
    406         MCalibrationQEPix     &qe  = (MCalibrationQEPix&)    fQECam         [i];
     436        MCalibrationChargePix &pix = (MCalibrationChargePix&)(*cam)  [i];
     437        MCalibrationQEPix     &qe  = (MCalibrationQEPix&)    (*qecam)[i];
    407438
    408439        if (!pix.IsFFactorMethodValid())
     
    417448   
    418449
    419     if (fRelTimes)
    420     {
    421         disp30.SetCamContent(fRelTimeCam,0);
    422         disp30.SetCamError(  fRelTimeCam,1);
    423         disp31.SetCamContent(fRelTimeCam,2);
    424         disp31.SetCamError(  fRelTimeCam,3);
    425         disp32.SetCamContent(fRelTimeCam,4);
     450    if (IsRelTimes())
     451    {
     452        disp30.SetCamContent(*relcam,0);
     453        disp30.SetCamError(  *relcam,1);
     454        disp31.SetCamContent(*relcam,2);
     455        disp31.SetCamError(  *relcam,3);
     456        disp32.SetCamContent(*relcam,4);
    426457        disp33.SetCamContent(fBadPixels,20);
    427458        disp34.SetCamContent(fBadPixels,21);
     
    434465    }
    435466
    436 
    437    
    438467    if (fDisplayType == kDataCheckDisplay)
    439468    {
     
    739768      if (geomcam.InheritsFrom("MGeomCamMagic"))
    740769        DisplayDoubleProject(&disp29, "", "jittering");
    741 
    742770
    743771      //
     
    884912      obj9->Draw();
    885913
    886       if (fRelTimes)
     914      if (IsRelTimes())
    887915        {
    888916          // Rel. Times
     
    955983        disp29.CamDraw(c16, 2, 2, 5);
    956984
    957         if (fRelTimes)
     985        if (IsRelTimes())
    958986        {
    959987            // Rel. Times
     
    10521080        disp29.CamDraw(c30, 2, 2, 1);
    10531081
    1054         if (fRelTimes)
     1082        if (IsRelTimes())
    10551083        {
    10561084            // Rel. Times
     
    11421170{
    11431171
    1144   const Float_t mean  = hist->GetFunction("gaus")->GetParameter(1);
    1145   const Float_t lolim = mean - 4.0*hist->GetFunction("gaus")->GetParameter(2);
    1146   const Float_t uplim = mean + 4.0*hist->GetFunction("gaus")->GetParameter(2);
     1172  const Int_t kNotDraw = 1<<9;
     1173  TF1 *f = hist->GetFunction("gaus");
     1174  f->ResetBit(kNotDraw);
     1175
     1176  const Float_t mean  = f->GetParameter(1);
     1177  const Float_t lolim = mean - 4.0*f->GetParameter(2);
     1178  const Float_t uplim = mean + 4.0*f->GetParameter(2);
    11471179  const Stat_t  dead  = hist->Integral(0,hist->FindBin(lolim)-1);
    11481180  const Stat_t  noisy = hist->Integral(hist->FindBin(uplim)+1,hist->GetNbinsX()+1);
     
    13561388        SetNormalDisplay();
    13571389
    1358     SetRelTimeCalibration(GetEnv("RelTimeCalibration", fRelTimes));
    1359     SetDataCheck(GetEnv("Datacheck", fDataCheck));
    1360     SetDebug(GetEnv("Debug", fDebug));
     1390    SetRelTimeCalibration(GetEnv("RelTimeCalibration", IsRelTimes()));
     1391    SetDataCheck(GetEnv("Datacheck", IsDataCheck()));
     1392    SetDebug(GetEnv("Debug", IsDebug()));
     1393    SetIntensity(GetEnv("Intensity", IsIntensity()));
     1394
    13611395    SetUseBlindPixel(GetEnv("UseBlindPixel", IsUseBlindPixel()));
    13621396    SetUsePINDiode(GetEnv("UsePINDiode", IsUsePINDiode()));
     
    14381472//   2) MCalibrationQECam     (fQECam)
    14391473//   3) MCalibrationChargeCam (fCalibrationCam)
    1440 //   4) MCalibrationRelTimeCam (fRelTimeCam)   (only if flag fRelTimes is chosen)
     1474//   4) MCalibrationRelTimeCam (fRelTimeCam)   (only if flag IsRelTimes() is chosen)
    14411475//   5) MBadPixelsCam         (fBadPixels)
    14421476//   6) MCalibrationChargePINDiode
     
    14491483//   5)  MExtractPINDiode
    14501484//   6)  MExtractBlindPixel
    1451 //   7)  MExtractTime (only if flag fRelTimes is chosen)
     1485//   7)  MExtractTime (only if flag IsRelTimes() is chosen)
    14521486//   8)  MContinue(MFCosmics)
    1453 //   9)  MFillH("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode")
    1454 //   10) MFillH("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel")
    1455 //   11) MFillH("MHCalibrationChargeCam",      "MExtractedSignalCam")
    1456 //   12) MFillH("MHCalibrationChargeCam",      "MExtractedSignalCam")
     1487//   9)  MFillH("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode",   "FillPINDiode")
     1488//   10) MFillH("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel", "FillBlindCam")
     1489//   11) MFillH("MHCalibrationChargeCam",      "MExtractedSignalCam",        "FillChargeCam")
     1490//   12) MFillH("MHCalibrationChargeCam",      "MExtractedSignalCam",        "FillRelTime")
    14571491//   13) MCalibrationChargeCalc
    1458 //   14) MFillH("MHCalibrationRelTimeCam",     "MArrivalTimeCam") (only if flag fRelTimes is chosen)
     1492//   14) MFillH("MHCalibrationRelTimeCam",     "MArrivalTimeCam") (only if flag IsRelTimes() is chosen)
    14591493//   15) MCalibrationRelTimeCalc
    14601494// - Execute MEvtLoop
     
    15071541    plist.AddToList(&tlist);
    15081542    plist.AddToList(this); // take care of fDisplay!
    1509 
    1510     MReadMarsFile read("Events");
    1511     MRawFileRead rawread(NULL);
    15121543
    15131544    MDirIter iter;
     
    15281559    }
    15291560
    1530     if (fDataCheck)
     1561    //
     1562    // Input containers
     1563    //
     1564    plist.AddToList(&pedcam);
     1565    plist.AddToList(&fBadPixels);
     1566
     1567    //
     1568    // Calibration Results containers
     1569    //
     1570    if (IsIntensity())
     1571      {
     1572        plist.AddToList(&fIntensQECam);
     1573        plist.AddToList(&fIntensCalibCam);
     1574        //        plist.AddToList(&fIntensCalibrationBlindCam);
     1575        //        plist.AddToList(&fIntensCalibrationPINDiode);
     1576        plist.AddToList(&fIntensRelTimeCam);
     1577      }
     1578    else
     1579      {
     1580        plist.AddToList(&fQECam);
     1581        plist.AddToList(&fCalibrationCam);
     1582        plist.AddToList(&fCalibrationBlindCam);
     1583        plist.AddToList(&fCalibrationPINDiode);
     1584        plist.AddToList(&fRelTimeCam);
     1585      }
     1586
     1587    //
     1588    // Initialize two histogram containers which could be modified in this class
     1589    //
     1590    MHCalibrationChargeCam      chargecam;
     1591    MHCalibrationChargeBlindCam blindcam;
     1592    plist.AddToList(&chargecam);
     1593    plist.AddToList(&blindcam);
     1594
     1595    //
     1596    // Data Reading tasks
     1597    //
     1598    MReadMarsFile read("Events");
     1599    MRawFileRead rawread(NULL);
     1600
     1601    if (IsDataCheck())
    15311602    {
    15321603        rawread.AddFiles(fSequence.IsValid() ? iter : *fRuns);
     
    15401611    }
    15411612
    1542     MHCalibrationChargeCam      chargecam;
    1543     MHCalibrationChargeBlindCam blindcam;
    1544 
    1545     plist.AddToList(&pedcam);
    1546     plist.AddToList(&chargecam);
    1547     plist.AddToList(&blindcam);
    1548     plist.AddToList(&fBadPixels);
    1549     plist.AddToList(&fQECam);
    1550     plist.AddToList(&fCalibrationCam);
    1551     plist.AddToList(&fCalibrationBlindCam);
    1552     plist.AddToList(&fCalibrationPINDiode);
    1553     plist.AddToList(&fRelTimeCam);
    1554 
     1613    //
     1614    // Other Tasks
     1615    //
    15551616    MGeomApply               apply;
    15561617    apply.SetGeometry(fGeometry);
     
    15721633    }
    15731634
    1574     if (fDebug)
     1635    if (IsDebug())
    15751636    {
    15761637        chargecam.SetDebug();
     
    15791640
    15801641    //
    1581     // As long as there are no DM's, have to colour by hand
    1582     //
    1583     chargecam.SetColor    (fColor);
    1584     calcalc.SetPulserColor(fColor);
    1585 
     1642    // Calibration histogramming
     1643    //
    15861644    MFillH fillpin("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode",   "FillPINDiode");
    15871645    MFillH fillbnd("MHCalibrationChargeBlindCam", "MExtractedSignalBlindPixel", "FillBlindCam");
     
    16131671    MContinue cont(&cosmics);
    16141672
     1673    MTaskEnv taskenv("ExtractSignal");
     1674    taskenv.SetDefault(fExtractor ? fExtractor : &extract2);
     1675
    16151676    tlist.AddToList(&merge);
    16161677    tlist.AddToList(&apply);
    1617 
    1618     MTaskEnv taskenv("ExtractSignal");
    1619     taskenv.SetDefault(fExtractor ? fExtractor : &extract2);
    1620 
    16211678    tlist.AddToList(&taskenv);
    16221679    tlist.AddToList(&pinext);
     
    16261683    taskenv2.SetDefault(fTimeExtractor ? fTimeExtractor : &timespline);
    16271684
    1628     if (fRelTimes)
     1685    if (IsRelTimes())
    16291686        tlist.AddToList(&taskenv2);
    16301687
     1688    //
     1689    // FIXME: This is not yet implemented in the classes!!!
     1690    //
    16311691    if (fColor == MCalibrationCam::kCT1)
    16321692        tlist.AddToList(&cont);
    16331693
     1694    MCalibColorSet colorset;
     1695    tlist.AddToList(&colorset);
     1696
     1697    MCalibColorSteer steer;
     1698    if (IsIntensity())
     1699      tlist.AddToList(&steer);
     1700
    16341701    tlist.AddToList(&fillcam);
    16351702
    1636     if (fRelTimes)
     1703    if (IsRelTimes())
    16371704    {
    16381705        tlist.AddToList(&filltme);
     
    16621729
    16631730    if (!WriteTasks(taskenv.GetTask(), taskenv2.GetTask()))
    1664         return kFALSE;
     1731      return kFALSE;
    16651732
    16661733    // Execute first analysis
     
    16931760    if (fDisplay)
    16941761    {
    1695         /*
    16961762      if (IsUsePINDiode())
    16971763        {
     
    17061772          cam->DrawClone(Form("nonew %s",drawoption.Data()));
    17071773        }
    1708       else if (fRelTimes)
     1774      else if (IsRelTimes())
    17091775        {
    17101776          MHCalibrationRelTimeCam *cam =
     
    17131779        }
    17141780      else
    1715         {
    1716           MHCalibrationChargeCam *cam =
    1717             (MHCalibrationChargeCam*)plist.FindObject("MHCalibrationChargeCam");
    1718           cam->DrawClone(Form("nonew %s",drawoption.Data()));
    1719         } */
     1781        chargecam.DrawClone(Form("nonew %s",drawoption.Data()));
    17201782    }
    17211783
     
    18961958    *fLog << inf << "ok." << endl;
    18971959
    1898     *fLog << inf << " - MCalibrationChargeCam..." << flush;
    1899     if (fCalibrationCam.Write()<=0)
    1900     {
    1901         *fLog << err << "Unable to write MCalibrationChargeCam to " << oname << endl;
    1902         return kFALSE;
    1903     }
    1904     *fLog << inf << "ok." << endl;
    1905 
     1960    if (IsIntensity())
     1961      {
     1962        *fLog << inf << " - MCalibrationIntensityChargeCam..." << flush;
     1963        if (fIntensCalibCam.Write()<=0)
     1964          {
     1965            *fLog << err << "Unable to write MCalibrationIntensityChargeCam to " << oname << endl;
     1966            return kFALSE;
     1967          }
     1968        *fLog << inf << "ok." << endl;
     1969
     1970        *fLog << inf << " - MCalibrationIntensityQECam..." << flush;
     1971        if (fIntensQECam.Write()<=0)
     1972          {
     1973            *fLog << err << "Unable to write MCalibrationIntensityQECam to " << oname << endl;
     1974            return kFALSE;
     1975          }
     1976        *fLog << inf << "ok." << endl;
     1977      }
     1978    else
     1979      {
     1980        *fLog << inf << " - MCalibrationChargeCam..." << flush;
     1981        if (fCalibrationCam.Write()<=0)
     1982          {
     1983            *fLog << err << "Unable to write MCalibrationChargeCam to " << oname << endl;
     1984            return kFALSE;
     1985          }
     1986        *fLog << inf << "ok." << endl;
     1987
     1988        *fLog << inf << " - MCalibrationQECam..." << flush;
     1989        if (fQECam.Write()<=0)
     1990          {
     1991            *fLog << err << "Unable to write MCalibrationQECam to " << oname << endl;
     1992            return kFALSE;
     1993          }
     1994        *fLog << inf << "ok." << endl;
     1995      }
     1996   
    19061997    *fLog << inf << " - MCalibrationChargeBlindCam..." << flush;
    19071998    if (fCalibrationBlindCam.Write()<=0)
    1908     {
     1999      {
    19092000        *fLog << err << "Unable to write MCalibrationChargeBlindCam to " << oname << endl;
    19102001        return kFALSE;
    1911     }
     2002      }
    19122003    *fLog << inf << "ok." << endl;
    1913 
     2004   
    19142005    *fLog << inf << " - MCalibrationChargePINDiode..." << flush;
    19152006    if (fCalibrationPINDiode.Write()<=0)
    1916     {
     2007      {
    19172008        *fLog << err << "Unable to write MCalibrationChargePINDiode to " << oname << endl;
    1918         return kFALSE;
    1919     }
    1920     *fLog << inf << "ok." << endl;
    1921 
    1922     *fLog << inf << " - MCalibrationQECam..." << flush;
    1923     if (fQECam.Write()<=0)
    1924     {
    1925         *fLog << err << "Unable to write MCalibrationQECam to " << oname << endl;
    19262009        return kFALSE;
    19272010    }
     
    19482031    }
    19492032
    1950     if (fRelTimes)
    1951     {
    1952         *fLog << inf << " - MCalibrationRelTimeCam..." << flush;
    1953         if (fRelTimeCam.Write()<=0)
    1954         {
    1955             *fLog << err << "Unable to write MCalibrationRelTimeCam to " << oname << endl;
    1956             return kFALSE;
    1957         }
    1958         *fLog << inf << "ok." << endl;
     2033    if (IsRelTimes())
     2034    {
     2035      if (IsIntensity())
     2036        {
     2037          *fLog << inf << " - MCalibrationIntensityRelTimeCam..." << flush;
     2038          if (fIntensRelTimeCam.Write()<=0)
     2039            {
     2040              *fLog << err << "Unable to write MCalibrationIntensityRelTimeCam to " << oname << endl;
     2041              return kFALSE;
     2042            }
     2043          *fLog << inf << "ok." << endl;
     2044        }
     2045      else
     2046        {
     2047          *fLog << inf << " - MCalibrationRelTimeCam..." << flush;
     2048          if (fRelTimeCam.Write()<=0)
     2049            {
     2050              *fLog << err << "Unable to write MCalibrationRelTimeCam to " << oname << endl;
     2051              return kFALSE;
     2052            }
     2053          *fLog << inf << "ok." << endl;
     2054        }
     2055     
    19592056    }
    19602057
     
    19722069  outer[0] = 1;
    19732070         
    1974   TArrayI s0(6);
    1975   s0[0] = 6;
    1976   s0[1] = 1;
    1977   s0[2] = 2;
    1978   s0[3] = 3;
    1979   s0[4] = 4;
    1980   s0[5] = 5;
    1981  
    19822071  TArrayI s1(3);
    19832072  s1[0] = 6;
     
    19942083 
    19952084  TH1D *inout[2];
    1996   inout[0] = cam->ProjectionS(s0, inner, "Inner");
    1997   inout[1] = cam->ProjectionS(s0, outer, "Outer");
    1998   FixDataCheckHist(inout[0]);
    1999   FixDataCheckHist(inout[1]);
    2000  
    2001   inout[0]->SetTitle(Form("%s %s",cam->GetTitle(),"Inner"));
    2002   inout[1]->SetTitle(Form("%s %s",cam->GetTitle(),"Outer"));
    2003  
     2085
    20042086  for (int i=0; i<2; i++)
    20052087    {
     
    20082090      gPad->SetTicks();
    20092091     
     2092      inout[i] = cam->ProjectionS(TArrayI(), TArrayI(1,&i), i==0 ? "Inner" : "Outer");
     2093      FixDataCheckHist(inout[i]);
     2094      inout[i]->SetTitle(Form("%s %s",cam->GetTitle(),i==0 ? "Inner" : "Outer"));
    20102095      inout[i]->SetDirectory(NULL);
    20112096      inout[i]->SetLineColor(kRed+i);
    20122097      inout[i]->SetBit(kCanDelete);
    20132098      inout[i]->Draw();
    2014       inout[i]->Fit("gaus", "Q");
     2099      //
     2100      // Display the outliers as dead and noisy pixels
     2101      //
     2102      if (!inout[i]->Fit("gaus","0Q"))
     2103        DisplayOutliers(inout[i],whatsmall,whatbig);
     2104
    20152105      gPad->Modified();
    20162106      gPad->Update();     
     
    20242114
    20252115      TLegend *leg2 = new TLegend(0.55,0.4,0.99,0.6);
    2026       //
    2027       // Display the outliers as dead and noisy pixels
    2028       //
    2029       DisplayOutliers(inout[i],whatsmall,whatbig);
    20302116     
    20312117      //
     
    20332119      //
    20342120      TH1D *half[2];
    2035       half[0] = cam->ProjectionS(s1, i==0 ? inner : outer , "Sector 6-1-2");
    2036       half[1] = cam->ProjectionS(s2, i==0 ? inner : outer , "Sector 3-4-5");
     2121      half[0] = cam->ProjectionS(s1, TArrayI(1,&i), "Sector 6-1-2");
     2122      half[1] = cam->ProjectionS(s2, TArrayI(1,&i), "Sector 3-4-5");
    20372123     
    20382124      for (int j=0; j<2; j++)
  • trunk/MagicSoft/Mars/mjobs/MJCalibration.h

    r4870 r4909  
    44#ifndef MARS_MJob
    55#include "MJob.h"
     6#endif
     7#ifndef MARS_MCalibrationIntensityChargeCam
     8#include "MCalibrationIntensityChargeCam.h"
    69#endif
    710#ifndef MARS_MCalibrationChargeCam
     
    1417#include "MCalibrationChargePINDiode.h"
    1518#endif
     19#ifndef MARS_MCalibrationIntensityRelTimeCam
     20#include "MCalibrationIntensityRelTimeCam.h"
     21#endif
    1622#ifndef MARS_MCalibrationRelTimeCam
    1723#include "MCalibrationRelTimeCam.h"
     24#endif
     25#ifndef MARS_MCalibrationIntensityQECam
     26#include "MCalibrationIntensityQECam.h"
    1827#endif
    1928#ifndef MARS_MCalibrationQECam
     
    4150private:
    4251
    43   static const Int_t gkIFAEBoxInaugurationRun;         //! Run number of first IFAE box calibration
    44   static const Int_t gkSecondBlindPixelInstallation;   //! Run number upon which second blind pixel was installed
    45   static const Int_t gkThirdBlindPixelInstallation;    //! Run number upon which third blind pixel was installed
     52  static const Int_t gkIFAEBoxInaugurationRun;          //! Run number of first IFAE box calibration
     53  static const Int_t gkSecondBlindPixelInstallation;    //! Run number upon which second blind pixel was installed
     54  static const Int_t gkThirdBlindPixelInstallation;     //! Run number upon which third blind pixel was installed
    4655
    47   static const Double_t fgConvFADC2PheMin;             //! Histogram minimum for conversion factor to phes
    48   static const Double_t fgConvFADC2PheMax;             //! Histogram maximum for conversion factor to phes
    49   static const Double_t fgConvFADC2PhotMin;            //! Histogram minimum for conversion factor to phs
    50   static const Double_t fgConvFADC2PhotMax;            //! Histogram maixmum for conversion factor to phs
    51   static const Double_t fgQEMin;                       //! Histogram minimum for quantum efficiency
    52   static const Double_t fgQEMax;                       //! Histogram maximum for quantum efficiency
    53   static const Double_t fgArrivalTimeMin;              //! Histogram minimum for arrival times
    54   static const Double_t fgArrivalTimeMax;              //! Histogram maximum for arrival times
     56  static const Double_t fgConvFADC2PheMin;              //! Histogram minimum for conversion factor to phes
     57  static const Double_t fgConvFADC2PheMax;              //! Histogram maximum for conversion factor to phes
     58  static const Double_t fgConvFADC2PhotMin;             //! Histogram minimum for conversion factor to phs
     59  static const Double_t fgConvFADC2PhotMax;             //! Histogram maixmum for conversion factor to phs
     60  static const Double_t fgQEMin;                        //! Histogram minimum for quantum efficiency
     61  static const Double_t fgQEMax;                        //! Histogram maximum for quantum efficiency
     62  static const Double_t fgArrivalTimeMin;               //! Histogram minimum for arrival times
     63  static const Double_t fgArrivalTimeMax;               //! Histogram maximum for arrival times
    5564 
    56   static const Float_t  fgRefConvFADC2PheInner;        //! Reference value for the conversion factor to phes - inner
    57   static const Float_t  fgRefConvFADC2PheOuter;        //! Reference value for the conversion factor to phes - outer
    58   static const Float_t  fgRefConvFADC2PhotInner;       //! Reference value for the conversion factor to phs - inner
    59   static const Float_t  fgRefConvFADC2PhotOuter;       //! Reference value for the conversion factor to phs - outer
    60   static const Float_t  fgRefQEInner;                  //! Reference value for the quantum eff. cascades - inner
    61   static const Float_t  fgRefQEOuter;                  //! Reference value for the quantum eff. cascades - outer
    62   static const Float_t  fgRefArrivalTimeInner;         //! Reference value for the arrival time - inner
    63   static const Float_t  fgRefArrivalTimeOuter;         //! Reference value for the arrival time - outer
    64   static const Float_t  fgRefArrivalTimeRmsInner;      //! Reference value for the arrival time - inner
    65   static const Float_t  fgRefArrivalTimeRmsOuter;      //! Reference value for the arrival time - outer
     65  static const Float_t  fgRefConvFADC2PheInner;         //! Reference value for the conversion factor to phes - inner
     66  static const Float_t  fgRefConvFADC2PheOuter;         //! Reference value for the conversion factor to phes - outer
     67  static const Float_t  fgRefConvFADC2PhotInner;        //! Reference value for the conversion factor to phs - inner
     68  static const Float_t  fgRefConvFADC2PhotOuter;        //! Reference value for the conversion factor to phs - outer
     69  static const Float_t  fgRefQEInner;                   //! Reference value for the quantum eff. cascades - inner
     70  static const Float_t  fgRefQEOuter;                   //! Reference value for the quantum eff. cascades - outer
     71  static const Float_t  fgRefArrivalTimeInner;          //! Reference value for the arrival time - inner
     72  static const Float_t  fgRefArrivalTimeOuter;          //! Reference value for the arrival time - outer
     73  static const Float_t  fgRefArrivalTimeRmsInner;       //! Reference value for the arrival time - inner
     74  static const Float_t  fgRefArrivalTimeRmsOuter;       //! Reference value for the arrival time - outer
    6675
    67   MRunIter       *fRuns;                               // Calibration files
     76  MRunIter       *fRuns;                                // Calibration files
    6877 
    69   MExtractor     *fExtractor;                          // Signal extractor
    70   MExtractTime   *fTimeExtractor;                      // Arrival Time extractor
     78  MExtractor     *fExtractor;                           // Signal extractor
     79  MExtractTime   *fTimeExtractor;                       // Arrival Time extractor
    7180 
    72   MBadPixelsCam              fBadPixels;               // Bad Pixels cam, can be set from previous runs
    73   MCalibrationChargeCam      fCalibrationCam;          // Calibration conversion factors FADC2Phe
    74   MCalibrationChargeBlindCam fCalibrationBlindCam;     // Calibration from Blind Pixel(s)
    75   MCalibrationChargePINDiode fCalibrationPINDiode;     // Calibration from PIN Diode
    76   MCalibrationQECam          fQECam;                   // Quantum efficiency, can be set from previous runs
    77   MCalibrationRelTimeCam     fRelTimeCam;              // Calibration constants rel. times
     81  MBadPixelsCam                   fBadPixels;           // Bad Pixels cam, can be set from previous runs
     82  MCalibrationIntensityChargeCam  fIntensCalibCam;      // Calibration conversion factors FADC2Phe for diff. intens.
     83  MCalibrationChargeCam           fCalibrationCam;      // Calibration conversion factors FADC2Phe 
     84  MCalibrationChargeBlindCam      fCalibrationBlindCam; // Calibration from Blind Pixel(s)
     85  MCalibrationChargePINDiode      fCalibrationPINDiode; // Calibration from PIN Diode
     86  MCalibrationIntensityQECam      fIntensQECam;         // Quantum efficiency for diff. intensities,
     87  MCalibrationQECam               fQECam;               // Quantum efficiency, can be set from previous runs
     88  MCalibrationIntensityRelTimeCam fIntensRelTimeCam;    // Calibration constants rel. times for diff. intensities
     89  MCalibrationRelTimeCam          fRelTimeCam;          // Calibration constants rel. times
    7890 
    79   MCalibrationCam::PulserColor_t fColor;               // Colour of the pulsed LEDs
     91  MCalibrationCam::PulserColor_t fColor;                // Colour of the pulsed LEDs
    8092 
    81   enum  Display_t                                      // Possible Display types
     93  enum  Display_t                                       // Possible Display types
    8294    {
    8395      kFullDisplay,
     
    96108  Byte_t fDevices;                                     // Bit-field for used devices for calibration
    97109
    98   // Combine these options into a single bit-files (TestBit/SetBit, etc)
    99   Bool_t fRelTimes;                                    // Flag if relative times have to be calibrated
    100   Bool_t fDataCheck;                                   // Flag if the data check is run on raw data
    101   Bool_t fDebug;                                       // Flag if debug option is passed onto cal. classes
     110  enum { kRelTimes, kDataCheck, kDebug, kIntensity };  // Possible flags
    102111
    103   TString fGeometry;
     112  Byte_t fFlags;                                       // Bit-field for the flags
     113 
     114  TString fGeometry;                                   // Class name geometry
    104115 
    105116  void   DisplayResult        ( MParList &plist );
     
    110121  void   FixDataCheckHist     ( TH1D     *hist  ) const;
    111122 
    112   Bool_t WriteResult(TObject *geom);
    113   Bool_t WriteEventloop(MEvtLoop &evtloop) const;
    114   Bool_t WriteTasks(MTask *t1, MTask *t2) const;
    115   Bool_t CheckEnvLocal();
     123  Bool_t WriteResult   ( TObject *geom );
     124  Bool_t WriteEventloop( MEvtLoop &evtloop   ) const;
     125  Bool_t WriteTasks    ( MTask *t1, MTask *t2) const;
     126  Bool_t CheckEnvLocal ();
    116127 
    117128  // WORKAROUNDS!!!
     
    125136  const char* GetOutputFile() const;
    126137 
    127   MCalibrationChargeCam  &GetCalibrationCam() { return fCalibrationCam; }
    128   MCalibrationRelTimeCam &GetRelTimeCam()     { return fRelTimeCam;     }
    129   MCalibrationQECam      &GetQECam()          { return fQECam;          }
    130   MBadPixelsCam          &GetBadPixels()      { return fBadPixels;      }
     138  MCalibrationIntensityChargeCam  &GetIntensCalibrationCam() { return fIntensCalibCam;   }
     139  MCalibrationIntensityRelTimeCam &GetIntensRelTimeCam()     { return fIntensRelTimeCam; }
     140  MCalibrationIntensityQECam      &GetIntensQECam()          { return fIntensQECam;      }
     141
     142  MCalibrationChargeCam           &GetCalibrationCam()       { return fCalibrationCam;   }
     143  MCalibrationRelTimeCam          &GetRelTimeCam()           { return fRelTimeCam;       }
     144  MCalibrationQECam               &GetQECam()                { return fQECam;            }
     145  MBadPixelsCam                   &GetBadPixels()            { return fBadPixels;        }
    131146 
    132147  Bool_t IsUseBlindPixel() const;
    133   Bool_t IsUsePINDiode()   const;
     148  Bool_t IsUsePINDiode  () const;
     149
     150  Bool_t IsRelTimes     () const { return TESTBIT(fFlags,kRelTimes);  }
     151  Bool_t IsDataCheck    () const { return TESTBIT(fFlags,kDataCheck); }
     152  Bool_t IsDebug        () const { return TESTBIT(fFlags,kDebug);     }
     153  Bool_t IsIntensity    () const { return TESTBIT(fFlags,kIntensity); }
    134154 
    135   void SetBadPixels(const MBadPixelsCam &bad)    { bad.Copy(fBadPixels);  }
    136   void SetExtractor(MExtractor* ext)             { fExtractor = ext; }
    137   void SetTimeExtractor(MExtractTime* ext)       { fTimeExtractor = ext; }
    138   void SetQECam(const MCalibrationQECam &qe)     { qe.Copy(fQECam);        }
    139   void SetColor(const MCalibrationCam::PulserColor_t color) { fColor = color; }
    140   void SetInput(MRunIter *iter) { fRuns = iter; }
     155  void SetBadPixels(const MBadPixelsCam &bad)               { bad.Copy(fBadPixels); }
     156  void SetExtractor(MExtractor* ext)                        { fExtractor = ext;    }
     157  void SetTimeExtractor(MExtractTime* ext)                  { fTimeExtractor = ext; }
     158  void SetQECam(const MCalibrationQECam &qe)                { qe.Copy(fQECam);      }
     159  void SetColor(const MCalibrationCam::PulserColor_t color) { fColor = color;       }
     160  void SetInput(MRunIter *iter)                             { fRuns = iter;        }
    141161   
    142162  // Displays
     
    148168  void SetGeometry(const char *geom) { fGeometry = geom; }
    149169 
    150   // Rel. Time
    151   void SetRelTimeCalibration(const Bool_t b=kTRUE) { fRelTimes = b; }
    152  
    153   // Data Check
    154   void SetDataCheck(const Bool_t b=kTRUE) { fDataCheck = b; SetDataCheckDisplay(); }
    155  
    156   // Debug
    157   void SetDebug(const Bool_t b=kTRUE) { fDebug = b; }
     170  // Flags
     171  void SetRelTimeCalibration( const Bool_t b=kTRUE ) { b ? SETBIT(fFlags,kRelTimes)  : CLRBIT(fFlags,kRelTimes); }
     172  void SetDataCheck         ( const Bool_t b=kTRUE ) { b ? SetDataCheckDisplay(), SETBIT(fFlags,kDataCheck)
     173                                                                                     : CLRBIT(fFlags,kDataCheck); }
     174  void SetDebug             ( const Bool_t b=kTRUE ) { b ? SETBIT(fFlags,kDebug)     : CLRBIT(fFlags,kDebug); }
     175  void SetIntensity         ( const Bool_t b=kTRUE ) { b ? SETBIT(fFlags,kIntensity) : CLRBIT(fFlags,kIntensity); }
    158176 
    159177  // Devices
Note: See TracChangeset for help on using the changeset viewer.