Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

LISummarySorter Class Reference

#include <LISummarySorter.h>

List of all members.

Public Member Functions

 LISummarySorter ()
 ~LISummarySorter ()
void AddEntry (RawChannelId channelid, Float_t mean, Float_t rms, Int_t numEntries)
void CloseFile (TFile *outfile)
void CountNumSummaries (Int_t num)
void GetElectronicsData (Int_t channel)
void GetMuxBoxInfo (PlexPinDiodeId plexPinDiodeId)
void GetMuxBoxInfo (PlexPixelSpotId plexPixelSpotId)
TFile * OpenFile (Int_t runNumber, Int_t runNumberSub, Int_t detectorType)
void OutputData ()
void PrintRecoSummary ()
void ReconstructStripEnd (Int_t channel)
Bool_t ReconstructPin (Int_t channel)
void ReconstructTrigPmt ()
void ResetTreeVariables ()
void SetDetector (VldContext vldC)
void SetRawDaqVldCtx (VldContext vldC)
void SetRunNumber (Int_t runNum)
void SetRunNumberSub (Short_t runNumSub)
void SetRunType (Short_t runT)
void SetPlexHandle (VldContext vldC)
Bool_t Update (Int_t led, Int_t pulseHeight, Int_t pulseWidth, Int_t pulserBox, Int_t calibPoint, VldTimeStamp time, Int_t calibType, Int_t pulses, Int_t period)
void WriteFile (TFile *outfile)

Private Member Functions

void InitialiseTree ()
void SetLIVariables (Int_t led, Int_t pulseHeight, Int_t pulseWidth, Int_t pulserBox, Int_t calibPoint, VldTimeStamp time, Int_t calibType, Int_t pulses, Int_t period)
string GetElecString () const
string GetElecString (RawChannelId rChId) const
void PrintBigMessage () const
void PrintBlockInfo (string preString) const

Private Attributes

Int_t ashtray
Int_t badHitCounter
Int_t calibPoint
Int_t calibType
Int_t cerenkovCounter
Int_t chAdd
Int_t channel
std::vector< LIChannelchannels
Int_t chip
Int_t commonModeCounter
Int_t correlatedHit
Int_t crate
std::map< Int_t, Int_t > crates
Int_t detectorType
Int_t eastWest
Int_t elecType
Int_t farLed
Int_t farPulserBox
string filename
Int_t first_time
Int_t inRack
Int_t geoAdd
Int_t goodHitCounter
Int_t led
std::map< Int_t, Int_t > leds
LILookup fLookup
Int_t fMasterCh
Float_t mean
Int_t fMinderCh
PlexHandleplexHandle
Int_t nearLed
Int_t nearPulserBox
Int_t numEntries
Int_t numericMuxBox
TTree * outtree
TFile * outputFile
Float_t fPe
Int_t period
Int_t pixel
Int_t pinCounter
std::map< Int_t, Int_t > pinCounterReco
Int_t pinGain
Int_t pinInBox
Int_t plane
std::map< Int_t, Int_t > plexOppPbCounter
std::map< Int_t, Int_t > plexPbCounter
Int_t pulseHeight
Int_t pulserBox
std::map< Int_t, Int_t > pulserBoxes
Int_t pulses
Int_t pulseWidth
Int_t rackBay
Int_t rackLevel
VldContext fRawDaqVldCtx
Int_t rawSummaryBlockCounter
Int_t rawSummaryCounter
Int_t readoutType
Int_t runNumber
Int_t runNumberSub
Int_t runType
Float_t rms
Int_t strip
Int_t stripCounter
Int_t fStripEnd
Int_t summaryCounter
VldTimeStamp time
Int_t timestamp
Int_t timestampNanoSec
Int_t timingFidCounter
Int_t tofCounter
Int_t triggerOrCounter
Int_t trigPmtCounter
Int_t unconnectedPixelCounter
Int_t unknownCounter
VldContext validity
Int_t varc
Int_t vfb
Int_t vmm


Constructor & Destructor Documentation

LISummarySorter::LISummarySorter  ) 
 

Definition at line 35 of file LISummarySorter.cxx.

References ashtray, badHitCounter, calibPoint, calibType, cerenkovCounter, chAdd, channel, chip, commonModeCounter, correlatedHit, crate, detectorType, eastWest, elecType, farLed, farPulserBox, first_time, fMasterCh, fMinderCh, fPe, fStripEnd, geoAdd, goodHitCounter, inRack, led, mean, MSG, nearLed, nearPulserBox, numEntries, numericMuxBox, outputFile, outtree, period, pinCounter, pinGain, pinInBox, pixel, plane, plexHandle, pulseHeight, pulserBox, pulses, pulseWidth, rackBay, rackLevel, rawSummaryBlockCounter, rawSummaryCounter, readoutType, rms, runNumber, runNumberSub, runType, strip, stripCounter, summaryCounter, timestamp, timestampNanoSec, timingFidCounter, tofCounter, triggerOrCounter, trigPmtCounter, unconnectedPixelCounter, unknownCounter, varc, vfb, and vmm.

00036 {
00037   MSG("LISummarySorter",Msg::kDebug) 
00038     <<"Running LISummarySorter Constructor..."<<endl;
00039 
00040   //initialise data members
00041   ashtray=-1;
00042   badHitCounter=0;
00043   calibPoint=-1;
00044   calibType=-1;
00045   cerenkovCounter=0;
00046   chAdd=-1;
00047   channel=-1;
00048   chip=-1;
00049   commonModeCounter=0;//readoutType counter
00050   correlatedHit=-1;
00051   crate=-1;
00052   detectorType=-1;
00053   eastWest=-1;//0 is east, 1 is west 
00054   elecType=-1;
00055   farLed=-1;
00056   farPulserBox=-1;
00057   first_time=0;
00058   inRack=-1;//determines mux box in rack 0-7
00059   geoAdd=-1;
00060   goodHitCounter=0;
00061   led=-1;
00062   fMasterCh=-1;
00063   mean=-1.;
00064   fMinderCh=-1;
00065   nearLed=-1;
00066   nearPulserBox=-1;
00067   numEntries=-1;
00068   numericMuxBox=-1;
00069   outtree=0;//set pointer to tree to zero
00070   outputFile=0;
00071   fPe=-1;
00072   period=-1;
00073   pixel=-1;
00074   pinCounter=0;
00075   pinGain=-1;//0 is low, 1 is high gain
00076   pinInBox=-1;//0 is low gain (VA=0), 1 is high gain (VA=1)
00077   plane=-1;
00078   plexHandle=0;
00079   pulseHeight=-1;
00080   pulserBox=-1;
00081   pulses=-1;
00082   pulseWidth=-1;
00083   rackBay=-1;//determines which rack 0-15
00084   rackLevel=-1;//0 is top, 1 is bottom
00085   rawSummaryBlockCounter=0;
00086   rawSummaryCounter=0;
00087   readoutType=-1;
00088   rms=-1.;
00089   runNumber=-1;
00090   runNumberSub=-1;
00091   runType=-1;
00092   strip=-1;
00093   stripCounter=0;
00094   fStripEnd=-1;
00095   summaryCounter=0;
00096   timestamp=-1;
00097   timestampNanoSec=-1;
00098   timingFidCounter=0;
00099   tofCounter=0;
00100   triggerOrCounter=0;
00101   trigPmtCounter=0;
00102   unconnectedPixelCounter=0;
00103   unknownCounter=0;
00104   varc=-1;
00105   vfb=-1;
00106   vmm=-1;
00107 
00108   MSG("LISummarySorter",Msg::kDebug) 
00109     <<"Finished LISummarySorter Constructor"<<endl;
00110 }

LISummarySorter::~LISummarySorter  ) 
 

Definition at line 114 of file LISummarySorter.cxx.

References MSG.

00115 {
00116   MSG("LISummarySorter",Msg::kDebug) 
00117     <<"Running LISummarySorter destructor..."<<endl;
00118 
00119   //get rid of memory leak right at the end
00120   if (plexHandle) delete plexHandle;
00121 
00122   MSG("LISummarySorter",Msg::kDebug) 
00123     <<"Finished LISummarySorter destructor"<<endl;
00124 }


Member Function Documentation

void LISummarySorter::AddEntry RawChannelId  channelid,
Float_t  mean,
Float_t  rms,
Int_t  numEntries
 

Definition at line 1335 of file LISummarySorter.cxx.

References ReadoutType::AsString(), channels, fLookup, RawChannelId::GetChAdd(), RawChannelId::GetCrate(), GetElecString(), PlexHandle::GetReadoutType(), InitialiseTree(), MAXMSG, MSG, LILookup::NUMCHADD, and plexHandle.

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::GetSummaryBlocks().

01339 {
01340   //initialise the tree if the first time (also opens file)
01341   if (!outtree) this->InitialiseTree();
01342 
01343   Int_t ch=channelId.GetCrate()*fLookup.NUMCHADD+channelId.GetChAdd();
01344   
01345   MSG("LISummarySorterUltraVerbose",Msg::kVerbose) 
01346     <<"ch="<<ch<<", ChAdd="<<channelId.GetChAdd()<<endl;
01347 
01348   //set the channelId of the channel
01349   channels[ch].SetChannelId(channelId);
01350   
01351   //this is deliberately LIChannel type message
01352   MSG("LIChannel",Msg::kVerbose) 
01353     <<this->GetElecString(channels[ch].GetChannelId())<<endl;
01354 
01356   //do I really want to add zero channels????
01357   //maybe just add the channel once, so it appears in the tree?
01358   //probably just put everything in there!
01360 
01361   string msgPrefix="Used Summary w/ strange values ";
01362 
01363   //add the means and rms to the running total
01364   channels[ch].AddEntry(numEntries,mean,rms); 
01365 
01366   //do some sanity checking that there are no strange entries
01367   if (mean==0 || numEntries==0){
01368     //get the raw channel id to use below
01369     RawChannelId rChId=channels[ch].GetChannelId();
01370     
01371     //have to get the readout type since it wont have been set for the
01372     //first point
01373     if (plexHandle->GetReadoutType(channels[ch].GetChannelId())==
01374         ReadoutType::kTOF || 
01375         plexHandle->GetReadoutType(channels[ch].GetChannelId())==
01376         ReadoutType::kUnknown || 
01377         plexHandle->GetReadoutType(channels[ch].GetChannelId())==
01378         ReadoutType::kTriggerOR
01379         ){
01380 
01381       //these often have zero mean but finite num entries at caldet
01382       MAXMSG("LISanityCheck",Msg::kVerbose,50) 
01383         <<msgPrefix
01384         <<"numHits="<<numEntries
01385         <<", mean="<<static_cast<Int_t>(mean)
01386         <<", rms="<<static_cast<Int_t>(rms)
01387         <<", rt="<<ReadoutType::AsString(plexHandle->GetReadoutType
01388                                          (channels[ch].GetChannelId()))
01389         <<" "<<this->GetElecString(rChId)<<endl;
01390     }
01391     else{
01392       MAXMSG("LISanityCheck",Msg::kWarning,50) 
01393         <<msgPrefix
01394         <<"numHits="<<numEntries
01395         <<", mean="<<static_cast<Int_t>(mean)
01396         <<", rms="<<static_cast<Int_t>(rms)
01397         <<", rt="<<ReadoutType::AsString(plexHandle->GetReadoutType
01398                                          (channels[ch].GetChannelId()))
01399         <<" "<<this->GetElecString(rChId)<<endl;
01400     }
01401   }
01402   //check that there are no strange zero rms channels
01403   else if (rms==0){
01404     //get the raw channel id to use below
01405     RawChannelId rChId=channels[ch].GetChannelId();
01406     
01407     if (numEntries>=6){
01408       MAXMSG("LISanityCheck",Msg::kInfo,50) 
01409         <<msgPrefix
01410         <<"numHits="<<numEntries
01411         <<", adc="<<static_cast<Int_t>(mean)
01412         <<", rms="<<static_cast<Int_t>(rms)
01413         <<", rt="<<ReadoutType::AsString(plexHandle->GetReadoutType
01414                                          (channels[ch].GetChannelId()))
01415         <<" "<<this->GetElecString(rChId)<<endl;
01416     }
01417     else if (numEntries>=5){
01418       MAXMSG("LISanityCheck",Msg::kDebug,50) 
01419         <<msgPrefix
01420         <<"numHits="<<numEntries
01421         <<", mean="<<static_cast<Int_t>(mean)
01422         <<", rms="<<static_cast<Int_t>(rms)
01423         <<", rt="<<ReadoutType::AsString(plexHandle->GetReadoutType
01424                                          (channels[ch].GetChannelId()))
01425         <<" "<<this->GetElecString(rChId)<<endl;
01426     }
01427     else if (numEntries>=4){
01428       MAXMSG("LISanityCheck",Msg::kVerbose,50) 
01429         <<msgPrefix
01430         <<"numHits="<<numEntries
01431         <<", mean="<<static_cast<Int_t>(mean)
01432         <<", rms="<<static_cast<Int_t>(rms)
01433         <<", rt="<<ReadoutType::AsString(plexHandle->GetReadoutType
01434                                          (channels[ch].GetChannelId()))
01435         <<" "<<this->GetElecString(rChId)<<endl;
01436     }
01437   }
01438 }

