StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
StFileI.cxx
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include <assert.h>
5 #include "StFileI.h"
6 
7 ClassImp(StFileI)
8 //______________________________________________________________________________
9 StUKey::StUKey(const char *name,UInt_t *uk,int nk)
10 {
11  if (name) SetName(name);
12  SetUrr(uk,nk);
13 }
14 //______________________________________________________________________________
15 StUKey::StUKey(const char *name,UInt_t uk)
16 {
17  if (name) SetName(name);
18  SetUrr(&uk,1);
19 }
20 //______________________________________________________________________________
21 StUKey::StUKey(UInt_t uRun,UInt_t uEvent)
22 {
23  UInt_t u[2]; u[0]=uRun; u[1]=uEvent;
24  int n = 1; if (u[1]) n=2;
25  SetUrr(u,n);
26 }
27 //______________________________________________________________________________
28 void StUKey::SetUrr(const UInt_t *uk,int nk)
29 {
30  int n;
31  fNUrr = 1;
32  fUrr[0] = 0;
33  if (!uk) return;
34  for (n=1;n<nk && uk[n]; n++){}
35  fNUrr = n;
36  memcpy(fUrr,uk,nk*sizeof(UInt_t));
37 }
38 //______________________________________________________________________________
39 StUKey &StUKey::operator=( const StUKey &from)
40 {
41  SetName(from.GetName());
42  SetUrr(from.fUrr,from.fNUrr);
43  return *this;
44 }
45 //______________________________________________________________________________
46 StUKey &StUKey::operator=( UInt_t from)
47 {
48  SetUrr(&from,1);
49  return *this;
50 }
51 //______________________________________________________________________________
52 StUKey &StUKey::operator=( const char *from)
53 {
54  SetName(from);
55  return *this;
56 }
57 //______________________________________________________________________________
58 void StUKey::Update( const StUKey &from, const char *name)
59 {
60  SetUrr(from.fUrr,from.fNUrr);
61  if (name) SetName(name);
62 }
63 //______________________________________________________________________________
64 TString StUKey::GetKey() const
65 {
66  char ubuf[12];
67  TString tk(fName);
68  for (int i=0;i<fNUrr;i++){
69  tk +=".";
70  sprintf(ubuf,"%010u",fUrr[i]);
71  tk +=ubuf;}
72  return tk;
73 }
74 //______________________________________________________________________________
75 void StUKey::SetKey(const char *key)
76 {
77  const char *cc;
78  int n = strchr(key,'.') - key;
79  assert(n>0 && n<100);
80  fName.Replace(0,999,key,n);
81  for (fNUrr = 0,cc=key+n;*cc=='.'; cc+=11)
82  fUrr[fNUrr++] = strtoul(cc+1,0,10);
83 }
84 //______________________________________________________________________________
85 UInt_t StUKey::GetSum() const
86 {
87  UInt_t s = fUrr[0];
88  for (int i=1;i<fNUrr;i++) s^=fUrr[i];
89  return s;
90 }
91 //______________________________________________________________________________
92 StUKey StFileI::GetNextEvent()
93 {
94  UInt_t u[9] = {0,0,0,0,0,0,0,0,0};
95  int ret = GetNextEvent(u);
96  if (ret) u[0]=kUMAX;
97  StUKey uk(0,u,9);
98  return uk;
99 }
100 
Definition: StFileI.h:13