29 TLeafO::TLeafO(): TLeaf()
35 fLenType =
sizeof(Bool_t);
41 TLeafO::TLeafO(TBranch *parent,
const char *name,
const char *type)
42 : TLeaf(parent,name,type)
44 fLenType =
sizeof(Bool_t);
56 if (ResetAddress(0,kTRUE))
delete [] fValue;
62 void TLeafO::Export(TClonesArray *list, Int_t n)
65 for (Int_t i=0;i<n;i++) {
66 memcpy((
char*)list->UncheckedAt(i) + fOffset,&fValue[j], fLen);
74 void TLeafO::FillBasket(TBuffer &b)
77 if (fPointer) fValue = *fPointer;
79 if (fValue[0] > fMaximum) fMaximum = fValue[0];
81 b.WriteFastArray(fValue,len);
87 const char *TLeafO::GetTypeName()
const
95 Bool_t TLeafO::IncludeRange(TLeaf *input)
98 if (input->GetMaximum() > this->GetMaximum())
99 this->SetMaximum( input->GetMaximum() );
100 if (input->GetMinimum() < this->GetMinimum())
101 this->SetMinimum( input->GetMinimum() );
111 void TLeafO::Import(TClonesArray *list, Int_t n)
114 for (Int_t i=0;i<n;i++) {
115 memcpy(&fValue[j],(
char*)list->UncheckedAt(i) + fOffset, fLen);
123 void TLeafO::PrintValue(Int_t l)
const
125 char *value = (
char*)GetValuePointer();
126 printf(
"%d",(Int_t)value[l]);
132 void TLeafO::ReadBasket(TBuffer &b)
134 if (!fLeafCount && fNdata == 1) {
135 b.ReadBool(fValue[0]);
138 Long64_t entry = fBranch->GetReadEntry();
139 if (fLeafCount->GetBranch()->GetReadEntry() != entry) {
140 fLeafCount->GetBranch()->GetEntry(entry);
142 Int_t len = Int_t(fLeafCount->GetValue());
143 if (len > fLeafCount->GetMaximum()) {
144 printf(
"ERROR leaf:%s, len=%d and max=%d\n",GetName(),len,fLeafCount->GetMaximum());
145 len = fLeafCount->GetMaximum();
148 b.ReadFastArray(fValue,len*fLen);
150 b.ReadFastArray(fValue,fLen);
159 void TLeafO::ReadBasketExport(TBuffer &b, TClonesArray *list, Int_t n)
161 b.ReadFastArray(fValue,n*fLen);
164 for (Int_t i=0;i<n;i++) {
165 memcpy((
char*)list->UncheckedAt(i) + fOffset,&fValue[j], fLen);
173 void TLeafO::ReadValue(std::istream &s, Char_t )
175 char *value = (
char*)GetValuePointer();
182 void TLeafO::SetAddress(
void *add)
184 if (ResetAddress(add)) {
188 if (TestBit(kIndirectAddress)) {
189 fPointer = (Bool_t**) add;
190 Int_t ncountmax = fLen;
191 if (fLeafCount) ncountmax = fLen*(fLeafCount->GetMaximum() + 1);
192 if ((fLeafCount && ncountmax > Int_t(fLeafCount->GetValue())) ||
193 ncountmax > fNdata || *fPointer == 0) {
194 if (*fPointer)
delete [] *fPointer;
195 if (ncountmax > fNdata) fNdata = ncountmax;
196 *fPointer =
new Bool_t[fNdata];
200 fValue = (Bool_t*)add;
203 fValue =
new Bool_t[fNdata];