// $Id$ //----------------------------------------------------------------------- // The GSI Online Offline Object Oriented (Go4) Project // Experiment Data Processing at EE department, GSI //----------------------------------------------------------------------- // Copyright (C) 2000- GSI Helmholtzzentrum für Schwerionenforschung GmbH // Planckstr. 1, 64291 Darmstadt, Germany // Contact: http://go4.gsi.de //----------------------------------------------------------------------- // This software can be used under the license agreements as stated // in Go4License.txt file which is part of the distribution. //----------------------------------------------------------------------- #include "TGo4MbsSubEvent.h" #include "TGo4Log.h" #include "TGo4MbsSource.h" #include "TGo4Log.h" #include "Go4Exceptions.h" TGo4MbsSubEvent::TGo4MbsSubEvent() : TGo4EventElement(), fbIsFilled(kFALSE), fbIsDataOwner(kTRUE), fxHeader(), fiAllocLen(0), fiData(0) { GO4TRACE((12,"TGo4MbstSubEvent::TGo4MbsSubEvent()",__LINE__, __FILE__)); //TGo4Log::Info( "MBS SubEvent default ctor."); } TGo4MbsSubEvent::TGo4MbsSubEvent(Int_t datasize) : TGo4EventElement(), fbIsFilled(kFALSE), fbIsDataOwner(kTRUE), fxHeader(), fiAllocLen(0), fiData(0) { GO4TRACE((12,"TGo4MbsSubEvent::TGo4MbsSubEvent(UInt_t)",__LINE__, __FILE__)); //TGo4Log::Info( "MBS SubEvent normal ctor."); if(fbIsDataOwner) { fiData = new Int_t[datasize]; fiAllocLen = datasize; for(Int_t t=0; t>16) & 0xffff), (unsigned) (*pl_data & 0xffff)); else printf("%8u ", (unsigned) *pl_data); pl_data++; if(l%8 == 7) printf("\n"); } if (ll%8 != 0) printf("\n"); } else { /* In this case we assume data as two words per channel */ for(Int_t l=0;l>16)&0xffff)); else printf("%8u%8u", (unsigned) (*pl_data&0xffff), (unsigned) ((*pl_data>>16)&0xffff)); pl_data++; if(l%4 == 3) printf("\n"); } if(ll%4 != 0) printf("\n"); } } void TGo4MbsSubEvent::Set(Int_t dlen, Short_t type, Short_t subtype, Short_t procid, Char_t subcrate, Char_t ctrl) { SetDlen(dlen); SetType(type); SetSubtype(subtype); //SetProcid(procid); do not change procid and identifiers!! //SetSubcrate(subcrate); //SetControl(ctrl); } void TGo4MbsSubEvent::Clear(Option_t *t) { GO4TRACE((11,"TGo4MbsSubEvent::Clear()",__LINE__, __FILE__)); fbIsFilled = kFALSE; if(fbIsDataOwner && (fiData!=0)) { // clear array of data Int_t dleng = GetDlen(); if(dleng==0) dleng=2; // default value for dleng is not zero!! // only clear regions which were used by the previous fill... //std::cout <<"Mbssubevent::Clear: dlen=" << dleng << std::endl; Int_t fieldlength = (dleng-2) / TGo4MbsSource::fguLONGBYSHORT ; // field is Int_t if(fieldlength>fiAllocLen) fieldlength=fiAllocLen; if(fieldlength==0) fiData[0]=0; // clear in case of zero subevents! for(Int_t t=0; t