The data will be contained in svtEvent, a collection of StSvtHybridData objects.
Data Interface:
This is the only part relevant for the common user. The user macro (like bfc.C) must instantiate
StSvtDaqMaker. The user code can access the data through the object
StSvtEvent,
which corresponds to a collection of
StSvtHybridData
objects.
A description of these classes and their methods can be found
here.
Following is an example of a piece of code to get the ADC values for the entire SVT,
once the pointer to StSvtEvent (in this case event) has been passed to the code:
int barrelID, ladderID, waferID, hybridID;
int anodeID, nAnodes, nSeq, iseq, time, status, indexHyb;
int* anodelist = NULL;
for (int ibarrel=0;ibarrel < event->getNumberOfBarrels();ibarrel++) {
barrelID = ibarrel + 1;
for (int iladder=0;iladder < event->getNumberOfLadders(ibarrel+1);iladder++) {
ladderID = iladder + 1;
for (int iwafer=0;iwafer < event->getNumberOfWafers(ibarrel+1);iwafer++) {
waferID = iwafer + 1;
for (int ihybrid=0;ihybrid < event->getNumberOfHybrids();ihybrid++) {
hybridID = ihybrid + 1;
indexHyb = event->getHybridIndex(barrelID, ladderID, waferID, hybridID);
nAnodes = ((StSvtHybridData*)event->At(index_hyb))->getAnodeList(anodelist);
for (int ianode=0;ianode < nAnodes;ianode++) {
anodeID = anodelist[ianode];
StSequence* Seq = NULL;
nSeq = 0;
status = ((StSvtHybridData*)event->At(index_hyb))->getSequences(anodeID,nSeq,Seq);
for (iseq=0;iseq < nSeq;iseq++) {
for (time=Seq[iseq].startTimeBin; time < Seq[iseq].startTimeBin+Seq[iseq].length; time++) {
adc = Seq[iseq].firstAdc[time];
cout << "Anode = " << anodeID << ", Time Bucket = " << time << ", ADC = " << adc << endl;
}
}
}
}
}
}
}
Please send comments and suggestions to Marcelo Munhoz:
munhoz@physics.wayne.edu
(Last
update: December 9, 1999)