/search.css" rel="stylesheet" type="text/css"/> /search.js">
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

Classes | Public Member Functions | Private Attributes
ADRelEff Class Reference

#include <ADRelEff.h>

Collaboration diagram for ADRelEff:
Collaboration graph
[legend]

List of all members.

Classes

struct  PmtProp

Public Member Functions

 ADRelEff (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~ADRelEff ()
virtual StatusCode initialize ()
virtual StatusCode execute ()
virtual StatusCode finalize ()
void Fit ()
int InitPmtProp (const ServiceMode &svc)
int ResetPmtProp ()

Private Attributes

ICableSvcm_cableSvc
 Cable mapping service.
ICalibDataSvcm_calibDataSvc
IRunDataSvcm_runDataSvc
TF1 * f1
TF1 * f2
TFile * m_rootfile
TTree * m_tree
FILE * m_masterfile
string m_fileName
unsigned long m_NTrigger
TH1F * h_RelEff
TH1F * h_Sigma
map< int, double > RingTotalChargePerEvent
map< int, PmtPropm_PmtPropMap
double m_StartTime
double m_EndTime
int m_Fix
int m_NStop
int m_FirstTrigSecond
int m_FirstTrigNanoSec
int m_LastTrigSecond
int m_LastTrigNanoSec
int m_startrun
int m_currentrun
int m_site
int m_simFlag
double m_currentTime
double m_prevTrigTime
double m_lastFitTime
double m_fitPeriod
list __all__ = [ "run" ]

Detailed Description

Definition at line 31 of file ADRelEff.h.


Constructor & Destructor Documentation

ADRelEff::ADRelEff ( const std::string &  name,
ISvcLocator *  pSvcLocator 
)

Definition at line 14 of file ADRelEff.cc.

                                                                 :
  GaudiAlgorithm(name, pSvcLocator)
{
  declareProperty("FileName", m_fileName = "AdcFit.root", "Root file name");
  declareProperty("FitPeriod", m_fitPeriod = 30*60, "Fit period in second, Default is 30 minutes");
  declareProperty("Fix", m_Fix = 0, "a temp fix for 40M noise");
}
ADRelEff::~ADRelEff ( ) [virtual]

Definition at line 22 of file ADRelEff.cc.

{
}

Member Function Documentation

StatusCode ADRelEff::initialize ( ) [virtual]

Run data service

Cable service

Definition at line 248 of file ADRelEff.cc.

{
  StatusCode sc;
  sc = this->GaudiAlgorithm::initialize();
  if( sc.isFailure() ) {
    error() << "Base class initialization error" << endreq;
    return sc;
  }

  sc = service("RunDataSvc",m_runDataSvc);
  if( sc.isFailure() ) {
    error() << "Can't get RunDataSvc" << endreq;
    return sc;
  }

  // Get CalibData Service
  sc = service("CalibDataSvc", m_calibDataSvc);
   if( sc.isFailure() ) {
    error() << "Can't get CalibDataSvc" << endreq;
    return sc;
  }

  sc = service("CableSvc",m_cableSvc);
  if( sc.isFailure() ) {
    error() << "Can't get CableSvc" << endreq;
    return sc;
  }

  f1 = new TF1("f1","gaus",20,250);
  //f1 = new TF1("f1",Pedestal,0,150,5);
  m_rootfile = new TFile(m_fileName.c_str(),"recreate");
  //m_tree = new TTree("t", "My Tree");
  //m_tree->SetMaxTreeSize(200000000);  // 200M

  m_masterfile = fopen("Master.pmtCalibMap.txt", "a");
  fprintf(m_masterfile, "# [StartRun] [EndRun] [Sites] [SimFlag] [StartTimeSec] [StartTimeNanoSec] [EndTimeSec] [EndTimeNanoSec] [map file]\n");
  fclose(m_masterfile);

  return sc;
}
StatusCode ADRelEff::execute ( ) [virtual]

Get run, event

Get ReadoutHeader

Get all information at that period.

check AD or water pool

a temporary workaround for problematic all_esum trigger 7

Loop over channel data

Definition at line 291 of file ADRelEff.cc.

{
  debug()<<"ADRelEff executing ... "<<endreq;

  StatusCode sc;
  
//  RawEventHeader* reh = get<RawEventHeader>(RawEventHeader::defaultLocation());
//  if(!reh) {
//    warning()<<"Failed to get raw event header"<<endreq;
//  }
//  else{
//    if(m_startrun==-1) m_startrun = reh->runNum();
//    m_currentrun = reh->runNum();
//  }

  ReadoutHeader* readoutHdr = get<ReadoutHeader>( ReadoutHeader::defaultLocation() );
  if(!readoutHdr) {
    error()<<"Failed to get readout header"<<endreq;
    return StatusCode::FAILURE;
  }

  const DaqCrate* daqCrate = readoutHdr->daqCrate();
  if(!daqCrate) {
    error()<<"Failed to get daqCrate from header"<<endreq;
    return StatusCode::FAILURE;
  }


  TimeStamp trigTime = daqCrate->triggerTime();
  m_currentTime = trigTime.GetSeconds();

  static bool first = true;
  if( first ) {
    first = false;
    Context ctx = readoutHdr->context();
    m_site=ctx.GetSite();
    m_simFlag=ctx.GetSimFlag();
    ctx.SetSite(Site::kAll);
    ctx.SetDetId(DetectorId::kAll);
    ServiceMode svc(ctx,0);
    //
    InitPmtProp(svc);
    //
    m_prevTrigTime = trigTime.GetSeconds();
    m_lastFitTime = trigTime.GetSeconds();
  }

  if( !(daqCrate->detector().isAD() ||
        daqCrate->detector().isWaterShield()) ) {
    return StatusCode::SUCCESS;
  }

  const DaqPmtCrate* pmtCrate = daqCrate->asPmtCrate();
  if (!pmtCrate) {
    error()<<"Failed to get DaqPmtCrate"<<endreq;
    return StatusCode::FAILURE;
  }
  m_NTrigger++;


  // Keep tracking the first trigger time and 
  // the laster trigger for this group of fit
  m_LastTrigSecond = trigTime.GetSec();
  m_LastTrigNanoSec = trigTime.GetNanoSec();
  if(m_NTrigger==1){
    m_FirstTrigSecond = trigTime.GetSec();
    m_FirstTrigNanoSec = trigTime.GetNanoSec();
  }

  Detector det = pmtCrate->detector();
  ServiceMode svcMode( readoutHdr->context(),0 );
  //  cout << "run number:" << m_runDataSvc->runData(svcMode)->runNumber() << endl;
  
  //int TrigType = pmtCrate->triggerType();
  //if( TrigType != 7 ) {

  const DaqPmtCrate::PmtChannelPtrList& channels = pmtCrate->pmtChannelReadouts();
  DaqPmtCrate::PmtChannelPtrList::const_iterator ci, ci_end = channels.end();
  RingTotalChargePerEvent.clear();

  for(ci = channels.begin(); ci!=ci_end; ci++) {
    const DaqPmtChannel* channel = *ci;
    FeeChannelId channelId = channel->channelId();
    
    if(channelId.board()==17&&channelId.connector()>=7) continue;
    // number of hits in this readout




    unsigned int multi = channel->hitCount();
    int id = 0;
    AdPmtSensor pmtId;
    if(det.isAD()){
     pmtId = m_cableSvc->adPmtSensor( channelId, svcMode );
      id = pmtId.fullPackedData();
    }
    else{
     PoolPmtSensor pmtId = m_cableSvc->poolPmtSensor( channelId, svcMode );
     id = pmtId.fullPackedData();
     // continue;
    }

    map<int, PmtProp>::iterator mapit = m_PmtPropMap.find(id);
    if(mapit==m_PmtPropMap.end()) continue;//skip the one not in map
    PmtProp& curPmt = mapit->second;
    curPmt.Hit=0; 
        // Get pmt calib data from CalibDataSvc
    const DayaBay::DetectorSensor& sensDetId
      = m_cableSvc->sensor(channelId, svcMode);

        const DayaBay::PmtCalibData* pmtCalib = 0;
      pmtCalib = m_calibDataSvc->pmtCalibData(sensDetId, svcMode);

      if(!pmtCalib) {
  static unsigned int errorCount=0;
  static const unsigned int maxErrors=100;
  if(errorCount<maxErrors){
    warning() << "No calibration properties for PMT: " << sensDetId
        << ", ignoring."<< endreq;
    errorCount++;
    if(errorCount==maxErrors){
      warning() << "You better be processing a FEE self-test file..."
          << "No more errors will be reported. " << endreq;
    }
  }
  continue;
      }

  double adcToSpe;


 

    for(unsigned int nr = 0; nr<multi; ++nr) {
      int tdc = channel->tdc(nr);
      int adc = channel->adc(nr);
      float preAdc = channel->preAdcAvg(nr);
      int gain = channel->isHighGainAdc(nr);
       curPmt.h_Tdc->Fill(tdc);

  // Use PMT calibration parameters
  if(channel->isHighGainAdc(nr)) {  //high
    adcToSpe = 1.0 / pmtCalib->m_speHigh;
  }else{
    adcToSpe = 1.0 / pmtCalib->m_speLow;
  }
      if(tdc>=900&&tdc<=1070)
      {
        if(gain==FeeGain::kHigh)//High Gain i.e. Fine Range
        {
          curPmt.h_Adc->Fill(adc-preAdc);
          //charge=((adc-preAdc)/pmtCalib->m_speHigh);
          curPmt.Charge[curPmt.Hit]=((adc-preAdc)*adcToSpe);
          curPmt.h_PreAdc->Fill(preAdc);
        }
        else
        {
          //charge=((adc-preAdc)/pmtCalib->m_speLow);

          curPmt.Charge[curPmt.Hit]=((adc-preAdc)*adcToSpe);
         }
         curPmt.Hit+=1;
        //cout<<curPmt.Hit<<endl;
       }
      if(curPmt.Hit==1)
      if(curPmt.Charge[curPmt.Hit-1]>0)
      {
      curPmt.h_charge->Fill(curPmt.Charge[curPmt.Hit-1]);
        RingTotalChargePerEvent[curPmt.Ring]+=curPmt.Charge[curPmt.Hit-1];
      }
    }
  } // end of channels

  for(ci = channels.begin(); ci!=ci_end; ci++) {
    const DaqPmtChannel* channel = *ci;
    FeeChannelId channelId = channel->channelId();

    if(channelId.board()==17&&channelId.connector()>=7) continue;
    // number of hits in this readout
    int id = 0;
    if(det.isAD()){
      AdPmtSensor pmtId = m_cableSvc->adPmtSensor( channelId, svcMode );
      id = pmtId.fullPackedData();
    }
    else{
      PoolPmtSensor pmtId = m_cableSvc->poolPmtSensor( channelId, svcMode );
     id = pmtId.fullPackedData();
    }

    map<int, PmtProp>::iterator mapit = m_PmtPropMap.find(id);
    if(mapit==m_PmtPropMap.end()) continue;//skip the one not in map
    PmtProp& curPmt = mapit->second;

    for(int nr = 0; nr<curPmt.Hit; ++nr) {
      if(curPmt.Charge[nr]!=0&&RingTotalChargePerEvent[curPmt.Ring]!=0)
      curPmt.h_ratio->Fill(curPmt.Charge[nr]/RingTotalChargePerEvent[curPmt.Ring]);
    } 
  } // end of channels


  //-------------------------------------
  //fit the data
  if(m_currentTime - m_lastFitTime > m_fitPeriod) {
    //Fit
    Fit();
    //after fit
    ResetPmtProp();
    m_NStop++;
    m_lastFitTime = m_currentTime;
  }
  
  m_prevTrigTime = m_currentTime;

  return StatusCode::SUCCESS;
}
StatusCode ADRelEff::finalize ( ) [virtual]

Definition at line 522 of file ADRelEff.cc.

{
  //Fit
  Fit();
  
  map<int/*PmtId*/,PmtProp>::iterator it,idend=m_PmtPropMap.end();
  for(it=m_PmtPropMap.begin(); it!=idend; it++) {
    PmtProp& curr = it->second;
    delete curr.h_Adc;
    delete curr.h_PreAdc;
    delete curr.h_Tdc;
    delete curr.h_charge;
    delete curr.h_ratio;
  }

  m_rootfile->Write();
  m_rootfile->Close();

  delete f1;
  //delete m_tree;
  delete m_rootfile;

  StatusCode sc;
  sc = this->GaudiAlgorithm::finalize();
  return sc;
}
void ADRelEff::Fit ( )

skip empty channels

Default values are ok to store.

start a real fit

Definition at line 27 of file ADRelEff.cc.

                  {
  ostringstream tmp;
  tmp <<setw(2) <<setfill('0') << m_NStop;
  string filename = "pmtDataTable_"+tmp.str()+".txt";
  FILE* outfile = fopen(filename.c_str(), "w+");


 
  fprintf(outfile, "# First Trigger time: (TrigSecond, TrigNanoSec) = (%d,%d).\n", m_FirstTrigSecond, m_FirstTrigNanoSec);
  fprintf(outfile, "# Last Trigger time: (TrigSecond, TrigNanoSec) = (%d,%d).\n", m_LastTrigSecond, m_LastTrigNanoSec);
  fprintf(outfile, "# [pmtID] [description] [status] [RelEff] [RelEffErr] [Sigma] [SigmaErr]\n");

  m_rootfile->cd();
  string newdir = tmp.str();
  m_rootfile->mkdir(newdir.c_str());
  m_rootfile->cd(newdir.c_str());

  //warning()<<"Test 0"<<endreq;

  m_masterfile = fopen("Master.pmtCalibMap.txt", "a");
  TimeStamp lastT1(m_LastTrigSecond,m_LastTrigNanoSec+1);
  fprintf(m_masterfile, "0000000 0000000 %4.0d %4.0d %10.0d %10.0d %10.0d %10.0d %s\n",
          m_site, m_simFlag, m_FirstTrigSecond,m_FirstTrigNanoSec,(int)lastT1.GetSec(),lastT1.GetNanoSec(),filename.c_str());
  fclose(m_masterfile);

  m_StartTime = m_FirstTrigSecond + m_FirstTrigNanoSec*1e-9;
  m_EndTime = m_LastTrigSecond + m_LastTrigNanoSec*1e-9;

  RingTotalChargePerEvent.clear();  

  map<int/*PmtId*/,PmtProp>::iterator it,idend=m_PmtPropMap.end();
  for(it=m_PmtPropMap.begin(); it!=idend; it++) {
    PmtProp& curr = it->second;


    if( curr.h_ratio->GetEntries() == 0 ) {          

      curr.Status=PmtCalibData::kUnknown;
    }  else 
    {                                          
      //fit Raw Ratio
      ostringstream tmp3;
      tmp3<<setw(2)<<setfill('0')<< m_NStop;
      string histname = "PreAdc_"+curr.PmtLabel+"_"+tmp3.str();
      string histname2 = "Adc_"+curr.PmtLabel+"_"+tmp3.str();
      //string histname = "RelRatio_"+curr.PmtLabel+"_"+tmp3.str();      

      double pedarea = curr.h_ratio->GetEntries();
      double pedmean = curr.h_ratio->GetMean();
      double pedsigm = curr.h_ratio->GetRMS();
      f1->SetParameters(pedarea,pedmean,pedsigm);
      f1->SetRange(pedmean-3*pedsigm,pedmean+3*pedsigm);
      int status1 = curr.h_ratio->Fit("f1","R");
      curr.Status=status1;

     curr.Ratio= f1->GetParameter(1);
      curr.RatioErr= f1->GetParError(1);
      curr.Sigma = f1->GetParameter(2);
      curr.SigmaErr= f1->GetParError(2);
      RingTotalChargePerEvent[curr.Ring]+=curr.Ratio/24.;

    }
  }
  //warning()<<"Test"<<endreq;

      for(it=m_PmtPropMap.begin(); it!=idend; it++) {
    PmtProp& curr = it->second;
    if(RingTotalChargePerEvent[curr.Ring]!=0)
    curr.Ratio=curr.Ratio/RingTotalChargePerEvent[curr.Ring];
    if(curr.h_ratio->GetEntries()>0)
      {//skip 0s
      fprintf(outfile, "%d %s %2d %8.3f %8.3f %8.3f %8.3f\n",curr.PmtId, curr.PmtLabel.c_str(), curr.Status, curr.Ratio,curr.RatioErr,curr.Sigma,curr.SigmaErr);
      h_RelEff->Fill(curr.Ratio);
      h_Sigma->Fill(curr.Sigma);


     curr.h_PreAdc->Write();
      curr.h_Adc->Write();
      curr.h_Tdc->Write();
      curr.h_charge->Write();
      curr.h_ratio->Write();
     } 
  }
      h_RelEff->Write();
      h_Sigma->Write();

  warning()<<"Test 2"<<endreq;

  //m_tree->Fill();
  fclose(outfile);
}
int ADRelEff::InitPmtProp ( const ServiceMode svc)

Definition at line 119 of file ADRelEff.cc.

{

  const vector<AdPmtSensor>& adPmts = m_cableSvc->adPmtSensors(svc);
  const vector<PoolPmtSensor>& poolPmts = m_cableSvc->poolPmtSensors(svc);
  
  PmtProp defPmtProp;
  defPmtProp.h_Adc=0;
  defPmtProp.h_Tdc=0;
  defPmtProp.h_PreAdc=0;
  defPmtProp.h_charge=0;
  defPmtProp.h_ratio=0;
  defPmtProp.Ratio=0;
  defPmtProp.RatioErr=0;
  defPmtProp.Sigma=0;
  defPmtProp.SigmaErr=0;
  defPmtProp.Status=PmtCalibData::kUnknown;
  defPmtProp.PmtLabel="";
  defPmtProp.PmtId=0;
  defPmtProp.Ring=0;
  defPmtProp.Column=0;
  //define histograms
  m_PmtPropMap.clear();
  RingTotalChargePerEvent.clear();
  //  AD PMTs 
  for( unsigned int ct=0; ct<adPmts.size(); ct++ ) {
    AdPmtSensor sensor = adPmts[ct];
    int id = sensor.fullPackedData();
    m_PmtPropMap[id] = defPmtProp;
    // get label
    ostringstream sring, scolumn;
    sring<<setw(2)<<setfill('0')<<sensor.ring();
    scolumn<<setw(2)<<setfill('0')<<sensor.column();
    string label = sensor.detName()+"_R"+sring.str()+"_C"+scolumn.str();
   m_PmtPropMap[id].Ring=sensor.ring();
    m_PmtPropMap[id].Column=sensor.column();  
    //
    string hname = "h_Adc_"+label;
    string hname2 = "h_PreAdc_"+label;
    string hname3 = "h_Tdc_"+label;
    string hname4 = "h_Charge_"+label;
    string hname5 = "h_Ratio_"+label;
    m_PmtPropMap[id].h_Adc = new TH1F(hname.c_str(),hname.c_str(),3500,-50,3000);
    m_PmtPropMap[id].h_PreAdc = new TH1F(hname2.c_str(),hname2.c_str(),350,-50,300);
    m_PmtPropMap[id].h_Tdc = new TH1F(hname3.c_str(),hname3.c_str(),400,400,1200);
    m_PmtPropMap[id].h_charge= new TH1F(hname4.c_str(),hname4.c_str(),2000,0,2000);
    m_PmtPropMap[id].h_ratio= new TH1F(hname5.c_str(),hname5.c_str(),2000,0,2);
    m_PmtPropMap[id].PmtLabel=label;
    m_PmtPropMap[id].PmtId=id;
  }
  string hname6 = "h_RelEff";
  h_RelEff= new TH1F(hname6.c_str(),hname6.c_str(),2000,0,2);
  hname6 = "h_Sigma";
  h_Sigma= new TH1F(hname6.c_str(),hname6.c_str(),2000,0,2);

  
  //  Water Poll PMTs
  for( unsigned int ct=0; ct<poolPmts.size(); ct++ ) {
    PoolPmtSensor sensor = poolPmts[ct];
    int id = sensor.fullPackedData();
    m_PmtPropMap[id] = defPmtProp;
    // get label
    ostringstream swall, sspot,sfacing;
    swall<<setw(2)<<setfill('0')<<sensor.wallNumber();
    sspot<<setw(2)<<setfill('0')<<sensor.wallSpot();
    sfacing<<setw(2)<<setfill('0')<<sensor.inwardFacing();
    string label = sensor.detName()+"_W"+swall.str()+"_S"+sspot.str()+"_F"+sfacing.str();
    // 
    string hname = "h_Adc_"+label;
    string hname2 = "h_PreAdc_"+label;
    string hname3 = "h_Tdc_"+label;
    string hname4 = "h_Charge_"+label;
    string hname5 = "h_Ratio_"+label;
    m_PmtPropMap[id].h_Adc = new TH1F(hname.c_str(),hname.c_str(),350,-50,300);
    m_PmtPropMap[id].h_PreAdc = new TH1F(hname2.c_str(),hname2.c_str(),350,-50,300);
    m_PmtPropMap[id].h_charge= new TH1F(hname4.c_str(),hname4.c_str(),2000,0,2000);
    m_PmtPropMap[id].h_ratio= new TH1F(hname5.c_str(),hname5.c_str(),2000,0,2);
    m_PmtPropMap[id].h_Tdc = new TH1F(hname3.c_str(),hname3.c_str(),400,400,1200);
    m_PmtPropMap[id].PmtLabel=label;
    m_PmtPropMap[id].PmtId=id;
  }

  //map<int/*PmtId*/,PmtProp>::iterator it,idend=m_PmtPropMap.end();
  //for(it=m_PmtPropMap.begin(); it!=idend; it++) {
  //  PmtProp& curr = it->second;
  //}
  
  ResetPmtProp();//reset

  m_NStop = 1;
  m_startrun = -1;
  m_currentrun = -1;
  
  return 1;
}
int ADRelEff::ResetPmtProp ( )

Definition at line 215 of file ADRelEff.cc.

{
  map<int/*PmtId*/,PmtProp>::iterator it,idend=m_PmtPropMap.end();
  for(it=m_PmtPropMap.begin(); it!=idend; it++) {
    PmtProp& curr = it->second;    
    curr.h_Adc->Reset();
    curr.h_PreAdc->Reset();
    curr.h_charge->Reset();
    curr.h_ratio->Reset();
    curr.h_Tdc->Reset();
    curr.Ratio=0;
    curr.RatioErr=0;
    curr.Sigma=0;
    curr.SigmaErr=0;
    curr.Charge[0]=0;
    curr.Charge[1]=0;
    curr.Charge[2]=0;
    curr.Charge[3]=0;
    curr.Charge[4]=0;
    curr.Charge[5]=0;
    curr.Hit=0;
    curr.Status=PmtCalibData::kUnknown;
  }
    RingTotalChargePerEvent.clear();
     h_RelEff->Reset();
      h_Sigma->Reset();

  m_NTrigger = 0;
  m_startrun = -1;

  return 1;
}

Member Data Documentation

Cable mapping service.

Definition at line 50 of file ADRelEff.h.

Definition at line 52 of file ADRelEff.h.

Definition at line 53 of file ADRelEff.h.

TF1* ADRelEff::f1 [private]

Definition at line 55 of file ADRelEff.h.

TF1* ADRelEff::f2 [private]

Definition at line 56 of file ADRelEff.h.

TFile* ADRelEff::m_rootfile [private]

Definition at line 57 of file ADRelEff.h.

TTree* ADRelEff::m_tree [private]

Definition at line 58 of file ADRelEff.h.

FILE* ADRelEff::m_masterfile [private]

Definition at line 59 of file ADRelEff.h.

string ADRelEff::m_fileName [private]

Definition at line 60 of file ADRelEff.h.

unsigned long ADRelEff::m_NTrigger [private]

Definition at line 62 of file ADRelEff.h.

TH1F* ADRelEff::h_RelEff [private]

Definition at line 83 of file ADRelEff.h.

TH1F* ADRelEff::h_Sigma [private]

Definition at line 84 of file ADRelEff.h.

map<int,double> ADRelEff::RingTotalChargePerEvent [private]

Definition at line 86 of file ADRelEff.h.

map<int,PmtProp> ADRelEff::m_PmtPropMap [private]

Definition at line 88 of file ADRelEff.h.

double ADRelEff::m_StartTime [private]

Definition at line 90 of file ADRelEff.h.

double ADRelEff::m_EndTime [private]

Definition at line 91 of file ADRelEff.h.

int ADRelEff::m_Fix [private]

Definition at line 93 of file ADRelEff.h.

int ADRelEff::m_NStop [private]

Definition at line 94 of file ADRelEff.h.

Definition at line 95 of file ADRelEff.h.

Definition at line 96 of file ADRelEff.h.

Definition at line 97 of file ADRelEff.h.

Definition at line 98 of file ADRelEff.h.

int ADRelEff::m_startrun [private]

Definition at line 99 of file ADRelEff.h.

int ADRelEff::m_currentrun [private]

Definition at line 100 of file ADRelEff.h.

int ADRelEff::m_site [private]

Definition at line 102 of file ADRelEff.h.

int ADRelEff::m_simFlag [private]

Definition at line 103 of file ADRelEff.h.

double ADRelEff::m_currentTime [private]

Definition at line 104 of file ADRelEff.h.

double ADRelEff::m_prevTrigTime [private]

Definition at line 105 of file ADRelEff.h.

double ADRelEff::m_lastFitTime [private]

Definition at line 106 of file ADRelEff.h.

double ADRelEff::m_fitPeriod [private]

Definition at line 107 of file ADRelEff.h.

list ADRelEff::__all__ = [ "run" ] [private]

Definition at line 3 of file __init__.py.


The documentation for this class was generated from the following files:
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Fri May 16 2014 10:03:40 for ADRelEff by doxygen 1.7.4