void LISummarySorter::CloseFile TFile *  outfile  ) 
 

Definition at line 1602 of file LISummarySorter.cxx.

References MSG, and outfile.

Referenced by OutputData().

01603 {
01604   if (outfile){
01605     MSG("LISummarySorter",Msg::kInfo)<<"Closing output file..."<<endl;
01606     outfile->Close();
01607     MSG("LISummarySorter",Msg::kInfo)<<"Output file closed"<<endl;
01608   }
01609   else{
01610     MSG("LISummarySorter",Msg::kWarning)
01611       <<"Can't close file: outfile="<<outfile<<endl;
01612   }
01613 }

void LISummarySorter::CountNumSummaries Int_t  num  )  [inline]
 

Definition at line 47 of file LISummarySorter.h.

Referenced by LISummaryModule::GetSummaryBlocks().

00047 {rawSummaryCounter+=num;};

string LISummarySorter::GetElecString RawChannelId  rChId  )  const [private]
 

Definition at line 741 of file LISummarySorter.cxx.

References ElecType::AsString(), Form(), RawChannelId::GetCrate(), RawChannelId::GetElecType(), RawChannelId::GetGeographicAddress(), RawChannelId::GetMasterChannel(), RawChannelId::GetMinderChannel(), RawChannelId::GetVaAdcSel(), RawChannelId::GetVaChannel(), RawChannelId::GetVaChip(), RawChannelId::GetVarcId(), RawChannelId::GetVmm(), and MSG.

00742 {
00743   MSG("LISummarySorter",Msg::kVerbose) 
00744     <<"Running GetElecString method..."<<endl;
00745 
00746   string elecString="";
00747   string sCrate=Form("%d",rChId.GetCrate());
00748   string sElecType=ElecType::AsString(rChId.GetElecType());
00749 
00750   if (rChId.GetElecType()==ElecType::kVA){
00751     string sVarc=Form("%d",rChId.GetVarcId());
00752     string sVmm=Form("%d",rChId.GetVmm());
00753     string sVfb=Form("%d",rChId.GetVaAdcSel());
00754     string sChip=Form("%d",rChId.GetVaChip());
00755     string sChannel=Form("%d",rChId.GetVaChannel());
00756 
00757     elecString=sElecType+
00758       "("+sCrate+","+sVarc+","+sVmm+","+sVfb+","+sChip+","+sChannel+")";
00759   }     
00760   else if (rChId.GetElecType()==ElecType::kQIE){
00761     string sGeoAdd=Form("%d",rChId.GetGeographicAddress());
00762     string sMasterCh=Form("%d",rChId.GetMasterChannel());
00763     string sMinderCh=Form("%d",rChId.GetMinderChannel());
00764         
00765     elecString=sElecType+
00766       "("+sCrate+","+sGeoAdd+","+sMasterCh+","+sMinderCh+")";
00767   }
00768   return elecString;
00769 }

string LISummarySorter::GetElecString  )  const [private]
 

Definition at line 708 of file LISummarySorter.cxx.

References channel, chip, crate, elecType, fMasterCh, fMinderCh, Form(), geoAdd, MSG, varc, vfb, and vmm.

Referenced by AddEntry(), ReconstructPin(), ReconstructStripEnd(), and Update().

00709 {
00710   MSG("LISummarySorter",Msg::kVerbose) 
00711     <<"Running GetElecString method..."<<endl;
00712 
00713   string elecString="";
00714   string sCrate=Form("%d",crate);
00715 
00716   if (elecType==ElecType::kVA){
00717     string sVarc=Form("%d",varc);
00718     string sVmm=Form("%d",vmm);
00719     string sVfb=Form("%d",vfb);
00720     string sChip=Form("%d",chip);
00721     string sChannel=Form("%d",channel);
00722     string sElecType="VA";
00723     
00724     elecString=sElecType+
00725       "("+sCrate+","+sVarc+","+sVmm+","+sVfb+","+sChip+","+sChannel+")";
00726   }     
00727   else if (elecType==ElecType::kQIE){
00728     string sGeoAdd=Form("%d",geoAdd);
00729     string sMasterCh=Form("%d",fMasterCh);
00730     string sMinderCh=Form("%d",fMinderCh);
00731     string sElecType="QIE";
00732     
00733     elecString=sElecType+
00734       "("+sCrate+","+sGeoAdd+","+sMasterCh+","+sMinderCh+")";
00735   }
00736   return elecString;
00737 }

void LISummarySorter::GetElectronicsData Int_t  channel  ) 
 

Definition at line 773 of file LISummarySorter.cxx.

References chAdd, channel, channels, chip, crate, elecType, fMasterCh, fMinderCh, geoAdd, RawChannelId::GetChAdd(), RawChannelId::GetCrate(), RawChannelId::GetElecType(), RawChannelId::GetGeographicAddress(), RawChannelId::GetMasterChannel(), RawChannelId::GetMinderChannel(), VldTimeStamp::GetNanoSec(), VldTimeStamp::GetSec(), RawChannelId::GetVaAdcSel(), RawChannelId::GetVaChannel(), RawChannelId::GetVaChip(), RawChannelId::GetVarcId(), RawChannelId::GetVmm(), mean, numEntries, rms, summaryCounter, time, timestamp, timestampNanoSec, varc, vfb, and vmm.

Referenced by Update().

00774 {
00775   //get the raw channel id to use below
00776   RawChannelId rChId=channels[ch].GetChannelId();
00777 
00778   //get generic electronics stuff
00779   elecType=rChId.GetElecType();
00780   crate=rChId.GetCrate();
00781 
00782   //fardet stuff
00783   chAdd=rChId.GetChAdd();
00784   varc=rChId.GetVarcId();
00785   vmm=rChId.GetVmm();
00786   vfb=rChId.GetVaAdcSel();
00787   chip=rChId.GetVaChip();
00788   channel=rChId.GetVaChannel();  
00789 
00790   //neardet stuff
00791   fMasterCh=rChId.GetMasterChannel();
00792   fMinderCh=rChId.GetMinderChannel();
00793   geoAdd=rChId.GetGeographicAddress();
00794 
00795   //not strictly electronics!
00796   timestamp=static_cast<Int_t>(time.GetSec());
00797   timestampNanoSec=time.GetNanoSec();
00798   mean=channels[ch].GetMean();
00799   rms=channels[ch].GetRms();
00800   numEntries=channels[ch].GetNumEntries();
00801   summaryCounter=channels[ch].GetSummaryCounter();
00802 }

void LISummarySorter::GetMuxBoxInfo PlexPixelSpotId  plexPixelSpotId  ) 
 

Definition at line 1289 of file LISummarySorter.cxx.

References PlexPixelSpotId::AsString(), LILookup::ConvertEastWest(), LILookup::ConvertRackLevel(), eastWest, fLookup, PlexMuxBoxId::GetEastWest(), PlexMuxBoxId::GetInRack(), PlexMuxBoxId::GetNumericMuxBox(), PlexMuxBoxId::GetRackBay(), PlexMuxBoxId::GetRackLevel(), inRack, MSG, numericMuxBox, rackBay, and rackLevel.

01290 {
01291   MSG("LISummarySorter",Msg::kVerbose) 
01292     <<"Getting mux box info..."<<endl;
01293 
01294     rackBay=static_cast<Int_t>(plexPixelSpotId.GetRackBay());
01295     inRack=static_cast<Int_t>(plexPixelSpotId.GetInRack());
01296     numericMuxBox=static_cast<Int_t>
01297       (plexPixelSpotId.GetNumericMuxBox());
01298     const Char_t eastWestChar=plexPixelSpotId.GetEastWest();
01299     const Char_t rackLevelChar=plexPixelSpotId.GetRackLevel();
01300     string sEastWest=static_cast<string>(&eastWestChar);
01301     sEastWest=sEastWest[0];//sometimes has two characters
01302     string sRackLevel=static_cast<string>(&rackLevelChar);
01303     sRackLevel=sRackLevel[0];
01304     
01305     //translate eastwest string to an integer
01306     eastWest=fLookup.ConvertEastWest(sEastWest);
01307     if (eastWest==-1) {
01308       MSG("LISummarySorter",Msg::kWarning) 
01309         <<"plexPixelSpotId="<<plexPixelSpotId.AsString()
01310         <<", eastWest="<<sEastWest
01311         <<", length="<<sEastWest.size()
01312         <<", 1st="<<sEastWest[0]
01313         <<", 2nd="<<sEastWest[1]
01314         << endl;
01315     }
01316               
01317     //translate rackLevel string to an integer
01318     rackLevel=fLookup.ConvertRackLevel(sRackLevel);
01319     if (rackLevel==-1){
01320       MSG("LISummarySorter",Msg::kWarning) 
01321         <<"plexPixelSpotId="<<plexPixelSpotId.AsString()
01322         <<", rackLevel="<<sRackLevel 
01323         <<",size="<<sRackLevel.size()
01324         <<",1s="<<sRackLevel[0]
01325         <<",2s="<<sRackLevel[1]
01326         << endl;
01327     }      
01328 
01329   MSG("LISummarySorter",Msg::kVerbose)
01330     <<"Finished getting mux box info"<<endl;
01331 }

void LISummarySorter::GetMuxBoxInfo PlexPinDiodeId  plexPinDiodeId  ) 
 

Definition at line 1243 of file LISummarySorter.cxx.

References PlexPinDiodeId::AsString(), LILookup::ConvertEastWest(), LILookup::ConvertRackLevel(), eastWest, fLookup, PlexMuxBoxId::GetEastWest(), PlexMuxBoxId::GetInRack(), PlexMuxBoxId::GetNumericMuxBox(), PlexMuxBoxId::GetRackBay(), PlexMuxBoxId::GetRackLevel(), inRack, MSG, numericMuxBox, rackBay, and rackLevel.

Referenced by ReconstructPin(), and ReconstructStripEnd().

01244 {
01245   MSG("LISummarySorter",Msg::kVerbose) 
01246     <<"Getting mux box info..."<<endl;
01247 
01248     rackBay=static_cast<Int_t>(plexPinDiodeId.GetRackBay());
01249     inRack=static_cast<Int_t>(plexPinDiodeId.GetInRack());
01250     numericMuxBox=static_cast<Int_t>
01251       (plexPinDiodeId.GetNumericMuxBox());
01252     const Char_t eastWestChar=plexPinDiodeId.GetEastWest();
01253     const Char_t rackLevelChar=plexPinDiodeId.GetRackLevel();
01254     string sEastWest=static_cast<string>(&eastWestChar);
01255     sEastWest=sEastWest[0];//sometimes has two characters
01256     string sRackLevel=static_cast<string>(&rackLevelChar);
01257     sRackLevel=sRackLevel[0];
01258     
01259     //translate eastWest string to an integer
01260     eastWest=fLookup.ConvertEastWest(sEastWest);
01261     if (eastWest==-1) {
01262       MSG("LISummarySorter",Msg::kWarning) 
01263         << "plexPinDiodeId="<<plexPinDiodeId.AsString()
01264         << ", eastWest="<<sEastWest
01265         << ", length="<<sEastWest.size()
01266         << ", 1st="<<sEastWest[0]
01267         << ", 2nd="<<sEastWest[1]
01268         << endl;
01269     }
01270          
01271     //translate rackLevel string to an integer
01272     rackLevel=fLookup.ConvertRackLevel(sRackLevel);
01273     if (rackLevel==-1){
01274       MSG("LISummarySorter",Msg::kWarning) 
01275         << "plexPinDiodeId="<<plexPinDiodeId.AsString()
01276         << ", rackLevel="<<sRackLevel 
01277         << ", length="<<sRackLevel.size()
01278         << ", 1st="<<sRackLevel[0]
01279         << ", 2nd="<<sRackLevel[1]
01280         << endl;
01281     }      
01282 
01283   MSG("LISummarySorter",Msg::kVerbose)
01284     <<"Finished getting mux box info"<<endl;
01285 }

