Skip to content

Commit 8aa8355

Browse files
Merge pull request #12 from VinzenzBildstein/master
Added correct CFD values
2 parents 1d5e865 + 88bc421 commit 8aa8355

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

Converter.cc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,36 @@ Converter::~Converter() {
118118
}
119119
}
120120

121+
int Converter::Cfd(TMnemonic::EDigitizer digitizer)
122+
{
123+
switch(digitizer) {
124+
case TMnemonic::EDigitizer::kGRF16:
125+
// cfd is in 10/16th of a nanosecond, and replaces the lowest 18 bit of timestamp
126+
// so multiply the time by 16e8, and use only the lowest 22 bit
127+
return static_cast<int>(fTime*16e8)&0x3fffff;
128+
case TMnemonic::EDigitizer::kGRF4G:
129+
{
130+
// calculate cfd (0 - 8 ns) in 1/256 ns
131+
int cfd = fTime*256e9;
132+
cfd = cfd%1024;//1024 = 256 steps for 0 - 8 ns
133+
// calculate remainder between 8 ns timestamp and 10 ns timestamp
134+
int rem = fTime*1e9;
135+
rem = rem%40;
136+
if(rem < 8) rem = 0;
137+
else if(rem < 16) rem = 8;
138+
else if(rem < 24) rem = 6;
139+
else if(rem < 32) rem = 4;
140+
else rem = 2;
141+
return (rem << 22) | cfd;
142+
}
143+
case TMnemonic::EDigitizer::kTIG10:
144+
// cfd is in 10/16th of a nanosecond, and replaces the lowest 23 bit of timestamp
145+
return static_cast<int>(fTime*16e8)&0x7ffffff;
146+
default:
147+
return 0;
148+
}
149+
}
150+
121151
bool Converter::Run() {
122152
int status;
123153
int eventNumber = 0;
@@ -245,35 +275,42 @@ bool Converter::Run() {
245275
switch(fSystemID) {
246276
case 1000://griffin
247277
mnemonic = Form("GRG%02d%cN00A", fDetNumber, crystalColor[fCryNumber]);
278+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
248279
break;
249280
case 1010://left extension suppressor
250281
case 1020://right extension suppressor
251282
case 1030://left casing suppressor
252283
case 1040://right casing suppressor
253284
case 1050://back suppressor
254285
mnemonic = Form("GRS%02d%cN00A", fDetNumber, crystalColor[fCryNumber]);
286+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
255287
break;
256288
case 2000://LABr
257289
mnemonic = Form("DAL%02dXN00X", fDetNumber);
290+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
258291
break;
259292
case 3000://ancilliary BGO
260293
mnemonic = Form("DAS%02dXN00X", fDetNumber);
294+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
261295
break;
262296
case 5000://SCEPTAR
263297
mnemonic = Form("SEP%02dXN00X", fDetNumber);
298+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
264299
break;
265300
case 10://SPICE
266301
mnemonic = Form("SPI%02dXN%0dX", fDetNumber, fCryNumber);//TODO: fix SPICE mnemonic
267302
break;
268303
case 50://PACES
269304
mnemonic = Form("PAC%02dXN00A", fDetNumber);
305+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF16));
270306
break;
271307
case 8010://blue
272308
case 8020://green
273309
case 8030://red
274310
case 8040://white
275311
case 8050://yellow
276312
mnemonic = Form("DSC%02dXN00X", fDetNumber);
313+
fFragments[address].SetCfd(Cfd(TMnemonic::EDigitizer::kGRF4G));
277314
break;
278315
default:
279316
std::cerr<<"Sorry, unknown system ID "<<fSystemID<<std::endl;

Converter.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public:
2929
bool Run();
3030

3131
private:
32+
int Cfd(TMnemonic::EDigitizer);
3233
bool AboveThreshold(double, int);
3334
bool InsideTimeWindow();
3435
bool DescantNeutronDiscrimination();

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,4 @@ tar:
8585
# -------------------- clean --------------------
8686

8787
clean:
88-
rm -f $(NAME) lib$(NAME).so *.o $(NAME)Dictionary.cc $(NAME)Dictionary.h
88+
@rm -f $(NAME) lib$(NAME).so *.o $(NAME)Dictionary.cc $(NAME)Dictionary.h

0 commit comments

Comments
 (0)