Hall C ROOT/C++ Analyzer (hcana)
THcHelicityScaler Class Reference

Event handler for Hall C helicity scalers.

This event handler scans an event for a helicity scaler bank. A helicity scaler bank contains data from one or more SIS3801 scaler triggers.

THcHelcityScaler *phelscaler = new THcHelicityScaler("P","HC helicity scalers");
phelscaler->SetDebugFile("PHelScaler.txt");
phelscaler->SetROC(8); // 5 for HMS defaults to 8 for SHMS
phelscaler->SetBankID(9801); // Will default to this
gHaEvtHandlers->Add (phelscaler);
Author
S. A. Wood (saw@j.nosp@m.lab..nosp@m.org) C. Yero (cyero.nosp@m.@jla.nosp@m.b.org)

Definition at line 26 of file THcHelicityScaler.h.

Public Member Functions

Int_t Analyze (THaEvData *evdata)
 
Int_t AnalyzeBuffer (UInt_t *rdata)
 
Int_t AnalyzeHelicityScaler (UInt_t *p)
 
virtual Int_t End (THaRunBase *r=0)
 
virtual Int_t GetEvNum ()
 
virtual Int_tGetHelicityHistoryP ()
 
virtual Int_t GetNcycles ()
 
virtual Int_t GetNevents ()
 
virtual Int_t GetReportedActual ()
 
virtual Int_t GetReportedSeed ()
 
virtual EStatus Init (const TDatime &run_time)
 
virtual Bool_t IsSeedGood ()
 
virtual Int_t ReadDatabase (const TDatime &date)
 
virtual void SetBankID (Int_t bankid)
 
virtual void SetDelayedType (int evtype)
 
virtual void SetNScalerChannels (Int_t n)
 
virtual void SetROC (Int_t roc)
 
virtual void SetUseFirstEvent (Bool_t b=kFALSE)
 
 THcHelicityScaler (const char *, const char *)
 
virtual ~THcHelicityScaler ()
 

Private Member Functions

void AddVars (TString name, TString desc, UInt_t iscal, UInt_t ichan, UInt_t ikind)
 
void DefVars ()
 
void MakeParms ()
 
THcHelicityScaleroperator= (const THcHelicityScaler &fh)
 
Int_t RanBit30 (Int_t ranseed)
 
 THcHelicityScaler (const THcHelicityScaler &fh)
 

Static Private Member Functions

static size_t FindNoCase (const std::string &sdata, const std::string &skey)
 

Private Attributes

Double_t actualHelicityR
 
Double_tdvars
 
Double_tdvarsFirst
 
UInt_t evcount
 
Double_t evcountR
 
UInt_t evNumber
 
Double_t evNumberR
 
Double_tfAsymmetry
 
Double_tfAsymmetryError
 
UInt_t fBankID
 
Double_t fbcm_Current_Threshold
 
Int_t fbcm_Current_Threshold_Index
 
Double_tfBCM_delta_charge
 
Double_tfBCM_Gain
 
std::vector< std::string > fBCM_Name
 
Double_tfBCM_Offset
 
Double_tfBCM_SatOffset
 
Double_tfBCM_SatQuadratic
 
Double_tfChargeAsymmetry
 
Double_tfChargeAsymmetryError
 
Double_tfChargeAsymSum
 
Double_tfChargeAsymSum2
 
Double_tfChargeCycle [4]
 
Double_tfChargeSum
 
Int_t fClockChan
 
Double_t fClockFreq
 
std::vector< UInt_t * > fDelayedEvents
 
Int_t fDelayedType
 
Double_t fDeltaTime
 
Int_t fFirstCycle
 
Int_t fGateCount [2]
 
Bool_t fHaveCycle [4]
 
Int_t fHelicityHistory [200]
 
Double_tfHScalers [2]
 
UInt_t fLastClock
 
std::set< UInt_tfModuleSet
 
Int_t fNBits
 
Int_t fNormIdx
 
Int_t fNormSlot
 
Int_t fNScalerChannels
 
Int_t fNTriggers
 
Int_t fNTriggersMinus
 
Int_t fNTriggersPlus
 
Int_t fNTrigsInBuf
 
Int_t fNumBCMs
 
