From ec74e750b58a7430ae03c678bd19aa61d71a1fce Mon Sep 17 00:00:00 2001 From: mbsdaq Date: Wed, 25 Sep 2024 18:58:17 +0300 Subject: [PATCH] Modification of the crate configuration --- TNeAnalysis.cxx | 55 +++++++++++--- TNeAnalysis.h | 11 ++- TNeEvent.cxx | 24 ++++-- TNeEvent.h | 24 ++++-- TNeProc.cxx | 194 ++++++++++++++++++++++++++++++++++-------------- TNeProc.h | 29 ++++++-- 6 files changed, 252 insertions(+), 85 deletions(-) diff --git a/TNeAnalysis.cxx b/TNeAnalysis.cxx index 098fccc..e457c0c 100644 --- a/TNeAnalysis.cxx +++ b/TNeAnalysis.cxx @@ -27,8 +27,15 @@ TNeAnalysis::TNeAnalysis() :fMbsEvent(0) ,fEvents(0) ,fLastEvent(0) - ,p_T1xa(0) - ,p_T1ya(0) + ,p_Lxa(0) + ,p_Lya(0) + ,p_Rxa(0) + ,p_Rya(0) + ,p_RVa(0) + ,p_R60a(0) + ,p_AnSa(0) + ,p_AnRa(0) + ,p_AnVa(0) { } //*********************************************************** @@ -39,8 +46,15 @@ TNeAnalysis::TNeAnalysis(int argc, char** argv) ,fMbsEvent(0) ,fEvents(0) ,fLastEvent(0) - ,p_T1xa(0) - ,p_T1ya(0) + ,p_Lxa(0) + ,p_Lya(0) + ,p_Rxa(0) + ,p_Rya(0) + ,p_RVa(0) + ,p_R60a(0) + ,p_AnSa(0) + ,p_AnRa(0) + ,p_AnVa(0) { cout << "**** Create TNeAnalysis name: " << argv[0] << endl; @@ -84,10 +98,24 @@ TNeAnalysis::TNeAnalysis(int argc, char** argv) // At this point, autosave file has not yet been read! // Therefore parameter values set here will be overwritten // if an autosave file is there. - p_T1xa = new TNeDet16("T1xa"); - p_T1ya = new TNeDet16("T1ya"); - AddParameter(p_T1xa); - AddParameter(p_T1ya); + p_Lxa = new TNeDet16("Lxa"); + p_Lya = new TNeDet16("Lya"); + p_Rxa = new TNeDet16("Rxa"); + p_Rya = new TNeDet16("Rya"); + p_RVa = new TNeDet16("RVa"); + p_R60a = new TNeDet16("R60a"); + p_AnSa = new TNeDet16("AnSa"); + p_AnRa = new TNeDet16("AnRa"); + p_AnVa = new TNeDet16("AnVa"); + AddParameter(p_Lxa); + AddParameter(p_Lya); + AddParameter(p_Rxa); + AddParameter(p_Rya); + AddParameter(p_RVa); + AddParameter(p_R60a); + AddParameter(p_AnSa); + AddParameter(p_AnRa); + AddParameter(p_AnVa); // pMTracks = new TNeMParms("MTRACKS"); // AddParameter(pMTracks); @@ -126,8 +154,15 @@ Int_t TNeAnalysis::UserPreLoop() } fEvents=0; // event counter fLastEvent=0; // number of last event processed - p_T1xa->ReadData(); -// p_T1ya->ReadData();>Z + p_Lxa->ReadData(); + p_Lya->ReadData(); + p_Rxa->ReadData(); + p_Rya->ReadData(); + p_RVa->ReadData(); + p_R60a->ReadData(); + p_AnSa->ReadData(); + p_AnRa->ReadData(); + p_AnVa->ReadData(); return 0; diff --git a/TNeAnalysis.h b/TNeAnalysis.h index 9771bfe..1494e4f 100644 --- a/TNeAnalysis.h +++ b/TNeAnalysis.h @@ -29,8 +29,15 @@ public: virtual Int_t UserEventFunc(); virtual Int_t UserPostLoop(); - TNeDet16* p_T1xa; - TNeDet16* p_T1ya; + TNeDet16* p_Lxa; + TNeDet16* p_Lya; + TNeDet16* p_Rxa; + TNeDet16* p_Rya; + TNeDet16* p_RVa; + TNeDet16* p_R60a; + TNeDet16* p_AnSa; + TNeDet16* p_AnRa; + TNeDet16* p_AnVa; // TNeMParms* pMTracks; ClassDef(TNeAnalysis,1) diff --git a/TNeEvent.cxx b/TNeEvent.cxx index 39ebba5..3640cb7 100644 --- a/TNeEvent.cxx +++ b/TNeEvent.cxx @@ -30,11 +30,25 @@ void TNeEvent::Clear(Option_t *t) //== all members should be cleared. //== memset(fRawData,0, sizeof(fRawData)); //================================================================== -// SQ - memset(T1xa, 0, sizeof(T1xa)); - memset(T1xt, 0, sizeof(T1xt)); - memset(T1ya, 0, sizeof(T1ya)); - memset(T1yt, 0, sizeof(T1yt)); +// Si + memset(Lxa, 0, sizeof(Lxa)); + memset(Lxt, 0, sizeof(Lxt)); + memset(Lya, 0, sizeof(Lya)); + memset(Lyt, 0, sizeof(Lyt)); + memset(Rxa, 0, sizeof(Rxa)); + memset(Rxt, 0, sizeof(Rxt)); + memset(Rya, 0, sizeof(Rya)); + memset(Ryt, 0, sizeof(Ryt)); + memset(RVa, 0, sizeof(RVa)); + memset(RVt, 0, sizeof(RVt)); + memset(R60a, 0, sizeof(R60a)); + memset(R60t, 0, sizeof(R60t)); + memset(AnSa, 0, sizeof(AnSa)); + memset(AnSt, 0, sizeof(AnSt)); + memset(AnRa, 0, sizeof(AnRa)); + memset(AnRt, 0, sizeof(AnRt)); + memset(AnVa, 0, sizeof(AnVa)); + memset(AnVt, 0, sizeof(AnVt)); // ToF memset(F3, 0, sizeof(F3)); diff --git a/TNeEvent.h b/TNeEvent.h index 2f6e99d..4078bcb 100644 --- a/TNeEvent.h +++ b/TNeEvent.h @@ -18,11 +18,25 @@ public: /** Method called by the framework to clear the event element. */ void Clear(Option_t *t=""); -//-----SQ----- - unsigned short T1xa[16]; - unsigned short T1xt[16]; - unsigned short T1ya[16]; - unsigned short T1yt[16]; +//-----Si----- + unsigned short Lxa[16]; + unsigned short Lxt[16]; + unsigned short Lya[16]; + unsigned short Lyt[16]; + unsigned short Rxa[16]; + unsigned short Rxt[16]; + unsigned short Rya[16]; + unsigned short Ryt[16]; + unsigned short RVa[16]; + unsigned short RVt[16]; + unsigned short R60a[16]; + unsigned short R60t[16]; + unsigned short AnSa[16]; + unsigned short AnSt[16]; + unsigned short AnRa[16]; + unsigned short AnRt[16]; + unsigned short AnVa[16]; + unsigned short AnVt[16]; unsigned short F3[4]; unsigned short tF3[4]; diff --git a/TNeProc.cxx b/TNeProc.cxx index 934fef4..d2a7b74 100644 --- a/TNeProc.cxx +++ b/TNeProc.cxx @@ -63,12 +63,19 @@ TNeProc::TNeProc() : TGo4EventProcessor() for(i = 0; i < 16; ++i) { -//-----SQ----- - d1T1xa[i] = NULL; - d1T1xt[i] = NULL; - d1T1xc[i] = NULL; -// d1T1ya[i] = NULL; -// d1T1yt[i] = NULL; +//-----Si----- + d1Lxa[i] = NULL; + d1Lxt[i] = NULL; + d1Lxc[i] = NULL; + d1Lya[i] = NULL; + d1Lyt[i] = NULL; + d1Lyc[i] = NULL; + d1Rxa[i] = NULL; + d1Rxt[i] = NULL; + d1Rxc[i] = NULL; + d1Rya[i] = NULL; + d1Ryt[i] = NULL; + d1Ryc[i] = NULL; } //_________________________________Neutrons // @@ -108,22 +115,49 @@ TNeProc::TNeProc(const char* name) : TGo4EventProcessor(name) fSubEvents = MakeTH1('I', "SubEvents", "Number of subevents", 16, 0, 15); fEventsSizes = MakeTH1('I', "EventSizes", "Size of each event", 1024, 0, 1023); int i; - hT1a = MakeTH2('S', "T1/T1a", "Amplitudes in T1 MADC", - 4096,0,4095,32,0,31,"amp (ch.)","channel"); for (i = 0; i < 16; ++i) { //-----SQ telescope raw----- - d1T1xa[i] = MakeTH1('I', Form("T1xa/T1xas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена - , Form("T1 x amp CH %2.2d",i), 8192, 0., 8192.); - d1T1xt[i] = MakeTH1('I', Form("T1xt/T1xts_%2.2d",i) - , Form("T1 x time CH %2.2d",i), 4096, 1., 4096); - d1T1xc[i] = MakeTH1('D', Form("T1xc/T1xcs_%2.2d",i) - , Form("T1 x energy MeV %2.2d",i), 4000, -2., 98.); - d1T1ya[i] = MakeTH1('I', Form("T1ya/T1yas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена - , Form("T1 x amp CH %2.2d",i), 8192, 0., 8192.); - d1T1yt[i] = MakeTH1('I', Form("T1yt/T1yts_%2.2d",i) - , Form("T1 x time CH %2.2d",i), 4096, 1, 4096); - d1T1yc[i] = MakeTH1('D', Form("T1yc/T1ycs_%2.2d",i) - , Form("T1 x energy MeV %2.2d",i), 4000, -2., 98.); + d1Lxa[i] = MakeTH1('I', Form("Lxa/Lxas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("L x amp CH %2.2d",i), 8192, 0., 8192.); + d1Lxt[i] = MakeTH1('I', Form("Lxt/Lxts_%2.2d",i) + , Form("L x time CH %2.2d",i), 4096, 1., 4096); + d1Lxc[i] = MakeTH1('D', Form("Lxc/Lxcs_%2.2d",i) + , Form("L x energy MeV %2.2d",i), 4000, -2., 98.); +// + d1Lya[i] = MakeTH1('I', Form("Lya/Lyas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("L x amp CH %2.2d",i), 8192, 0., 8192.); + d1Lyt[i] = MakeTH1('I', Form("Lyt/Lyts_%2.2d",i) + , Form("L x time CH %2.2d",i), 4096, 1, 4096); + d1Lyc[i] = MakeTH1('D', Form("Lyc/Lycs_%2.2d",i) +// + , Form("L x energy MeV %2.2d",i), 4000, -2., 98.); + d1Rxa[i] = MakeTH1('I', Form("Rxa/Rxas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("R x amp CH %2.2d",i), 8192, 0., 8192.); + d1Rxt[i] = MakeTH1('I', Form("Rxt/Rxts_%2.2d",i) + , Form("R x time CH %2.2d",i), 4096, 1., 4096); + d1Rxc[i] = MakeTH1('D', Form("Rxc/Rxcs_%2.2d",i) + , Form("R x energy MeV %2.2d",i), 4000, -2., 98.); +// + d1Rya[i] = MakeTH1('I', Form("Rya/Ryas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("R x amp CH %2.2d",i), 8192, 0., 8192.); + d1Ryt[i] = MakeTH1('I', Form("Ryt/Ryts_%2.2d",i) + , Form("R x time CH %2.2d",i), 4096, 1, 4096); + d1Ryc[i] = MakeTH1('D', Form("Ryc/Rycs_%2.2d",i) + , Form("R x energy MeV %2.2d",i), 4000, -2., 98.); +// + d1AnSa[i] = MakeTH1('I', Form("AnSa/AnSas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("Sect amp CH %2.2d",i), 8192, 0., 8192.); + d1AnSt[i] = MakeTH1('I', Form("AnSt/AnSts_%2.2d",i) + , Form("Sect time CH %2.2d",i), 4096, 1, 4096); + d1AnSc[i] = MakeTH1('D', Form("AnSc/AnScs_%2.2d",i) + , Form("Sect energy MeV %2.2d",i), 4000, -2., 98.); +// + d1AnRa[i] = MakeTH1('I', Form("AnRa/AnRas_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена + , Form("Ring amp CH %2.2d",i), 8192, 0., 8192.); + d1AnRt[i] = MakeTH1('I', Form("AnRt/AnRts_%2.2d",i) + , Form("Ring time CH %2.2d",i), 4096, 1, 4096); + d1AnRc[i] = MakeTH1('D', Form("AnRc/AnRcs_%2.2d",i) + , Form("Ring energy MeV %2.2d",i), 4000, -2., 98.); } // d1F3[0] = MakeTH1('I',"F3/QDC/F3_QDC_L","F3 QDC left", 4096, 0., 4095.); @@ -203,8 +237,8 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) } bool dooutput = false; // double value1, value2; -// double eT1xa,eT1ya; -// int mT1xa,mT1ya; +// double eLxa,eLya; +// int mLxa,mLya; // int num = 0, sz = 0; int i, n, geo, typ, header,caen_header, module_id=0, crate=-1, cnt, chnl, evnt, ch; @@ -264,24 +298,6 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) if(idata[n] >> 24!=0x04) break; switch (module_id) { - case 2: // mTDC: time sect & rings p1 - chnl= (idata[n] >> 16)&0x1f; - adc = idata[n] & 0xfff; //only 12 bits - if(chnl<16) - { - NeEvent->T1xt[chnl] = adc; - } - break; - - case 3: // mADC: amp sect & rings p1 - chnl= (idata[n] >> 16)&0x1f; - adc = idata[n] & 0xfff; //only 12 bits - if(chnl<16) - { - NeEvent->T1xa[chnl] = adc; - } - break; - case 0: //mTDC: ToF if ((idata[n] >> 16) & 0x20) break; //T bit analysis chnl= (idata[n] >> 16) & 0x1f; @@ -299,6 +315,72 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) break; + case 6: //scaler v560 + for(i = 0; i < 16; ++i) + NeEvent->scaler[i]=idata[n++] & 0x07ffffff; + break; + + case 8: // mTDC: time Lx & Ly + chnl= (idata[n] >> 16)&0x3f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->Lxt[chnl] = adc; + } else if(chnl<32) { + NeEvent->Lyt[chnl-16] = adc; + } + break; + + case 9: // mADC: amp Lx & Ly + chnl= (idata[n] >> 16)&0x1f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->Lxa[chnl] = adc; + } else { + NeEvent->Lya[chnl-16] = adc; + } + break; + + case 10: // mTDC: time Rx & Ry + chnl= (idata[n] >> 16)&0x3f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->Rxt[chnl] = adc; + } else if(chnl<32) { + NeEvent->Ryt[chnl-16] = adc; + } + break; + + case 11: // mADC: amp Rx & Ry + chnl= (idata[n] >> 16)&0x1f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->Rxa[chnl] = adc; + } else { + NeEvent->Rya[chnl-16] = adc; + } + break; + + case 12: // mTDC: time An S & R + chnl= (idata[n] >> 16)&0x3f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->AnSt[chnl] = adc; + } else if(chnl<32) { + NeEvent->AnRt[chnl-16] = adc; + } + break; + + case 13: // mADC: amp An S & R + chnl= (idata[n] >> 16)&0x1f; + adc = idata[n] & 0xfff; //only 12 bits + if(chnl<16) { + NeEvent->AnSa[chnl] = adc; + } else { + NeEvent->AnRa[chnl-16] = adc; + } + break; + + } break; @@ -337,10 +419,6 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) //printf("DATA: geo:%d Channel = %d\n", geo, chnl); switch(geo) { - case 6: //scaler v560 - for(i = 0; i < 16; ++i) - NeEvent->scaler[i]=idata[n++] & 0x07ffffff; - break; } // printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc); break; @@ -481,9 +559,9 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) chnl= (idata[n] >> 16)&0x3f; adc = idata[n] & 0xfff; //only 12 bits if(chnl<16) { - NeEvent->T1xt[chnl] = adc; + NeEvent->Lxt[chnl] = adc; } else if(chnl<32) { - NeEvent->T1yt[chnl-16] = adc; + NeEvent->Lyt[chnl-16] = adc; } break; @@ -491,9 +569,9 @@ Bool_t TNeProc::BuildEvent(TGo4EventElement* target) chnl= (idata[n] >> 16)&0x1f; adc = idata[n] & 0xfff; //only 12 bits if(chnl<16) { - NeEvent->T1xa[chnl] = adc; + NeEvent->Lxa[chnl] = adc; } else { - NeEvent->T1ya[chnl-16] = adc; + NeEvent->Lya[chnl-16] = adc; } break; @@ -624,12 +702,18 @@ ToF = (tf5 - tf3)*0.015625 + 68.475; } } for (n=0; n<16; ++n) { - if(NeEvent->T1xt[n]>0) d1T1xa[n]->Fill(NeEvent->T1xa[n]); - d1T1xt[n]->Fill(NeEvent->T1xt[n]); - if(NeEvent->T1yt[n]>0) d1T1ya[n]->Fill(NeEvent->T1ya[n]); - d1T1yt[n]->Fill(NeEvent->T1yt[n]); - hT1a->Fill(NeEvent->T1xa[n],n); - hT1a->Fill(NeEvent->T1ya[n],n+16); + if(NeEvent->Lxt[n]>0) d1Lxa[n]->Fill(NeEvent->Lxa[n]); + d1Lxt[n]->Fill(NeEvent->Lxt[n]); + if(NeEvent->Lyt[n]>0) d1Lya[n]->Fill(NeEvent->Lya[n]); + d1Lyt[n]->Fill(NeEvent->Lyt[n]); + if(NeEvent->Rxt[n]>0) d1Rxa[n]->Fill(NeEvent->Rxa[n]); + d1Rxt[n]->Fill(NeEvent->Rxt[n]); + if(NeEvent->Ryt[n]>0) d1Rya[n]->Fill(NeEvent->Rya[n]); + d1Ryt[n]->Fill(NeEvent->Ryt[n]); + if(NeEvent->AnSt[n]>0) d1AnSa[n]->Fill(NeEvent->AnSa[n]); + d1AnSt[n]->Fill(NeEvent->AnSt[n]); + if(NeEvent->AnRt[n]>0) d1AnRa[n]->Fill(NeEvent->AnRa[n]); + d1AnRt[n]->Fill(NeEvent->AnRt[n]); } //-----p1 secrors amp.----- /* @@ -652,7 +736,7 @@ ToF = (tf5 - tf3)*0.015625 + 68.475; { value1 = (double)NeEvent->p1s[n] + gRandom->Uniform(); value2 = ((TNeAnalysis*)go4)->p_p1s->Energy(value1, n); - d1_T1xa_c[n]->Fill(value2); + d1_Lxa_c[n]->Fill(value2); mp1s++; ep1s = value2; } diff --git a/TNeProc.h b/TNeProc.h index 09d6529..5b83715 100644 --- a/TNeProc.h +++ b/TNeProc.h @@ -26,14 +26,27 @@ private: // //-----SQ----- //-----raw----- - TH2 * hT1a; - TH2 * hT1t; - TH1 *d1T1xa[16]; - TH1 *d1T1xt[16]; - TH1 *d1T1xc[16]; - TH1 *d1T1ya[16]; - TH1 *d1T1yt[16]; - TH1 *d1T1yc[16]; + TH1 *d1Lxa[16]; + TH1 *d1Lxt[16]; + TH1 *d1Lxc[16]; + TH1 *d1Lya[16]; + TH1 *d1Lyt[16]; + TH1 *d1Lyc[16]; + TH1 *d1Rxa[16]; + TH1 *d1Rxt[16]; + TH1 *d1Rxc[16]; + TH1 *d1Rya[16]; + TH1 *d1Ryt[16]; + TH1 *d1Ryc[16]; + TH1 *d1AnSa[16]; + TH1 *d1AnSt[16]; + TH1 *d1AnSc[16]; + TH1 *d1AnRa[16]; + TH1 *d1AnRt[16]; + TH1 *d1AnRc[16]; + TH1 *d1AnVa[16]; + TH1 *d1AnVt[16]; + TH1 *d1AnVc[16]; //-----clb----- TH1 *d1sq1_x_c[16]; //-----ToF+MWPC----- -- 2.18.1