Commit ec74e750 authored by mbsdaq's avatar mbsdaq

Modification of the crate configuration

parent 13493d00
......@@ -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;
......
......@@ -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)
......
......@@ -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));
......
......@@ -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];
......
......@@ -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;
}
......
......@@ -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-----
......
Markdown is supported
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