void LISummarySorter::InitialiseTree  )  [private]
 

Definition at line 1442 of file LISummarySorter.cxx.

References ashtray, calibPoint, calibType, chAdd, channel, chip, correlatedHit, crate, detectorType, eastWest, elecType, farLed, farPulserBox, fMasterCh, fMinderCh, fPe, fStripEnd, geoAdd, inRack, led, mean, nearLed, nearPulserBox, numEntries, numericMuxBox, OpenFile(), outputFile, outtree, period, pinGain, pinInBox, pixel, plane, pulseHeight, pulserBox, pulses, pulseWidth, rackBay, rackLevel, readoutType, rms, runNumber, runNumberSub, runType, strip, summaryCounter, timestamp, varc, vfb, and vmm.

Referenced by AddEntry().

01443 {
01444   //open the file, doing this before the tree is created 
01445   //ensures tree is written to disk as it is created
01446   outputFile=this->OpenFile(runNumber,runNumberSub,detectorType);
01447 
01448   outtree = new TTree("li_tree","li_tree");
01449   
01450   //set tree branches  
01451   outtree->Branch("ashtray",&ashtray,"ashtray/I",32000);
01452   outtree->Branch("calibPoint",&calibPoint,"calibPoint/I",32000);
01453   outtree->Branch("calibType",&calibType,"calibType/I",32000);
01454   outtree->Branch("chAdd",&chAdd,"chAdd/I",32000);
01455   outtree->Branch("channel",&channel,"channel/I",32000);
01456   //
01457   outtree->Branch("chip",&chip,"chip/I",32000);
01458   outtree->Branch("correlatedHit",&correlatedHit,
01459                   "correlatedHit/I",32000);
01460   outtree->Branch("crate",&crate,"crate/I",32000);
01461   outtree->Branch("detectorType",&detectorType,"detectorType/I",32000); 
01462   outtree->Branch("eastWest",&eastWest,"eastWest/I",32000);
01463   //  
01464   outtree->Branch("elecType",&elecType,"elecType/I",32000);
01465   outtree->Branch("farLed",&farLed,"farLed/I",32000);
01466   outtree->Branch("farPulserBox",&farPulserBox,"farPulserBox/I",32000);
01467   outtree->Branch("geoAdd",&geoAdd,"geoAdd/I",32000);
01468   outtree->Branch("inRack",&inRack,"inRack/I",32000);
01469   //
01470   outtree->Branch("led",&led,"led/I",32000);
01471   outtree->Branch("masterCh",&fMasterCh,"masterCh/I",32000);
01472   outtree->Branch("mean",&mean,"mean/F",32000);
01473   outtree->Branch("minderCh",&fMinderCh,"minderCh/I",32000);
01474   outtree->Branch("nearLed",&nearLed,"nearLed/I",32000);
01475   //
01476   outtree->Branch("nearPulserBox",&nearPulserBox,
01477                   "nearPulserBox/I",32000);
01478   outtree->Branch("numEntries",&numEntries,"numEntries/I",32000);
01479   outtree->Branch("numericMuxBox",&numericMuxBox,
01480                   "numericMuxBox/I",32000);
01481   outtree->Branch("pe",&fPe,"pe/I",32000);
01482 
01483   outtree->Branch("period",&period,"period/I",32000);
01484   //
01485   outtree->Branch("pinGain",&pinGain,"pinGain/I",32000);
01486   outtree->Branch("pinInBox",&pinInBox,"pinInBox/I",32000);
01487   outtree->Branch("pixel",&pixel,"pixel/I",32000);
01488   outtree->Branch("plane",&plane,"plane/I",32000);
01489   outtree->Branch("pulseHeight",&pulseHeight,"pulseHeight/I",32000);
01490   //
01491   outtree->Branch("pulserBox",&pulserBox,"pulserBox/I",32000); 
01492   outtree->Branch("pulses",&pulses,"pulses/I",32000);
01493   outtree->Branch("pulseWidth",&pulseWidth,"pulseWidth/I",32000);
01494   outtree->Branch("rackBay",&rackBay,"rackBay/I",32000);
01495   outtree->Branch("rackLevel",&rackLevel,"rackLevel/I",32000);
01496   //
01497   outtree->Branch("readoutType",&readoutType,"readoutType/I",32000);
01498   outtree->Branch("rms",&rms,"rms/F",32000);
01499   outtree->Branch("runNumber",&runNumber,"runNumber/I",32000);
01500   outtree->Branch("runNumberSub",&runNumberSub,"runNumberSub/I",32000);
01501   outtree->Branch("runType",&runType,"runType/I",32000);
01502   //
01503   outtree->Branch("strip",&strip,"strip/I",32000);
01504   outtree->Branch("stripEnd",&fStripEnd,"stripEnd/I",32000);
01505   outtree->Branch("summaryCounter",&summaryCounter,
01506                   "summaryCounter/I",32000);
01507   outtree->Branch("timestamp",&timestamp,"timestamp/I",32000);
01508   outtree->Branch("varc",&varc,"varc/I",32000);
01509   //
01510   outtree->Branch("vfb",&vfb,"vfb/I",32000);
01511   outtree->Branch("vmm",&vmm,"vmm/I",32000);//this is branch number 47 
01512 }

TFile * LISummarySorter::OpenFile Int_t  runNumber,
Int_t  runNumberSub,
Int_t  detectorType
 

Definition at line 1516 of file LISummarySorter.cxx.

References Form(), MSG, and outputFile.

Referenced by InitialiseTree().

01518 {
01519   TFile *outputFile=0;
01520 
01521   string sRunNumber=Form("%d",runNumber);
01522   string sRunNumberSub=Form("%d",runNumberSub);
01523   string sDetector="";
01524   if (detectorType==static_cast<Int_t>(Detector::kFar)){
01525     sDetector="F";
01526   }
01527   else if (detectorType==static_cast<Int_t>(Detector::kNear)){
01528     sDetector="N"; 
01529   }
01530   else if (detectorType==static_cast<Int_t>(Detector::kCalDet)){
01531     sDetector="C"; 
01532   }
01533   else{
01534     sDetector="TypeNotKnown"; 
01535   }
01536   string sZeros="";
01537   string sZeros2="";
01538 
01539   if (runNumber>=0 && runNumber<10) sZeros="00000000";
01540   else if (runNumber>=10 && runNumber<100) sZeros="000000";
01541   else if (runNumber>=100 && runNumber<1000) sZeros="00000";
01542   else if (runNumber>=1000 && runNumber<10000) sZeros="0000";
01543   else if (runNumber>=10000 && runNumber<100000) sZeros="000";
01544   else if (runNumber>=100000 && runNumber<1000000) sZeros="00";
01545   else if (runNumber>=1000000 && runNumber<10000000) sZeros="0";
01546   else if (runNumber>=10000000 && runNumber<100000000) sZeros="";
01547 
01548   if (runNumberSub>=0 && runNumberSub<10) sZeros2="000";
01549   else if (runNumberSub>=10 && runNumberSub<100) sZeros2="00";
01550   else if (runNumberSub>=100 && runNumberSub<1000) sZeros2="0";
01551   else if (runNumberSub>=1000 && runNumberSub<10000) sZeros2="";
01552 
01553   string sFileName="LIData"+sDetector+sZeros+sRunNumber+"_"+
01554     sZeros2+sRunNumberSub+".root";
01555 
01556   //test if file already exists
01557   ifstream Test(sFileName.c_str());
01558 
01559   if(!Test){
01560     outputFile= new TFile(sFileName.c_str(),"NEW");
01561   }
01562   else {
01563     //Need new filename
01564     Int_t fred=1;
01565     while(Test) {
01566       Test.close();
01567       string sAppendage=Form("%d",fred);
01568       sFileName="LIData"+sDetector+sZeros+sRunNumber+"_"+
01569         sZeros2+sRunNumberSub+"_"+sAppendage+".root";
01570       Test.open(sFileName.c_str());
01571       fred++;
01572     }
01573     outputFile = new TFile(sFileName.c_str(),"NEW");
01574     outputFile->SetCompressionLevel(9);
01575   }
01576   MSG("LISummarySorter",Msg::kInfo) 
01577     <<" ** Output file opened: "<<sFileName<<" ** "<<endl;
01578   return outputFile;
01579 }

void LISummarySorter::OutputData  ) 
 

Definition at line 279 of file LISummarySorter.cxx.

References CloseFile(), MSG, outputFile, and WriteFile().

Referenced by LISummaryModule::EndJob().

00280 {
00281   MSG("LISummarySorter",Msg::kVerbose)
00282     <<"Running OutputData method..."<<endl;
00283 
00284   this->WriteFile(outputFile);
00285   this->CloseFile(outputFile);  
00286 
00287   MSG("LISummarySorter",Msg::kVerbose) 
00288     <<"OutputData method finished"<<endl;
00289 }

void LISummarySorter::PrintBigMessage  )  const [private]
 

Definition at line 684 of file LISummarySorter.cxx.

References channel, chip, correlatedHit, crate, eastWest, elecType, fMasterCh, fMinderCh, geoAdd, led, mean, MSG, numEntries, plane, pulserBox, readoutType, rms, strip, varc, vfb, and vmm.

Referenced by ReconstructTrigPmt().

00685 { 
00686   MSG("LISummarySorter",Msg::kInfo) 
00687     <<"("<<pulserBox<<":"<<led<<")";
00688     
00689   if (elecType==ElecType::kVA){
00690     MSG("LISummarySorter",Msg::kInfo) 
00691       <<"VA("<<crate<<","<<varc<<","<<vmm<<","<<vfb
00692       <<","<<chip<<","<<channel<<")";
00693   }
00694   else if (elecType==ElecType::kQIE){
00695     MSG("LISummarySorter",Msg::kInfo) 
00696       <<"QIE("<<crate<<","<<geoAdd<<","<<fMasterCh<<","<<fMinderCh<<")";
00697   }
00698   
00699   MSG("LISummarySorter",Msg::kInfo) 
00700     <<", (m,r,n)=("<<mean<<","<<rms
00701     <<","<<numEntries<<"), cHit="<<correlatedHit
00702     <<", e/w="<<eastWest<<", rt="<<readoutType
00703     <<" (Pl;St)=("<<plane<<";"<<strip<<")"<<endl;
00704 }

void LISummarySorter::PrintBlockInfo string  preString  )  const [private]
 

Definition at line 293 of file LISummarySorter.cxx.

References calibPoint, calibType, Form(), VldTimeStamp::GetSec(), led, MSG, period, pulseHeight, pulserBox, pulses, pulseWidth, VldTimeStamp::Set(), and time.

Referenced by Update().

