Skip to content
Snippets Groups Projects
Commit 14ea888b authored by Pierre-Alain Loizeau's avatar Pierre-Alain Loizeau
Browse files

Add trd2d support + much digi flag autoset + per det plot and canvases in AlgoBuildRawEvent

parent aa166edf
No related branches found
No related tags found
1 merge request!816Changes to AlgoBuildRawEvent from mCBM march 2022 runs
...@@ -210,6 +210,7 @@ void CbmAlgoBuildRawEvents::BuildEvents() ...@@ -210,6 +210,7 @@ void CbmAlgoBuildRawEvents::BuildEvents()
} }
break; break;
} }
case ECbmModuleId::kTrd2d: // Same data storage as trd 1d
case ECbmModuleId::kTrd: { case ECbmModuleId::kTrd: {
LoopOnSeeds<CbmTrdDigi>(); LoopOnSeeds<CbmTrdDigi>();
break; break;
...@@ -387,6 +388,7 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet ...@@ -387,6 +388,7 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
} }
break; break;
} }
case ECbmModuleId::kTrd2d: // Same data storage as trd 1d
case ECbmModuleId::kTrd: { case ECbmModuleId::kTrd: {
SearchMatches<CbmTrdDigi>(dSeedTime, detMatch); SearchMatches<CbmTrdDigi>(dSeedTime, detMatch);
break; break;
...@@ -456,8 +458,22 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet ...@@ -456,8 +458,22 @@ void CbmAlgoBuildRawEvents::SearchMatches(Double_t dSeedTime, RawEventBuilderDet
for (UInt_t uDigi = detMatch.fuStartIndex; uDigi < uNbSelDigis; ++uDigi) { for (UInt_t uDigi = detMatch.fuStartIndex; uDigi < uNbSelDigis; ++uDigi) {
const DigiCheck* pDigi = GetDigi<DigiCheck>(uDigi); const DigiCheck* pDigi = GetDigi<DigiCheck>(uDigi);
// Filter TRD2D digis if 1D and reverse
if (detMatch.detId == ECbmModuleId::kTrd) {
const CbmTrdDigi* pTrdDigi = GetDigi<CbmTrdDigi>(uDigi);
if (pTrdDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kFASP) { //
continue;
}
}
else if (detMatch.detId == ECbmModuleId::kTrd2d) {
const CbmTrdDigi* pTrdDigi = GetDigi<CbmTrdDigi>(uDigi);
if (pTrdDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kSPADIC) { //
continue;
}
}
// filter T0 digis from Tof (remove this line if T0 properly implemented) // filter T0 digis from Tof (remove this line if T0 properly implemented)
if (detMatch.detId == ECbmModuleId::kTof && pDigi->GetAddress() == fuT0Address) { continue; } //if (detMatch.detId == ECbmModuleId::kTof && pDigi->GetAddress() == fuT0Address) { continue; }
const Double_t dTime = pDigi->GetTime(); const Double_t dTime = pDigi->GetTime();
const Double_t dTimeDiff = dTime - dSeedTime; const Double_t dTimeDiff = dTime - dSeedTime;
...@@ -583,6 +599,7 @@ bool CbmAlgoBuildRawEvents::CheckDataAvailable(ECbmModuleId detId) ...@@ -583,6 +599,7 @@ bool CbmAlgoBuildRawEvents::CheckDataAvailable(ECbmModuleId detId)
return fMuchDigis != nullptr; return fMuchDigis != nullptr;
} }
} }
case ECbmModuleId::kTrd2d: // Same data storage as trd 1d
case ECbmModuleId::kTrd: { case ECbmModuleId::kTrd: {
return fTrdDigis != nullptr; return fTrdDigis != nullptr;
} }
...@@ -618,6 +635,7 @@ UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId) ...@@ -618,6 +635,7 @@ UInt_t CbmAlgoBuildRawEvents::GetNofDigis(ECbmModuleId detId)
return fMuchDigis->size(); return fMuchDigis->size();
} }
} }
case ECbmModuleId::kTrd2d: // Same data storage as trd 1d
case ECbmModuleId::kTrd: { case ECbmModuleId::kTrd: {
return fTrdDigis->size(); return fTrdDigis->size();
} }
...@@ -696,33 +714,57 @@ void CbmAlgoBuildRawEvents::CreateHistograms() ...@@ -696,33 +714,57 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
fhNbDigiPerEvtTime = new TH2I("hNbDigiPerEvtTime", fhNbDigiPerEvtTime = new TH2I("hNbDigiPerEvtTime",
"nb of all digis per event vs seed time of the events; Seed time " "nb of all digis per event vs seed time of the events; Seed time "
"[s]; Nb Digis []; Events []", "[s]; Nb Digis []; Events []",
1000, 0, 0.1, 5000, 0, 5000); 1000, 0, 0.2, 5000, 0, 5000);
// fhNbDigiPerEvtTime->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged! // fhNbDigiPerEvtTime->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
AddHistoToVector(fhEventTime, "evtbuild");
AddHistoToVector(fhEventDt, "evtbuild");
AddHistoToVector(fhEventSize, "evtbuild");
AddHistoToVector(fhNbDigiPerEvtTime, "evtbuild");
outFolder->Add(fhEventTime);
outFolder->Add(fhEventDt);
outFolder->Add(fhEventSize);
outFolder->Add(fhNbDigiPerEvtTime);
/// Loop on selection detectors /// Loop on selection detectors
for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) { for (std::vector<RawEventBuilderDetector>::iterator det = fvDets.begin(); det != fvDets.end(); ++det) {
/// In case name not provided, do not create the histo to avoid name conflicts! /// In case name not provided, do not create the histo to avoid name conflicts!
if ("Invalid" == (*det).sName) { if ("Invalid" == (*det).sName) {
fvhNbDigiPerEvtTimeDet.push_back(nullptr); fvhNbDigiPerEvtTimeDet.push_back(nullptr);
fvhNbDigiPerEvtDet.push_back(nullptr);
continue; continue;
} }
TH2I* hNbDigiPerEvtTimeDet = new TH2I(Form("hNbDigiPerEvtTime%s", (*det).sName.data()), TH2I* hNbDigiPerEvtTimeDet = new TH2I(Form("hNbDigiPerEvtTime%s", (*det).sName.data()),
Form("nb of %s digis per event vs seed time of the events; Seed time in TS " Form("nb of %s digis per event vs seed time of the events; Seed time in TS "
"[s]; Nb Digis []; Events []", "[s]; Nb Digis []; Events []",
(*det).sName.data()), (*det).sName.data()),
1000, 0, 0.1, 5000, 0, 5000); 1000, 0, 0.2, 5000, 0, 5000);
// hNbDigiPerEvtTimeDet->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged! // hNbDigiPerEvtTimeDet->SetCanExtend(TH2::kAllAxes); // Breaks he MQ histogram server as cannot be merged!
fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet); fvhNbDigiPerEvtTimeDet.push_back(hNbDigiPerEvtTimeDet);
TH1I* hNbDigiPerEvtDet =
new TH1I(Form("hNbDigiPerEvt%s", (*det).sName.data()),
Form("nb of %s digis per event; Nb Digis []", (*det).sName.data()), 10000, 0, 10000);
fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet);
TH1I* hTDiff =
new TH1I(Form("hTDiff%s", (*det).sName.data()),
Form("#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []", (*det).sName.data()), 200,
(*det).fdTimeWinBeg, (*det).fdTimeWinEnd);
fvhTDiff.push_back(hTDiff);
} }
AddHistoToVector(fhEventTime, "evtbuild"); /// Same plots for the reference detector
AddHistoToVector(fhEventDt, "evtbuild"); TH1I* hNbDigiPerEvtDet =
AddHistoToVector(fhEventSize, "evtbuild"); new TH1I(Form("hNbDigiPerEvt%s", fRefDet.sName.data()),
AddHistoToVector(fhNbDigiPerEvtTime, "evtbuild"); Form("nb of %s digis per event; Nb Digis []", fRefDet.sName.data()), 10000, 0, 10000);
outFolder->Add(fhEventTime); fvhNbDigiPerEvtDet.push_back(hNbDigiPerEvtDet);
outFolder->Add(fhEventDt);
outFolder->Add(fhEventSize); TH1I* hTDiff =
outFolder->Add(fhNbDigiPerEvtTime); new TH1I(Form("hTDiff%s", fRefDet.sName.data()),
Form("#DeltaT of %s digis to seed time of event;#DeltaT (ns); Counts []", fRefDet.sName.data()), 200,
fRefDet.fdTimeWinBeg, fRefDet.fdTimeWinEnd); // FIXME, adjust to configured window
fvhTDiff.push_back(hTDiff);
for (std::vector<TH2*>::iterator itHist = fvhNbDigiPerEvtTimeDet.begin(); itHist != fvhNbDigiPerEvtTimeDet.end(); for (std::vector<TH2*>::iterator itHist = fvhNbDigiPerEvtTimeDet.begin(); itHist != fvhNbDigiPerEvtTimeDet.end();
++itHist) { ++itHist) {
...@@ -731,6 +773,94 @@ void CbmAlgoBuildRawEvents::CreateHistograms() ...@@ -731,6 +773,94 @@ void CbmAlgoBuildRawEvents::CreateHistograms()
outFolder->Add((*itHist)); outFolder->Add((*itHist));
} }
} }
for (std::vector<TH1*>::iterator itHist = fvhNbDigiPerEvtDet.begin(); itHist != fvhNbDigiPerEvtDet.end(); ++itHist) {
if (nullptr != (*itHist)) {
AddHistoToVector((*itHist), "evtbuild");
outFolder->Add((*itHist));
}
}
for (std::vector<TH1*>::iterator itHist = fvhTDiff.begin(); itHist != fvhTDiff.end(); ++itHist) {
if (nullptr != (*itHist)) {
AddHistoToVector((*itHist), "evtbuild");
outFolder->Add((*itHist));
}
}
/// Canvases creation
// std::vector<std::pair<TCanvas*, std::string>> vCanvases = {};
Double_t w = 10;
Double_t h = 10;
TCanvas* fcSummary = new TCanvas("cEvBSummary", "EvB monitoring plots", w, h);
fcSummary->Divide(2, 2);
fcSummary->cd(1);
gPad->SetGridx();
gPad->SetGridy();
fhEventTime->Draw("hist");
fcSummary->cd(2);
gPad->SetGridx();
gPad->SetGridy();
gPad->SetLogx();
gPad->SetLogy();
fhEventDt->Draw("hist");
fcSummary->cd(3);
gPad->SetGridx();
gPad->SetGridy();
gPad->SetLogy();
fhEventSize->Draw("hist");
fcSummary->cd(4);
gPad->SetGridx();
gPad->SetGridy();
fhNbDigiPerEvtTime->Draw("colz");
/// Add canvas pointers to the canvas vector
AddCanvasToVector(fcSummary, "canvases");
// ------------------------ //
TCanvas* fcNbDigi = new TCanvas("cEvBNbDigi", "EvB NbDigi evolution ", w, h);
if (fvhNbDigiPerEvtDet.size() <= 6) { //
fcNbDigi->Divide(2, 3);
}
else { //
fcNbDigi->Divide(3, 3);
}
int iPad = 1;
for (std::vector<TH1*>::iterator itHist = fvhNbDigiPerEvtDet.begin(); itHist != fvhNbDigiPerEvtDet.end(); ++itHist) {
if (nullptr != (*itHist)) {
fcNbDigi->cd(iPad++);
gPad->SetGridx();
gPad->SetGridy();
gPad->SetLogy();
(*itHist)->Draw(); //"colz");
}
}
AddCanvasToVector(fcNbDigi, "canvases");
// ------------------------ //
TCanvas* fcTdif = new TCanvas("cEvBTdif", "EvB Time Difference plots", w, h);
if (fvhNbDigiPerEvtDet.size() <= 6) { //
fcTdif->Divide(2, 3);
}
else { //
fcTdif->Divide(3, 3);
}
iPad = 1;
for (std::vector<TH1*>::iterator itHist = fvhTDiff.begin(); itHist != fvhTDiff.end(); ++itHist) {
if (nullptr != (*itHist)) {
fcTdif->cd(iPad++);
gPad->SetGridx();
gPad->SetGridy();
gPad->SetLogy();
(*itHist)->Draw();
}
}
AddCanvasToVector(fcTdif, "canvases");
} }
void CbmAlgoBuildRawEvents::FillHistos() void CbmAlgoBuildRawEvents::FillHistos()
...@@ -744,9 +874,165 @@ void CbmAlgoBuildRawEvents::FillHistos() ...@@ -744,9 +874,165 @@ void CbmAlgoBuildRawEvents::FillHistos()
fhNbDigiPerEvtTime->Fill(evt->GetStartTime() * 1e-9, evt->GetNofData()); fhNbDigiPerEvtTime->Fill(evt->GetStartTime() * 1e-9, evt->GetNofData());
/// Loop on selection detectors /// Loop on selection detectors
uint32_t uNbDataTrd1d = 0;
uint32_t uNbDataTrd2d = 0;
for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) {
if (nullptr == fvhNbDigiPerEvtDet[uDetIdx]) continue;
fvhNbDigiPerEvtDet[uDetIdx]->Fill(TMath::Max(0, evt->GetNofData(fvDets[uDetIdx].dataType)));
if (nullptr == fvhTDiff[uDetIdx]) continue;
for (int idigi = 0; idigi < evt->GetNofData(fvDets[uDetIdx].dataType); ++idigi) {
double dTimeDiff = 1.E30;
uint idx = evt->GetIndex(fvDets[uDetIdx].dataType, idigi);
switch (fvDets[uDetIdx].dataType) {
case ECbmDataType::kT0Digi: {
if (fT0DigiVec->size() <= idx) continue;
dTimeDiff = fT0DigiVec->at(idx).GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kStsDigi: {
auto pDigi = GetDigi<CbmStsDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kMuchDigi: {
if (fbUseMuchBeamtimeDigi) {
auto pDigi = GetDigi<CbmMuchBeamTimeDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
}
else {
auto pDigi = GetDigi<CbmMuchDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
}
break;
}
case ECbmDataType::kTofDigi: {
auto pDigi = GetDigi<CbmTofDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kTrdDigi: {
auto pDigi = GetDigi<CbmTrdDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kSPADIC) {
if (fvDets[uDetIdx].sName == "kTrd2D") continue;
++uNbDataTrd1d;
}
else if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kFASP) {
if (fvDets[uDetIdx].sName == "kTrd") continue;
++uNbDataTrd2d;
}
break;
}
case ECbmDataType::kRichDigi: {
auto pDigi = GetDigi<CbmRichDigi>(idx); // FIXME, need to find the proper digi template
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kPsdDigi: {
auto pDigi = GetDigi<CbmPsdDigi>(idx); // FIXME, need to find the proper digi template
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
default: LOG(error) << "Unkown dataType " << fvDets[uDetIdx].dataType;
}
if (dTimeDiff < 1.E30) fvhTDiff[uDetIdx]->Fill(dTimeDiff);
}
}
/// Reference detector
uint32_t uRefDetIdx = fvDets.size();
if (nullptr != fvhNbDigiPerEvtDet[uRefDetIdx]) {
fvhNbDigiPerEvtDet[uRefDetIdx]->Fill(TMath::Max(0, evt->GetNofData(fRefDet.dataType)));
if (nullptr == fvhTDiff[uRefDetIdx]) continue;
for (int idigi = 0; idigi < evt->GetNofData(fRefDet.dataType); ++idigi) {
double dTimeDiff = 1.E30;
uint idx = evt->GetIndex(fRefDet.dataType, idigi);
switch (fRefDet.dataType) {
case ECbmDataType::kT0Digi: {
if (fT0DigiVec->size() <= idx) continue;
dTimeDiff = fT0DigiVec->at(idx).GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kStsDigi: {
auto pDigi = GetDigi<CbmStsDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kMuchDigi: {
if (fbUseMuchBeamtimeDigi) {
auto pDigi = GetDigi<CbmMuchBeamTimeDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
}
else {
auto pDigi = GetDigi<CbmMuchDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
}
break;
}
case ECbmDataType::kTofDigi: {
auto pDigi = GetDigi<CbmTofDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kTrdDigi: {
auto pDigi = GetDigi<CbmTrdDigi>(idx);
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kSPADIC) {
if (fRefDet.sName == "kTrd2D") continue;
++uNbDataTrd1d;
}
else if (pDigi->GetType() == CbmTrdDigi::eCbmTrdAsicType::kFASP) {
if (fRefDet.sName == "kTrd") continue;
++uNbDataTrd2d;
}
break;
}
case ECbmDataType::kRichDigi: {
auto pDigi = GetDigi<CbmRichDigi>(idx); // FIXME, need to find the proper digi template
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
case ECbmDataType::kPsdDigi: {
auto pDigi = GetDigi<CbmPsdDigi>(idx); // FIXME, need to find the proper digi template
if (nullptr == pDigi) continue;
dTimeDiff = pDigi->GetTime() - evt->GetStartTime();
break;
}
default: LOG(error) << "Unkown dataType " << fRefDet.dataType;
}
if (dTimeDiff < 1.E30) fvhTDiff[uRefDetIdx]->Fill(dTimeDiff);
}
}
/// Re-Loop on selection detectors due to detectors with same data type
for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) { for (UInt_t uDetIdx = 0; uDetIdx < fvDets.size(); ++uDetIdx) {
if (nullptr == fvhNbDigiPerEvtTimeDet[uDetIdx]) continue; if (nullptr == fvhNbDigiPerEvtTimeDet[uDetIdx]) continue;
fvhNbDigiPerEvtTimeDet[uDetIdx]->Fill(evt->GetStartTime() * 1e-9, evt->GetNofData(fvDets[uDetIdx].dataType));
if (fvDets[uDetIdx].sName == "kTrd") {
fvhNbDigiPerEvtTimeDet[uDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd1d);
}
else if (fvDets[uDetIdx].sName == "kTrd2D") {
fvhNbDigiPerEvtTimeDet[uDetIdx]->Fill(evt->GetStartTime() * 1e-9, uNbDataTrd2d);
}
else {
fvhNbDigiPerEvtTimeDet[uDetIdx]->Fill(evt->GetStartTime() * 1e-9, evt->GetNofData(fvDets[uDetIdx].dataType));
}
} }
dPreEvtTime = evt->GetStartTime(); dPreEvtTime = evt->GetStartTime();
} }
...@@ -764,6 +1050,14 @@ void CbmAlgoBuildRawEvents::ResetHistograms(Bool_t /*bResetTime*/) ...@@ -764,6 +1050,14 @@ void CbmAlgoBuildRawEvents::ResetHistograms(Bool_t /*bResetTime*/)
++itHist) { ++itHist) {
(*itHist)->Reset(); (*itHist)->Reset();
} }
for (std::vector<TH1*>::iterator itHist = fvhNbDigiPerEvtDet.begin(); itHist != fvhNbDigiPerEvtDet.end(); ++itHist) {
(*itHist)->Reset();
}
for (std::vector<TH1*>::iterator itHist = fvhTDiff.begin(); itHist != fvhTDiff.end(); ++itHist) {
(*itHist)->Reset();
}
/* /*
if( kTRUE == bResetTime ) if( kTRUE == bResetTime )
{ {
......
...@@ -94,6 +94,8 @@ static const RawEventBuilderDetector kRawEventBuilderDetMuch = ...@@ -94,6 +94,8 @@ static const RawEventBuilderDetector kRawEventBuilderDetMuch =
RawEventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "Much"); RawEventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "Much");
static const RawEventBuilderDetector kRawEventBuilderDetTrd = static const RawEventBuilderDetector kRawEventBuilderDetTrd =
RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "Trd"); RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "Trd");
static const RawEventBuilderDetector kRawEventBuilderDetTrd2D =
RawEventBuilderDetector(ECbmModuleId::kTrd2d, ECbmDataType::kTrdDigi, "kTrd2D");
static const RawEventBuilderDetector kRawEventBuilderDetTof = static const RawEventBuilderDetector kRawEventBuilderDetTof =
RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "Tof"); RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "Tof");
static const RawEventBuilderDetector kRawEventBuilderDetRich = static const RawEventBuilderDetector kRawEventBuilderDetRich =
...@@ -185,12 +187,20 @@ public: ...@@ -185,12 +187,20 @@ public:
/// Set digi containers /// Set digi containers
void SetT0Digis(const std::vector<CbmTofDigi>* T0DigiVec) { fT0DigiVec = T0DigiVec; } void SetT0Digis(const std::vector<CbmTofDigi>* T0DigiVec) { fT0DigiVec = T0DigiVec; }
void SetDigis(std::vector<CbmStsDigi>* StsDigis) { fStsDigis = StsDigis; } void SetDigis(std::vector<CbmStsDigi>* StsDigis) { fStsDigis = StsDigis; }
void SetDigis(std::vector<CbmMuchDigi>* MuchDigis) { fMuchDigis = MuchDigis; } void SetDigis(std::vector<CbmMuchDigi>* MuchDigis)
{
fMuchDigis = MuchDigis;
fbUseMuchBeamtimeDigi = kFALSE;
}
void SetDigis(std::vector<CbmTrdDigi>* TrdDigis) { fTrdDigis = TrdDigis; } void SetDigis(std::vector<CbmTrdDigi>* TrdDigis) { fTrdDigis = TrdDigis; }
void SetDigis(std::vector<CbmTofDigi>* TofDigis) { fTofDigis = TofDigis; } void SetDigis(std::vector<CbmTofDigi>* TofDigis) { fTofDigis = TofDigis; }
void SetDigis(std::vector<CbmRichDigi>* RichDigis) { fRichDigis = RichDigis; } void SetDigis(std::vector<CbmRichDigi>* RichDigis) { fRichDigis = RichDigis; }
void SetDigis(std::vector<CbmPsdDigi>* PsdDigis) { fPsdDigis = PsdDigis; } void SetDigis(std::vector<CbmPsdDigi>* PsdDigis) { fPsdDigis = PsdDigis; }
void SetDigis(std::vector<CbmMuchBeamTimeDigi>* MuchBeamTimeDigis) { fMuchBeamTimeDigis = MuchBeamTimeDigis; } void SetDigis(std::vector<CbmMuchBeamTimeDigi>* MuchBeamTimeDigis)
{
fMuchBeamTimeDigis = MuchBeamTimeDigis;
fbUseMuchBeamtimeDigi = kTRUE;
}
void SetSeedTimes(std::vector<Double_t>* SeedTimes) { fSeedTimes = SeedTimes; } void SetSeedTimes(std::vector<Double_t>* SeedTimes) { fSeedTimes = SeedTimes; }
...@@ -256,6 +266,7 @@ private: ...@@ -256,6 +266,7 @@ private:
RawEventBuilderDetector(ECbmModuleId::kSts, ECbmDataType::kStsDigi, "kSts"), RawEventBuilderDetector(ECbmModuleId::kSts, ECbmDataType::kStsDigi, "kSts"),
RawEventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "kMuch"), RawEventBuilderDetector(ECbmModuleId::kMuch, ECbmDataType::kMuchDigi, "kMuch"),
RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "kTrd"), RawEventBuilderDetector(ECbmModuleId::kTrd, ECbmDataType::kTrdDigi, "kTrd"),
RawEventBuilderDetector(ECbmModuleId::kTrd2d, ECbmDataType::kTrdDigi, "kTrd2D"),
RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "kTof"), RawEventBuilderDetector(ECbmModuleId::kTof, ECbmDataType::kTofDigi, "kTof"),
RawEventBuilderDetector(ECbmModuleId::kRich, ECbmDataType::kRichDigi, "kRich"), RawEventBuilderDetector(ECbmModuleId::kRich, ECbmDataType::kRichDigi, "kRich"),
RawEventBuilderDetector(ECbmModuleId::kPsd, ECbmDataType::kPsdDigi, "kPsd")}; RawEventBuilderDetector(ECbmModuleId::kPsd, ECbmDataType::kPsdDigi, "kPsd")};
...@@ -321,6 +332,8 @@ private: ...@@ -321,6 +332,8 @@ private:
TH2* fhNbDigiPerEvtTime = nullptr; //! histogram with the nb of all digis per event vs seed time of the events TH2* fhNbDigiPerEvtTime = nullptr; //! histogram with the nb of all digis per event vs seed time of the events
std::vector<TH2*> fvhNbDigiPerEvtTimeDet = std::vector<TH2*> fvhNbDigiPerEvtTimeDet =
{}; //! histograms with the nb of digis in each detector per event vs seed time of the events {}; //! histograms with the nb of digis in each detector per event vs seed time of the events
std::vector<TH1*> fvhNbDigiPerEvtDet = {}; //! histograms with the nb of digis in each detector per event
std::vector<TH1*> fvhTDiff = {}; // digi time difference to seed
/// Internal state variables /// Internal state variables
UInt_t fuCurEv = 0; //! Event Counter UInt_t fuCurEv = 0; //! Event Counter
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment