Skip to content

Commit 11e520c

Browse files
committed
feat(califa): Add (optional) new parameter ToT eff.
feat(califa): Thresholds for simulations changed from Int_t to Float_t. feat(califa): Add ToT efficiency in the digitizer.
1 parent 00d3faf commit 11e520c

3 files changed

Lines changed: 35 additions & 14 deletions

File tree

califa/pars/R3BCalifaCrystalPars4Sim.cxx

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,14 @@
1111

1212
R3BCalifaCrystalPars4Sim::R3BCalifaCrystalPars4Sim(const char* name, const char* title, const char* context)
1313
: FairParGenericSet(name, title, context)
14-
, fNumCrystals(4864)
15-
, fNumParams4Sim(3) /* Crystal ID & Reso & Threshold */
14+
, fNumCrystals(5088)
15+
, fNumParams4Sim(4) /* Crystal ID & Reso & Threshold & ToTEff */
1616
{
1717

1818
fCrystalIDArray = new TArrayI(fNumCrystals);
19-
fThresholdArray = new TArrayI(fNumCrystals);
19+
fThresholdArray = new TArrayF(fNumCrystals);
2020
fResolutionArray = new TArrayF(fNumCrystals);
21+
fEffToTArray = new TArrayF(fNumCrystals);
2122
}
2223

2324
R3BCalifaCrystalPars4Sim::~R3BCalifaCrystalPars4Sim()
@@ -28,6 +29,8 @@ R3BCalifaCrystalPars4Sim::~R3BCalifaCrystalPars4Sim()
2829
delete fThresholdArray;
2930
if (fResolutionArray)
3031
delete fResolutionArray;
32+
if (fEffToTArray)
33+
delete fEffToTArray;
3134
}
3235

3336
void R3BCalifaCrystalPars4Sim::clear()
@@ -53,6 +56,9 @@ void R3BCalifaCrystalPars4Sim::putParams(FairParamList* list)
5356
fResolutionArray->Set(fNumCrystals);
5457
list->add("califaResolutionPar", *fResolutionArray);
5558

59+
fEffToTArray->Set(fNumCrystals);
60+
list->add("califaEffToTPar", *fEffToTArray);
61+
5662
list->add("califaCrystalNumberPar", fNumCrystals);
5763
list->add("califaNumPars4SimPar", fNumParams4Sim);
5864
}
@@ -96,6 +102,14 @@ Bool_t R3BCalifaCrystalPars4Sim::getParams(FairParamList* list)
96102
return kFALSE;
97103
}
98104

105+
fEffToTArray->Set(fNumCrystals);
106+
if (!(list->fill("califaToTEffPar", fEffToTArray)))
107+
{
108+
LOG(info) << "---Could not initialize califaToTEffPar. Set to 1 by default.";
109+
for (int i = 0; i < fNumCrystals; i++)
110+
fEffToTArray->SetAt(1., i);
111+
}
112+
99113
return kTRUE;
100114
}
101115

@@ -107,12 +121,13 @@ void R3BCalifaCrystalPars4Sim::printParams()
107121
<< " "
108122
<< "Threshold"
109123
<< " "
110-
<< "Resolution";
124+
<< "Resolution"
125+
<< " "
126+
<< "ToT Efficiency";
111127

112128
for (Int_t i = 0; i < fNumCrystals; i++)
113-
114129
{
115130
LOG(info) << i + 1 << " " << fCrystalIDArray->GetAt(i) << " " << fThresholdArray->GetAt(i) << " "
116-
<< fResolutionArray->GetAt(i);
131+
<< fResolutionArray->GetAt(i) << " " << fEffToTArray->GetAt(i);
117132
}
118133
}

califa/pars/R3BCalifaCrystalPars4Sim.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
#ifndef R3BCALIFACRYSTALPARS4SIM_H
2-
#define R3BCALIFACRYSTALPARS4SIM_H
1+
#pragma once
32

43
#include "FairParGenericSet.h"
54

@@ -42,7 +41,8 @@ class R3BCalifaCrystalPars4Sim : public FairParGenericSet
4241
const Int_t GetNumParameters4Sim() { return fNumParams4Sim; }
4342

4443
const Float_t GetResolution(Int_t crystal) { return fResolutionArray->GetAt(crystal - 1); }
45-
const Int_t GetThreshold(Int_t crystal) { return fThresholdArray->GetAt(crystal - 1); }
44+
const Float_t GetThreshold(Int_t crystal) { return fThresholdArray->GetAt(crystal - 1); }
45+
const Float_t GetTotEff(Int_t crystal) { return fEffToTArray->GetAt(crystal - 1); }
4646

4747
const Bool_t GetInUse(Int_t crystal)
4848
{
@@ -60,8 +60,9 @@ class R3BCalifaCrystalPars4Sim : public FairParGenericSet
6060
private:
6161
/* Simulation Parameters of Crystals */
6262
TArrayI* fCrystalIDArray;
63-
TArrayI* fThresholdArray;
63+
TArrayF* fThresholdArray;
6464
TArrayF* fResolutionArray;
65+
TArrayF* fEffToTArray;
6566

6667
Int_t fNumCrystals; /* Number of crystals */
6768
Int_t fNumParams4Sim; /* Number of Simulation parameters in the Sim (CrystalID, Resolution, Threshold, NonUni...) */
@@ -72,5 +73,3 @@ class R3BCalifaCrystalPars4Sim : public FairParGenericSet
7273

7374
ClassDef(R3BCalifaCrystalPars4Sim, 1);
7475
};
75-
76-
#endif

califa/sim/R3BCalifaDigitizer.cxx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -246,8 +246,9 @@ void R3BCalifaDigitizer::FillRealConfig(int nCrystalCals)
246246
double tempNf = 0;
247247
double tempNs = 0;
248248
int tempCryID = 0;
249-
int parThres = 0;
249+
double parThres = 0;
250250
bool inUse = false;
251+
double ToTeff = 0;
251252

252253
for (int i = 0; i < nCrystalCals; i++)
253254
{
@@ -257,8 +258,14 @@ void R3BCalifaDigitizer::FillRealConfig(int nCrystalCals)
257258
inUse = fSim_Par->GetInUse(tempCryID - 1);
258259
fResolution = fSim_Par->GetResolution(tempCryID - 1);
259260
parThres = fSim_Par->GetThreshold(tempCryID - 1);
261+
ToTeff = fSim_Par->GetTotEff(tempCryID - 1);
260262

261-
if (inUse && parThres < tempE * 1000.)
263+
// Metropolis-like algorithm to apply ToT efficiencies
264+
// (if not ToT efficiencies are provided, default values are
265+
// set to 1 so no correction by these unefficiencies is performed).
266+
double randValue = gRandom->Uniform(0, 1);
267+
268+
if (inUse && parThres < tempE * 1000. && randValue < ToTeff)
262269
{ // Thresholds are in KeV!!
263270

264271
(dynamic_cast<R3BCalifaCrystalCalData*>(fCalifaCryCalDataCA->At(i)))->SetEnergy(ExpResSmearing(tempE));

0 commit comments

Comments
 (0)