00294 {
00295   MSG("LISummarySorter",Msg::kVerbose)<<"PrintBlockInfo..."<<endl;
00296 
00297   if (time.GetSec()<1000){
00298     static Int_t numberMsg=0;
00299     if (numberMsg<10){
00300       MSG("LISummarySorter",Msg::kWarning) 
00301         <<"Number of seconds="<<time.GetSec()<<endl;
00302       if (numberMsg==9){
00303         MSG("LISummarySorter",Msg::kWarning) 
00304           <<endl
00305           <<"This is the last message of this type to be printed"
00306           <<endl;
00307       }
00308     }
00309     numberMsg++;
00310   }
00311   
00312   TDatime datime;
00313   datime.Set(time.GetSec());
00314   
00315   //play around with the formatting a little
00316   string sHour=Form("%d",datime.GetHour());
00317   string sMinute=Form("%d",datime.GetMinute());
00318   string sSecond=Form("%d",datime.GetSecond());
00319   string sMonth=Form("%d",datime.GetMonth());
00320   string sDay=Form("%d",datime.GetDay());
00321   if (datime.GetHour()<10) sHour="0"+sHour;
00322   if (datime.GetMinute()<10) sMinute="0"+sMinute;
00323   if (datime.GetSecond()<10) sSecond="0"+sSecond;
00324   if (datime.GetMonth()<10) sMonth="0"+sMonth;
00325   if (datime.GetDay()<10) sDay="0"+sDay;
00326 
00327   //protect from fpe
00328   Double_t pulseFreq=-1;
00329   if (period!=0) pulseFreq=ceil(1.0/(period*1.0e-5));
00330   string sPulseFreq=Form("%d",static_cast<Int_t>(pulseFreq));
00331   string sPeriod=Form("%d",static_cast<Int_t>(period));
00332   if (pulseFreq<0) sPulseFreq="??? (period="+sPeriod+")";
00333 
00334   MSG("LISummarySorter",Msg::kInfo) 
00335     <<preString 
00336     <<"PB="<<pulserBox 
00337     <<" Led="<<led
00338     <<" CP="<<calibPoint
00339     <<"/"<<calibType
00340     <<" PH="<<pulseHeight
00341     <<" PW="<<pulseWidth
00342     <<" PF="<<sPulseFreq
00343     <<" PN="<<pulses
00344     <<" at "<<sHour
00345     <<":"<<sMinute
00346     <<":"<<sSecond
00347     <<" on "<<datime.GetYear()
00348     <<"/"<<sMonth
00349     <<"/"<<sDay
00350     <<endl;
00351 
00352   MSG("LISummarySorter",Msg::kVerbose) 
00353     <<"PrintBlockInfo method finished"<<endl;
00354 }

void LISummarySorter::PrintRecoSummary  ) 
 

Definition at line 128 of file LISummarySorter.cxx.

References badHitCounter, cerenkovCounter, commonModeCounter, crates, detectorType, fLookup, goodHitCounter, leds, MSG, LILookup::NUMCRATES, LILookup::NUMLEDS, LILookup::NUMPULSERBOXES, pinCounter, pinCounterReco, plexOppPbCounter, plexPbCounter, pulserBoxes, rawSummaryBlockCounter, rawSummaryCounter, runNumber, runNumberSub, stripCounter, tofCounter, triggerOrCounter, trigPmtCounter, unconnectedPixelCounter, and unknownCounter.

Referenced by LISummaryModule::EndJob().

00129 {
00130   MSG("LISummarySorter",Msg::kVerbose)
00131     <<"Running PrintRecoSummary method..."<<endl;
00132 
00133   //print out summary of reconstruction information
00134   if (runNumber!=-1 && runNumberSub!=-1 && detectorType!=-1){
00135     Int_t totalHits=0;
00136     totalHits=
00137       unconnectedPixelCounter+
00138       unknownCounter+
00139       stripCounter+
00140       pinCounter+
00141       trigPmtCounter+
00142       commonModeCounter+
00143       triggerOrCounter+
00144       cerenkovCounter+
00145       tofCounter+
00146       timingFidCounter;
00147     
00148     MSG("LISummarySorter",Msg::kInfo) 
00149       <<endl 
00150       <<" ** Job Summary Information: **"<<endl
00151       <<"  Readout types processed:"<<endl
00152       <<"    kUnknown="<<unknownCounter<<endl      
00153       <<"    kScintStrip="<<stripCounter<<endl
00154       <<"    kUnconnectedPixel="<<unconnectedPixelCounter<<endl
00155       <<"    kPinDiode="<<pinCounter<<endl
00156       <<"    kFlashTrigPMT="<<trigPmtCounter<<endl
00157       <<"    kVACommonMode="<<commonModeCounter<<endl
00158       <<"    kTriggerOR="<<triggerOrCounter<<endl
00159       <<"    kCerenkov="<<cerenkovCounter<<endl
00160       <<"    kTOF="<<tofCounter<<endl
00161       <<"    kTimingFid="<<timingFidCounter<<endl
00162       <<"    Total hits="<<totalHits<<endl;
00163     
00164     if (totalHits!=0){
00165 
00166       MSG("LISummarySorter",Msg::kInfo) 
00167         <<endl
00168         <<"  Scintillator hits that were attributed to an LI pulse:" 
00169         <<endl
00170         <<"    Successful="<<goodHitCounter<<endl
00171         <<"    Failures="<<badHitCounter<<endl
00172         <<"    Sum of above=" 
00173         <<badHitCounter+goodHitCounter<<endl;
00174     
00175       //number of entries found for each pulser box
00176       totalHits=0;
00177       MSG("LISummarySorter",Msg::kInfo) 
00178         <<endl 
00179         <<"  Number of hits when a given pulser box was flashing:"<<endl;
00180       for (Int_t i=0;i<fLookup.NUMPULSERBOXES;i++){
00181         MSG("LISummarySorter",Msg::kInfo) 
00182           <<"    Pulser Box "<<i<<"=" 
00183           <<pulserBoxes[i]<<endl;
00184         totalHits+=pulserBoxes[i];
00185       }
00186       MSG("LISummarySorter",Msg::kInfo) 
00187         <<"    Total hits ="<<totalHits<<endl;
00188     
00189       //Plex results for pulser boxes
00190       totalHits=0;
00191       MSG("LISummarySorter",Msg::kInfo) 
00192         <<endl
00193         <<"  Plex results for pulser boxes:" 
00194         <<endl;
00195       for (Int_t i=0;i<fLookup.NUMPULSERBOXES;i++){
00196         MSG("LISummarySorter",Msg::kInfo) 
00197           <<"    Pulser Box "<<i<<"=" 
00198           <<plexPbCounter[i] 
00199           <<"    Opposite Pulser Box "<<i<<"=" 
00200           <<plexOppPbCounter[i] 
00201           <<endl;
00202         totalHits+=plexPbCounter[i];
00203       }
00204       MSG("LISummarySorter",Msg::kInfo) 
00205         <<"    Total hits ="<<totalHits<<endl;
00206     
00207       //number of entries found for each crate using plex
00208       totalHits=0;
00209       MSG("LISummarySorter",Msg::kInfo) 
00210         <<endl 
00211         <<"  Plex results for crates:"<<endl;
00212       for (Int_t i=0;i<fLookup.NUMCRATES;i++){
00213         MSG("LISummarySorter",Msg::kInfo) 
00214           <<"    Crate "<<i<<"=" 
00215           <<crates[i]<<endl;
00216         totalHits+=crates[i];
00217       }
00218       MSG("LISummarySorter",Msg::kInfo) 
00219         <<"  Total hits ="<<totalHits<<endl;
00220     
00221       //number of entries found for each led
00222       totalHits=0;
00223       MSG("LISummarySorter",Msg::kInfo) 
00224         <<endl<<"  Number of hits when a given led was flashing:"<<endl;
00225       for (Int_t i=0;i<fLookup.NUMLEDS;i++){
00226         MSG("LISummarySorter",Msg::kInfo) 
00227           <<"    led "<<i+1<<" = "<<leds[i]<<endl;
00228         totalHits+=leds[i];
00229       }
00230       MSG("LISummarySorter",Msg::kInfo) 
00231         <<"    Total hits = "<<totalHits<<endl;
00232 
00233       //number of reconstructed pins
00234       totalHits=0;
00235       MSG("LISummarySorter",Msg::kInfo) 
00236         <<endl<<"  Number of pins reconstructed:"<<endl;
00237       for (Int_t i=0;i<fLookup.NUMLEDS;i++){
00238         MSG("LISummarySorter",Msg::kInfo) 
00239           <<"    led "<<i+1<<" = "<<pinCounterReco[i]<<endl;
00240         totalHits+=pinCounterReco[i];
00241       }
00242 
00243       //change this bit for fpe problem
00244       MSG("LISummarySorter",Msg::kInfo) 
00245         <<"    Total reconstructed pins = "<<totalHits<<" of "
00246         <<pinCounter;
00247       if (pinCounter>0){
00248         MSG("LISummarySorter",Msg::kInfo) 
00249           <<" ("<<100.*totalHits/pinCounter<<"%)"<<endl;
00250       }
00251       else MSG("LISummarySorter",Msg::kInfo)<<endl;
00252 
00253       //number of summary blocks and summaries in those blocks    
00254       MSG("LISummarySorter",Msg::kInfo)  
00255         <<endl<<" Number of raw LI summary blocks found = "
00256         <<rawSummaryBlockCounter<<endl;     
00257       MSG("LISummarySorter",Msg::kInfo)   
00258         <<" Total number of raw LI summaries in above blocks = " 
00259         <<rawSummaryCounter<<endl; 
00260       MSG("LISummarySorter",Msg::kInfo)    
00261         <<" Average number of summaries per block = "  
00262         <<rawSummaryCounter/rawSummaryBlockCounter<<endl;  
00263     }//end of if totalHits
00264 
00265     MSG("LISummarySorter",Msg::kInfo) 
00266       <<endl<<" ** End of Job Summary Information: ** "<<endl; 
00267   }
00268   else {
00269     MSG("LISummarySorter",Msg::kInfo) 
00270       <<" ** No LI stream found in this file **"<<endl<<endl;
00271   }
00272 
00273   MSG("LISummarySorter",Msg::kVerbose) 
00274     <<"OutputData PrintRecoSummary finished"<<endl;
00275 }

Bool_t LISummarySorter::ReconstructPin Int_t  ch  ) 
 

return true when pin is reconstructed return false when reconstruction fails for whatever reason

Definition at line 1066 of file LISummarySorter.cxx.

References RawChannelId::AsString(), PlexPinDiodeId::AsString(), PlexLedId::AsString(), channels, correlatedHit, detectorType, farLed, farPulserBox, LILookup::FIRSTLED, fLookup, GetElecString(), PlexPinDiodeId::GetGain(), PlexPinDiodeId::GetInBox(), PlexHandle::GetLedId(), PlexLedId::GetLedInBox(), GetMuxBoxInfo(), LILookup::GetOppPb(), LILookup::GetPinDiodePlanes(), PlexLedId::GetPulserBox(), PlexHandle::GetRawChannelId(), PlexLedId::IsValid(), PlexPinDiodeId::IsValid(), LILookup::LASTLED, led, mean, MSG, nearLed, nearPulserBox, pinCounterReco, pinGain, pinInBox, plane, plexHandle, and pulserBox.

Referenced by Update().

01067 {
01070 
01071   MSG("LISummarySorter",Msg::kVerbose) 
01072     <<"Reconstructing Pin..."<<endl;
01073 
01074   PlexPinDiodeId plexPinDiodeId=plexHandle->
01075     GetPinDiodeId(channels[ch].GetChannelId());
01076 
01077   //check if pin diode id is valid          
01078   if (!plexPinDiodeId.IsValid()){
01079     MSG("LISummarySorter",Msg::kWarning)
01080       <<"PIN diode id not valid"
01081       <<", LED="<<led<<", PB="<<pulserBox<<", pl="<<plane
01082       <<", mean="<<mean<<endl;    
01083     MSG("LISummarySorter",Msg::kVerbose) 
01084       <<"ReconstructPin method finished"<<endl;
01085     return false;
01086   }
01087 
01088   //get led id associated with actual pin diode hit
01089   PlexLedId plexLedId=plexHandle->GetLedId(plexPinDiodeId);
01090 
01091   //check if led id associated with pin is valid
01092   if (!plexLedId.IsValid()){
01093     MSG("LISummarySorter",Msg::kVerbose)
01094       <<"LedId obtained from pin not valid = "<<plexLedId.AsString()
01095       <<" "<<this->GetElecString()<<endl;
01096     MSG("LISummarySorter",Msg::kVerbose) 
01097       <<"ReconstructPin method finished"<<endl;
01098     return false;
01099   }
01100   
01101   //set nearLed to be the led that the plex associates with the pin
01102   nearLed=plexLedId.GetLedInBox();
01103   farLed=-1;// there is no far led for a pin!
01104   //get pulserbox info
01105   nearPulserBox=plexLedId.GetPulserBox();
01106   //there is no far pulser box associated with a pin diode 
01107   //but get it anyway since it is just the opposite one
01108   farPulserBox=fLookup.GetOppPb(pulserBox,detectorType);
01109   
01110   //quick sanity check
01111   if ((nearLed<fLookup.FIRSTLED || nearLed>fLookup.LASTLED) && 
01112       detectorType==Detector::kFar){
01113     MSG("LISummarySorter",Msg::kWarning)
01114       <<"Strange values for led = "<<nearLed
01115       <<" "<<this->GetElecString()<<endl;
01116   }
01117   
01118   pinInBox=plexPinDiodeId.GetInBox();
01119   pinGain=plexPinDiodeId.GetGain();
01120   
01121   MSG("LISummarySorter",Msg::kVerbose)  
01122     <<"plexPinDiodeId="<<plexPinDiodeId.AsString() 
01123     <<", inBox="<<pinInBox 
01124     <<", pinGain="<<pinGain<<endl;
01125   
01126   //set all the mux box variables
01127   this->GetMuxBoxInfo(plexPinDiodeId);
01128   
01129   //generate a plex led id to then get the two possible pins
01130   PlexLedId ledId;
01131   if (detectorType==Detector::kFar){
01132     ledId=PlexLedId(Detector::kFar,pulserBox,led); 
01133   }
01134   else if (detectorType==Detector::kNear){
01135     ledId=PlexLedId(Detector::kNear,pulserBox,led); 
01136   }
01137   else if (detectorType==Detector::kCalDet){
01138     ledId=PlexLedId(Detector::kCalDet,pulserBox,led); 
01139   }
01140   else {
01141     MSG("LISummarySorter",Msg::kFatal)
01142       <<"Detector type not known = "<<detectorType<<endl;
01143   }
01144   
01145   if (!ledId.IsValid()){
01146     MSG("LISummarySorter",Msg::kWarning)
01147       <<"LedId not valid = "<<ledId.AsString()<<endl;
01148   }
01149 
01150   //create a pair to hold the two possible pin diode ids
01151   pair<PlexPinDiodeId,PlexPinDiodeId> plexPins=plexHandle->
01152     GetPinDiodeIds(ledId);
01153   
01154   //first is gain=1, second is gain=0
01155   MSG("LISummarySorter",Msg::kVerbose) 
01156     <<"first pin gain="<<plexPins.first.GetGain()
01157     <<", second pin gain="<<plexPins.second.GetGain()<<endl;
01158   
01159   //get the pin diode id of the current pin
01160   PlexPinDiodeId currentPinId=plexHandle->
01161     GetPinDiodeId(channels[ch].GetChannelId());
01162 
01163   //get the planes associated with the pin diode
01164   pair<Int_t,Int_t> pinPlanes=fLookup.GetPinDiodePlanes(currentPinId,
01165                                                         plexHandle);
01166 
01167   //set the plane to be the first
01168   //at FD this is ok since the shared pmt is not used
01169   //at CD you can work it out since you always return the lower plane
01170   plane=pinPlanes.first;
01171 
01172   MSG("LISummarySorter",Msg::kVerbose)
01173     <<"PIN diode's associated plane="<<plane<<endl;
01174 
01175   //get the raw channel id of the plex pin for this 
01176   //led and pulser box combination to then compare with the
01177   //raw channel id of the actual pin being reconstructed
01178   pair<RawChannelId,RawChannelId> rawChanIds;
01179   //get chan ids of pins 
01180   rawChanIds.first=plexHandle->GetRawChannelId(plexPins.first);
01181   rawChanIds.second=plexHandle->GetRawChannelId(plexPins.second);
01182 
01183   //compare chan id of first pin
01184   if (rawChanIds.first.IsSameChannel(channels[ch].GetChannelId())){
01185     MSG("LISummarySorter",Msg::kVerbose)
01186       <<"PIN reconstructed: First pin="
01187       <<plexPins.first.AsString()<<endl
01188       <<"                         pin="
01189       <<plexPinDiodeId.AsString()<<endl;
01190     correlatedHit=1;
01191     pinCounterReco[led-1]++;
01192   }
01193   else{//compare the second possibility
01194     if (rawChanIds.second.IsSameChannel(channels[ch].GetChannelId())){
01195       MSG("LISummarySorter",Msg::kVerbose) 
01196         <<"PIN reconstructed: Second pin="<<
01197         plexPins.second.AsString()<<endl
01198         <<"                          pin="<<
01199         plexPinDiodeId.AsString()<<endl;
01200       correlatedHit=1;
01201       pinCounterReco[led-1]++;
01202     }
01203   }
01204 
01205   //print out pin info of non-reconstructed pins
01206   if (correlatedHit!=1){
01207     MSG("LISummarySorter",Msg::kVerbose) 
01208       <<endl<<"PIN not reconstructed, noise hit"
01209       <<", pin="<<plexPinDiodeId.AsString()<<endl;
01210   }
01211 
01212   MSG("LISummarySorter",Msg::kVerbose) 
01213     <<"ReconstructPin method finished"<<endl;
01214   if (correlatedHit==1) return true;
01215   else return false;
01216 }

void LISummarySorter::ReconstructStripEnd Int_t  ch  ) 
 

This function reconstructs the strip end that was flashed during a given led pulse

1.) ask the plex for the list of the alt strips that illuminate the given readout channel which has a hit

2.) ask the plex for the pulserbox that illuminates the alt strips (call it plexPulserBox)

3.) ask the plex for the pulserbox that illuminates the other side of the alt strips (call it plexOppPulserBox)

4.) require that the pulserbox flashing is equal to (plexPulserBox OR plexOppPulserBox). If not, flag it as uncorrelated and move to next hit. Else, continue to next step.

5.) loop through all alt strips and in each case ask the plex for the led that illuminates the stripend (call it plexLed) and the opposite stripend (call it plexLedOpp).

6.) for each of the alt possibilities compare the led that is known to be flashing with plexLed and plexOppLed. If one of the alt possible leds matches either plexLed or plexOppLed then flag the hit as correlated.

7.) do a sanity check that only ONE of the alt strips was flashed by the current led. (always seems to be the case)

Definition at line 806 of file LISummarySorter.cxx.

References ashtray, PlaneView::AsString(), channels, correlatedHit, detectorType, farLed, farPulserBox, fLookup, fStripEnd, GetElecString(), PlexStripEndId::GetEnd(), PlexHandle::GetLedId(), PlexLedId::GetLedInBox(), GetMuxBoxInfo(), PlexStripEndId::GetOppositeSEId(), PlexPixelSpotId::GetPixel(), PlexHandle::GetPixelSpotId(), PlexSEIdAltL::GetPlane(), PlexSEIdAltL::GetPlaneView(), PlexLedId::GetPulserBox(), PlexStripEndId::GetStrip(), PlexStripEndId::IsValid(), PlexLedId::IsValid(), led, LILookup::Led2Ashtray(), MAXMSG, mean, MSG, nearLed, nearPulserBox, pixel, plane, plexHandle, plexOppPbCounter, plexPbCounter, pulserBox, and strip.

Referenced by Update().

00807 {
00810 
00838   MSG("LISummarySorter",Msg::kDebug) 
00839     <<"Reconstructing strip end..."<<endl;
00840 
00841   //Get strip-end alternative list
00842   PlexSEIdAltL altlist = plexHandle->
00843     GetSEIdAltL(channels[ch].GetChannelId());
00844   
00845   //the plane is known from the rawchannel so get it here
00846   plane=altlist.GetPlane();  
00847   MSG("LISummarySorter",Msg::kVerbose)
00848     <<"New altlist: plane="<<plane<<endl;
00849 
00850   //check that the plane view is kX, kY, kU or kV before reconstructing
00851   PlaneView::PlaneView_t planeView=altlist.GetPlaneView();  
00852   if (planeView>PlaneView::kV){
00853 
00854     Msg::LogLevel_t msgLevel=Msg::kDebug;
00855     //if (planeView>7 || planeView<7) msgLevel=Msg::kVerbose;
00856     
00857     MSG("LISummarySorter",msgLevel) 
00858       <<"Plane="<<plane
00859       <<", PlaneView="<<PlaneView::AsString(planeView)
00860       <<", therefore not reconstructing this plane"<<endl;
00861 
00862     //if (planeView==7) this->PrintBigMessage();
00863     //I am seeing some unknown views on vmm 5 in various crates???
00864 
00865     return;//don't reconstruct planes with no LI
00866   }
00867 
00868   //variable to sanity check reconstruction
00869   Int_t loopCounter=0;
00870   //hold true strip end id
00871   PlexStripEndId tmpSeid;
00872 
00874   //loop over the alternative strips
00876   for (PlexSEIdAltL::iterator it=altlist.begin(); 
00877        it!=altlist.end();it++){
00878 
00879     //set default values for led and pin plex variables
00880     Int_t plexLedInBox=-1;
00881     Int_t plexPulserBox=-1;
00882     Int_t plexOppLedInBox=-1;
00883     Int_t plexOppPulserBox=-1;
00884 
00885     //get strip end and opposite strip end id
00886     PlexStripEndId SEId=(*it).GetSEId();
00887     PlexStripEndId oppSEId=SEId.GetOppositeSEId();
00888 
00889     //get the temporary pixel of this possible strip
00890     //it is always the same for FD but 4 diff possibilites for ND
00891     PlexPixelSpotId plexPixelSpotId=plexHandle->GetPixelSpotId
00892       ((*it).GetSEId());
00893     //pixel is the same for all altSE
00894     Int_t tmpPixel=plexPixelSpotId.GetPixel();
00895 
00896     //a bit of sanity checking
00897     loopCounter++;
00898     if ((loopCounter>1 && detectorType==Detector::kCalDet) || 
00899         (loopCounter>8 && detectorType==Detector::kFar) ||
00900         (loopCounter>4 && detectorType==Detector::kNear)){
00901       MSG("LISummarySorter",Msg::kWarning) 
00902         <<"SEIdAltList has > 1 entry, loopCounter="<<loopCounter
00903         <<", CH="<<correlatedHit
00904         <<", end="<<SEId.GetEnd()
00905         <<", led="<<led
00906         <<", pl="<<plane
00907         <<", "<<this->GetElecString()<<endl;
00908     }
00909 
00910     //get ledIds for strip end and opp strip end
00911     PlexLedId ledId=plexHandle->GetLedId(SEId);       
00912     PlexLedId oppLedId=plexHandle->GetLedId(oppSEId);
00913 
00914     //sanity check that ledid is valid
00915     if (!ledId.IsValid()){
00916       MAXMSG("LISummarySorter",Msg::kWarning,20) 
00917         <<"LedId not valid, jumping to next SEId"
00918         << ", L="<<led
00919         << ", PB="<<pulserBox
00920         << ", pl="<<plane
00921         << ", mean="<<mean
00922         << endl;
00923       continue;
00924     }   
00925 
00926     //get pulserbox info for both sides
00927     plexPulserBox=ledId.GetPulserBox();   
00928     plexOppPulserBox=oppLedId.GetPulserBox();
00929     
00930     //these are the same for all alternative SEs
00931     nearPulserBox=plexPulserBox;
00932     farPulserBox=plexOppPulserBox;
00933     
00934     //get led number for both sides
00935     plexLedInBox=ledId.GetLedInBox();
00936     plexOppLedInBox=oppLedId.GetLedInBox();
00937     
00938     //reconstruct the strip for xtalk hits at CalDet and at ND forward
00939     //section (ND spectrometer is ambiguous due to 4 pixels=1 channel)
00940     if ((detectorType==Detector::kCalDet) ||
00941         (detectorType==Detector::kNear && 
00942          plane<LILookup::FIRSTSPECTROMETERPLANE)){
00943       //this is unambiguous at CalDet, so do it here for ALL hits
00944       //i.e. do it for xtalk too
00945       nearLed=plexLedInBox;
00946       farLed=plexOppLedInBox;
00947       strip=SEId.GetStrip();
00948       fStripEnd=SEId.GetEnd();
00949       
00950       MAXMSG("LISummarySorter",Msg::kDebug,200) 
00951         <<"XTalk reco: PB="<<pulserBox
00952         <<", pl="<<plane
00953         <<", s="<<strip
00954         <<", mean="<<mean
00955         <<endl;
00956     }  
00957 
00958     //determine whether to continue or not
00959     //ignore noise hits in crates not being flashed
00960     //there is no more information that can be determined for them
00961     //18-Sep-04: moved below section to allocate strips to ND forward
00962     //section
00963     if (plexPulserBox!=pulserBox && 
00964         plexOppPulserBox!=pulserBox) continue;
00965 
00966     //if (led==18){
00967     MSG("LISummarySorter",Msg::kDebug) 
00968       <<"pxL="<<plexLedInBox
00969       <<", L="<<led
00970       <<", pxPB="<<plexPulserBox
00971       <<", pxOpPB="<<plexOppPulserBox
00972       <<", PB="<<pulserBox
00973       <<", pl="<<plane
00974       <<", s="<<strip
00975       <<", sPlex="<<SEId.GetStrip()
00976       <<", pix="<<tmpPixel
00977       <<", mean="<<mean
00978       <<endl;
00979     //}
00980     //determine if it's a correlated hit    
00981     if ((pulserBox==nearPulserBox && led==plexLedInBox) ||
00982         (pulserBox==farPulserBox && led==plexOppLedInBox)){
00983 
00984       //sanity check 
00985       if (((nearLed>0 || farLed>0) && 
00986            detectorType!=Detector::kCalDet && 
00987            (detectorType!=Detector::kNear &&
00988             plane>=LILookup::FIRSTSPECTROMETERPLANE)) || 
00989           correlatedHit==1){
00990         //only do the led check if detector is not CalDet
00991         //otherwise check that leds have not already been set
00992         MAXMSG("LISummarySorter",Msg::kWarning,50) 
00993           <<"Overwritten near or far led during strip reconstruction"
00994           <<", correlatedHit="<<correlatedHit<<endl
00995           <<"led="<<led
00996           <<", oldnL="<<nearLed<<", newnL="<<plexLedInBox
00997           <<", oldfL="<<farLed<<", newfL="<<plexOppLedInBox
00998           <<", oldSt="<<strip<<", newSt="<<SEId.GetStrip()
00999           <<", pix="<<tmpPixel<<", pl="<<plane
01000           <<" "<<this->GetElecString()<<endl;
01001       }
01002       
01003       //if (led==18){
01004       MSG("LISummarySorter",Msg::kDebug) 
01005         <<"Found CorrelatedHit"<<endl
01006         <<"led="<<led
01007         <<", oldnL="<<nearLed<<", newnL="<<plexLedInBox
01008         <<", oldfL="<<farLed<<", newfL="<<plexOppLedInBox
01009         <<", oldSt="<<strip<<", newSt="<<SEId.GetStrip()
01010         <<", pix="<<tmpPixel<<", pl="<<plane
01011         <<" "<<this->GetElecString()<<endl;
01012       //}
01013       //count entries for pulserboxes
01014       plexPbCounter[plexPulserBox]++;
01015       plexOppPbCounter[plexOppPulserBox]++;
01016       
01017       //set more variables
01018       correlatedHit=1;
01019       strip=SEId.GetStrip();
01020       fStripEnd=SEId.GetEnd();
01021       //Int_t oppStrip=oppSEId.GetStrip();//just used for message below
01022       nearLed=plexLedInBox;
01023       farLed=plexOppLedInBox;  
01024       //note that strip, se, nearL and farL get set twice for correlated
01025       //hits in CalDet, but so what!
01026       //Less complicated than checking if CalDet or not
01027 
01028       //save the reconstructed seid
01029       tmpSeid=SEId;
01030     }//end of if
01031     
01032     //use the led to determine which ashtray was being illuminated
01033     //only set the variable if the channel is in the crate 
01034     //(or opposite crate) that is being illuminated
01035     if (pulserBox==nearPulserBox || pulserBox==farPulserBox){
01036       ashtray=fLookup.Led2Ashtray(led,plane,detectorType);
01037     }
01038   }//end of for
01039   
01041   //reconstruct the pixel and mux box info
01043   //get pixel spot id for strip end
01044   PlexPixelSpotId plexPixelSpotId;
01045   if (tmpSeid.IsValid()){
01046     plexPixelSpotId=plexHandle->GetPixelSpotId(tmpSeid);
01047     pixel=plexPixelSpotId.GetPixel();
01048   }
01049   else{
01050     //if a stripend wasn't reconstructed then just use the first
01051     //strip end in the altlist to get the pixel
01052     //even though it will only be one of the possible four in the ND
01053     plexPixelSpotId=plexHandle->GetPixelSpotId
01054       ((*altlist.begin()).GetSEId());
01055     pixel=plexPixelSpotId.GetPixel();
01056   }
01057   //set all the mux box variables
01058   this->GetMuxBoxInfo(plexPixelSpotId);
01059 
01060   MSG("LISummarySorter",Msg::kVerbose) 
01061     <<"ReconstructStripEnd method finished"<<endl;
01062 }

void LISummarySorter::ReconstructTrigPmt  ) 
 

Definition at line 1220 of file LISummarySorter.cxx.

References channel, correlatedHit, detectorType, farPulserBox, fLookup, LILookup::GetOppPb(), MSG, nearPulserBox, LILookup::Pb2TrigPmtChannel(), PrintBigMessage(), and pulserBox.

Referenced by Update().

01221 {
01222   MSG("LISummarySorter",Msg::kVerbose) 
01223     <<"Reconstructing Trigger Pmt..."<<endl;
01224 
01225   if (channel==fLookup.Pb2TrigPmtChannel(pulserBox,detectorType)){
01226     nearPulserBox=pulserBox;
01227     //there is no far pulser box associated with a trig pmt hit
01228     //but get it anyway
01229     farPulserBox=fLookup.GetOppPb(pulserBox,detectorType);
01230     correlatedHit=1;
01231   }
01232 
01233   if (fLookup.Pb2TrigPmtChannel(pulserBox,detectorType)==-1){
01234     this->PrintBigMessage();
01235   }
01236   
01237   MSG("LISummarySorter",Msg::kVerbose)
01238     <<"ReconstructTrigPmt method finished"<<endl;
01239 }

void LISummarySorter::ResetTreeVariables  ) 
 

Definition at line 611 of file LISummarySorter.cxx.

References ashtray, chAdd, channel, chip, correlatedHit, crate, eastWest, elecType, farLed, farPulserBox, fMasterCh, fMinderCh, fPe, fStripEnd, geoAdd, inRack, mean, nearLed, nearPulserBox, numEntries, numericMuxBox, pinGain, pinInBox, pixel, plane, rackBay, rackLevel, readoutType, rms, strip, summaryCounter, timestamp, timestampNanoSec, varc, vfb, and vmm.

Referenced by Update().

00612 {
00613   //reset reconstructed tree variables
00614   //but not the LI pulser box settings
00615 
00616   //listed here for a checksum
00617   //   calibPoint=new_calibPoint;
00618   //   pulseHeight=new_pulseHeight;
00619   //   pulseWidth=new_pulseWidth;
00620   //   pulserBox=new_pulserBox;
00621   //   led=new_led;
00622   //   time=new_time;
00623   //   period=new_period;
00624   //   calibType=new_calibType;
00625   //   pulses=new_pulses;
00626   // 9 above but time is a struct and not directly in tree so only 8
00627     
00628   ashtray=-1;
00629   chAdd=-1;
00630   channel=-1;
00631   chip=-1;
00632   correlatedHit=0;
00633   crate=-1;
00634 
00635   //this only gets updated when you have a new led
00636   //so don't reset here
00637   //detectorType=-1;
00638 
00639   eastWest=-1;
00640   elecType=-1;
00641   farLed=-1;
00642   farPulserBox=-1;
00643   geoAdd=-1;
00644   inRack=-1;
00645   fMasterCh=-1;
00646   mean=-1.;
00647   fMinderCh=-1;
00648   nearLed=-1;
00649   nearPulserBox=-1;
00650   numEntries=-1;
00651   numericMuxBox=-1;
00652   fPe=-1;
00653   pixel=-1;
00654   pinGain=-1;
00655   pinInBox=-1;
00656   plane=-1;
00657   rackBay=-1;
00658   rackLevel=-1;
00659   readoutType=-1;
00660   rms=-1.;
00661 
00662   //these three only get updated when you have a new led etc
00663   //so don't reset here
00664   //runNumber=-1;
00665   //runNumberSub=-1;
00666   //runType=-1;
00667 
00668   strip=-1;
00669   fStripEnd=-1;
00670   summaryCounter=0;
00671   timestamp=-1;
00672   timestampNanoSec=-1;
00673   varc=-1;
00674   vfb=-1;
00675   vmm=-1;
00676 
00677   //38 variables above +fPe
00678   //+8 for pulser box settings
00679   //=46 altogether - same as number of branches in tree
00680 }

void LISummarySorter::SetDetector VldContext  vldC  ) 
 

Definition at line 1727 of file LISummarySorter.cxx.

References VldContext::AsString(), detectorType, fLookup, VldContext::GetDetector(), VldContext::IsValid(), MSG, and LILookup::SetDetector().

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::Reco().

01728 { 
01729   MSG("LISummarySorter",Msg::kVerbose)  
01730     <<"Setting detector type..."<<endl; 
01731  
01732   MSG("LISummarySorter",Msg::kDebug) 
01733     <<"Argument of SetDetector: VldC="<<vldC.AsString()<<endl; 
01734    
01735   //check if the validity context is valid 
01736   if (vldC.IsValid()){
01737 
01738     detectorType=static_cast<Int_t>(vldC.GetDetector()); 
01739     MSG("LISummarySorter",Msg::kDebug) 
01740       <<"Detector Type "<<detectorType<<" found"<<endl;
01741 
01742     //set the detector specific variables only once
01743     static Bool_t detNotSet=true;
01744     if (detNotSet){
01745       fLookup.SetDetector(detectorType);
01746       detNotSet=false;
01747     }
01748   } 
01749   else{ 
01750     MSG("LISummarySorter",Msg::kWarning)  
01751       <<"Validity context not valid = "<<vldC.AsString()
01752       <<endl<<"Could not set detector type"<<endl; 
01753   } 
01754  
01755   MSG("LISummarySorter",Msg::kVerbose)  
01756     <<"Finished SetDetector method"<<endl; 
01757 } 

void LISummarySorter::SetLIVariables Int_t  led,
Int_t  pulseHeight,
Int_t  pulseWidth,
Int_t  pulserBox,
Int_t  calibPoint,
VldTimeStamp  time,
Int_t  calibType,
Int_t  pulses,
Int_t  period
[private]
 

Definition at line 358 of file LISummarySorter.cxx.

References calibPoint, calibType, led, period, pulseHeight, pulserBox, pulses, pulseWidth, and time.

Referenced by Update().

00367 {
00368   //set summarySorters variables
00369   calibPoint=new_calibPoint;
00370   pulseHeight=new_pulseHeight;
00371   pulseWidth=new_pulseWidth;
00372   pulserBox=new_pulserBox;
00373   led=new_led;
00374   time=new_time;
00375   period=new_period;
00376   calibType=new_calibType;
00377   pulses=new_pulses; 
00378 }

void LISummarySorter::SetPlexHandle VldContext  vldC  ) 
 

Definition at line 1617 of file LISummarySorter.cxx.

References VldTimeStamp::AsString(), VldContext::AsString(), fRawDaqVldCtx, VldContext::GetDetector(), VldTimeStamp::GetSec(), VldRange::GetTimeEnd(), VldContext::GetTimeStamp(), VldRange::GetTimeStart(), PlexHandle::GetVldRange(), MsgService::Instance(), MsgService::IsActive(), VldRange::IsCompatible(), VldContext::IsValid(), MSG, plexHandle, and VldTimeStamp::Print().

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::GetSummaryBlocks().

01618 {
01619   MSG("LISummarySorter",Msg::kVerbose) 
01620     <<"Setting new validity context for plex handle..."<<endl;
01621 
01622   MSG("LISummarySorter",Msg::kDebug)
01623     <<"Input to SetPlexHandle() VldC="<<vldC.AsString()<<endl;
01624   
01625   if (vldC.GetTimeStamp().GetSec()==0){
01626     static Int_t numberMsg=0;
01627     if (numberMsg<2){
01628       MSG("LISummarySorter",Msg::kWarning)
01629         <<endl<<endl
01630         <<"************************* WARNING ********************"<<endl
01631         <<"* Number of seconds in summary block=0"<<endl
01632         <<"* Using RawDaqHeader timestamp to create"<<endl
01633         <<"* plex handle instead"<<endl
01634         <<"******************************************************"<<endl
01635         <<endl;
01636     }
01637     numberMsg++;
01638 
01639     const VldTimeStamp ts=fRawDaqVldCtx.GetTimeStamp();
01640 
01641     //print the timestamp if verbose
01642     if (MsgService::Instance()->IsActive("LISummarySorter",
01643                                          Msg::kVerbose)){
01644       MSG("LISummarySorter",Msg::kInfo) 
01645         <<"Using VldTimeStamp="<<endl;
01646       ts.Print();
01647     }
01648     
01649     VldContext hackedVldC(vldC.GetDetector(),SimFlag::kData,ts);
01650     
01651     MSG("LISummarySorter",Msg::kDebug) 
01652       <<"After setting plex handle using VldC="
01653       <<hackedVldC.AsString()<<endl; 
01654     
01655     //check if the validity context is valid then create the plex handle
01656     if (hackedVldC.IsValid()){
01657 
01658       //delete the plex handle if it already exists
01659       if (plexHandle){
01660         delete plexHandle;
01661       }
01662       //create a new plex handle
01663       plexHandle=new PlexHandle(hackedVldC); 
01664     }
01665     else{
01666       MSG("LISummarySorter",Msg::kFatal) 
01667         <<"Validity context not valid="<<vldC.AsString()<<endl;
01668       exit(1);
01669     }
01670   }
01671   else{ 
01672     //check if the validity context is valid then create the plex handle
01673     if (vldC.IsValid()){
01674 
01675       //delete the plex handle if it already exists
01676       if (plexHandle){
01677         delete plexHandle;
01678       }
01679 
01680       //create a new plex handle
01681       plexHandle=new PlexHandle(vldC); 
01682       
01683       //get validity range
01684       VldRange myVldRange=plexHandle->GetVldRange();
01685       MSG("LISummarySorter",Msg::kVerbose)
01686         <<"Range TimeStart="<<myVldRange.GetTimeStart().AsString()<<endl
01687         <<"Range TimeEnd="<<myVldRange.GetTimeEnd().AsString()<<endl
01688         <<"Compatible="<<myVldRange.IsCompatible(vldC)<<endl;
01689     }
01690     else{
01691       MSG("LISummarySorter",Msg::kFatal) 
01692         <<"Validity context not valid="<<vldC.AsString()<<endl;
01693       exit(1);
01694     }
01695   }
01696   
01697   MSG("LISummarySorter",Msg::kVerbose) 
01698     <<"Finished setting new validity context for plex handle"<<endl;
01699 }

void LISummarySorter::SetRawDaqVldCtx VldContext  vldC  ) 
 

Definition at line 1703 of file LISummarySorter.cxx.

References VldContext::AsString(), fRawDaqVldCtx, VldContext::IsValid(), and MSG.

Referenced by LISummaryModule::Reco().

01704 { 
01705   MSG("LISummarySorter",Msg::kVerbose)  
01706     <<"Setting RawDaqVldCtx"<<endl; 
01707  
01708   MSG("LISummarySorter",Msg::kDebug) 
01709     <<"Input to SetRawDaqVldCtx() VldC="<<vldC.AsString()<<endl; 
01710    
01711   //check if the validity context is valid 
01712   if (vldC.IsValid()){
01713     fRawDaqVldCtx=vldC;
01714   } 
01715   else{ 
01716     MSG("LISummarySorter",Msg::kWarning)  
01717       <<"Validity context not valid = "<<vldC.AsString()
01718       <<endl<<"Could not set fRawDaqVldCtx"<<endl; 
01719   } 
01720  
01721   MSG("LISummarySorter",Msg::kVerbose)  
01722     <<"Finished SetRawDaqVldCtx method"<<endl; 
01723 } 

void LISummarySorter::SetRunNumber Int_t  runNum  )  [inline]
 

Definition at line 61 of file LISummarySorter.h.

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::Reco().

00061 {runNumber=runNum;};

void LISummarySorter::SetRunNumberSub Short_t  runNumSub  )  [inline]
 

Definition at line 62 of file LISummarySorter.h.

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::Reco().

00062                                          {runNumberSub=static_cast
00063                                             <Int_t>(runNumSub);};

void LISummarySorter::SetRunType Short_t  runT  )  [inline]
 

Definition at line 64 of file LISummarySorter.h.

Referenced by LISummaryModule::GetPulserBlocks(), and LISummaryModule::Reco().

00064 {runType=static_cast<Int_t>(runT);};

Bool_t LISummarySorter::Update Int_t  new_led,
Int_t  new_pulseHeight,
Int_t  new_pulseWidth,
Int_t  new_pulserBox,
Int_t  new_calibPoint,
VldTimeStamp  new_time,
Int_t  new_calibType,
Int_t  new_pulses,
Int_t  new_period
 

This function does the following:

  • check for a new led, pulse height, etc
  • do nothing if same point
  • write previous points data to the tree if new point found

Definition at line 382 of file LISummarySorter.cxx.

References ReadoutType::AsString(), badHitCounter, cerenkovCounter, channels, commonModeCounter, crate, crates, fLookup, GetElecString(), GetElectronicsData(), goodHitCounter, led, leds, MAXMSG, mean, MSG, LILookup::NUMCRATES, numEntries, LILookup::NUMLEDS, LILookup::NUMPULSERBOXES, outtree, pinCounter, plexHandle, PrintBlockInfo(), pulseHeight, pulserBox, pulserBoxes, pulseWidth, rawSummaryBlockCounter, readoutType, ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), ResetTreeVariables(), rms, SetLIVariables(), stripCounter, timingFidCounter, tofCounter, triggerOrCounter, trigPmtCounter, unconnectedPixelCounter, and unknownCounter.

Referenced by LISummaryModule::EndJob(), LISummaryModule::GetPulserBlocks(), and LISummaryModule::GetSummaryBlocks().

00391 {
00396   
00397   //this method gets called once for each raw summary block so
00398   //count the number of summary blocks here
00399   rawSummaryBlockCounter++;
00400 
00401   MSG("LISummarySorter",Msg::kVerbose)
00402     <<"Running LISummarySorter::Update method..."<<endl;
00403 
00404   if(led==-1){//it is initialised to -1
00405 
00406     MSG("LISummarySorter",Msg::kInfo) 
00407       <<"Initialising variables for LI settings in Update()"<<endl;
00408     
00409     //initialise the vector of LIChannels
00410     if (channels.size()==0){
00411       for (Int_t i=0;i<LILookup::NUMCRATES*LILookup::NUMCHADD;i++){
00412         channels.push_back(LIChannel());
00413       }
00414       MSG("LISummarySorter",Msg::kInfo) 
00415         <<"Vector of channels initialised to "
00416         <<LILookup::NUMCRATES*LILookup::NUMCHADD
00417         <<" (NUMCRATES="<<LILookup::NUMCRATES
00418         <<", NUMCHADD="<<LILookup::NUMCHADD<<")"
00419         <<endl; 
00420     }
00421     else{
00422       MSG("LISummarySorter",Msg::kInfo) 
00423         <<"Channels vector can't be initialised; already done!"<<endl;
00424     }
00425 
00426     this->SetLIVariables(new_led,new_pulseHeight,new_pulseWidth,
00427                          new_pulserBox,new_calibPoint,new_time,
00428                          new_calibType,new_pulses,new_period);
00429       
00430     this->PrintBlockInfo("First initialisation ");
00431     return false;//didn't update tree
00432   }
00433   // Write out data from previous led, pulse height, etc here
00434   else if(new_led!=led ||
00435           new_pulseHeight!=pulseHeight ||
00436           new_pulseWidth!=pulseWidth ||
00437           new_pulserBox!=pulserBox ||
00438           new_calibPoint!=calibPoint){
00439 
00440     //get an iterator to the map
00441     vector<LIChannel>::iterator chIt;
00442     chIt=channels.begin()-1;//so can increment straight away
00443     Int_t ch=-1;
00444 
00445     //loop over every possible channel
00446     while (chIt!=channels.end()){
00447 
00448       //increment the loop variables
00449       ch++;
00450       chIt++;
00451       MSG("LISummarySorterUltraVerbose",Msg::kVerbose) 
00452         <<"At beginning: Channel="<<ch<<endl;
00453 
00454       numEntries=channels[ch].GetNumEntries();      
00455       //check if channel was hit 
00456       if(numEntries==0) continue;
00457 
00458       //reset the variables and get the electronics info        
00459       this->ResetTreeVariables();
00460       this->GetElectronicsData(ch);
00461 
00462       //gather run statistics
00463       crates[crate]++;
00464       if (crate>fLookup.NUMCRATES || crate<0){
00465         MSG("LISummarySorter",Msg::kError) 
00466           <<"Crate out of range: crate="<<crate<<endl;
00467       }
00468 
00469       if (pulserBox<fLookup.NUMPULSERBOXES && pulserBox>=0 && 
00470           led<=fLookup.NUMLEDS && led>=1){
00471         pulserBoxes[pulserBox]++;
00472         leds[led-1]++;
00473       }
00474       else{
00475         static Int_t numberMsg=0;
00476         if (numberMsg<10){
00477           MSG("LISummarySorter",Msg::kError)
00478             <<"Pulser box or Led out of range: (PB,LED)=("<<pulserBox 
00479             <<","<<led<<")"<<endl;
00480           if (numberMsg==9){
00481             MSG("LISummarySorter",Msg::kError)
00482               <<endl
00483               <<"This is the last message of this type to be printed"
00484               <<endl;
00485           } 
00486         }
00487         numberMsg++;
00488       }
00489 
00490       //get readout type
00491       //      ReadoutType::Readout_t rt=plexHandle->
00492       //GetReadoutType(channels[ch]->GetChannelId());
00493       ReadoutType::Readout_t rt=plexHandle->
00494         GetReadoutType(chIt->GetChannelId());
00495       readoutType=static_cast<Int_t>(rt);//set tree variable
00496       MSG("LISummarySorter",Msg::kVerbose) 
00497         <<"rt="<<ReadoutType::AsString(rt)
00498         <<", mean="<<mean <<", rms="<<rms 
00499         <<", numEnt="<<numEntries 
00500         <<" "<<this->GetElecString()<<endl; 
00501 
00502       //check for dodgy channels
00503       if (rms==0 || numEntries==0 || mean==0){
00504         if (numEntries>10){
00505           if (readoutType==ReadoutType::kTOF ||
00506               readoutType==ReadoutType::kUnknown || 
00507               readoutType==ReadoutType::kTriggerOR){
00508             MSG("LISanityCheck",Msg::kVerbose) 
00509               <<" ** Channel with strange values: mean="<<mean 
00510               <<", rms="<<rms 
00511               <<", numEnt="<<numEntries 
00512               <<", rt="<<ReadoutType::AsString(rt)
00513               <<" "<<this->GetElecString()<<endl; 
00514           }
00515           else{
00516             //if (rms==0 && detectorType==Detector::kNear){
00517               //do nothing; too many of these with bad channels
00518             //}
00519             //else{
00520               MAXMSG("LISanityCheck",Msg::kInfo,50) 
00521                 <<"Writing out bad channel: mean="
00522                 <<(Int_t)mean 
00523                 <<", rms="<<rms 
00524                 <<", numEnt="<<numEntries 
00525                 <<", rt="<<ReadoutType::AsString(rt)
00526                 <<" "<<this->GetElecString()<<endl; 
00527               //}
00528           }
00529         }
00530       }
00531 
00532       //use the readout type to decide what to do
00533       //count the number of each type in file
00534       if (rt==ReadoutType::kUnknown){
00535         unknownCounter++;
00536       }
00537       else if (rt==ReadoutType::kUnconnectedPixel){
00538         unconnectedPixelCounter++;
00539       }
00540       else if (rt==ReadoutType::kScintStrip) {
00541         stripCounter++;
00542 
00543         //run the algorithm to correlate hits with flashes and 
00544         //determine the strip end
00545         this->ReconstructStripEnd(ch);
00546 
00547         //count hits that were attributed to an LI pulse        
00548         if (correlatedHit){
00549           goodHitCounter++;
00550         }
00551         else{
00552           badHitCounter++;
00553         }
00554       }//end of if
00555       else if (rt==ReadoutType::kPinDiode){
00556         pinCounter++;
00557         this->ReconstructPin(ch);
00558       }
00559       else if (rt==ReadoutType::kFlashTrigPMT){
00560         trigPmtCounter++;
00561         this->ReconstructTrigPmt();
00562       }
00563       else if (rt==ReadoutType::kVACommonMode){
00564         commonModeCounter++;
00565       }
00566       else if (rt==ReadoutType::kTriggerOR){
00567         triggerOrCounter++;
00568       }
00569       else if (rt==ReadoutType::kCerenkov){
00570         cerenkovCounter++;
00571       }
00572       else if (rt==ReadoutType::kTOF){
00573         tofCounter++;
00574       }
00575       else if (rt==ReadoutType::kTimingFid){
00576         timingFidCounter++;
00577       }
00578       else {
00579         MSG("LISummarySorter",Msg::kWarning) 
00580           <<"ReadoutType not defined:" 
00581           <<" rt="<<ReadoutType::AsString(rt)
00582           <<" "<<this->GetElecString()
00583           <<endl;
00584       }   
00585       //fill the tree with all the current data for this channel
00586       outtree->Fill();
00587     }//end of loop
00588 
00589     this->PrintBlockInfo("Wrote point: ");
00590 
00591     //reset all channels for next point
00592     for(UInt_t ch=0;ch<channels.size();ch++){
00593       channels[ch].Clean();       
00594     }
00595 
00596     //set the variables to be the new ones
00597     this->SetLIVariables(new_led,new_pulseHeight,new_pulseWidth,
00598                          new_pulserBox,new_calibPoint,new_time,
00599                          new_calibType,new_pulses,new_period);
00600     
00601     return true;//did update tree
00602   }//end of else if
00603 
00604   MSG("LISummarySorter",Msg::kVerbose)
00605     <<"Finished LISummarySorter::Update method..."<<endl;
00606   return false;//didn't update tree
00607 }

void LISummarySorter::WriteFile TFile *  outfile  ) 
 

Definition at line 1583 of file LISummarySorter.cxx.

References MSG, outfile, and outtree.

Referenced by OutputData().

01584 {
01585   if (outfile && outtree){
01586     MSG("LISummarySorter",Msg::kInfo)<<"Writing out tree..."<<endl;
01587     outfile->cd();
01588     outtree->Write();
01589     delete outtree;  
01590     MSG("LISummarySorter",Msg::kInfo) 
01591       <<"Tree written and deleted"<<endl;
01592   }
01593   else {
01594     MSG("LISummarySorter",Msg::kWarning)
01595       <<"Can't write out tree (outtree="<<outtree
01596       <<", outfile="<<outfile<<")"<<endl;
01597   }
01598 }


Member Data Documentation

Int_t LISummarySorter::ashtray [private]
 

Definition at line 88 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::badHitCounter [private]
 

Definition at line 89 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::calibPoint [private]
 

Definition at line 90 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), and SetLIVariables().

Int_t LISummarySorter::calibType [private]
 

Definition at line 91 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), and SetLIVariables().

Int_t LISummarySorter::cerenkovCounter [private]
 

Definition at line 92 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::chAdd [private]
 

Definition at line 93 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::channel [private]
 

Definition at line 94 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), ReconstructTrigPmt(), and ResetTreeVariables().

std::vector<LIChannel> LISummarySorter::channels [private]
 

Definition at line 95 of file LISummarySorter.h.

Referenced by AddEntry(), GetElectronicsData(), ReconstructPin(), ReconstructStripEnd(), and Update().

Int_t LISummarySorter::chip [private]
 

Definition at line 96 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::commonModeCounter [private]
 

Definition at line 97 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::correlatedHit [private]
 

Definition at line 98 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), and ResetTreeVariables().

Int_t LISummarySorter::crate [private]
 

Definition at line 99 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), ResetTreeVariables(), and Update().

std::map<Int_t,Int_t> LISummarySorter::crates [private]
 

Definition at line 100 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and Update().

Int_t LISummarySorter::detectorType [private]
 

Definition at line 101 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintRecoSummary(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), and SetDetector().

Int_t LISummarySorter::eastWest [private]
 

Definition at line 102 of file LISummarySorter.h.

Referenced by GetMuxBoxInfo(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::elecType [private]
 

Definition at line 103 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::farLed [private]
 

Definition at line 104 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::farPulserBox [private]
 

Definition at line 105 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), and ResetTreeVariables().

string LISummarySorter::filename [private]
 

Definition at line 106 of file LISummarySorter.h.

Int_t LISummarySorter::first_time [private]
 

Definition at line 107 of file LISummarySorter.h.

Referenced by LISummarySorter().

LILookup LISummarySorter::fLookup [private]
 

Definition at line 113 of file LISummarySorter.h.

Referenced by AddEntry(), GetMuxBoxInfo(), PrintRecoSummary(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), SetDetector(), and Update().

Int_t LISummarySorter::fMasterCh [private]
 

Definition at line 114 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::fMinderCh [private]
 

Definition at line 116 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Float_t LISummarySorter::fPe [private]
 

Definition at line 124 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

VldContext LISummarySorter::fRawDaqVldCtx [private]
 

Definition at line 141 of file LISummarySorter.h.

Referenced by SetPlexHandle(), and SetRawDaqVldCtx().

Int_t LISummarySorter::fStripEnd [private]
 

Definition at line 154 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::geoAdd [private]
 

Definition at line 109 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::goodHitCounter [private]
 

Definition at line 110 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::inRack [private]
 

Definition at line 108 of file LISummarySorter.h.

Referenced by GetMuxBoxInfo(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::led [private]
 

Definition at line 111 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), PrintBlockInfo(), ReconstructPin(), ReconstructStripEnd(), SetLIVariables(), and Update().

std::map<Int_t,Int_t> LISummarySorter::leds [private]
 

Definition at line 112 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and Update().

Float_t LISummarySorter::mean [private]
 

Definition at line 115 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), ReconstructPin(), ReconstructStripEnd(), ResetTreeVariables(), and Update().

Int_t LISummarySorter::nearLed [private]
 

Definition at line 118 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::nearPulserBox [private]
 

Definition at line 119 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), and ResetTreeVariables().

Int_t LISummarySorter::numEntries [private]
 

Definition at line 120 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), ResetTreeVariables(), and Update().

Int_t LISummarySorter::numericMuxBox [private]
 

Definition at line 121 of file LISummarySorter.h.

Referenced by GetMuxBoxInfo(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

TFile* LISummarySorter::outputFile [private]
 

Definition at line 123 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), OpenFile(), and OutputData().

TTree* LISummarySorter::outtree [private]
 

Definition at line 122 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), Update(), and WriteFile().

Int_t LISummarySorter::period [private]
 

Definition at line 125 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), and SetLIVariables().

Int_t LISummarySorter::pinCounter [private]
 

Definition at line 127 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

std::map<Int_t,Int_t> LISummarySorter::pinCounterReco [private]
 

Definition at line 128 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and ReconstructPin().

Int_t LISummarySorter::pinGain [private]
 

Definition at line 129 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), and ResetTreeVariables().

Int_t LISummarySorter::pinInBox [private]
 

Definition at line 130 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructPin(), and ResetTreeVariables().

Int_t LISummarySorter::pixel [private]
 

Definition at line 126 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::plane [private]
 

Definition at line 131 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), ReconstructPin(), ReconstructStripEnd(), and ResetTreeVariables().

PlexHandle* LISummarySorter::plexHandle [private]
 

Definition at line 117 of file LISummarySorter.h.

Referenced by AddEntry(), LISummarySorter(), ReconstructPin(), ReconstructStripEnd(), SetPlexHandle(), and Update().

std::map<Int_t,Int_t> LISummarySorter::plexOppPbCounter [private]
 

Definition at line 132 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and ReconstructStripEnd().

std::map<Int_t,Int_t> LISummarySorter::plexPbCounter [private]
 

Definition at line 133 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and ReconstructStripEnd().

Int_t LISummarySorter::pulseHeight [private]
 

Definition at line 134 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), SetLIVariables(), and Update().

Int_t LISummarySorter::pulserBox [private]
 

Definition at line 135 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), PrintBlockInfo(), ReconstructPin(), ReconstructStripEnd(), ReconstructTrigPmt(), SetLIVariables(), and Update().

std::map<Int_t,Int_t> LISummarySorter::pulserBoxes [private]
 

Definition at line 136 of file LISummarySorter.h.

Referenced by PrintRecoSummary(), and Update().

Int_t LISummarySorter::pulses [private]
 

Definition at line 137 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), and SetLIVariables().

Int_t LISummarySorter::pulseWidth [private]
 

Definition at line 138 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBlockInfo(), SetLIVariables(), and Update().

Int_t LISummarySorter::rackBay [private]
 

Definition at line 139 of file LISummarySorter.h.

Referenced by GetMuxBoxInfo(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::rackLevel [private]
 

Definition at line 140 of file LISummarySorter.h.

Referenced by GetMuxBoxInfo(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::rawSummaryBlockCounter [private]
 

Definition at line 142 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::rawSummaryCounter [private]
 

Definition at line 143 of file LISummarySorter.h.

Referenced by LISummarySorter(), and PrintRecoSummary().

Int_t LISummarySorter::readoutType [private]
 

Definition at line 144 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), ResetTreeVariables(), and Update().

Float_t LISummarySorter::rms [private]
 

Definition at line 151 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), ResetTreeVariables(), and Update().

Int_t LISummarySorter::runNumber [private]
 

Definition at line 145 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), and PrintRecoSummary().

Int_t LISummarySorter::runNumberSub [private]
 

Definition at line 149 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), and PrintRecoSummary().

Int_t LISummarySorter::runType [private]
 

Definition at line 150 of file LISummarySorter.h.

Referenced by InitialiseTree(), and LISummarySorter().

Int_t LISummarySorter::strip [private]
 

Definition at line 152 of file LISummarySorter.h.

Referenced by InitialiseTree(), LISummarySorter(), PrintBigMessage(), ReconstructStripEnd(), and ResetTreeVariables().

Int_t LISummarySorter::stripCounter [private]
 

Definition at line 153 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::summaryCounter [private]
 

Definition at line 155 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

VldTimeStamp LISummarySorter::time [private]
 

Definition at line 156 of file LISummarySorter.h.

Referenced by GetElectronicsData(), PrintBlockInfo(), and SetLIVariables().

Int_t LISummarySorter::timestamp [private]
 

Definition at line 157 of file LISummarySorter.h.

Referenced by GetElectronicsData(), InitialiseTree(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::timestampNanoSec [private]
 

Definition at line 158 of file LISummarySorter.h.

Referenced by GetElectronicsData(), LISummarySorter(), and ResetTreeVariables().

Int_t LISummarySorter::timingFidCounter [private]
 

Definition at line 159 of file LISummarySorter.h.

Referenced by LISummarySorter(), and Update().

Int_t LISummarySorter::tofCounter [private]
 

Definition at line 160 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::triggerOrCounter [private]
 

Definition at line 161 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::trigPmtCounter [private]
 

Definition at line 162 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::unconnectedPixelCounter [private]
 

Definition at line 163 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

Int_t LISummarySorter::unknownCounter [private]
 

Definition at line 164 of file LISummarySorter.h.

Referenced by LISummarySorter(), PrintRecoSummary(), and Update().

VldContext LISummarySorter::validity [private]
 

Definition at line 165 of file LISummarySorter.h.

Int_t LISummarySorter::varc [private]
 

Definition at line 166 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::vfb [private]
 

Definition at line 167 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().

Int_t LISummarySorter::vmm [private]
 

Definition at line 168 of file LISummarySorter.h.

Referenced by GetElecString(), GetElectronicsData(), InitialiseTree(), LISummarySorter(), PrintBigMessage(), and ResetTreeVariables().


The documentation for this class was generated from the following files:
Generated on Mon Feb 15 11:09:25 2010 for loon by  doxygen 1.3.9.1