Ignore:
Timestamp:
03/03/07 22:01:13 (18 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc

    r8342 r8355  
    11/* ======================================================================== *\
    2 ! $Name: not supported by cvs2svn $:$Id: MHCalibrationChargeCam.cc,v 1.53 2007-03-01 18:21:08 tbretz Exp $
     2! $Name: not supported by cvs2svn $:$Id: MHCalibrationChargeCam.cc,v 1.54 2007-03-03 22:00:25 tbretz Exp $
    33! --------------------------------------------------------------------------
    44!
     
    2121!   Author(s): Thomas Bretz <mailto:tbretz@astro.uni-wuerzburg.de>
    2222!
    23 !   Copyright: MAGIC Software Development, 2000-2006
     23!   Copyright: MAGIC Software Development, 2000-2007
    2424!
    2525!
     
    122122/////////////////////////////////////////////////////////////////////////////
    123123#include "MHCalibrationChargeCam.h"
    124 #include "MHCalibrationCam.h"
    125 
    126 #include "MLog.h"
    127 #include "MLogManip.h"
    128 
    129 #include "MParList.h"
    130 
    131 #include "MHCalibrationChargePix.h"
    132 #include "MHCalibrationPix.h"
    133 
    134 #include "MCalibrationIntensityCam.h"
    135 #include "MCalibrationChargeCam.h"
    136 #include "MCalibrationChargePix.h"
    137 
    138 #include "MGeomCam.h"
    139 #include "MGeomPix.h"
    140 
    141 #include "MBadPixelsIntensityCam.h"
    142 #include "MBadPixelsCam.h"
    143 #include "MBadPixelsPix.h"
    144 
    145 #include "MRawEvtData.h"
    146 #include "MRawRunHeader.h"
    147 #include "MRawEvtPixelIter.h"
    148 
    149 #include "MExtractedSignalCam.h"
    150 #include "MExtractedSignalPix.h"
    151 
    152 #include "MArrayI.h"
    153 #include "MArrayD.h"
    154124
    155125#include <TOrdCollection.h>
     
    159129#include <TStyle.h>
    160130#include <TF1.h>
     131#include <TLine.h>
    161132#include <TLatex.h>
    162133#include <TLegend.h>
    163134#include <TGraph.h>
    164135#include <TEnv.h>
     136
     137#include "MLog.h"
     138#include "MLogManip.h"
     139
     140#include "MParList.h"
     141
     142#include "MHCalibrationChargePix.h"
     143#include "MHCalibrationPix.h"
     144
     145#include "MCalibrationIntensityCam.h"
     146#include "MCalibrationChargeCam.h"
     147#include "MCalibrationChargePix.h"
     148
     149#include "MGeomCam.h"
     150#include "MGeomPix.h"
     151
     152#include "MBadPixelsIntensityCam.h"
     153#include "MBadPixelsCam.h"
     154#include "MBadPixelsPix.h"
     155
     156#include "MRawEvtData.h"
     157#include "MRawRunHeader.h"
     158#include "MRawEvtPixelIter.h"
     159
     160#include "MExtractedSignalCam.h"
     161#include "MExtractedSignalPix.h"
     162
     163#include "MArrayI.h"
     164#include "MArrayD.h"
    165165
    166166ClassImp(MHCalibrationChargeCam);
     
    287287  cam->fLoGainLast             = fLoGainLast;
    288288  cam->fReferenceFile          = fReferenceFile;
     289  cam->fInnerRefCharge         = fInnerRefCharge;
     290  cam->fOuterRefCharge         = fOuterRefCharge;
    289291
    290292  //
     
    388390    if ( fColor == MCalibrationCam::kBLUE)
    389391      SetBinning(fLoGainNbins, fLoGainFirst, 2.*fLoGainLast - fLoGainFirst);
    390  
     392
    391393  InitHiGainArrays(npixels,nareas,nsectors);
    392394  InitLoGainArrays(npixels,nareas,nsectors);
     
    469471        fAverageHiGainAreas->AddAt(new MHCalibrationChargePix(Form("%sHiGainArea%d",fHistName.Data(),j),
    470472                                                  Form("%s High Gain Area Idx %d",fHistTitle.Data(),j)),j);
    471        
     473
    472474        MHCalibrationChargePix &pix = (MHCalibrationChargePix&)GetAverageHiGainArea(j);
    473        
     475
    474476        pix.SetBinning(fNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas),
    475477                       fFirst, fLast);
    476        
     478
    477479        pix.SetBinningAbsTime(higainsamples, -0.5, higainsamples-0.5);
    478480
     
    480482
    481483        h =  pix.GetHAbsTime();
    482        
     484
    483485        h->SetName (Form("H%sHiGainArea%d",fAbsHistName.Data(),j));
    484486        h->SetTitle(Form("%s%s%d",fAbsHistTitle.Data(),
     
    502504
    503505          pix.SetBinningAbsTime(higainsamples, -0.5, higainsamples-0.5);
    504          
     506
    505507          InitHists(pix,fIntensCam ? fIntensCam->GetAverageBadSector(j) : fCam->GetAverageBadSector(j),j);
    506508
    507509          h =  pix.GetHAbsTime();
    508          
     510
    509511          h->SetName (Form("H%sHiGainSector%02d",fAbsHistName.Data(),j));
    510512          h->SetTitle(Form("%s%s%02d",fAbsHistTitle.Data(),
     
    559561
    560562          pix.SetBinning(fLoGainNbins, fLoGainFirst, fLoGainLast);
    561          
    562563          pix.SetProbLimit(fProbLimit);
    563564
     
    583584          fAverageLoGainAreas->AddAt(new MHCalibrationChargePix(Form("%sLoGainArea%d",fHistName.Data(),j),
    584585                                       Form("%s Low Gain Area Idx %d",fHistTitle.Data(),j)),j);
    585        
     586
    586587          MHCalibrationChargePix &pix = (MHCalibrationChargePix&)GetAverageLoGainArea(j);
    587          
     588
    588589          pix.SetBinning(fLoGainNbins*(Int_t)TMath::Sqrt((Float_t)npixels/nareas),
    589590                         fLoGainFirst, fLoGainLast);
    590          
     591
    591592          pix.SetBinningAbsTime(logainsamples, -0.5, logainsamples-0.5);
    592593         
     
    669670  const UInt_t nareas   = fGeom->GetNumAreas();
    670671  const UInt_t nsectors = fGeom->GetNumSectors();
    671   const UInt_t lofirst  = signal->GetFirstUsedSliceLoGain();
     672
     673  const Int_t hifirst = fSignal->GetFirstUsedSliceHiGain();
     674  const Int_t hilast  = fSignal->GetLastUsedSliceHiGain();
     675  const Int_t lofirst = fSignal->GetFirstUsedSliceLoGain();
     676  const Int_t lolast  = fSignal->GetLastUsedSliceLoGain();
    672677
    673678  fSumhiarea  .Reset();
     
    759764         continue;
    760765     
    761       const Float_t timehi = (Float_t)pixel.GetIdxMaxHiGainSample();
     766      const Float_t timehi = (Float_t)pixel.GetIdxMaxHiGainSample(hifirst, hilast);
    762767
    763768      histhi.FillAbsTime(timehi);
     
    773778          MHCalibrationChargePix &histlo = (MHCalibrationChargePix&)(*this)(pixid);
    774779
    775           const Float_t timelo = (Float_t)pixel.GetIdxMaxLoGainSample(lofirst);
     780          const Float_t timelo = (Float_t)pixel.GetIdxMaxLoGainSample(lofirst, lolast);
    776781          histlo.FillAbsTime(timelo);
    777782
     
    12621267    if (pix.IsEmpty())
    12631268        return;
    1264  
    1265   TVirtualPad *newpad = gPad;
    1266   newpad->Divide(1,2);
    1267   newpad->cd(1);
    1268  
    1269   gPad->SetTicks();
    1270   if (!pix.IsEmpty() && !pix.IsOnlyOverflow() && !pix.IsOnlyUnderflow())
    1271     gPad->SetLogy();
    1272 
    1273   TH1F *hist = pix.GetHGausHist();
    1274 
    1275   TH1F *null = new TH1F("Null",hist->GetTitle(),100,
    1276                         pix.GetFirst() > 0. ? pix.GetFirst() : 0.,
    1277                         pix.GetLast() > pix.GetFirst()
    1278                         ? ( pix.GetLast() > 450.
    1279                             ? ( fColor == MCalibrationCam::kBLUE ? 800. : 450. )
    1280                             : pix.GetLast() )
    1281                         : pix.GetFirst()*2.);
    1282 
    1283   null->SetMaximum(1.1*hist->GetMaximum());
    1284   null->SetDirectory(NULL);
    1285   null->SetBit(kCanDelete);
    1286   null->SetStats(kFALSE);
    1287   //
    1288   // set the labels bigger
    1289   //
    1290   TAxis *xaxe = null->GetXaxis();
    1291   TAxis *yaxe = null->GetYaxis();
    1292   xaxe->CenterTitle();
    1293   yaxe->CenterTitle();   
    1294   xaxe->SetTitleSize(0.07);
    1295   yaxe->SetTitleSize(0.07);   
    1296   xaxe->SetTitleOffset(0.7);
    1297   yaxe->SetTitleOffset(0.55);   
    1298   xaxe->SetLabelSize(0.06);
    1299   yaxe->SetLabelSize(0.06);   
    1300   xaxe->SetTitle(hist->GetXaxis()->GetTitle());
    1301   yaxe->SetTitle(hist->GetYaxis()->GetTitle()); 
    1302 
    1303   null->Draw();
    1304   hist->Draw("same");
    1305 
    1306   gStyle->SetOptFit();
    1307 
    1308   TF1 *fit = pix.GetFGausFit();
    1309 
    1310   if (fit)
    1311   {
    1312     switch ( fColor )
    1313       {
    1314       case MCalibrationCam::kGREEN:
    1315         fit->SetLineColor(kGreen);
    1316         break;
    1317       case MCalibrationCam::kBLUE:
    1318         fit->SetLineColor(kBlue);
    1319         break;
    1320       case MCalibrationCam::kUV: 
    1321         fit->SetLineColor(106);
    1322         break;
    1323       case MCalibrationCam::kCT1:
    1324         fit->SetLineColor(006);
    1325         break;
    1326       default:
    1327         fit->SetLineColor(kRed);
    1328       }
    1329     fit->Draw("same");
    1330   }
    1331 
    1332   DisplayRefLines(null,refline);
    1333 
    1334   newpad->cd(2);
    1335   gPad->SetTicks();
    1336 
    1337   TH1F *null2 = new TH1F("Null2",hist->GetTitle(),100,0.,pix.GetEvents()->GetSize()/pix.GetEventFrequency());
    1338 
    1339   null2->SetMinimum(pix.GetMean()-10.*pix.GetSigma());
    1340   null2->SetMaximum(pix.GetMean()+10.*pix.GetSigma());
    1341   null2->SetDirectory(NULL);
    1342   null2->SetBit(kCanDelete);
    1343   null2->SetStats(kFALSE);
    1344   //
    1345   // set the labels bigger
    1346   //
    1347   TAxis *xaxe2 = null2->GetXaxis();
    1348   TAxis *yaxe2 = null2->GetYaxis();
    1349   xaxe2->CenterTitle();
    1350   yaxe2->CenterTitle();   
    1351   xaxe2->SetTitleSize(0.07);
    1352   yaxe2->SetTitleSize(0.07);   
    1353   xaxe2->SetTitleOffset(0.7);
    1354   yaxe2->SetTitleOffset(0.55);   
    1355   xaxe2->SetLabelSize(0.06);
    1356   yaxe2->SetLabelSize(0.06);   
    1357 
    1358   pix.CreateGraphEvents();
    1359   TGraph *gr = pix.GetGraphEvents();
    1360   if (gr)
    1361   {
    1362       xaxe2->SetTitle(gr->GetXaxis()->GetTitle());
    1363       yaxe2->SetTitle(gr->GetYaxis()->GetTitle());
    1364   }
    1365 
    1366   null2->Draw();
    1367 
    1368   pix.DrawEvents("same");
    1369 
    1370   //  newpad->cd(3);
    1371   //  pix.DrawPowerSpectrum(*newpad,4);
    1372 
    1373   return;
    1374  
     1269
     1270    TVirtualPad *pad = gPad;
     1271    pad->Divide(1,2, 1e-10, 1e-10);
     1272    pad->cd(1);
     1273
     1274    gPad->SetBorderMode(0);
     1275    gPad->SetTicks();
     1276    if (!pix.IsEmpty() && !pix.IsOnlyOverflow() && !pix.IsOnlyUnderflow())
     1277        gPad->SetLogy();
     1278
     1279    TH1F  *hist = pix.GetHGausHist();
     1280    TAxis *xaxe = hist->GetXaxis();
     1281    TAxis *yaxe = hist->GetYaxis();
     1282    xaxe->CenterTitle();
     1283    yaxe->CenterTitle();
     1284    xaxe->SetTitleSize(0.07);
     1285    yaxe->SetTitleSize(0.07);
     1286    xaxe->SetTitleOffset(0.7);
     1287    yaxe->SetTitleOffset(0.55);
     1288    xaxe->SetLabelSize(0.06);
     1289    yaxe->SetLabelSize(0.06);
     1290    xaxe->SetTitle(hist->GetXaxis()->GetTitle());
     1291    yaxe->SetTitle(hist->GetYaxis()->GetTitle());
     1292    xaxe->SetRange(hist->GetMaximumBin()-30, hist->GetMaximumBin()+30);
     1293
     1294    gStyle->SetOptFit();
     1295
     1296    hist->Draw();
     1297
     1298    TF1 *fit = pix.GetFGausFit();
     1299    if (fit)
     1300    {
     1301        switch (fColor)
     1302        {
     1303        case MCalibrationCam::kGREEN:
     1304            fit->SetLineColor(kGreen);
     1305            break;
     1306        case MCalibrationCam::kBLUE:
     1307            fit->SetLineColor(kBlue);
     1308            break;
     1309        case MCalibrationCam::kUV:
     1310            fit->SetLineColor(106);
     1311            break;
     1312        case MCalibrationCam::kCT1:
     1313            fit->SetLineColor(006);
     1314            break;
     1315        default:
     1316            fit->SetLineColor(kRed);
     1317        }
     1318        fit->Draw("same");
     1319    }
     1320
     1321    DisplayRefLines(hist,refline);
     1322
     1323    pad->cd(2);
     1324    gPad->SetBorderMode(0);
     1325    gPad->SetTicks();
     1326
     1327    pix.CreateGraphEvents();
     1328    TGraph *gr = pix.GetGraphEvents();
     1329    if (gr)
     1330    {
     1331        TH1F *null2 = gr->GetHistogram();
     1332
     1333        null2->SetMinimum(pix.GetMean()-10.*pix.GetSigma());
     1334        null2->SetMaximum(pix.GetMean()+10.*pix.GetSigma());
     1335        null2->SetStats(kFALSE);
     1336
     1337        //
     1338        // set the labels bigger
     1339        //
     1340        TAxis *xaxe2 = null2->GetXaxis();
     1341        TAxis *yaxe2 = null2->GetYaxis();
     1342        xaxe2->CenterTitle();
     1343        yaxe2->CenterTitle();
     1344        xaxe2->SetTitleSize(0.07);
     1345        yaxe2->SetTitleSize(0.07);
     1346        xaxe2->SetTitleOffset(0.7);
     1347        yaxe2->SetTitleOffset(0.55);
     1348        xaxe2->SetLabelSize(0.06);
     1349        yaxe2->SetLabelSize(0.06);
     1350        xaxe2->SetRangeUser(0, pix.GetEvents()->GetSize()/pix.GetEventFrequency());
     1351    }
     1352
     1353    pix.DrawEvents();
     1354
     1355    //  newpad->cd(3);
     1356    //  pix.DrawPowerSpectrum(*newpad,4);
    13751357}
    1376 
    13771358
    13781359void  MHCalibrationChargeCam::DisplayRefLines(const TH1F *hist, const Float_t refline) const
    13791360{
    1380 
    1381   TGraph *uv10    = new TGraph(2);
    1382   uv10->SetPoint(0,refline,0.);
    1383   uv10->SetPoint(1,refline,hist->GetMaximum());
    1384   uv10->SetBit(kCanDelete);
    1385   uv10->SetLineColor(106);
    1386   uv10->SetLineStyle(2);
    1387   uv10->SetLineWidth(3);
    1388   uv10->Draw("L");
    1389 
    1390   TLegend *leg = new TLegend(0.8,0.55,0.99,0.99);
    1391   leg->SetBit(kCanDelete);
    1392   leg->AddEntry(uv10,"10 Leds UV","l");
    1393 
    1394   leg->Draw();
     1361    TLine *line = new TLine(refline, 0, refline, hist->GetMaximum());
     1362    line->SetLineColor(106);
     1363    line->SetLineStyle(2);
     1364    line->SetLineWidth(3);
     1365    line->SetBit(kCanDelete);
     1366    line->Draw();
     1367
     1368    TLegend *leg = new TLegend(0.8,0.01,0.99,0.45);
     1369    leg->AddEntry(line, "10 Leds UV", "l");
     1370    leg->SetBit(kCanDelete);
     1371    leg->Draw();
    13951372}
    13961373
     
    13981375{
    13991376
    1400   Bool_t rc = kFALSE;
    1401 
    1402   if (MHCalibrationCam::ReadEnv(env,prefix,print))
    1403     rc = kTRUE;
    1404    
     1377  Int_t rc = MHCalibrationCam::ReadEnv(env,prefix,print);
     1378  if (rc==kERROR)
     1379    return kERROR;
     1380
    14051381  if (IsEnvDefined(env, prefix, "HiGainNbins", print))
    14061382    {
     
    14081384      rc = kTRUE;
    14091385    }
    1410  
     1386
    14111387  if (IsEnvDefined(env, prefix, "HiGainFirst", print))
    14121388    {
     
    14141390      rc = kTRUE;
    14151391    }
    1416  
     1392
    14171393  if (IsEnvDefined(env, prefix, "HiGainLast", print))
    14181394    {
     
    14201396      rc = kTRUE;
    14211397    }
    1422  
     1398
    14231399  if (IsEnvDefined(env, prefix, "LoGainNbins", print))
    14241400    {
     
    14261402      rc = kTRUE;
    14271403    }
    1428  
     1404
    14291405  if (IsEnvDefined(env, prefix, "LoGainFirst", print))
    14301406    {
     
    14321408      rc = kTRUE;
    14331409    }
    1434  
     1410
    14351411  if (IsEnvDefined(env, prefix, "LoGainLast", print))
    14361412    {
     
    14381414      rc = kTRUE;
    14391415    }
    1440  
     1416
    14411417  if (IsEnvDefined(env, prefix, "TimeLowerLimit", print))
    14421418    {
     
    14441420      rc = kTRUE;
    14451421    }
    1446  
     1422
    14471423  if (IsEnvDefined(env, prefix, "TimeUpperLimit", print))
    14481424    {
     
    14501426      rc = kTRUE;
    14511427    }
    1452    
     1428
    14531429  if (IsEnvDefined(env, prefix, "ReferenceFile", print))
    14541430    {
     
    14751451  }
    14761452
    1477 
    14781453  TEnv refenv(fReferenceFile);
    14791454
Note: See TracChangeset for help on using the changeset viewer.