Skip to content
Snippets Groups Projects
Commit 4d52d468 authored by meyanne's avatar meyanne
Browse files

ComptonTelescope (DSSSD):

DecodeD and online_dssd modifications:
- online_dssd: delete setters at the beginning to use
TComptonTelescopeData setters directly in main()
             cleaning to keep only dsssd treatment
- DecodeD: decode root tree here in decodeEventFinal() (instead of in online_dssd)
           add new variables and getters

Fix loading library problem in ExtractRawHisto (dsssd calibration)

Add calibration files
parent 6d53eb53
No related branches found
No related tags found
No related merge requests found
Pipeline #106892 passed
Showing
with 245 additions and 445 deletions
......@@ -95,28 +95,28 @@ class TComptonTelescopeData : public TObject {
void SetCTTrackerBackTStripNbr(const UShort_t StripNbr) {fCT_Tracker_BackT_StripNbr.push_back(StripNbr);}
void SetCTTrackerBackTTime(const Double_t Time) {fCT_Tracker_BackT_Time.push_back(Time);}
// set all Front E
void SetFrontE(const UShort_t& TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Energy) {
void SetFrontE(const UShort_t TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Energy) {
SetCTTrackerFrontETowerNbr(TowNbr);
SetCTTrackerFrontEDetectorNbr(DetNbr);
SetCTTrackerFrontEStripNbr(StripNbr);
SetCTTrackerFrontEEnergy(Energy);
};
// set all Back E
void SetBackE(const UShort_t& TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Energy) {
void SetBackE(const UShort_t TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Energy) {
SetCTTrackerBackETowerNbr(TowNbr);
SetCTTrackerBackEDetectorNbr(DetNbr);
SetCTTrackerBackEStripNbr(StripNbr);
SetCTTrackerBackEEnergy(Energy);
};
// set all Front T
void SetFrontT(const UShort_t& TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Time) {
void SetFrontT(const UShort_t TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Time) {
SetCTTrackerFrontTTowerNbr(TowNbr);
SetCTTrackerFrontTDetectorNbr(DetNbr);
SetCTTrackerFrontTStripNbr(StripNbr);
SetCTTrackerFrontTTime(Time);
};
// set all Back T
void SetBackT(const UShort_t& TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Time) {
void SetBackT(const UShort_t TowNbr, const UShort_t DetNbr, const UShort_t StripNbr, const Double_t Time) {
SetCTTrackerBackTTowerNbr(TowNbr);
SetCTTrackerBackTDetectorNbr(DetNbr);
SetCTTrackerBackTStripNbr(StripNbr);
......
......@@ -314,7 +314,7 @@ void TComptonTelescopePhysics::PreTreat()
for (UShort_t i = 0; i < m_EventData->GetCTTrackerBackEMult(); ++i) {
m_CounterEvt[4] = 1; // nb of events with at least one EB raw recorded
m_CounterHit[3] += 1; // nb of hits with EB raw
//cout << "Raw: DetB = " << m_EventData->GetCTTrackerBackEDetectorNbr(i) << " ; stripB = " << m_EventData->GetCTTrackerBackEStripNbr(i) << " ; EB raw = " << m_EventData->GetCTTrackerFrontEEnergy(i) << endl;
//cout << "Raw: DetB = " << m_EventData->GetCTTrackerBackEDetectorNbr(i) << " ; stripB = " << m_EventData->GetCTTrackerBackEStripNbr(i) << " ; EB raw = " << m_EventData->GetCTTrackerBackEEnergy(i) << endl;
if (m_EventData->GetCTTrackerBackEEnergy(i) > m_StripBack_E_RAW_Threshold &&
IsValidChannel("Back", m_EventData->GetCTTrackerBackEDetectorNbr(i), m_EventData->GetCTTrackerBackEStripNbr(i))) {
......
......@@ -23,7 +23,8 @@ using namespace std;
// custom headers
#include "../src/DecodeD.h"
#include "../src/DecodeD.cpp"
R__LOAD_LIBRARY(../build/lib/libDecodeD.so)
#define NBDETECTORS 1
#define NBSTRIPS 32
......
CalibrationFilePath
./calibrations/DSSSD_D1_Calibration.txt
./calibrations/DSSSD_calibration_withPed_pol3_ok.txt
./calibrations/CeBr3_PED.txt
./calibrations/CeBr3_PED3.txt
./calibrations/CeBr3_PED4.txt
......
COMPTONTELESCOPE_D1_STRIP_FRONT0_E -0.118831 0.0020194 -1.23367e-06 5.4931e-10
COMPTONTELESCOPE_D1_STRIP_FRONT1_E -0.117704 0.00201443 -1.21246e-06 5.35478e-10
COMPTONTELESCOPE_D1_STRIP_FRONT2_E -0.118466 0.00201954 -1.21136e-06 5.31724e-10
COMPTONTELESCOPE_D1_STRIP_FRONT3_E -0.139276 0.00202641 -1.20937e-06 5.25946e-10
COMPTONTELESCOPE_D1_STRIP_FRONT4_E -0.131311 0.00203068 -1.24081e-06 5.48624e-10
COMPTONTELESCOPE_D1_STRIP_FRONT5_E -0.128764 0.00204466 -1.25583e-06 5.57268e-10
COMPTONTELESCOPE_D1_STRIP_FRONT6_E -0.136112 0.00202706 -1.20817e-06 5.28383e-10
COMPTONTELESCOPE_D1_STRIP_FRONT7_E -0.138073 0.0020399 -1.23153e-06 5.40859e-10
COMPTONTELESCOPE_D1_STRIP_FRONT8_E -0.120131 0.00203402 -1.25091e-06 5.53975e-10
COMPTONTELESCOPE_D1_STRIP_FRONT9_E -0.148054 0.00204507 -1.22883e-06 5.3334e-10
COMPTONTELESCOPE_D1_STRIP_FRONT10_E -0.133886 0.00202571 -1.22837e-06 5.413e-10
COMPTONTELESCOPE_D1_STRIP_FRONT11_E -0.135105 0.00203188 -1.22988e-06 5.41547e-10
COMPTONTELESCOPE_D1_STRIP_FRONT12_E -0.123442 0.00201981 -1.21728e-06 5.33728e-10
COMPTONTELESCOPE_D1_STRIP_FRONT13_E -0.131303 0.00202039 -1.20152e-06 5.24131e-10
COMPTONTELESCOPE_D1_STRIP_FRONT14_E -0.129354 0.00203541 -1.23392e-06 5.44566e-10
COMPTONTELESCOPE_D1_STRIP_FRONT15_E -0.131322 0.00202732 -1.23013e-06 5.44372e-10
COMPTONTELESCOPE_D1_STRIP_FRONT16_E -0.12703 0.00201901 -1.20971e-06 5.30598e-10
COMPTONTELESCOPE_D1_STRIP_FRONT17_E -0.128485 0.00203054 -1.22686e-06 5.41329e-10
COMPTONTELESCOPE_D1_STRIP_FRONT18_E -0.137729 0.00204346 -1.24308e-06 5.44544e-10
COMPTONTELESCOPE_D1_STRIP_FRONT19_E -0.136162 0.00201641 -1.20309e-06 5.26798e-10
COMPTONTELESCOPE_D1_STRIP_FRONT20_E -0.14267 0.00208544 -1.39404e-06 6.71016e-10
COMPTONTELESCOPE_D1_STRIP_FRONT21_E -44.4711 1.19468 -0.009927 2.62873e-05
COMPTONTELESCOPE_D1_STRIP_FRONT22_E -0.142797 0.00203497 -1.22033e-06 5.36205e-10
COMPTONTELESCOPE_D1_STRIP_FRONT23_E -0.129792 0.00202387 -1.22206e-06 5.37164e-10
COMPTONTELESCOPE_D1_STRIP_FRONT24_E -0.135854 0.00203543 -1.23018e-06 5.41652e-10
COMPTONTELESCOPE_D1_STRIP_FRONT25_E -0.151676 0.00203789 -1.21982e-06 5.28336e-10
COMPTONTELESCOPE_D1_STRIP_FRONT26_E -0.131928 0.0020564 -1.27458e-06 5.70852e-10
COMPTONTELESCOPE_D1_STRIP_FRONT27_E -0.135168 0.00203931 -1.2459e-06 5.55184e-10
COMPTONTELESCOPE_D1_STRIP_FRONT28_E -0.146183 0.00201397 -1.17254e-06 5.00034e-10
COMPTONTELESCOPE_D1_STRIP_FRONT29_E -0.146413 0.00204296 -1.22386e-06 5.32723e-10
COMPTONTELESCOPE_D1_STRIP_FRONT30_E -0.148404 0.00205827 -1.28524e-06 5.86852e-10
COMPTONTELESCOPE_D1_STRIP_FRONT31_E -0.152662 0.00202693 -1.19129e-06 5.13324e-10
COMPTONTELESCOPE_D1_STRIP_BACK0_E -0.0756831 0.00127577 2.21358e-07 -3.21543e-10
COMPTONTELESCOPE_D1_STRIP_BACK1_E -0.0842426 0.00129428 1.5664e-07 -2.69237e-10
COMPTONTELESCOPE_D1_STRIP_BACK2_E -0.0886519 0.00127173 2.27233e-07 -3.13794e-10
COMPTONTELESCOPE_D1_STRIP_BACK3_E -0.0655088 0.00126083 1.9293e-07 -2.81871e-10
COMPTONTELESCOPE_D1_STRIP_BACK4_E -0.0808209 0.00125791 2.49939e-07 -3.32252e-10
COMPTONTELESCOPE_D1_STRIP_BACK5_E -0.0980924 0.00128698 2.01868e-07 -2.96257e-10
COMPTONTELESCOPE_D1_STRIP_BACK6_E -0.0767718 0.00123853 2.6634e-07 -3.26085e-10
COMPTONTELESCOPE_D1_STRIP_BACK7_E -0.0879577 0.00129706 1.89326e-07 -2.97962e-10
COMPTONTELESCOPE_D1_STRIP_BACK8_E -0.0797696 0.00126691 2.25406e-07 -3.18143e-10
COMPTONTELESCOPE_D1_STRIP_BACK9_E -0.0858537 0.00126189 2.16585e-07 -2.91054e-10
COMPTONTELESCOPE_D1_STRIP_BACK10_E -0.076765 0.00125719 2.48247e-07 -3.30331e-10
COMPTONTELESCOPE_D1_STRIP_BACK11_E -0.0950688 0.00126866 2.14316e-07 -2.97996e-10
COMPTONTELESCOPE_D1_STRIP_BACK12_E -0.0741301 0.00124277 2.5883e-07 -3.31003e-10
COMPTONTELESCOPE_D1_STRIP_BACK13_E -0.0868071 0.00127055 2.25484e-07 -3.04522e-10
COMPTONTELESCOPE_D1_STRIP_BACK14_E -0.0748443 0.0012237 2.61351e-07 -3.17288e-10
COMPTONTELESCOPE_D1_STRIP_BACK15_E -0.0989367 0.0012918 2.0643e-07 -3.03368e-10
COMPTONTELESCOPE_D1_STRIP_BACK16_E -0.077611 0.00124008 2.39163e-07 -3.10812e-10
COMPTONTELESCOPE_D1_STRIP_BACK17_E -0.100867 0.00128439 1.71112e-07 -2.67333e-10
COMPTONTELESCOPE_D1_STRIP_BACK18_E -4.73406e+10 8.43153e+09 -3.06291e+08 3.1596e+06
COMPTONTELESCOPE_D1_STRIP_BACK19_E -0.102112 0.0012754 1.76688e-07 -2.66347e-10
COMPTONTELESCOPE_D1_STRIP_BACK20_E -0.0550878 0.0011879 3.48916e-07 -3.67882e-10
COMPTONTELESCOPE_D1_STRIP_BACK21_E -0.0923315 0.00128437 1.55178e-07 -2.52165e-10
COMPTONTELESCOPE_D1_STRIP_BACK22_E -2.83812e+06 309274 12321.2 -412.799
COMPTONTELESCOPE_D1_STRIP_BACK23_E -0.0865215 0.00123972 1.89224e-07 -2.46275e-10
COMPTONTELESCOPE_D1_STRIP_BACK24_E -0.0766027 0.00123733 2.56398e-07 -3.18655e-10
COMPTONTELESCOPE_D1_STRIP_BACK25_E -0.0962202 0.00128027 1.79482e-07 -2.70486e-10
COMPTONTELESCOPE_D1_STRIP_BACK26_E -0.077302 0.00124191 2.31401e-07 -3.00387e-10
COMPTONTELESCOPE_D1_STRIP_BACK27_E -0.0820358 0.0012664 1.75301e-07 -2.57849e-10
COMPTONTELESCOPE_D1_STRIP_BACK28_E -0.0700134 0.00123888 2.37705e-07 -3.03327e-10
COMPTONTELESCOPE_D1_STRIP_BACK29_E -0.0989287 0.00129228 1.26337e-07 -2.36442e-10
COMPTONTELESCOPE_D1_STRIP_BACK30_E -0.0585961 0.00127157 1.99286e-08 -8.74148e-11
COMPTONTELESCOPE_D1_STRIP_BACK31_E -0.0879277 0.00126399 1.94738e-07 -2.75574e-10
COMPTONTELESCOPE_D1_STRIP_FRONT0_E -0.103591 0.00202937 -1.31595e-06 5.76435e-10
COMPTONTELESCOPE_D1_STRIP_FRONT2_E -0.104106 0.00202867 -1.3036e-06 5.63485e-10
COMPTONTELESCOPE_D1_STRIP_FRONT3_E -0.098837 0.00204093 -1.33881e-06 5.92735e-10
COMPTONTELESCOPE_D1_STRIP_FRONT4_E -0.108476 0.00202001 -1.29333e-06 5.58686e-10
COMPTONTELESCOPE_D1_STRIP_FRONT5_E -0.116573 0.00204149 -1.3072e-06 5.66047e-10
COMPTONTELESCOPE_D1_STRIP_FRONT6_E -0.110589 0.00203637 -1.31396e-06 5.69446e-10
COMPTONTELESCOPE_D1_STRIP_FRONT7_E -0.100743 0.00202155 -1.30182e-06 5.67145e-10
COMPTONTELESCOPE_D1_STRIP_FRONT8_E -0.11252 0.00202463 -1.29808e-06 5.60844e-10
COMPTONTELESCOPE_D1_STRIP_FRONT9_E -0.117428 0.00203499 -1.30994e-06 5.66109e-10
COMPTONTELESCOPE_D1_STRIP_FRONT10_E -0.103673 0.00201915 -1.30198e-06 5.66642e-10
COMPTONTELESCOPE_D1_STRIP_FRONT11_E -0.0982859 0.00202634 -1.31844e-06 5.80249e-10
COMPTONTELESCOPE_D1_STRIP_FRONT12_E -0.111208 0.00203441 -1.32057e-06 5.79307e-10
COMPTONTELESCOPE_D1_STRIP_FRONT13_E -0.120281 0.00205225 -1.38071e-06 6.21937e-10
COMPTONTELESCOPE_D1_STRIP_FRONT14_E -0.112119 0.00201441 -1.28253e-06 5.59917e-10
COMPTONTELESCOPE_D1_STRIP_FRONT15_E -0.110662 0.00200685 -1.2735e-06 5.5227e-10
COMPTONTELESCOPE_D1_STRIP_FRONT16_E -0.112664 0.00202289 -1.3004e-06 5.66877e-10
COMPTONTELESCOPE_D1_STRIP_FRONT17_E -0.0983501 0.00201311 -1.29979e-06 5.70893e-10
COMPTONTELESCOPE_D1_STRIP_FRONT18_E -0.0979195 0.00201749 -1.3067e-06 5.75613e-10
COMPTONTELESCOPE_D1_STRIP_FRONT19_E -0.0983914 0.00201083 -1.30387e-06 5.74465e-10
COMPTONTELESCOPE_D1_STRIP_FRONT20_E -0.102963 0.00200863 -1.291e-06 5.65941e-10
COMPTONTELESCOPE_D1_STRIP_FRONT21_E -0.109975 0.00201758 -1.28779e-06 5.59236e-10
COMPTONTELESCOPE_D1_STRIP_FRONT22_E -0.0973036 0.00200045 -1.26058e-06 5.4656e-10
COMPTONTELESCOPE_D1_STRIP_FRONT23_E -0.102655 0.0020103 -1.2829e-06 5.58831e-10
COMPTONTELESCOPE_D1_STRIP_FRONT24_E -0.104804 0.00201667 -1.29217e-06 5.56727e-10
COMPTONTELESCOPE_D1_STRIP_FRONT25_E -0.112278 0.00202614 -1.29455e-06 5.61179e-10
COMPTONTELESCOPE_D1_STRIP_FRONT26_E -0.109317 0.00203257 -1.31645e-06 5.77175e-10
COMPTONTELESCOPE_D1_STRIP_FRONT27_E -0.0993002 0.00198848 -1.24093e-06 5.35279e-10
COMPTONTELESCOPE_D1_STRIP_FRONT28_E -0.103218 0.00201509 -1.29301e-06 5.64033e-10
COMPTONTELESCOPE_D1_STRIP_FRONT29_E -0.105567 0.00202778 -1.30333e-06 5.69012e-10
COMPTONTELESCOPE_D1_STRIP_FRONT30_E -0.100864 0.00205314 -1.34556e-06 5.88846e-10
COMPTONTELESCOPE_D1_STRIP_FRONT31_E -0.103062 0.00203463 -1.32007e-06 5.73146e-10
COMPTONTELESCOPE_D1_STRIP_BACK0_E -0.0755551 0.0014027 -5.46295e-08 -1.535e-10
COMPTONTELESCOPE_D1_STRIP_BACK1_E -0.0786639 0.00139894 -3.43811e-08 -1.62293e-10
COMPTONTELESCOPE_D1_STRIP_BACK2_E -0.0725508 0.00142445 -1.13162e-07 -1.2294e-10
COMPTONTELESCOPE_D1_STRIP_BACK3_E -0.0822847 0.00139653 -5.58348e-08 -1.36187e-10
COMPTONTELESCOPE_D1_STRIP_BACK4_E -0.075355 0.00136454 1.60153e-08 -1.88892e-10
COMPTONTELESCOPE_D1_STRIP_BACK5_E -0.070324 0.00139274 -8.41426e-08 -1.22293e-10
COMPTONTELESCOPE_D1_STRIP_BACK6_E -0.0605549 0.00139064 -3.30817e-08 -1.69143e-10
COMPTONTELESCOPE_D1_STRIP_BACK7_E -0.0666194 0.00138605 -3.82721e-08 -1.50997e-10
COMPTONTELESCOPE_D1_STRIP_BACK8_E -0.0741552 0.00138275 -4.00449e-09 -1.84527e-10
COMPTONTELESCOPE_D1_STRIP_BACK9_E -0.0814244 0.0013753 4.63623e-09 -1.83339e-10
COMPTONTELESCOPE_D1_STRIP_BACK10_E -0.0616857 0.00136842 -1.39941e-08 -1.57991e-10
COMPTONTELESCOPE_D1_STRIP_BACK11_E -0.0762645 0.00138761 -3.01102e-08 -1.6395e-10
COMPTONTELESCOPE_D1_STRIP_BACK12_E -0.0720235 0.00135252 4.39851e-08 -2.05899e-10
COMPTONTELESCOPE_D1_STRIP_BACK13_E -0.0639722 0.00137769 -3.1996e-08 -1.53898e-10
COMPTONTELESCOPE_D1_STRIP_BACK14_E -0.0693841 0.00138182 -2.65063e-08 -1.66127e-10
COMPTONTELESCOPE_D1_STRIP_BACK15_E -0.0693754 0.0013786 -4.02883e-08 -1.47366e-10
COMPTONTELESCOPE_D1_STRIP_BACK16_E -0.0615302 0.00139044 -5.06176e-08 -1.57946e-10
COMPTONTELESCOPE_D1_STRIP_BACK17_E -0.0839769 0.00143972 -1.94622e-07 -5.06432e-11
COMPTONTELESCOPE_D1_STRIP_BACK18_E -0.0787552 0.00140747 -2.03952e-08 -1.92275e-10
COMPTONTELESCOPE_D1_STRIP_BACK19_E -0.0819682 0.001425 -8.44234e-08 -1.43258e-10
COMPTONTELESCOPE_D1_STRIP_BACK20_E -0.0741045 0.00140995 -9.66639e-08 -1.22825e-10
COMPTONTELESCOPE_D1_STRIP_BACK21_E -0.0726507 0.0013651 1.71355e-09 -1.67266e-10
COMPTONTELESCOPE_D1_STRIP_BACK22_E -0.06887 0.00135476 4.29449e-08 -2.08002e-10
COMPTONTELESCOPE_D1_STRIP_BACK23_E -0.0734823 0.00139036 -4.69954e-08 -1.59962e-10
COMPTONTELESCOPE_D1_STRIP_BACK24_E -0.0814692 0.00141153 -1.01568e-07 -1.19993e-10
COMPTONTELESCOPE_D1_STRIP_BACK25_E -0.0679494 0.00137581 -6.86338e-08 -1.24906e-10
COMPTONTELESCOPE_D1_STRIP_BACK26_E -0.0634414 0.00133637 8.83812e-08 -2.36871e-10
COMPTONTELESCOPE_D1_STRIP_BACK27_E -0.0742368 0.00139765 -7.22661e-08 -1.30621e-10
COMPTONTELESCOPE_D1_STRIP_BACK28_E -0.0682225 0.00136177 4.89513e-08 -2.09195e-10
COMPTONTELESCOPE_D1_STRIP_BACK29_E -0.0681408 0.00138285 -5.04957e-08 -1.46424e-10
COMPTONTELESCOPE_D1_STRIP_BACK30_E -0.0532481 0.00138162 -3.48193e-08 -1.54458e-10
COMPTONTELESCOPE_D1_STRIP_BACK31_E -0.0611554 0.00136231 -1.85725e-08 -1.50171e-10
......@@ -3,9 +3,7 @@ ConfigComptonTelescope
ONLY_GOOD_COUPLE_WITH_MULTIPLICITY_ONE ON
FRONT_BACK_ENERGY_MATCHING_SIGMA 0.006
FRONT_BACK_ENERGY_MATCHING_NUMBER_OF_SIGMA 2
DISABLE_CHANNEL COMPTONTELESCOPE_D1_STRIP_FRONT21_E
DISABLE_CHANNEL COMPTONTELESCOPE_D1_STRIP_BACK18_E
DISABLE_CHANNEL COMPTONTELESCOPE_D1_STRIP_BACK22_E
DISABLE_CHANNEL COMPTONTELESCOPE_D1_STRIP_FRONT1_E
STRIP_FRONT_E_RAW_THRESHOLD 0
STRIP_BACK_E_RAW_THRESHOLD 0
STRIP_FRONT_E_THRESHOLD 0.012
......
......@@ -58,6 +58,31 @@ long int DecodeD::getLength()
return length;
}
int DecodeD::getEventSize()
{
return Energy.size();
}
int DecodeD::getFaceType(const int i)
{
return FaceType[i];
}
int DecodeD::getDetNbr(const int i)
{
return DetNbr[i];
}
int DecodeD::getStripNbr(const int i)
{
return StripNbr[i];
}
double DecodeD::getEnergy(const int i)
{
return Energy[i];
}
long int DecodeD::getTime()
{
return event.timestamp;
......@@ -68,6 +93,37 @@ newframe_t* DecodeD::getEvent()
return &event;
}
void DecodeD::decodeEventFinal()
{
switch (datatype) {
case D_ROOT:
if (cursor < length) {
t1->GetEntry(cursor);
for (int i = 0; i < 2; i++) { // 2 faces
for (int j = 0; j < NBDETECTORS; j++) {
if (event.chip_data[i][j]) { // Test if data is present
for (int k = 0; k < NBSTRIPS; k++) {
FaceType.push_back(i);
DetNbr.push_back(j);
StripNbr.push_back(k);
Energy.push_back(event.sample[i][j][k]);
//cout << "Decode Face " << i << " det " << j << " strip " << k << " E " << event.sample[i][j][k] << endl;
} // end loop on strips
} // end Test
} // end loop on detectors
} // end loop on faces
cursor++;
}
break;
case D_MFM:
break;
case D_NONE:
cout << "No data has been set to decode" << endl;
}
}
// should be deleted and replaced by decodeEventFinal after validation
void DecodeD::decodeEvent()
{
switch (datatype) {
......@@ -99,6 +155,14 @@ void DecodeD::decodeEvent()
}
}
void DecodeD::Clear()
{
FaceType.clear();
DetNbr.clear();
StripNbr.clear();
Energy.clear();
}
void DecodeD::Dump()
{
cout << "Datatype: " << datatype << " means ";
......
......@@ -5,12 +5,16 @@
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// Root headers
#include "TFile.h"
#include "TTree.h"
#define NBDETECTORS 1
#define NBSTRIPS 32
enum Datatype {D_NONE = 0, D_ROOT, D_MFM};
typedef struct {
......@@ -59,6 +63,10 @@ class DecodeD
uint32_t* timestamp;
// For online data
vector<int> FaceType;
vector<int> DetNbr;
vector<int> StripNbr;
vector<double> Energy;
public:
DecodeD(bool v);
......@@ -70,12 +78,19 @@ class DecodeD
long int getCursor();
long int getLength();
int getEventSize();
int getFaceType(const int i);
int getDetNbr(const int i);
int getStripNbr(const int i);
double getEnergy(const int i);
long int getTime();
newframe_t* getEvent();
// One may add a few getters here and deprecate getEvent to avoid requiring the class user to know the newframe_t struct
void decodeEvent();
void decodeEventFinal();
void Clear();
void Dump();
};
......
......@@ -6,20 +6,10 @@
#include "TComptonTelescopePhysics.h"
// root headers
#include "TCutG.h"
//#include "TH2.h"
#include "TFile.h"
#include "TCanvas.h"
// custom headers
#include "DecodeR.h"
#include "DecodeD.h"
#include "DecodeT.h"
#define __TEST_ZONE__
//#undef __TEST_ZONE__
#define __USE_CUTG__
#undef __USE_CUTG__
// C++ headers
#include <iostream>
......@@ -27,110 +17,16 @@
#include <string>
using namespace std;
////--//--// One-line setter for calorimeter //--//--//
//
//void setCTCalorimeter(TComptonTelescopeData* ccamData, DecodeR* D, const int pixelNumber)
//{
// ccamData -> SetCTCalorimeter(1, 1, D->getPixelNumber(), D->getTime(), D->getData(), pixelNumber);
///* ccamData -> SetCTCalorimeterTTowerNbr( 1 );
// ccamData -> SetCTCalorimeterTDetectorNbr( 1 );//Triggered ASIC number
// ccamData -> SetCTCalorimeterTChannelNbr( D -> getPixelNumber() );//Pixel that triggered
// ccamData -> SetCTCalorimeterTTime( D -> getTime() );
// for (int i = 0; i < pixelNumber; ++i) {//Loop on pixels
// ccamData -> SetCTCalorimeterETowerNbr(1);
// ccamData -> SetCTCalorimeterEDetectorNbr( 1 );
// ccamData -> SetCTCalorimeterEChannelNbr( i );//PMT pixel number
// ccamData -> SetCTCalorimeterEEnergy( D -> getData()[i] );
// }//End of loop on pixels*/
//}
//--//--// One-line setter for DSSSD(s) //--//--//
// One-line setter for the Front of one DSSD
void setCTTrackerFront(TComptonTelescopeData* ccamData, newframe_t* event, int detNbr, int faceNbr, const int stripNumber)
{
//detNbr and faceNbr are > 0
ccamData -> SetCTTrackerFrontTTowerNbr(1);
ccamData -> SetCTTrackerFrontTDetectorNbr(detNbr);
ccamData -> SetCTTrackerFrontTStripNbr(33);
ccamData -> SetCTTrackerFrontTTime(event->timestamp);
for (int k = 0; k < stripNumber; k++) {//Loop on strips
ccamData -> SetCTTrackerFrontETowerNbr(1);
ccamData -> SetCTTrackerFrontEDetectorNbr(detNbr);
ccamData -> SetCTTrackerFrontEStripNbr(k);
ccamData -> SetCTTrackerFrontEEnergy(event->sample[faceNbr-1][detNbr-1][k]);
}//End of loop on strips
}
// One-line setter for the Back of one DSSD
void setCTTrackerBack(TComptonTelescopeData* ccamData, newframe_t* event, int detNbr, int faceNbr, const int stripNumber)
{
ccamData -> SetCTTrackerBackTTowerNbr(1);
ccamData -> SetCTTrackerBackTDetectorNbr(detNbr);
ccamData -> SetCTTrackerBackTStripNbr(33);
ccamData -> SetCTTrackerBackTTime(event->timestamp);
for (int k = 0; k < stripNumber; k++) {//Loop on strips
ccamData -> SetCTTrackerBackETowerNbr(1);
ccamData -> SetCTTrackerBackEDetectorNbr(detNbr);
ccamData -> SetCTTrackerBackEStripNbr(k);
ccamData -> SetCTTrackerBackEEnergy(event->sample[faceNbr-1][detNbr-1][k]);
}//End of loop on strips
}
// One-line setter for DSSSD(s)
void setCTTracker(TComptonTelescopeData* ccamData, newframe_t* event, vector<int>* nb_asic, vector<int>* chain, const int stripNumber)
{
for (vector<int>::iterator itchain = chain->begin(); itchain != chain->end(); ++itchain) {//Iterates on 2 faces
for (vector<int>::iterator itasic = nb_asic->begin(); itasic != nb_asic->end(); ++itasic) {//Iterates on 1 DSSSD
if (event->chip_data[*itchain][*itasic]) { // Test if data is present
switch (*itchain) {
case 0://Assuming 0 is front - to be checked
setCTTrackerFront(ccamData, event, *itasic+1, *itchain+1, stripNumber);
break;
case 1://Assuming 1 is back - to be checked
setCTTrackerBack(ccamData, event, *itasic+1, *itchain+1, stripNumber);
}//End switch
}//End if
}//End for
}//End for
}
//--//--//--//--//--//--//--//--//--//--//--//--//--//--//--//
int main()
{
// auto fout = new TFile("pipo.root", "recreate");
// auto bidim = new TH2F("bidim", "bidim", 2001, -1000, 1000, 2001, -1000, 1000);
#ifdef __USE_CUTG__
/* TFile* fcut = new TFile("/disk/proto-data/data/coinc-si/CUT_Compton.root");
TCutG* mcut = (TCutG*) fcut -> Get("CUT_Compton");
fcut -> Close();
cout << fcut << endl;
cout << mcut << endl;
TCanvas* can = new TCanvas();
can->cd();
mcut->Draw();*/
TCutG *mcut = new TCutG("CUT_Compton",7);
mcut->SetVarX("Calor_E");
mcut->SetVarY("Half_Energy");
mcut->SetTitle("Graph");
mcut->SetFillStyle(1000);
mcut->SetPoint(0,526905.4,0.6145632);
mcut->SetPoint(1,526905.4,0.4996379);
mcut->SetPoint(2,592808,0.1947341);
mcut->SetPoint(3,629341,0.02586437);
mcut->SetPoint(4,627908.3,0.211152);
mcut->SetPoint(5,540157.6,0.5981453);
mcut->SetPoint(6,526905.4,0.6145632);
#endif
///////////////////////////////////////////////////////////////////////////
// configure option manager
// NPOptionManager::getInstance()->Destroy();
#ifdef __TEST_ZONE__
string arg = "-D ./ComptonCAM.detector -C calibrations.txt -GH -E ./10He.reaction --circular";
#else
//string arg = "-D ./ComptonCAM.detector -C calibrations.txt -GH -E ./10He.reaction --circular";
string arg = "-D ./ComptonCAM.detector -C calibrations.txt -GH -E ./10He.reaction";
#endif
NPOptionManager::getInstance(arg);
// open ROOT output file
......@@ -155,36 +51,44 @@ int main()
// read data file/flux and fill ccamData object
std::cout << "Reading data\n";
DecodeR* DR = new DecodeR(false); // Instantiates DecodeR object reading calorimeter data flux
DecodeT* DT = new DecodeT(false); // Instantiates DecodeT object reading trigger data flux
DecodeD* DD = new DecodeD(false); // Instantiates DecodeD object reading DSSSD(s) data flux
DecodeD* DD = new DecodeD(true); // Instantiates DecodeD object reading DSSSD(s) data flux
newframe_t* event;
DD -> setTree("/disk/proto-data/data/20210210_run1/bb7_3309-7_cs137-20210210_11h05_coinc_run1_conv.root");
DD -> setTree("../data/20200128_10h44_bi207_conv.root");
//DD -> setTree("../data/bb7_3309-7_bi207_20210209_12h50_run10_conv.root");
int dlen = DD -> getLength();
//Sets where to look for data in DSSSD root frames
vector <int> chain ({0, 1});//Two faces
vector <int> nb_asic ({0});//First DSSSD
int i = 0;// ROSMAP files loop counter
int c = 0;// Event counter
int cc = 0;
// Set some constants
const int pixelNumber = 64;
const int stripNumber = 32;
#ifdef __TEST_ZONE__
while (DD -> getCursor() < dlen)
while (DD -> getCursor() < 49970)
//while (DD -> getCursor() < dlen)
{
DD -> decodeEvent();
// cout number of entries treated
if (DD -> getCursor() % 10000 == 0) {
cout << "\rEntry " << DD -> getCursor();
cout << flush;
}
// Decode event
DD->Clear();
DD->decodeEventFinal();
// Clear raw and physics data
m_NPDetectorManager->ClearEventPhysics();
m_NPDetectorManager->ClearEventData();
// Fill data
setCTTracker(ccamData, DD -> getEvent(), &nb_asic, &chain, stripNumber);
//cout << "event size " << DD->getEventSize() << endl;
for (int i = 0; i < DD->getEventSize(); i++) {
//cout << i << endl;
if (DD -> getFaceType(i) == 0) { // front
ccamData->SetFrontE(1, DD->getDetNbr(i)+1, DD->getStripNbr(i), DD->getEnergy(i));
ccamData->SetFrontT(1, DD->getDetNbr(i)+1, 33, DD->getTime());
//cout << "face " << DD -> getFaceType(i) << " det " << DD->getDetNbr(i) << " strip " << DD->getStripNbr(i) << " E " << DD->getEnergy(i) << " T " << DD->getTime() << endl;
}
else if (DD -> getFaceType(i) == 1) { // back
ccamData->SetBackE(1, DD->getDetNbr(i)+1, DD->getStripNbr(i), DD->getEnergy(i));
ccamData->SetBackT(1, DD->getDetNbr(i)+1, 33, DD->getTime());
//cout << "face " << DD -> getFaceType(i) << " det " << DD->getDetNbr(i) << " strip " << DD->getStripNbr(i) << " E " << DD->getEnergy(i) << " T " << DD->getTime() << endl;
}
}
// Build physical event
m_NPDetectorManager->BuildPhysicalEvent();
......@@ -196,126 +100,9 @@ int main()
m_NPDetectorManager->CheckSpectraServer();
}
#else
// Open data files
ifstream iros, itrig;
cout << "Loading data files ";
itrig.open("/disk/proto-data/data/coinc-si/mfm_trigger_202102051141.raw", ios::binary);
itrig.seekg(0, ios::end);
int tlen = itrig.tellg();
itrig.seekg(0, ios::beg);
char* tbuff = new char[tlen];
itrig.read(tbuff, tlen);
itrig.close();
cout << "... ";
iros.open("/disk/proto-data/data/coinc-si/mfm_rdd_rosmap_04_mfm_rosmap_04_2021-02-05_10_41_46.raw.0001", ios::binary);
iros.seekg(0, ios::end);
int rlen = iros.tellg();
iros.seekg(0, ios::beg);
char* rbuff = new char[rlen];
iros.read(rbuff, rlen);
iros.close();
cout << "Done" << endl;
// for (int reset=-1000; reset<1001; reset++)
// {
// cout << reset << endl;
DT -> setRaw(tbuff);
DR -> setRaw(rbuff);
//DD -> rewind();
DR -> decodeBlobMFM();
DD -> decodeEvent();
int cr = -17;
int cd = 0;
c = 0;
i = 0;
int tr = DR -> getTime();
int td = DD -> getTime();
// int dt = 100;
while(DR -> getCursor() < rlen and DD -> getCursor() < dlen)
{
// cout << DR -> getTime() << " " << DD -> getTime() << endl;
if (cr == cd) {
//if (abs(tr-td+55) < dt) {
// if (td-tr < 150 and tr-td < 10) { // That one is the real one
if (tr-td > 50 and tr-td < 1000) { // Same width, bad position
c++;
cout << cc << " " << c << "(" << cr << ", " << cd << ") : " << tr << " " << td << endl;
//DR -> Dump();
//DD -> Dump();
//bidim->Fill(reset, td-tr);
// Clear raw and physics data
m_NPDetectorManager->ClearEventPhysics();
m_NPDetectorManager->ClearEventData();
// Fill data
ccamData -> SetCTCalorimeter(1, 4, DR->getPixelNumber(), DR->getTime(), DR->getData(), pixelNumber);
setCTTracker(ccamData, DD -> getEvent(), &nb_asic, &chain, stripNumber);
// Build physical event
m_NPDetectorManager->BuildPhysicalEvent();
// Fill object in output ROOT file
if (ccamPhys->EventMultiplicity > 0) {
#ifdef __USE_CUTG__
if (mcut->IsInside(ccamPhys->Calor_E[0], ccamPhys->Half_Energy[0])) {
//cout << "c" << endl;
cc++;
m_OutputTree->Fill();
}
#else
m_OutputTree->Fill();
cc++;
#endif
}
//cout << "c" << endl;
// check spectra
m_NPDetectorManager->CheckSpectraServer();
//cout << "d" << endl;
}
if (td < tr) {
DD -> decodeEvent();
} else {
DR -> decodeBlobMFM();
}
} else if (cr < cd) {
DR -> decodeBlobMFM();
} else {
DD -> decodeEvent();
}
if (DR -> getTime() < tr) {
cr++;
}
tr = DR -> getTime();
if (DD -> getTime() < td) {
cd ++;
}
td = DD -> getTime();
i++;
} // End of main loop
// }
delete DR;
delete DT;
delete DD;
delete [] rbuff;
delete [] tbuff;
#endif
// fill spectra
m_NPDetectorManager -> WriteSpectra();
// fout->cd();
// bidim->Write();
// fout->Close();
// Essential
#if __cplusplus > 199711L && NPMULTITHREADING
......@@ -326,195 +113,3 @@ int main()
return 0;
}
/*
const bool loopForever = false;
//while (loopForever or i<12) // for Am data
while (loopForever or i<3) // for Bi data quick analysis
//while (loopForever or i<489) // for Bi data all events
{
// Load a root file and setup DecodeD
//DD -> setTree("../data/20200128_11h58_am241_conv.root");
DD -> setTree("../data/bb7_3309-7_bi207_20210203_16h25_run8_conv.root");
int dlength = DD -> getLength();
//while (DD -> getCursor() < dlength and (loopForever or i<12))
while (DD -> getCursor() < dlength and (loopForever or i<3))
{
// Load a ROSMAP file
std::ifstream is;
// i = 1;
switch (i % 3) {
case 3: is.open("./mfm.bin", std::ios::binary); break;
case 4: is.open("./133Ba.bin", std::ios::binary); break;
case 5: is.open("./241Am.bin", std::ios::binary); break;
case 0: is.open("./207Bi.bin", std::ios::binary); break;
case 1: is.open("./241Am-1.bin", std::ios::binary); break;
case 2: is.open("./241Am-2.bin", std::ios::binary); break;
}
is.seekg (0, std::ios::end);
int length = is.tellg();
is.seekg (0, ios::beg);
char* buffer = new char [length];
is.read(buffer, length);
is.close();
i++;
// Setup DecodeR
DR -> setRaw(buffer);
DR -> decodeRawMFM(); // get rid of the first two (empty) events
DR -> decodeRawMFM();
// Loop on some events
while (DD -> getCursor() < dlength and DR -> getCursor() < length)
{
// Clear raw and physics data
m_NPDetectorManager->ClearEventPhysics();
m_NPDetectorManager->ClearEventData();
// Fill calorimeter data
DR -> decodeRawMFM();
setCTCalorimeter(ccamData, DR, pixelNumber);
// Fill DSSD data
DD -> decodeEvent();
event = DD -> getEvent();
setCTTracker(ccamData, event, &nb_asic, &chain, stripNumber);
// Build physical event
m_NPDetectorManager->BuildPhysicalEvent();
// Fill object in output ROOT file
m_OutputTree->Fill();
// check spectra
m_NPDetectorManager->CheckSpectraServer();
c++;
//usleep(100);//Simulated 10kHz count rate
}// End of loop on ROSMAP events
delete [] buffer;
}// End of loop on DSSSD data
}// End of main loop
// fill spectra
m_NPDetectorManager->WriteSpectra();
// delete Decoders
delete DR;
delete DD;
// Essential
#if __cplusplus > 199711L && NPMULTITHREADING
m_NPDetectorManager->StopThread();
#endif
RootOutput::Destroy();
return 0;
}
*/
/*
while (DD -> getCursor() < dlength)
{
// Clear raw and physics data
m_NPDetectorManager->ClearEventPhysics();
m_NPDetectorManager->ClearEventData();
//Read some data
DD -> decodeEvent();
event = DD -> getEvent();
//Fill TComptonTelescopeData here (if possible)
for (vector<int>::iterator itchain = chain.begin(); itchain != chain.end(); ++itchain) {//Iterates on 2 faces
for (vector<int>::iterator itasic = nb_asic.begin(); itasic != nb_asic.end(); ++itasic) {//Iterates on 1 DSSSD
if (event->chip_data[*itchain][*itasic]) { // Test if data is present
switch (*itchain) {
case 0://Assuming 0 is front - to be checked
ccamData -> SetCTTrackerFrontTTowerNbr(1);
ccamData -> SetCTTrackerFrontTDetectorNbr(*itasic+1);
ccamData -> SetCTTrackerFrontTStripNbr(33);
ccamData -> SetCTTrackerFrontTTime(event->timestamp);
for (int k = 0; k < stripNumber; k++) {//Loop on strips
ccamData -> SetCTTrackerFrontETowerNbr(1);
ccamData -> SetCTTrackerFrontEDetectorNbr(*itasic+1);
ccamData -> SetCTTrackerFrontEStripNbr(k+1);
ccamData -> SetCTTrackerFrontEEnergy(event->sample[*itchain][*itasic][k]);
}//End of loop on strips
break;
case 1://Assuming 1 is back - to be checked
ccamData -> SetCTTrackerBackTTowerNbr(1);
ccamData -> SetCTTrackerBackTDetectorNbr(*itasic+1);
ccamData -> SetCTTrackerBackTStripNbr(33);
ccamData -> SetCTTrackerBackTTime(event->timestamp);
for (int k = 0; k < stripNumber; k++) {//Loop on strips
ccamData -> SetCTTrackerBackETowerNbr(1);
ccamData -> SetCTTrackerBackEDetectorNbr(*itasic+1);
ccamData -> SetCTTrackerBackEStripNbr(k+1);
ccamData -> SetCTTrackerBackEEnergy(event->sample[*itchain][*itasic][k]);
}//End of loop on strips
}//End switch
}//End if
}//End for
}//End for
// Build physical event
m_NPDetectorManager->BuildPhysicalEvent();
//Fill output tree
m_OutputTree->Fill();
//check spectra
m_NPDetectorManager->CheckSpectraServer();
c++;
}//End while
cout << "Read " << c << " DSSSD events from file" << endl;
// Read from file
D -> setRaw(buffer);
D -> decodeRawMFM(); // get rid of the first two (empty) events
D -> decodeRawMFM();
while (D -> getCursor() < length)
{
// Clear raw data and physics objects
m_NPDetectorManager->ClearEventPhysics();
m_NPDetectorManager->ClearEventData();
// Read the actual data
D -> decodeRawMFM();
//D -> Dump();//Optionnal print
// Set ccamData (a better way is envisionned)
for (int i = 0; i < pixelNumber; ++i) {
ccamData -> SetCTCalorimeterETowerNbr(1);
ccamData -> SetCTCalorimeterEDetectorNbr( 1 );
ccamData -> SetCTCalorimeterEChannelNbr( i );//PMT pixel number
ccamData -> SetCTCalorimeterEEnergy( D -> getData()[i] );
}
ccamData -> SetCTCalorimeterTTowerNbr( 1 );
ccamData -> SetCTCalorimeterTDetectorNbr( 1 );//Triggered ASIC number
ccamData -> SetCTCalorimeterTChannelNbr( D -> getPixelNumber() );//Pixel that triggered
ccamData -> SetCTCalorimeterTTime( D -> getTime() );
// ccamData -> Dump();
// Build physical event
m_NPDetectorManager->BuildPhysicalEvent();
// Fill object in output ROOT file
m_OutputTree->Fill();
// check spectra
m_NPDetectorManager->CheckSpectraServer();
c++;
usleep(100);//Simulated 10kHz count rate
}*/
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