Bool_t fOnlyBanks
 
Bool_t fOnlySyncEvents
 
Double_t fPrevTotalTime
 
Int_t fQuartetCount
 
Int_t fRingSeed_actual
 
Int_t fRingSeed_reported
 
Int_t fROC
 
std::set< UInt_tfRocSet
 
Double_tfScalAsymmetry
 
Double_tfScalAsymmetryError
 
Double_tfScalAsymSum
 
Double_tfScalAsymSum2
 
Double_tfScalCycle [4]
 
Double_tfScalerChan
 
Double_tfScalerSums
 
TTreefScalerTree
 
Double_tfScalSum
 
Double_t fTimeAsymmetry
 
Double_t fTimeAsymmetryError
 
Double_t fTimeAsymSum
 
Double_t fTimeAsymSum2
 
Double_t fTimeCycle [4]
 
Double_t fTimeMinus
 
Double_t fTimePlus
 
Double_t fTimeSum
 
Double_t fTotalTime
 
Double_t fTriggerAsymmetry
 
Bool_t fUseFirstEvent
 
Int_t ifound
 
Int_t nscalers
 
Int_t Nvars
 
Double_t quartetphaseR
 
std::vector< HCScalerLoc * > scalerloc
 
std::vector< Decoder::GenScaler * > scalers
 

#include <THcHelicityScaler.h>

Inheritance diagram for THcHelicityScaler:

Constructor & Destructor Documentation

THcHelicityScaler::THcHelicityScaler ( const char *  name,
const char *  description 
)

Definition at line 59 of file THcHelicityScaler.cxx.

THcHelicityScaler::~THcHelicityScaler ( )
virtual

Definition at line 90 of file THcHelicityScaler.cxx.

THcHelicityScaler::THcHelicityScaler ( const THcHelicityScaler fh)
private

Member Function Documentation

void THcHelicityScaler::AddVars ( TString  name,
TString  desc,
UInt_t  iscal,
UInt_t  ichan,
UInt_t  ikind 
)
private

Definition at line 1429 of file THcHelicityScaler.cxx.

Int_t THcHelicityScaler::Analyze ( THaEvData evdata)

Create the ROOT tree and pass events to AnalyzeBuffer

If the event is of the type fDelayedType, cache the event buffer and analyze it in End.

Definition at line 324 of file THcHelicityScaler.cxx.

Int_t THcHelicityScaler::AnalyzeBuffer ( UInt_t rdata)

Scan for and analyze helicity scaler banks in an event

A helicity bank can contain more than one event/trigger, particularly if the event trigger rate is lower than the helicity flip rate.

Definition at line 424 of file THcHelicityScaler.cxx.

Int_t THcHelicityScaler::AnalyzeHelicityScaler ( UInt_t p)

Analyze a single SIS3801 helicity scaler event/trigger

An event contains 32 scalers that were accumulated over the last helicity window. The event also contains 2 bits, one being the reported helicity for this window and the other a marker for the quartet. This method determines actual helicity from the delayed helicity bits and accumulates scalers for each helicity state.

This code assumes that the helity is delivered in quartets of windows with the pattern +–+ or -++- and that the helicity that is reported has been delayed by 8 windows (2 quartets.)

For the first 120 events, the actual helicity of each helicity scaler event can not be determined. This actualy helicity of each event can be determined once the 30 bit seed for the helicity generator has been determined. At the start of each quartet, the reported helicity is pushed onto the seed. Once 30 bits have been pushed onto the seed, the actual helicity of any given event can be determined.

The SIS3801 has a bug (undocumented feature?) with the inputs bits. The value of the bits are delayed by one trigger, so they do not corresponed to the the scaler values read in the event. This bug was not known (to the author) at the time that this method was written, so there is a hack (marked by the DELAY9 ifdef) to account for this. Some rewriting of the code probably make things clearer.

Definition at line 534 of file THcHelicityScaler.cxx.

void THcHelicityScaler::DefVars ( )
private

Definition at line 1442 of file THcHelicityScaler.cxx.

Int_t THcHelicityScaler::End ( THaRunBase *  r = 0)
virtual

Definition at line 112 of file THcHelicityScaler.cxx.

size_t THcHelicityScaler::FindNoCase ( const std::string &  sdata,
const std::string &  skey 
)
staticprivate

Definition at line 1466 of file THcHelicityScaler.cxx.

virtual Int_t THcHelicityScaler::GetEvNum ( )
inlinevirtual

Definition at line 48 of file THcHelicityScaler.h.

virtual Int_t* THcHelicityScaler::GetHelicityHistoryP ( )
inlinevirtual

Definition at line 49 of file THcHelicityScaler.h.

virtual Int_t THcHelicityScaler::GetNcycles ( )
inlinevirtual

Definition at line 47 of file THcHelicityScaler.h.

virtual Int_t THcHelicityScaler::GetNevents ( )
inlinevirtual

Definition at line 46 of file THcHelicityScaler.h.

virtual Int_t THcHelicityScaler::GetReportedActual ( )
inlinevirtual

Definition at line 51 of file THcHelicityScaler.h.

virtual Int_t THcHelicityScaler::GetReportedSeed ( )
inlinevirtual

Definition at line 50 of file THcHelicityScaler.h.

THaAnalysisObject::EStatus THcHelicityScaler::Init ( const TDatime run_time)
virtual

Definition at line 1093 of file THcHelicityScaler.cxx.

virtual Bool_t THcHelicityScaler::IsSeedGood ( )
inlinevirtual

Definition at line 52 of file THcHelicityScaler.h.

void THcHelicityScaler::MakeParms ( )
private

Definition at line 1360 of file THcHelicityScaler.cxx.

THcHelicityScaler& THcHelicityScaler::operator= ( const THcHelicityScaler fh)
private
Int_t THcHelicityScaler::RanBit30 ( Int_t  ranseed)
private

Generate a new helicity state bit using same algorithm as the injector

Definition at line 1074 of file THcHelicityScaler.cxx.

Int_t THcHelicityScaler::ReadDatabase ( const TDatime date)
virtual

Definition at line 259 of file THcHelicityScaler.cxx.

virtual void THcHelicityScaler::SetBankID ( Int_t  bankid)
inlinevirtual

Definition at line 44 of file THcHelicityScaler.h.

void THcHelicityScaler::SetDelayedType ( int  evtype)
virtual

Delay analysis of this event type to end.

Final scaler events generated in readout list end routines may not come in order in the data stream. If the event type of a end routine scaler event is set, then the event contents will be saved and analyzed at the end of the analysis so that time ordering of scaler events is preserved.

Definition at line 311 of file THcHelicityScaler.cxx.

virtual void THcHelicityScaler::SetNScalerChannels ( Int_t  n)
inlinevirtual

Definition at line 45 of file THcHelicityScaler.h.

virtual void THcHelicityScaler::SetROC ( Int_t  roc)
inlinevirtual

Definition at line 43 of file THcHelicityScaler.h.

virtual void THcHelicityScaler::SetUseFirstEvent ( Bool_t  b = kFALSE)
inlinevirtual

Definition at line 41 of file THcHelicityScaler.h.

Member Data Documentation

Double_t THcHelicityScaler::actualHelicityR
private

Definition at line 161 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::dvars
private

Definition at line 164 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::dvarsFirst
private

Definition at line 165 of file THcHelicityScaler.h.

UInt_t THcHelicityScaler::evcount
private

Definition at line 157 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::evcountR
private

Definition at line 158 of file THcHelicityScaler.h.

UInt_t THcHelicityScaler::evNumber
private

Definition at line 159 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::evNumberR
private

Definition at line 160 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fAsymmetry
private

Definition at line 87 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fAsymmetryError
private

Definition at line 88 of file THcHelicityScaler.h.

UInt_t THcHelicityScaler::fBankID
private

Definition at line 68 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fbcm_Current_Threshold
private

Definition at line 150 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fbcm_Current_Threshold_Index
private

Definition at line 152 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fBCM_delta_charge
private

Definition at line 146 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fBCM_Gain
private

Definition at line 141 of file THcHelicityScaler.h.

std::vector<std::string> THcHelicityScaler::fBCM_Name
private

Definition at line 153 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fBCM_Offset
private

Definition at line 142 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fBCM_SatOffset
private

Definition at line 144 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fBCM_SatQuadratic
private

Definition at line 145 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeAsymmetry
private

Definition at line 121 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeAsymmetryError
private

Definition at line 122 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeAsymSum
private

Definition at line 123 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeAsymSum2
private

Definition at line 124 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeCycle[4]
private

Definition at line 119 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fChargeSum
private

Definition at line 120 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fClockChan
private

Definition at line 169 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fClockFreq
private

Definition at line 151 of file THcHelicityScaler.h.

std::vector<UInt_t*> THcHelicityScaler::fDelayedEvents
private

Definition at line 136 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fDelayedType
private

Definition at line 76 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fDeltaTime
private

Definition at line 148 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fFirstCycle
private

Definition at line 72 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fGateCount[2]
private

Definition at line 85 of file THcHelicityScaler.h.

Bool_t THcHelicityScaler::fHaveCycle[4]
private

Definition at line 98 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fHelicityHistory[200]
private

Definition at line 73 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fHScalers[2]
private

Definition at line 84 of file THcHelicityScaler.h.

UInt_t THcHelicityScaler::fLastClock
private

Definition at line 170 of file THcHelicityScaler.h.

std::set<UInt_t> THcHelicityScaler::fModuleSet
private

Definition at line 172 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNBits
private

Definition at line 80 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNormIdx
private

Definition at line 163 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNormSlot
private

Definition at line 163 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNScalerChannels
private

Definition at line 138 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNTriggers
private

Definition at line 71 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNTriggersMinus
private

Definition at line 83 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNTriggersPlus
private

Definition at line 82 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNTrigsInBuf
private

Definition at line 70 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fNumBCMs
private

Definition at line 140 of file THcHelicityScaler.h.

Bool_t THcHelicityScaler::fOnlyBanks
private

Definition at line 168 of file THcHelicityScaler.h.

Bool_t THcHelicityScaler::fOnlySyncEvents
private

Definition at line 167 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fPrevTotalTime
private

Definition at line 149 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fQuartetCount
private

Definition at line 100 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fRingSeed_actual
private

Definition at line 79 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fRingSeed_reported
private

Definition at line 78 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::fROC
private

Definition at line 137 of file THcHelicityScaler.h.

std::set<UInt_t> THcHelicityScaler::fRocSet
private

Definition at line 171 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalAsymmetry
private

Definition at line 113 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalAsymmetryError
private

Definition at line 114 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalAsymSum
private

Definition at line 115 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalAsymSum2
private

Definition at line 116 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalCycle[4]
private

Definition at line 111 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalerChan
private

Definition at line 134 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalerSums
private

Definition at line 86 of file THcHelicityScaler.h.

TTree* THcHelicityScaler::fScalerTree
private

Definition at line 166 of file THcHelicityScaler.h.

Double_t* THcHelicityScaler::fScalSum
private

Definition at line 112 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeAsymmetry
private

Definition at line 105 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeAsymmetryError
private

Definition at line 106 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeAsymSum
private

Definition at line 107 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeAsymSum2
private

Definition at line 108 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeCycle[4]
private

Definition at line 103 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeMinus
private

Definition at line 92 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimePlus
private

Definition at line 91 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTimeSum
private

Definition at line 104 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTotalTime
private

Definition at line 147 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::fTriggerAsymmetry
private

Definition at line 95 of file THcHelicityScaler.h.

Bool_t THcHelicityScaler::fUseFirstEvent
private

Definition at line 75 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::ifound
private

Definition at line 163 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::nscalers
private

Definition at line 163 of file THcHelicityScaler.h.

Int_t THcHelicityScaler::Nvars
private

Definition at line 163 of file THcHelicityScaler.h.

Double_t THcHelicityScaler::quartetphaseR
private

Definition at line 162 of file THcHelicityScaler.h.

std::vector<HCScalerLoc*> THcHelicityScaler::scalerloc
private

Definition at line 62 of file THcHelicityScaler.h.

std::vector<Decoder::GenScaler*> THcHelicityScaler::scalers
private

Definition at line 61 of file THcHelicityScaler.h.

Collaboration diagram for THcHelicityScaler:

The documentation for this class was generated from the following files: