ROOT logo
//*-- Modified : 03.12.2009 Ilse Koenig

//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////////////////////
//
//  HStart2Raw
//
//  Unpacked TRB raw data of the START detector using the TRB for readout
//
//  The class accepts up to 10 (START2_MAX_MULT) hits per channel, each with
//    time and width. If the number of hits exceeds max, the hit counter
//    will be incremeted, but no data are stored for these hits.
//
/////////////////////////////////////////////////////////////////////////////

#include "hstart2raw.h"
#include "TBuffer.h"

ClassImp(HStart2Raw)

Float_t HStart2Raw::getTime(const Int_t n) const
{
   // Returns the time of the nth hit
   switch (n) {
      case 1:
         return fTime1;
      case 2:
         return fTime2;
      case 3:
         return fTime3;
      case 4:
         return fTime4;
      case 5:
         return fTime5;
      case 6:
         return fTime6;
      case 7:
         return fTime7;
      case 8:
         return fTime8;
      case 9:
         return fTime9;
      case 10:
         return fTime10;
      default:
         Error("getTime()", "hit number: %i out of range [1,%i]", n,STARTRAWMAX);
         return -1.;
   }
}

Float_t HStart2Raw::getWidth(const Int_t n) const
{
   // Returns the width of the nth hit
   switch (n) {
      case 1:
         return fWidth1;
      case 2:
         return fWidth2;
      case 3:
         return fWidth3;
      case 4:
         return fWidth4;
      case 5:
         return fWidth5;
      case 6:
         return fWidth6;
      case 7:
         return fWidth7;
      case 8:
         return fWidth8;
      case 9:
         return fWidth9;
      case 10:
         return fWidth10;
      default:
         Error("getWidht()", "hit number: %i out of range [1,%i]", n,STARTRAWMAX);
         return -1.;
   }
}

void HStart2Raw::getTimeAndWidth(const Int_t n, Float_t& time, Float_t& width)
{
   // Returns the time and width of the nth hit
   switch (n) {
      case 1:
         time  = fTime1;
         width = fWidth1;
         return;
      case 2:
         time  = fTime2;
         width = fWidth2;
         return;
      case 3:
         time  = fTime3;
         width = fWidth3;
         return;
      case 4:
         time  = fTime4;
         width = fWidth4;
         return;
      case 5:
         time  = fTime5;
         width = fWidth5;
         return;
      case 6:
         time  = fTime6;
         width = fWidth6;
         return;
      case 7:
         time  = fTime7;
         width = fWidth7;
         return;
      case 8:
         time  = fTime8;
         width = fWidth8;
         return;
      case 9:
         time  = fTime9;
         width = fWidth9;
         return;
      case 10:
         time  = fTime10;
         width = fWidth10;
         return;
      default:
         Error("getTimeAndWidth", "hit number: %i out of range [1,%i]", n,STARTRAWMAX);
         time  = -1.;
         width = -1.;
         return;
   }
}

Bool_t HStart2Raw::setTimeAndWidth(const Float_t time, const Float_t width)
{
   // Stores the given time and width in the next data element time* and width*
   // and sets the multiplicity.
   // Return kFALSE if max hits are already stored.

   switch (fMultiplicity) {
      case 0:
         fTime1  = time;
         fWidth1 = width;
         ++fMultiplicity;
         return kTRUE;
      case 1:
         fTime2  = time;
         fWidth2 = width;
         ++fMultiplicity;
         return kTRUE;
      case 2:
         fTime3  = time;
         fWidth3 = width;
         ++fMultiplicity;
         return kTRUE;
      case 3:
         fTime4  = time;
         fWidth4 = width;
         ++fMultiplicity;
         return kTRUE;
      case 4:
         fTime5  = time;
         fWidth5 = width;
         ++fMultiplicity;
         return kTRUE;
      case 5:
         fTime6  = time;
         fWidth6 = width;
         ++fMultiplicity;
         return kTRUE;
      case 6:
         fTime7  = time;
         fWidth7 = width;
         ++fMultiplicity;
         return kTRUE;
      case 7:
         fTime8  = time;
         fWidth8 = width;
         ++fMultiplicity;
         return kTRUE;
      case 8:
         fTime9  = time;
         fWidth9 = width;
         ++fMultiplicity;
         return kTRUE;
      case 9:
         fTime10  = time;
         fWidth10 = width;
         ++fMultiplicity;
         return kTRUE;
      default:
         if (fMultiplicity >= STARTRAWMAX) {
            ++fMultiplicity;
         }
         return kFALSE;
   }
}

void HStart2Raw::Streamer(TBuffer &R__b)
{
   // Stream an object of class HStart2Raw.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> fMultiplicity;
      R__b >> fModule;
      R__b >> fStrip;
      R__b >> fTime1;
      R__b >> fWidth1;
      R__b >> fTime2;
      R__b >> fWidth2;
      R__b >> fTime3;
      R__b >> fWidth3;
      R__b >> fTime4;
      R__b >> fWidth4;

      if(R__v > 4){
	  R__b >> fTime5;
	  R__b >> fWidth5;
	  R__b >> fTime6;
	  R__b >> fWidth6;
	  R__b >> fTime7;
	  R__b >> fWidth7;
	  R__b >> fTime8;
	  R__b >> fWidth8;
	  R__b >> fTime9;
	  R__b >> fWidth9;
	  R__b >> fTime10;
	  R__b >> fWidth10;

      } else {
         fTime5=fTime6=fTime7=fTime8=fTime9=fTime10=-1000000.;
         fWidth5=fWidth6=fWidth7=fWidth8=fWidth9=fWidth10=-1000000.;
      }
      R__b.CheckByteCount(R__s, R__c, HStart2Raw::IsA());
   } else {
      R__c = R__b.WriteVersion(HStart2Raw::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b << fMultiplicity;
      R__b << fModule;
      R__b << fStrip;
      R__b << fTime1;
      R__b << fWidth1;
      R__b << fTime2;
      R__b << fWidth2;
      R__b << fTime3;
      R__b << fWidth3;
      R__b << fTime4;
      R__b << fWidth4;
      R__b << fTime5;
      R__b << fWidth5;
      R__b << fTime6;
      R__b << fWidth6;
      R__b << fTime7;
      R__b << fWidth7;
      R__b << fTime8;
      R__b << fWidth8;
      R__b << fTime9;
      R__b << fWidth9;
      R__b << fTime10;
      R__b << fWidth10;
      R__b.SetByteCount(R__c, kTRUE);
   }
}
 hstart2raw.cc:1
 hstart2raw.cc:2
 hstart2raw.cc:3
 hstart2raw.cc:4
 hstart2raw.cc:5
 hstart2raw.cc:6
 hstart2raw.cc:7
 hstart2raw.cc:8
 hstart2raw.cc:9
 hstart2raw.cc:10
 hstart2raw.cc:11
 hstart2raw.cc:12
 hstart2raw.cc:13
 hstart2raw.cc:14
 hstart2raw.cc:15
 hstart2raw.cc:16
 hstart2raw.cc:17
 hstart2raw.cc:18
 hstart2raw.cc:19
 hstart2raw.cc:20
 hstart2raw.cc:21
 hstart2raw.cc:22
 hstart2raw.cc:23
 hstart2raw.cc:24
 hstart2raw.cc:25
 hstart2raw.cc:26
 hstart2raw.cc:27
 hstart2raw.cc:28
 hstart2raw.cc:29
 hstart2raw.cc:30
 hstart2raw.cc:31
 hstart2raw.cc:32
 hstart2raw.cc:33
 hstart2raw.cc:34
 hstart2raw.cc:35
 hstart2raw.cc:36
 hstart2raw.cc:37
 hstart2raw.cc:38
 hstart2raw.cc:39
 hstart2raw.cc:40
 hstart2raw.cc:41
 hstart2raw.cc:42
 hstart2raw.cc:43
 hstart2raw.cc:44
 hstart2raw.cc:45
 hstart2raw.cc:46
 hstart2raw.cc:47
 hstart2raw.cc:48
 hstart2raw.cc:49
 hstart2raw.cc:50
 hstart2raw.cc:51
 hstart2raw.cc:52
 hstart2raw.cc:53
 hstart2raw.cc:54
 hstart2raw.cc:55
 hstart2raw.cc:56
 hstart2raw.cc:57
 hstart2raw.cc:58
 hstart2raw.cc:59
 hstart2raw.cc:60
 hstart2raw.cc:61
 hstart2raw.cc:62
 hstart2raw.cc:63
 hstart2raw.cc:64
 hstart2raw.cc:65
 hstart2raw.cc:66
 hstart2raw.cc:67
 hstart2raw.cc:68
 hstart2raw.cc:69
 hstart2raw.cc:70
 hstart2raw.cc:71
 hstart2raw.cc:72
 hstart2raw.cc:73
 hstart2raw.cc:74
 hstart2raw.cc:75
 hstart2raw.cc:76
 hstart2raw.cc:77
 hstart2raw.cc:78
 hstart2raw.cc:79
 hstart2raw.cc:80
 hstart2raw.cc:81
 hstart2raw.cc:82
 hstart2raw.cc:83
 hstart2raw.cc:84
 hstart2raw.cc:85
 hstart2raw.cc:86
 hstart2raw.cc:87
 hstart2raw.cc:88
 hstart2raw.cc:89
 hstart2raw.cc:90
 hstart2raw.cc:91
 hstart2raw.cc:92
 hstart2raw.cc:93
 hstart2raw.cc:94
 hstart2raw.cc:95
 hstart2raw.cc:96
 hstart2raw.cc:97
 hstart2raw.cc:98
 hstart2raw.cc:99
 hstart2raw.cc:100
 hstart2raw.cc:101
 hstart2raw.cc:102
 hstart2raw.cc:103
 hstart2raw.cc:104
 hstart2raw.cc:105
 hstart2raw.cc:106
 hstart2raw.cc:107
 hstart2raw.cc:108
 hstart2raw.cc:109
 hstart2raw.cc:110
 hstart2raw.cc:111
 hstart2raw.cc:112
 hstart2raw.cc:113
 hstart2raw.cc:114
 hstart2raw.cc:115
 hstart2raw.cc:116
 hstart2raw.cc:117
 hstart2raw.cc:118
 hstart2raw.cc:119
 hstart2raw.cc:120
 hstart2raw.cc:121
 hstart2raw.cc:122
 hstart2raw.cc:123
 hstart2raw.cc:124
 hstart2raw.cc:125
 hstart2raw.cc:126
 hstart2raw.cc:127
 hstart2raw.cc:128
 hstart2raw.cc:129
 hstart2raw.cc:130
 hstart2raw.cc:131
 hstart2raw.cc:132
 hstart2raw.cc:133
 hstart2raw.cc:134
 hstart2raw.cc:135
 hstart2raw.cc:136
 hstart2raw.cc:137
 hstart2raw.cc:138
 hstart2raw.cc:139
 hstart2raw.cc:140
 hstart2raw.cc:141
 hstart2raw.cc:142
 hstart2raw.cc:143
 hstart2raw.cc:144
 hstart2raw.cc:145
 hstart2raw.cc:146
 hstart2raw.cc:147
 hstart2raw.cc:148
 hstart2raw.cc:149
 hstart2raw.cc:150
 hstart2raw.cc:151
 hstart2raw.cc:152
 hstart2raw.cc:153
 hstart2raw.cc:154
 hstart2raw.cc:155
 hstart2raw.cc:156
 hstart2raw.cc:157
 hstart2raw.cc:158
 hstart2raw.cc:159
 hstart2raw.cc:160
 hstart2raw.cc:161
 hstart2raw.cc:162
 hstart2raw.cc:163
 hstart2raw.cc:164
 hstart2raw.cc:165
 hstart2raw.cc:166
 hstart2raw.cc:167
 hstart2raw.cc:168
 hstart2raw.cc:169
 hstart2raw.cc:170
 hstart2raw.cc:171
 hstart2raw.cc:172
 hstart2raw.cc:173
 hstart2raw.cc:174
 hstart2raw.cc:175
 hstart2raw.cc:176
 hstart2raw.cc:177
 hstart2raw.cc:178
 hstart2raw.cc:179
 hstart2raw.cc:180
 hstart2raw.cc:181
 hstart2raw.cc:182
 hstart2raw.cc:183
 hstart2raw.cc:184
 hstart2raw.cc:185
 hstart2raw.cc:186
 hstart2raw.cc:187
 hstart2raw.cc:188
 hstart2raw.cc:189
 hstart2raw.cc:190
 hstart2raw.cc:191
 hstart2raw.cc:192
 hstart2raw.cc:193
 hstart2raw.cc:194
 hstart2raw.cc:195
 hstart2raw.cc:196
 hstart2raw.cc:197
 hstart2raw.cc:198
 hstart2raw.cc:199
 hstart2raw.cc:200
 hstart2raw.cc:201
 hstart2raw.cc:202
 hstart2raw.cc:203
 hstart2raw.cc:204
 hstart2raw.cc:205
 hstart2raw.cc:206
 hstart2raw.cc:207
 hstart2raw.cc:208
 hstart2raw.cc:209
 hstart2raw.cc:210
 hstart2raw.cc:211
 hstart2raw.cc:212
 hstart2raw.cc:213
 hstart2raw.cc:214
 hstart2raw.cc:215
 hstart2raw.cc:216
 hstart2raw.cc:217
 hstart2raw.cc:218
 hstart2raw.cc:219
 hstart2raw.cc:220
 hstart2raw.cc:221
 hstart2raw.cc:222
 hstart2raw.cc:223
 hstart2raw.cc:224
 hstart2raw.cc:225
 hstart2raw.cc:226
 hstart2raw.cc:227
 hstart2raw.cc:228
 hstart2raw.cc:229
 hstart2raw.cc:230
 hstart2raw.cc:231
 hstart2raw.cc:232
 hstart2raw.cc:233
 hstart2raw.cc:234
 hstart2raw.cc:235
 hstart2raw.cc:236
 hstart2raw.cc:237
 hstart2raw.cc:238
 hstart2raw.cc:239
 hstart2raw.cc:240
 hstart2raw.cc:241
 hstart2raw.cc:242
 hstart2raw.cc:243
 hstart2raw.cc:244
 hstart2raw.cc:245
 hstart2raw.cc:246
 hstart2raw.cc:247
 hstart2raw.cc:248
 hstart2raw.cc:249
 hstart2raw.cc:250
 hstart2raw.cc:251
 hstart2raw.cc:252
 hstart2raw.cc:253
 hstart2raw.cc:254
 hstart2raw.cc:255
 hstart2raw.cc:256
 hstart2raw.cc:257
 hstart2raw.cc:258
 hstart2raw.cc:259
 hstart2raw.cc:260
 hstart2raw.cc:261
 hstart2raw.cc:262
 hstart2raw.cc:263
 hstart2raw.cc:264
 hstart2raw.cc:265