Commit d8ee7a8d authored by Norbert Herrmann's avatar Norbert Herrmann
Browse files

introduce tracking station assignment to tof counters

parent 560ad9df
......@@ -38,11 +38,13 @@ ClassImp(CbmTofDigiBdfPar)
, fdDeadtime(5.0)
, fdSignalPropSpeed(0.0)
, fiNbSmTypes(0)
, fiNbTrackingStations(0)
, fiNbSm()
, fiNbRpc()
, fiNbGaps()
, fdGapSize()
, fdSigVel()
, fiTrkStation()
, fiNbCh()
, fiChType()
, fiChOrientation()
......@@ -109,6 +111,8 @@ void CbmTofDigiBdfPar::putParams(FairParamList* l) {
l->add(Form("GapSize%03d", iSmType), fdGapSize[iSmType]);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++)
l->add(Form("SigVel%03d", iSmType), fdSigVel[iSmType]);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++)
l->add(Form("TrkStation%03d", iSmType), fiTrkStation[iSmType]);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++)
l->add(Form("NbCh%03d", iSmType), fiNbCh[iSmType]);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++)
......@@ -224,6 +228,23 @@ Bool_t CbmTofDigiBdfPar::getParams(FairParamList* l) {
} // for( Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType ++)
fiTrkStation.resize(fiNbSmTypes);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++) {
fiTrkStation[iSmType].Set(fiNbSm[iSmType] * fiNbRpc[iSmType]);
if (!l->fill(Form("TrkStation%03d", iSmType), &(fiTrkStation[iSmType]))) {
LOG(info) << "CbmTofDigiBdfPar::getParams => parameter "
<< Form("TrkStation%03d", iSmType)
<< " not found in the text file. "
<< "Initialized to 0 ";
for (Int_t iRpc = 0; iRpc < fiNbSm[iSmType] * fiNbRpc[iSmType]; iRpc++)
fiTrkStation[iSmType].SetAt(0, iRpc);
//return kFALSE;
} // if ( ! l->fill( Form("SigVel%03d", iSmType), &(fdSigVel[iSmType]) ) )
for (Int_t iRpc = 0; iRpc < fiNbSm[iSmType] * fiNbRpc[iSmType]; iRpc++)
fiNbTrackingStations =
TMath::Max(fiNbTrackingStations, fiTrkStation[iSmType][iRpc] + 1);
} // for( Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType ++)
fiNbCh.resize(fiNbSmTypes);
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++) {
fiNbCh[iSmType].Set(fiNbRpc[iSmType]);
......@@ -567,6 +588,18 @@ void CbmTofDigiBdfPar::SetSigVel(Int_t iSmType,
LOG(error) << "Invalid SMType " << iSmType;
}
}
Int_t CbmTofDigiBdfPar::GetTrackingStation(Int_t iSmType,
Int_t iSm,
Int_t iRpc) const {
if (iSmType < fiNbSmTypes) {
if (iSm < fiNbSm[iSmType] && iRpc < fiNbRpc[iSmType])
return fiTrkStation[iSmType][iSm * fiNbRpc[iSmType] + iRpc];
else
return 0.0;
} // if( iSmType < fiNbSmTypes )
else
return 0.0;
}
Int_t CbmTofDigiBdfPar::GetNbChan(Int_t iSmType, Int_t iRpc) const {
if (iSmType < fiNbSmTypes) {
if (iRpc < fiNbRpc[iSmType])
......@@ -711,6 +744,7 @@ void CbmTofDigiBdfPar::printParams() {
TString* sChNb = new TString[fiNbSmTypes];
TString* sChType = new TString[fiNbSmTypes];
TString* sChOrient = new TString[fiNbSmTypes];
TString* sTrkStation = new TString[fiNbSmTypes];
for (Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType++) {
sSmNb += Form("%3d ", GetNbSm(iSmType));
......@@ -720,7 +754,10 @@ void CbmTofDigiBdfPar::printParams() {
sSigVel[iSmType] = Form(" SigVel(cm/ps) in SM type %3d:|-> ", iSmType);
sChNb[iSmType] = Form(" Nb of Chan in SM type %3d:|-> ", iSmType);
sChType[iSmType] = Form(" Chan Type in SM type %3d:|-> ", iSmType);
sChOrient[iSmType] = Form(" Chan orient. in SM type %3d:|-> ", iSmType);
sChOrient[iSmType] =
Form(" Chan Orientation in SM type %3d:|-> ", iSmType);
sTrkStation[iSmType] =
Form(" TrackStations in SM type %3d:|-> ", iSmType);
if (iMaxRpcNb < fiNbRpc[iSmType]) iMaxRpcNb = fiNbRpc[iSmType];
......@@ -734,10 +771,11 @@ void CbmTofDigiBdfPar::printParams() {
sChType[iSmType] += "pad ";
else
sChType[iSmType] += "str ";
if (1 == GetChanOrient(iSmType, iRpc))
sChOrient[iSmType] += "hor ";
else
sChOrient[iSmType] += "ver ";
sChOrient[iSmType] += Form(" %d ", GetChanOrient(iSmType, iRpc));
for (Int_t iSm = 0; iSm < fiNbSm[iSmType]; iSm++)
sTrkStation[iSmType] +=
Form(" %d ", GetTrackingStation(iSmType, iSm, iRpc));
}
} // for( Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType ++)
for (Int_t iRpc = 0; iRpc < iMaxRpcNb; iRpc++)
......@@ -753,6 +791,7 @@ void CbmTofDigiBdfPar::printParams() {
LOG(info) << sChNb[iSmType];
LOG(info) << sChType[iSmType];
LOG(info) << sChOrient[iSmType];
LOG(info) << sTrkStation[iSmType];
} // for( Int_t iSmType = 0; iSmType < fiNbSmTypes; iSmType ++)
// Beamtime variables
......
......@@ -13,6 +13,9 @@
#ifndef CBMTOFDIGIBDFPAR_H
#define CBMTOFDIGIBDFPAR_H 1
#include <CbmTofAddress.h> // for accessors
#include <CbmTofHit.h> // for accessors
#include <Rtypes.h> // for THashConsistencyHolder, ClassDef
#include <RtypesCore.h> // for Int_t, Double_t, Bool_t
#include <TArrayD.h> // for TArrayD
......@@ -66,6 +69,13 @@ public:
Int_t GetNbDet() const;
Int_t GetDetUId(Int_t iDet);
Int_t GetDetInd(Int_t iAddr);
Int_t GetTrackingStation(Int_t iSmType, Int_t iSm, Int_t iRpc) const;
Int_t GetTrackingStation(CbmTofHit* pHit) const {
return GetTrackingStation(CbmTofAddress::GetSmType(pHit->GetAddress()),
CbmTofAddress::GetSmId(pHit->GetAddress()),
CbmTofAddress::GetRpcId(pHit->GetAddress()));
};
Int_t GetNbTrackingStations() const { return fiNbTrackingStations; };
// Beamtime variables
TString GetInputFileName() const { return fsBeamInputFile; };
......@@ -127,12 +137,15 @@ private:
// Geometry variables, text to be generated in the CreateGeometry macros
Double_t fdSignalPropSpeed; // -> in parameter?
Int_t fiNbSmTypes; //
Int_t fiNbTrackingStations; //
TArrayI fiNbSm; // [fiNbSmTypes]
TArrayI fiNbRpc; // [fiNbSmTypes]
std::vector<TArrayI> fiNbGaps; // [fiNbSmTypes][fiNbRpc]
std::vector<TArrayD> fdGapSize; // [fiNbSmTypes][fiNbRpc]
std::vector<TArrayD>
fdSigVel; // [fiNbSmTypes][fiNbSm*fiNbRpc] // Signal velocity
std::vector<TArrayI>
fiTrkStation; // [fiNbSmTypes][fiNbSm*fiNbRpc] // Signal velocity
std::vector<TArrayI> fiNbCh; // [fiNbSmTypes][fiNbRpc]
std::vector<TArrayI> fiChType; // [fiNbSmTypes][fiNbRpc]
std::vector<TArrayI>
......
......@@ -1171,8 +1171,8 @@ void CbmTofFindTracks::ExecFind(Option_t* /*opt*/) {
Int_t iSt = GetStationOfAddr(iDetId);
MarkStationFired(iSt);
LOG(debug) << Form(
"Exec found Hit %02d, addr 0x%08x, sta %02d, %02d, HM %02d, X %6.2f(%3.2f) Y "
LOG(debug) << Form("Exec found Hit %02d, addr 0x%08x, sta %02d, %02d, HM "
"%02d, X %6.2f(%3.2f) Y "
"%6.2f(%3.2f) Z %6.2f(%3.2f) T %6.2f(%3.2f) (%6.2f)",
iHit,
pHit->GetAddress(),
......@@ -1190,7 +1190,8 @@ void CbmTofFindTracks::ExecFind(Option_t* /*opt*/) {
dTcor);
}
LOG(debug) << Form("CbmTofFindTracks::Exec NStationsFired %d > %d Min ?, NbStations %d",
LOG(debug) << Form(
"CbmTofFindTracks::Exec NStationsFired %d > %d Min ?, NbStations %d",
GetNStationsFired(),
GetMinNofHits(),
fDigiBdfPar->GetNbTrackingStations());
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment