Commit 60971d7a authored by Pavel Sharov's avatar Pavel Sharov

* initial commit

parents
*~
*.o
G__*
*.d
#!/usr/bin/ksh
echo useranalysis startup script
echo $1
./$1 $2 $3 $4 $5 $6
echo "-----------------------------------------"
echo done ...
sleep 1
ifndef GO4SYS
GO4SYS = $(shell go4-config --go4sys)
endif
include $(GO4SYS)/Makefile.config
## normally should be like this for every module, but can be specific
ifdef GO4PACKAGE
EXAMP1STEP_DIR = Go4Example1Step
else
EXAMP1STEP_DIR = .
endif
EXAMP1STEP_LINKDEF = $(EXAMP1STEP_DIR)/NeLinkDef.$(HedSuf)
EXAMP1STEP_LIBNAME = $(GO4_USERLIBNAME)
## must be similar for every module
EXAMP1STEP_DICT = $(EXAMP1STEP_DIR)/$(DICT_PREFIX)Ne
EXAMP1STEP_DH = $(EXAMP1STEP_DICT).$(HedSuf)
EXAMP1STEP_DS = $(EXAMP1STEP_DICT).$(SrcSuf)
EXAMP1STEP_DO = $(EXAMP1STEP_DICT).$(ObjSuf)
EXAMP1STEP_H = $(filter-out $(EXAMP1STEP_DH) $(EXAMP1STEP_LINKDEF), $(wildcard $(EXAMP1STEP_DIR)/*.$(HedSuf)))
EXAMP1STEP_S = $(filter-out $(EXAMP1STEP_DS), $(wildcard $(EXAMP1STEP_DIR)/*.$(SrcSuf)))
EXAMP1STEP_O = $(EXAMP1STEP_S:.$(SrcSuf)=.$(ObjSuf))
EXAMP1STEP_DEP = $(EXAMP1STEP_O:.$(ObjSuf)=.$(DepSuf))
EXAMP1STEP_DDEP = $(EXAMP1STEP_DO:.$(ObjSuf)=.$(DepSuf))
EXAMP1STEP_LIB = $(EXAMP1STEP_DIR)/$(EXAMP1STEP_LIBNAME).$(DllSuf)
# used in the main Makefile
EXAMPDEPENDENCS += $(EXAMP1STEP_DEP) $(EXAMP1STEP_DDEP)
ifdef DOPACKAGE
DISTRFILES += $(EXAMP1STEP_S) $(EXAMP1STEP_H) $(EXAMP1STEP_LINKDEF)
DISTRFILES += $(EXAMP1STEP_DIR)/Readme.txt
DISTRFILES += $(wildcard $(EXAMP1STEP_DIR)/*.C)
endif
##### local rules #####
all:: $(EXAMP1STEP_LIB)
$(EXAMP1STEP_LIB): $(EXAMP1STEP_O) $(EXAMP1STEP_DO)
@$(MakeLibrary) $(EXAMP1STEP_LIBNAME) "$(EXAMP1STEP_O) $(EXAMP1STEP_DO)" $(EXAMP1STEP_DIR) $(EXAMP1STEP_LINKDEF) "$(ANAL_LIB_DEP)"
$(EXAMP1STEP_DS): $(EXAMP1STEP_H) $(EXAMP1STEP_LINKDEF)
@$(ROOTCINTGO4) $(EXAMP1STEP_H) $(EXAMP1STEP_LINKDEF)
clean-bin::
@rm -f $(EXAMP1STEP_O) $(EXAMP1STEP_DO)
@rm -f $(EXAMP1STEP_DEP) $(EXAMP1STEP_DDEP) $(EXAMP1STEP_DS) $(EXAMP1STEP_DH)
@rm -f
clean:: clean-bin
@$(CleanLib) $(EXAMP1STEP_LIBNAME) $(EXAMP1STEP_DIR)
include $(GO4SYS)/Makefile.rules
// $Id: NeLinkDef.h 478 2009-10-29 12:26:09Z linev $
//-----------------------------------------------------------------------
// The GSI Online Offline Object Oriented (Go4) Project
// Experiment Data Processing at EE department, GSI
//-----------------------------------------------------------------------
// Copyright (C) 2000- GSI Helmholtzzentrum fr Schwerionenforschung GmbH
// Planckstr. 1, 64291 Darmstadt, Germany
// Contact: http://go4.gsi.de
//-----------------------------------------------------------------------
// This software can be used under the license agreements as stated
// in Go4License.txt file which is part of the distribution.
//-----------------------------------------------------------------------
#ifdef __CINT__
#pragma link off all globals;
#pragma link off all classes;
#pragma link off all functions;
#pragma link C++ class TNeDet16+;
#pragma link C++ class TNeAnalysis+;
#pragma link C++ class TNeEvent+;
#pragma link C++ class TNeProc+;
#pragma link C++ class TNeMParms+;
#pragma link C++ class TNeSel+;
#endif
-2.34972 0.0114901 0
-2.30248 0.0119181 0
-1.90725 0.0113475 0
-2.31388 0.0132505 0
-1.56788 0.0105785 0
-1.82084 0.0112084 0
-2.06799 0.0116788 0
-1.56027 0.00843548 0
-1.82246 0.00983103 0
-1.3501 0.00820513 0
-2.19668 0.0109215 0
-2.01007 0.0105785 0
-0.76165 0.00399501 0
-1.08519 0.00468864 0
-1.42947 0.00569395 0
-0.761259 0.0037037 0
-0.923964 0.00615977 0
-1.03014 0.00600375 0
-0.669851 0.00334553 0
-0.600319 0.00336134 0
-0.489993 0.00551249 0
-0.601227 0.00588776 0
-0.368238 0.00473023 0
-0.903021 0.00594243 0
-0.944609 0.00869565 0
-1.20434 0.00935673 0
-1.27191 0.0109029 0
-1.42102 0.0104918 0
-1.87874 0.0122301 0
-1.11591 0.00869565 0
-1.62649 0.00950966 0
-1.25018 0.0092219 0
-0.71701 0.00429242 0
-0.782398 0.00490046 0
-0.792679 0.00443828 0
//===================================================================
//== TNeAnalysis.cxx: exp0211
//== Version: 2011-02-01
//===================================================================
using namespace std;
#include "TNeAnalysis.h"
#include <stdlib.h>
#include "Riostream.h"
#include "Go4EventServer.h"
#include "TGo4StepFactory.h"
#include "TGo4AnalysisStep.h"
#include "TNeDet16.h"
//#include "TNeH1Parms.h"
//#include "TNeH2Parms.h"
#include "TNeMParms.h"
#include "TNeSel.h"
#include "TGo4Version.h"
#include "TGo4MbsEventServer.h"
//***********************************************************
TNeAnalysis::TNeAnalysis()
:fMbsEvent(0)
,fEvents(0)
,fLastEvent(0)
,p_T1xa(0)
,p_T1ya(0)
{
}
//***********************************************************
// this constructor is called by go4analysis executable
TNeAnalysis::TNeAnalysis(int argc, char** argv)
:TGo4Analysis(argc, argv)
,fMbsEvent(0)
,fEvents(0)
,fLastEvent(0)
,p_T1xa(0)
,p_T1ya(0)
{
cout << "**** Create TNeAnalysis name: " << argv[0] << endl;
if (!TGo4Version::CheckVersion(__GO4BUILDVERSION__)) {
cout << "**** Go4 version mismatch" << endl;
exit(-1);
}
TGo4StepFactory* factory = new TGo4StepFactory("Factory");
factory->DefEventProcessor("NeProc","TNeProc");// object name, class name
factory->DefOutputEvent("NeEvent","TNeEvent"); // object name, class name
// TGo4EventSourceParameter* sourcepar = new TGo4MbsEventServerParameter("rio3");
TGo4EventSourceParameter* sourcepar = new TGo4MbsStreamParameter("rio3-2");
//TGo4EventSourceParameter* sourcepar = new TGo4MbsTransportParameter("rio3");
// TGo4EventSourceParameter* sourcepar =
// new TGo4MbsFileParameter("/LynxOS/RIO3_3.1/mbsusr/user1/mbsrun/flnr/wrk3a/aa*.lmd");
TGo4FileStoreParameter* storepar = new TGo4FileStoreParameter(Form("%sOutput", argv[0]),99,320000,5);
storepar->SetOverwriteMode(kTRUE);
TGo4AnalysisStep* step = new TGo4AnalysisStep("Analysis", factory, sourcepar, storepar);
step->SetSourceEnabled(kTRUE);
//step->SetStoreEnabled(kTRUE);
step->SetProcessEnabled(kTRUE);
step->SetErrorStopEnabled(kTRUE);
// Now the first analysis step is set up.
// Other steps could be created here
AddAnalysisStep(step);
// uncomment following line to define custom passwords for analysis server
// DefineServerPasswords("Neadmin", "Nectrl", "Neview");
DefineServerPasswords("Acu0La0", "Acu0La0", "go4view");
//////////////// Parameter //////////////////////////
// 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);
// pMTracks = new TNeMParms("MTRACKS");
// AddParameter(pMTracks);
}
//***********************************************************
TNeAnalysis::~TNeAnalysis()
{
cout << "**** TNeAnalysis: Delete instance" << endl;
}
//-----------------------------------------------------------
Int_t TNeAnalysis::UserPreLoop()
{
// all this is optional:
cout << "**** TNeAnalysis: PreLoop" << endl;
// get pointer to input event (used in postloop and event function):
fMbsEvent = dynamic_cast<TGo4MbsEvent*> (GetInputEvent("Analysis")); // of step "Analysis"
if(fMbsEvent) {
// fileheader structure (lmd file only):
s_filhe* fileheader=fMbsEvent->GetMbsSourceHeader();
if(fileheader)
{
cout <<"\nInput file: "<<fileheader->filhe_file << endl;
cout <<"Tapelabel:\t" << fileheader->filhe_label<<endl;
cout <<"UserName:\t" << fileheader->filhe_user<<endl;
cout <<"RunID:\t" << fileheader->filhe_run<<endl;
cout <<"Explanation: "<<fileheader->filhe_exp <<endl;
cout <<"Comments: "<<endl;
Int_t numlines=fileheader->filhe_lines;
for(Int_t i=0; i<numlines;++i)
{
cout<<"\t"<<fileheader->s_strings[i].string << endl;
}
}
}
fEvents=0; // event counter
fLastEvent=0; // number of last event processed
p_T1xa->ReadData();
// p_T1ya->ReadData();>Z
return 0;
}
//-----------------------------------------------------------
Int_t TNeAnalysis::UserPostLoop()
{
// all this is optional:
cout << "**** TNeAnalysis: PostLoop" << endl;
cout << "Last event #: " << fLastEvent << " Total events: " << fEvents << endl;
fMbsEvent = 0; // reset to avoid invalid pointer if analysis is changed in between
fEvents=0;
return 0;
}
//-----------------------------------------------------------
Int_t TNeAnalysis::UserEventFunc()
{
// all this is optional:
// This function is called once for each event after all steps.
if(fMbsEvent) {
fEvents++;
fLastEvent=fMbsEvent->GetCount();
}
if(fEvents == 1 || IsNewInputFile()) {
cout << "First event #: " << fLastEvent << endl;
SetNewInputFile(kFALSE); // we have to reset the newfile flag
}
return 0;
}
//===================================================================
//== TNeAnalysis.h: exp1210
//== Version: 2010-11-12
//===================================================================
#ifndef TNeANALYSIS_H
#define TNeANALYSIS_H
#include "TGo4Analysis.h"
#include "TGo4WinCond.h"
class TGo4MbsEvent;
class TNeDet16;
class TNeMParms;
class TNeSel;
class TNeAnalysis : public TGo4Analysis
{
private:
TGo4MbsEvent* fMbsEvent;
Int_t fEvents;
Int_t fLastEvent;
public:
TNeAnalysis();
TNeAnalysis(int argc, char** argv);
virtual ~TNeAnalysis() ;
virtual Int_t UserPreLoop();
virtual Int_t UserEventFunc();
virtual Int_t UserPostLoop();
TNeDet16* p_T1xa;
TNeDet16* p_T1ya;
// TNeMParms* pMTracks;
ClassDef(TNeAnalysis,1)
};
#endif //TANALYSIS_H
//===================================================================
//== TNeDet16.cpp: exp0211
//== Version: 2011-02-01
//===================================================================
using namespace std;
#include "TNeDet16.h"
#include <stdio.h>
#include "Riostream.h"
const int mchan = 16;
const int m = 3;
//***********************************************************
TNeDet16::TNeDet16(const char* name)
:TGo4Parameter(name)
,kread(0)
,n(2)
,nchan(mchan)
{
for(int i = 0; i < mchan; ++i)
{
a[i][0] = 0.;
a[i][1] = 1.;
a[i][2] = 0.;
}
} //----------------------------------------------------------------
TNeDet16::~TNeDet16()
{
} //-----------------------------------------------------------------
Bool_t TNeDet16::UpdateFrom(TGo4Parameter *source)
{
cout << "**** TNeDet1 " << GetName()
<< " updated from auto save file" << endl;
TNeDet16 * from = dynamic_cast<TNeDet16 *>(source);
if(from==0)
{
cout << "Wrong parameter class: "
<< source->ClassName() << endl;
return kFALSE;
}
kread = from->kread;
switch(kread)
{
case 1:
kread = 0;
from->kread = 0;
ReadData();
from->n = n;
from->nchan = nchan;
for(int i = 0; i < mchan; ++i)
{
from->a[i][0] = a[i][0];
from->a[i][1] = a[i][1];
from->a[i][2] = a[i][2];
}
break;
default:
n = from->n;
nchan = from->n;
for(int i =0; i < mchan; ++i)
{
a[i][0] = from->a[i][0];
a[i][1] = from->a[i][1];
a[i][2] = from->a[i][2];
}
}
return kTRUE;
} //-----------------------------------------------------------------
void TNeDet16::ReadData()
{
TString xname = GetName();
xname.ToLower();
xname += ".clb";
xname = "clb/"+xname;
FILE* F = fopen(xname.Data(),"rt");
if(!F)
{
printf("\n\n!!! FILE: %s WAS NOT FOUND\n\n"
,xname.Data());
return;
}
fscanf(F,"%d%d",&n,&nchan);
for(int i=0; i<nchan; i++)
{
fscanf(F,"%lf%lf%lf",&a[i][0],&a[i][1],&a[i][2]);
}
printf("\n\nREAD DATA FROM FILE: %s\n\n",xname.Data());
fclose(F);
return;
} //-----------------------------------------------------------------
double TNeDet16::Energy(double value, int chan)
{
double res = a[chan][n-1];
for(int i = n-2; i >= 0 ; --i)
{
res = res * value + a[chan][i];
}
return res;
} //-----------------------------------------------------------------
//===================================================================
//== TNeDet1.h: exp0211
//== Version: 2011-02-01
//===================================================================
#ifndef TNeDet16_H
#define TNeDet16_H
#include "TGo4Parameter.h"
class TNeDet16 : public TGo4Parameter
{
public:
TNeDet16(const char* name = 0);
virtual ~TNeDet16();
virtual Bool_t UpdateFrom(TGo4Parameter *);
void ReadData();
double Energy(double value, int chan);
int kread;
int n;
int nchan;
double a[32][3];
ClassDef(TNeDet16,1)
};
#endif
//===================================================================
//== TNeEvent.cxx:
//== Version:
//===================================================================
using namespace std;
#include "TNeEvent.h"
#include "Riostream.h"
TNeEvent::TNeEvent()
:TGo4EventElement()
{
cout << "**** TNeEvent: Create instance" << endl;
} //-------------------------------------------------------------------
TNeEvent::TNeEvent(const char* name)
:TGo4EventElement(name)
{
cout << "**** TNeEvent: Create instance " << name << endl;
} //-------------------------------------------------------------------
TNeEvent::~TNeEvent()
{
cout << "**** TNeEvent: Delete instance " << endl;
} //-------------------------------------------------------------------
void TNeEvent::Clear(Option_t *t)
{
//==================================================================
//== all members should be cleared.
//== memset(fRawData,0, sizeof(fRawData));
//==================================================================
// SQ
memset(T1xa, 0, sizeof(T1xa));
memset(T1xa, 0, sizeof(T1xa));
// ToF
memset(F3, 0, sizeof(F3));
memset(tF3, 0, sizeof(tF3));
memset(F5, 0, sizeof(F5));
memset(tF5, 0, sizeof(tF5));
// MWPC
memset(tMWPC, 0, sizeof(tMWPC));
nevent = 0;
trigger = 0;
subevents = 0;
evsize = 0;
mtime = 0;
} //-------------------------------------------------------------------
//===================================================================
//== TNeEvent.h:
//== Version:
//===================================================================
#ifndef TNeEVENT_H
#define TNeEVENT_H
#include "TGo4EventElement.h"
class TNeEvent : public TGo4EventElement
{
public:
TNeEvent();
TNeEvent(const char* name);
virtual ~TNeEvent();
/** 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];
unsigned short F3[4];
unsigned short tF3[4];
unsigned short F5[4];
unsigned short tF5[4];
unsigned short tMWPC[4];
unsigned int scaler[16];
/* unsigned short ADC[32];
unsigned short TDC[32];
unsigned short mQDC[32];
unsigned short mTDC[32];
*/
//-----WIRES-----
unsigned short nx1, ny1, nx2, ny2; // wires
unsigned short x1[32],y1[32],x2[32],y2[32]; // wires
unsigned int rx1, rx2, ry1, ry2;
int nevent;
int trigger;
int subevents;
int evsize;
unsigned int mtime;
// unsigned int time;
ClassDef(TNeEvent,1)
};
#endif //TEVENT_H
//===================================================================
//== TNe1HParms.cpp: exp1210
//== Version: 2010-11-26
//===================================================================
using namespace std;
#include "TNeMParms.h"
#include <stdio.h>
#include "Riostream.h"
//const int mchan = 32;
//const int m = 3;
//***********************************************************
TNeMParms::TNeMParms(const char* name)
:TGo4Parameter(name),
fill(kTRUE)
{
} //----------------------------------------------------------------
TNeMParms::~TNeMParms()
{
} //-----------------------------------------------------------------
Bool_t TNeMParms::UpdateFrom(TGo4Parameter *source)
{
cout << "**** TNeHParm " << GetName()
<< " updated from auto save file" << endl;
TNeMParms * from = dynamic_cast<TNeMParms *>(source);
if(from==0)
{
cout << "Wrong parameter class: "
<< source->ClassName() << endl;
return kFALSE;
}
fill = from->fill;
mtracksx = from->mtracksx;
mtracksy = from->mtracksy;
return kTRUE;
} //-----------------------------------------------------------------
//===================================================================
//== TNeMParms.h: exp1210
//== Version: 2010-11-1226
//===================================================================
#ifndef TNeMPARMS_H
#define TNeMPARMS_H
#include "TGo4Parameter.h"
class TNeMParms : public TGo4Parameter
{
public:
TNeMParms(const char* name = 0);
virtual ~TNeMParms();
virtual Bool_t UpdateFrom(TGo4Parameter *);
Bool_t fill;
int mtracksx,mtracksy;
ClassDef(TNeMParms,1)
};
#endif
//===================================================================
//== EXPERIMENT A-2
//== VERSION: 30.10.2018
//===================================================================
using namespace std;
#include "TNeProc.h"
#include <stdint.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "Riostream.h"
#include "TH1.h"
#include "TH2.h"
#include "TROOT.h"
#include "TCutG.h"
#include "TGo4WinCond.h"
#include "TGo4PolyCond.h"
#include "TGo4CondArray.h"
#include "TGo4Picture.h"
#include "TGo4MbsEvent.h"
#include "snprintf.h"
#include "TNeEvent.h"
#include "TNeDet16.h"
#include "TNeAnalysis.h"
#include "TRandom.h"
#include "TNeMParms.h"
//#include "TNeSel.h"
long TNeProc::bit[32] =
{0x00000001, 0x00000002, 0x00000004, 0x00000008
,0x00000010, 0x00000020, 0x00000040, 0x00000080
,0x00000100, 0x00000200, 0x00000400, 0x00000800
,0x00001000, 0x00002000, 0x00004000, 0x00008000
,0x00010000, 0x00020000, 0x00040000, 0x00080000
,0x00100000, 0x00200000, 0x00400000, 0x00800000
,0x01000000, 0x02000000, 0x04000000, 0x08000000
,0x10000000, 0x20000000, 0x40000000, 0x80000000};
TNeProc::TNeProc() : TGo4EventProcessor()
{
int i;
cout << "**** TNeProc: Create instance " << endl;
fTrigger = NULL;
fSubEvents = NULL;
fEventsSizes = NULL;
for(i = 0; i < 4; ++i)
{
d1F3[i] = NULL;
d1tF3[i] = NULL;
d1F5[i] = NULL;
d1tF5[i] = NULL;
d1tMWPC[i] = NULL;
}
for(i = 0; i < 16; ++i)
{
//-----SQ-----
d1T1xa[i] = NULL;
d1T1xt[i] = NULL;
d1T1xc[i] = NULL;
// d1T1ya[i] = NULL;
// d1T1yt[i] = NULL;
}
//_________________________________Neutrons
//
d1ToF = NULL;
d1aF3 = NULL;
d2ToFaF3 = NULL;
d1aF5 = NULL;
d2ToFaF5 = NULL;
d1X1 = NULL;
d1Y1 = NULL;
d1X2 = NULL;
d1Y2 = NULL;
d1NX1 = NULL;
d1NY1 = NULL;
d1NX2 = NULL;
d1NY2 = NULL;
d2XY1 = NULL;
d2XY2 = NULL;
d1CX1 = NULL;
d1CY1 = NULL;
d1CX2 = NULL;
d1CY2 = NULL;
} //-------------------------------------------------------------------
TNeProc::~TNeProc()
{
cout << "**** TNeProc: Delete instance " << endl;
} //-------------------------------------------------------------------
TNeProc::TNeProc(const char* name) : TGo4EventProcessor(name)
{
TGo4Log::Info("**** TNeProc: Create instance %s", name);
fTrigger = MakeTH1('I', "Trigger", "Values of trigger", 16, 0., 15.);
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, 0., 4095.);
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, 0., 4095.);
d1T1yc[i] = MakeTH1('D', Form("T1yc/T1ycs_%2.2d",i)
, Form("T1 x energy MeV %2.2d",i), 4000, -2., 98.);
}
//
d1F3[0] = MakeTH1('I',"F3/QDC/F3_QDC_L","F3 QDC left", 4096, 0., 4095.);
d1F3[1] = MakeTH1('I',"F3/QDC/F3_QDC_R","F3 QDC right", 4096, 0., 4095.);
d1F3[2] = MakeTH1('I',"F3/QDC/F3_QDC_U","F3 QDC up", 4096, 0., 4095.);
d1F3[3] = MakeTH1('I',"F3/QDC/F3_QDC_D","F3 QDC down", 4096, 0., 4095.);
d1tF3[0] = MakeTH1('I',"F3/TDC/tF3_TDC_L","F3 TDC left", 10000, 0, 9999);
d1tF3[1] = MakeTH1('I',"F3/TDC/tF3_TDC_R","F3 TDC right", 10000, 0, 9999);
d1tF3[2] = MakeTH1('I',"F3/TDC/tF3_TDC_U","F3 TDC up", 10000, 0, 9999);
d1tF3[3] = MakeTH1('I',"F3/TDC/tF3_TDC_D","F3 TDC down", 10000, 0, 9999);
//
d1F5[0] = MakeTH1('I',"F5/QDC/F5_QDC_L","F5 QDC left", 4096, 0., 4095.);
d1F5[1] = MakeTH1('I',"F5/QDC/F5_QDC_R","F5 QDC right", 4096, 0., 4095.);
d1F5[2] = MakeTH1('I',"F5/QDC/F5_QDC_U","F5 QDC up", 4096, 0., 4095.);
d1F5[3] = MakeTH1('I',"F5/QDC/F5_QDC_D","F5 QDC down", 4096, 0., 4095.);
d1tF5[0] = MakeTH1('I',"F5/TDC/tF5_TDC_L","F5 TDC left", 10000, 0, 9999);
d1tF5[1] = MakeTH1('I',"F5/TDC/tF5_TDC_R","F5 TDC right", 10000, 0, 9999);
d1tF5[2] = MakeTH1('I',"F5/TDC/tF5_TDC_U","F5 TDC up", 10000, 0, 9999);
d1tF5[3] = MakeTH1('I',"F5/TDC/tF5_TDC_D","F5 TDC down", 10000, 0, 9999);
//
//-----ToF-----
d1ToF = MakeTH1('D', "ToF/ToF", "time of flight", 10000,-100.,400.,"ToF(ns)");
d1aF3 = MakeTH1('D', "ToF/aF3", "amplitude of plastic F3", 4000,0.,4000.,"amp F3");
d2ToFaF3 = MakeTH2('D', "ToF/ToFaF3", "ToF vs aF3", 400,50.,200.,400,0.,4000.,"ToF","aF3");
d1aF5 = MakeTH1('D', "ToF/aF5", "amplitude of plastic F5", 4000,0.,4000.,"amp F5");
d2ToFaF5 = MakeTH2('D', "ToF/ToFaF5", "ToF vs aF5", 400,50.,200.,400,0.,4000.,"ToF","aF5");
//-----MWPC-----
d2XY1 = MakeTH2('I', "MWPC/XY1", "WIRES 1 Y1 vs X1", 32,0.,32.,32,0.,32.,"X1","Y1");
d2XY2 = MakeTH2('I', "MWPC/XY2", "WIRES 2 Y2 vs X2", 32,0.,32.,32,0.,32.,"X2","Y2");
d1X1 = MakeTH1('I', "MWPC/X1","WIRES X1",32,0.,32.);
d1Y1 = MakeTH1('I', "MWPC/Y1","WIRES Y1",32,0.,32.);
d1X2 = MakeTH1('I', "MWPC/X2","WIRES X2",32,0.,32.);
d1Y2 = MakeTH1('I', "MWPC/Y2","WIRES Y2",32,0.,32.);
d1tMWPC[0] = MakeTH1('I',"MWPC/tX1","MWPC TDC X1", 10000, 0, 9999);
d1tMWPC[1] = MakeTH1('I',"MWPC/tY1","MWPC TDC Y1", 10000, 0, 9999);
d1tMWPC[2] = MakeTH1('I',"MWPC/tX2","MWPC TDC X2", 10000, 0, 9999);
d1tMWPC[3] = MakeTH1('I',"MWPC/tY2","MWPC TDC Y2", 10000, 0, 9999);
d1NX1 = MakeTH1('I', "MWPC/NX1","WIRES X1",32,0.,32.);
d1NY1 = MakeTH1('I', "MWPC/NY1","WIRES Y1",32,0.,32.);
d1NX2 = MakeTH1('I', "MWPC/NX2","WIRES X2",32,0.,32.);
d1NY2 = MakeTH1('I', "MWPC/NY2","WIRES Y2",32,0.,32.);
d1CX1 = MakeTH1('I', "MWPC/CX1","clusters X1",32,0.,32.);
d1CY1 = MakeTH1('I', "MWPC/CY1","clusters Y1",32,0.,32.);
d1CX2 = MakeTH1('I', "MWPC/CX2","clusters X2",32,0.,32.);
d1CY2 = MakeTH1('I', "MWPC/CY2","clusters Y2",32,0.,32.);
//------
//------------------------------------------------------------
}//------------------------------------------------------------
Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
{
// called by framework from TNeEvent to fill it
TGo4Analysis *go4 = TGo4Analysis::Instance();
TNeEvent* NeEvent = (TNeEvent*) target;
TGo4MbsSubEvent* psubevt;
TGo4MbsEvent* fInput = (TGo4MbsEvent* ) GetInputEvent();
if(fInput == 0)
{
cout << "AnlProc: no input event !"<< endl;
return kFALSE;
}
bool dooutput = false;
// double value1, value2;
// double eT1xa,eT1ya;
// int mT1xa,mT1ya;
//
int num = 0, sz = 0;
int i, n, geo, typ, header,caen_header, module_id=0, crate=-1, cnt, chnl, evnt, ch;
// int mDSD_X, mDSD_Y, mCsI;
bool m_bool= false, c_bool = false;
uint16_t MSB, LSB;
uint32_t MSBLSB, adc;
uint32_t *idata;
double af3=0., af5=0., tf3=0., tf5=0., ToF=0.;
fInput->ResetIterator();
while((psubevt = fInput->NextSubEvent()) != 0)
{
num++;
sz += psubevt->GetIntLen();
idata = (uint32_t*) psubevt->GetDataField();
n = -1;
while(++n < psubevt->GetIntLen())
{
header = idata[n] >> 24;
caen_header = header & 0x7;
if (dooutput)
printf("Raw data = %x\n", idata[n]);
switch (psubevt->GetProcid())
{
case 100: //VME_0, see setup.usf
if (header==0x40)
m_bool=true; //MESYTEC header flag
else if (caen_header == 2)
c_bool=true; //CAEN header flag
else if ((idata[n]==0xaffeaffe) || (idata[n]== 0x06000000) || (idata[n]== 0x05000000))
{
c_bool=false;
m_bool=false;
}
if (m_bool) //in case of MESYTEC data
{
typ=idata[n] >> 30;
switch(typ)
{
case 1: //MESYTEC header
module_id = (idata[n] >> 16) & 0xff;
if (dooutput)
printf("Mesytec Module ID %d\n", module_id);
break;
case 0: //MESYTEC data
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;
adc = idata[n] & 0xffff; //only 16 bits
if(chnl<4) NeEvent->tF3[chnl] = adc;
else if(chnl<8) NeEvent->tF5[chnl-4] = adc;
else if(chnl<12);
else if(chnl<16) NeEvent->tMWPC[chnl-12] = adc;
break;
case 1: //mQDC:
chnl= (idata[n] >> 16) & 0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<4) NeEvent->F3[chnl] = adc;
else if(chnl<8) NeEvent->F5[chnl-4] = adc;
break;
}
break;
case 3: //-----MESYTEC footer-----
m_bool=false;
break;
default:
printf("ERROR !!!!!! Unknown MESYTEC typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
else if (c_bool) //in case of CAEN data
{
typ = (idata[n] >> 24) & 0x7;
geo = idata[n] >> 27;
if (dooutput)
printf("CAEN geo %d\n", geo);
switch(typ)
{
case 2: //CAEN header
crate = (idata[n] >> 16) & 0xff;
cnt = (idata[n] >> 8) & 0x1f;
if (geo==30)
NeEvent->mtime=idata[++n];//machine time
if (dooutput)
printf("Header: geo:%d crate:%d cnt = %d\n", geo, crate, cnt);
break;
case 0: //CAEN data
adc = idata[n] & 0xfff;
chnl = (idata[n] >> 16) & 0x1f;
//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;
case 4: //CAEN footer
c_bool = false;
evnt = idata[n] & 0xffffff;
if (dooutput)
printf(" Event: geo:%d number:%d\n", geo, evnt);
break;
case 6: //CAEN no valid data
c_bool = false;
if (dooutput)
printf("!!!No valid data from CAEN!!!");
break;
default:
printf("ERROR !!!!!! Uncknown CAEN typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
break; //end of VME_0
case 101: // CAMAC through VME_0, see setup.usf
geo = idata[n] >> 27;
switch(geo)
{
case 1:
NeEvent->nx1 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC X1= %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x1[NeEvent->nx1++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB = (MSB << 16) | LSB;
//printf("Second word from MWPC X1= %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x1[NeEvent->nx1++] = i+16;
adc = idata[++n];//pass throug footer
//printf("Third word from MWPC X1= %x\n", adc);
NeEvent->rx1=MSBLSB;
break;
case 2:
NeEvent->ny1 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC Y1 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y1[NeEvent->ny1++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC Y1 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y1[NeEvent->ny1++] = i+16;
adc = idata[++n];//pass through footer
//printf("Third word from MWPC Y1 = %x\n", adc);
NeEvent->ry1=MSBLSB;
break;
case 3:
NeEvent->nx2 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC X2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x2[NeEvent->nx2++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC X2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x2[NeEvent->nx2++] = i+16;
adc = idata[++n];//pass through footer
//printf("Third word from MWPC X2 = %x\n", adc);
NeEvent->rx2=MSBLSB;
break;
case 4:
NeEvent->ny2 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC Y2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y2[NeEvent->ny2++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC Y2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y2[NeEvent->ny2++] = i+16;
adc = idata[++n];//pass throug footer
//printf("Third word from MWPC Y2 = %x\n", adc);
NeEvent->ry2=MSBLSB;
break;
}
break; // end of CAMAC
case 200: //VME_1, see setup.usf
if (header==0x40)
m_bool=true; //MESYTEC header flag
else if (caen_header == 2)
c_bool=true; //CAEN header flag
else if ((idata[n]==0xaffeaffe) || (idata[n]== 0x06000000) || (idata[n]== 0x05000000))
{
c_bool=false;
m_bool=false;
}
if (m_bool) //in case of MESYTEC data
{
typ=idata[n] >> 30;
switch(typ)
{
case 1: //MESYTEC header
module_id = (idata[n] >> 16) & 0xff;
if (dooutput)
printf("Mesytec Module ID %d\n", module_id);
break;
case 0: //MESYTEC data
if(idata[n] >> 24!=0x04) break;
switch (module_id)
{
case 3: // mTDC: time sect & rings p1
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16) {
NeEvent->T1xt[chnl] = adc;
} else {
NeEvent->T1yt[chnl-16] = adc;
}
break;
case 4: // mADC: amp sect & rings p1
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16) {
NeEvent->T1xa[chnl] = adc;
} else {
NeEvent->T1ya[chnl-16] = adc;
}
break;
}
break;
case 3: //-----MESYTEC footer-----
m_bool=false;
break;
default:
printf("ERROR !!!!!! Unknown MESYTEC typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
else if (c_bool) //in case of CAEN data
{
typ = (idata[n] >> 24) & 0x7;
geo = idata[n] >> 27;
if (dooutput)
printf("CAEN geo %d\n", geo);
switch(typ)
{
case 2: //CAEN header
crate = (idata[n] >> 16) & 0xff;
cnt = (idata[n] >> 8) & 0x1f;
if (geo==30)
NeEvent->mtime=idata[++n];//machine time
if (dooutput)
printf("Header: geo:%d crate:%d cnt = %d\n", geo, crate, cnt);
break;
case 0: //CAEN data
adc = idata[n] & 0xfff;
chnl = (idata[n] >> 16) & 0x1f;
//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;
case 4: //CAEN footer
c_bool = false;
evnt = idata[n] & 0xffffff;
if (dooutput)
printf(" Event: geo:%d number:%d\n", geo, evnt);
break;
case 6: //CAEN no valid data
c_bool = false;
if (dooutput)
printf("!!!No valid data from CAEN!!!");
break;
default:
printf("ERROR !!!!!! Uncknown CAEN typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
break; //end of VME_1
} //end of GetProcID
} //end of GetIntLen
} //end of NextSubEvent
NeEvent->nevent = fInput->GetCount();
NeEvent->trigger = fInput->GetTrigger();
NeEvent->subevents = num;
NeEvent->evsize = sz;
fTrigger->Fill(NeEvent->trigger);
fSubEvents->Fill(num);
fEventsSizes->Fill(sz);
//
for (n=0; n<4; ++n)
// if(NeEvent->trigger == 2)
{
if(NeEvent->F3[n] > 0 ) d1F3[n]->Fill(NeEvent->F3[n]);
if(NeEvent->F5[n] > 0) d1F5[n]->Fill(NeEvent->F5[n]);
if(NeEvent->tF3[n] > 0) d1tF3[n]->Fill(NeEvent->tF3[n]);
if(NeEvent->tF5[n] > 0) d1tF5[n]->Fill(NeEvent->tF5[n]);
if(NeEvent->tMWPC[n] > 0) d1tMWPC[n]->Fill(NeEvent->tMWPC[n]);
}
//
if(NeEvent->F3[0]>0&&NeEvent->F3[1]>0&&NeEvent->F3[2]>0&&NeEvent->F3[3]>0)
af3 = (NeEvent->F3[0]+NeEvent->F3[1]+NeEvent->F3[2]+NeEvent->F3[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->F5[0]>0&&NeEvent->F5[1]>0&&NeEvent->F5[2]>0&&NeEvent->F5[3]>0)
af5 = (NeEvent->F5[0]+NeEvent->F5[1]+NeEvent->F5[2]+NeEvent->F5[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->tF3[0]>0&&NeEvent->tF3[1]>0&&NeEvent->tF3[2]>0&&NeEvent->tF3[3]>0)
tf3 = (NeEvent->tF3[0]+NeEvent->tF3[1]+NeEvent->tF3[2]+NeEvent->tF3[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->tF5[0]>0&&NeEvent->tF5[1]>0&&NeEvent->tF5[2]>0&&NeEvent->tF5[3]>0)
tf5 = (NeEvent->tF5[0]+NeEvent->tF5[1]+NeEvent->tF5[2]+NeEvent->tF5[3]+4.*gRandom->Uniform())/4.;
//
// ToF = (tf5 - tf3)*0.125+89.165;
// ToF = (tf5 - tf3)*0.0625;
// ToF = (tf5 - tf3)*0.0625 + 68.55;
// ToF = (tf5 - tf3)*0.0625 + 68.475;
ToF = (tf5 - tf3)*0.015625 + 68.475;
if(af3*af5*tf3*tf5!=0)
{
// if(NeEvent->trigger == 1)
{
d1ToF->Fill(ToF);
d1aF3->Fill(af3);
d2ToFaF3->Fill(ToF,af3);
d1aF5->Fill(af5);
d2ToFaF5->Fill(ToF,af5);
}
}
for (n=0; n<16; ++n) {
d1T1xa[n]->Fill(NeEvent->T1xa[n]);
d1T1xt[n]->Fill(NeEvent->T1xt[n]);
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);
}
//-----p1 secrors amp.-----
/*
for (n=0; n<16; ++n)
{
if(NeEvent->p1s[n] > 0)
d1_p1s[n]->Fill(NeEvent->p1s[n]);
}
//----- time of p1 sectors ---
for (n=0; n<16; ++n)
{
if(NeEvent->tp1s[n] > 0)
d1_p1s[n]->Fill(NeEvent->tp1s[n]);
}
//______ calibrated spectra __________________________
for (n=0; n<16; ++n)
{
value1 = (double)NeEvent->p1s[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->p_p1s->Energy(value1, n);
d1_T1xa_c[n]->Fill(value2);
mp1s++;
ep1s = value2;
}
*/
NeEvent->SetValid(kTRUE); // to store
return kTRUE;
} //-------------------------------------------------------------------
double TNeProc::GetClasters(unsigned short n, unsigned short *x)
{
int i;
double clasters = 1;
if(n == 0) clasters = 0.;
else if(n > 1)
{
for(i = 1; i < n; ++i)
{
if(abs(x[i] - x[i-1]) > 1) clasters += 1.;
}
}
return clasters;
} //--------------------------------------------------------------------
//===================================================================
//== EXPERIMENT A-2
//== VERSION: 30.10.2018
//===================================================================
using namespace std;
#include "TNeProc.h"
#include <stdint.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include "Riostream.h"
#include "TH1.h"
#include "TH2.h"
#include "TROOT.h"
#include "TCutG.h"
#include "TGo4WinCond.h"
#include "TGo4PolyCond.h"
#include "TGo4CondArray.h"
#include "TGo4Picture.h"
#include "TGo4MbsEvent.h"
#include "snprintf.h"
#include "TNeEvent.h"
#include "TNeDet16.h"
#include "TNeAnalysis.h"
#include "TRandom.h"
#include "TNeMParms.h"
//#include "TNeSel.h"
long TNeProc::bit[32] =
{0x00000001, 0x00000002, 0x00000004, 0x00000008
,0x00000010, 0x00000020, 0x00000040, 0x00000080
,0x00000100, 0x00000200, 0x00000400, 0x00000800
,0x00001000, 0x00002000, 0x00004000, 0x00008000
,0x00010000, 0x00020000, 0x00040000, 0x00080000
,0x00100000, 0x00200000, 0x00400000, 0x00800000
,0x01000000, 0x02000000, 0x04000000, 0x08000000
,0x10000000, 0x20000000, 0x40000000, 0x80000000};
TNeProc::TNeProc() : TGo4EventProcessor()
{
int i;
cout << "**** TNeProc: Create instance " << endl;
fTrigger = NULL;
fSubEvents = NULL;
fEventsSizes = NULL;
for(i = 0; i < 4; ++i)
{
d1F3[i] = NULL;
d1tF3[i] = NULL;
d1F5[i] = NULL;
d1tF5[i] = NULL;
d1F6[i] = NULL;
d1tF6[i] = NULL;
d1tMWPC[i] = NULL;
d2sq_v[i] = NULL;
}
for(i = 0; i < 16; ++i)
{
//-----SQ-----
d1sq1_x[i] = NULL;
d1sq1_y[i] = NULL;
d1sq2_x[i] = NULL;
d1sq2_y[i] = NULL;
d1sq3_x[i] = NULL;
d1sq3_y[i] = NULL;
d1sq4_x[i] = NULL;
d1sq4_y[i] = NULL;
d1sq1_v[i] = NULL;
d1sq2_v[i] = NULL;
d1sq3_v[i] = NULL;
d1sq4_v[i] = NULL;
//-----SQ time-----
d1tsq1_x[i] = NULL;
d1tsq1_y[i] = NULL;
d1tsq2_x[i] = NULL;
d1tsq2_y[i] = NULL;
d1tsq3_x[i] = NULL;
d1tsq3_y[i] = NULL;
d1tsq4_x[i] = NULL;
d1tsq4_y[i] = NULL;
d1tsq1_v[i] = NULL;
d1tsq2_v[i] = NULL;
d1tsq3_v[i] = NULL;
d1tsq4_v[i] = NULL;
//-----Ntetra-----
d1Ntetra_x[i] = NULL;
d1Ntetra_y[i] = NULL;
//-----Ntetra time-----
d1tNtetra_x[i] = NULL;
d1tNtetra_y[i] = NULL;
}
d2Ntetra = NULL;
//_________________________________Neutrons
for(i = 0; i < 48; ++i)
{
d1neutAmp[i] = NULL;
d1neutTAC[i] = NULL;
d1neutTDC[i] = NULL;
d2Ngamma[i] = NULL;
}
//
d2tF3aF3_L = NULL;
d2tF3aF3_R = NULL;
d2tF3aF3_U = NULL;
d2tF3aF3_D = NULL;
d2tF6aF6 = NULL;
d1ToF = NULL;
d1ToF = NULL;
d1aF3 = NULL;
d2ToFaF3 = NULL;
d2ToFaF3_cut = NULL;
d1X1 = NULL;
d1Y1 = NULL;
d1X2 = NULL;
d1Y2 = NULL;
d1NX1 = NULL;
d1NY1 = NULL;
d1NX2 = NULL;
d1NY2 = NULL;
d2XY1 = NULL;
d2XY2 = NULL;
d2XY1beam = NULL;
d2XY2beam = NULL;
d2XYbeamOnTar = NULL;
d2XYbeamOnTar_trig2 = NULL;
d2XYbeamOnTar_F6 = NULL;
d1CX1 = NULL;
d1CY1 = NULL;
d1CX2 = NULL;
d1CY2 = NULL;
d2Alarm = NULL;
mult1_x = NULL;
mult2_x = NULL;
mult3_x = NULL;
mult4_x = NULL;
mult1_v = NULL;
mult2_v = NULL;
mult3_v = NULL;
mult4_v = NULL;
} //-------------------------------------------------------------------
TNeProc::~TNeProc()
{
cout << "**** TNeProc: Delete instance " << endl;
} //-------------------------------------------------------------------
TNeProc::TNeProc(const char* name) : TGo4EventProcessor(name)
{
qdc_tdc_corr=0;
cout << "**** TNeProc: Create instance " << name << endl;
fTrigger = MakeTH1('I', "Trigger", "Values of trigger", 16, 0., 15.);
fSubEvents = MakeTH1('I', "SubEvents", "Number of subevents", 16, 0, 15);
fEventsSizes = MakeTH1('I', "EventSizes", "Size of each event", 1024, 0, 1023);
fQDC_TDC_corr = MakeTH2('I',"QDC-TOF","QDC-TOF correlation",16,0,16,16,0,16, "QDC", "TDC");
fQDC_TDC_corr->SetMarkerStyle(21);
fQDC_TDC_corr->SetMarkerSize(17);
fQDC_TDC_corr->SetMarkerColor(kGreen);
for (int iii=1; iii<16; iii++)
{
for (int jjj=1; jjj<16; jjj++)
{
fQDC_TDC_corr->Fill(iii,jjj,1);
}
}
int i;
for (i = 0; i < 16; ++i)
{
//-----SQ telescope raw-----
d1sq1_x[i] = MakeTH1('I', Form("sq1/x1/x1_%2.2d",i) //указывать не повторяющуюся структуру папок и уникальные имена
, Form("Square X stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq1_y[i] = MakeTH1('I', Form("sq1/y1/y1_%2.2d",i)
, Form("Square Y stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq1_x[i] = MakeTH1('I', Form("sq1/tx1/tx1_%2.2d",i)
, Form("Square t_x stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq1_y[i] = MakeTH1('I', Form("sq1/ty1/ty1_%2.2d",i)
, Form("Square t_y stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq2_x[i] = MakeTH1('I', Form("sq2/x2/x2_%2.2d",i)
, Form("Square X stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq2_y[i] = MakeTH1('I', Form("sq2/y2/y2_%2.2d",i)
, Form("Square Y stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq2_x[i] = MakeTH1('I', Form("sq2/tx2/tx2_%2.2d",i)
, Form("Square t_x stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq2_y[i] = MakeTH1('I', Form("sq2/ty2/ty2_%2.2d",i)
, Form("Square t_y stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq3_x[i] = MakeTH1('I', Form("sq3/x3/x3_%2.2d",i)
, Form("Square X stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq3_y[i] = MakeTH1('I', Form("sq3/y3/y3_%2.2d",i)
, Form("Square Y stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq3_x[i] = MakeTH1('I', Form("sq3/tx3/tx3_%2.2d",i)
, Form("Square t_x stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq3_y[i] = MakeTH1('I', Form("sq3/ty3/ty3_%2.2d",i)
, Form("Square t_y stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq4_x[i] = MakeTH1('I', Form("sq4/x4/x4_%2.2d",i)
, Form("Square X stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq4_y[i] = MakeTH1('I', Form("sq4/y4/y4_%2.2d",i)
, Form("Square Y stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq4_x[i] = MakeTH1('I', Form("sq4/tx4/tx4_%2.2d",i)
, Form("Square t_x stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq4_y[i] = MakeTH1('I', Form("sq4/ty4/ty4_%2.2d",i)
, Form("Square t_y stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq1_v[i] = MakeTH1('I', Form("sq1/v1/v1_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq1_v[i] = MakeTH1('I', Form("sq1/tv1/tv1_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq2_v[i] = MakeTH1('I', Form("sq2/v2/v2_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq2_v[i] = MakeTH1('I', Form("sq2/tv2/tv2_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq3_v[i] = MakeTH1('I', Form("sq3/v3/v3_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq3_v[i] = MakeTH1('I', Form("sq3/tv3/tv3_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1sq4_v[i] = MakeTH1('I', Form("sq4/v4/v4_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
d1tsq4_v[i] = MakeTH1('I', Form("sq4/tv4/tv4_%2.2d",i)
, Form("Square stripes CH %2.2d",i), 4096, 0., 4095.);
//-----tetra Neutron telescope raw-----
d1Ntetra_x[i] = MakeTH1('I', Form("Ntetra/x/x_%2.2d",i)
, Form("Ntetra X stripes CH %2.2d",i), 4096, 0., 4095.);
d1Ntetra_y[i] = MakeTH1('I', Form("Ntetra/y/y_%2.2d",i)
, Form("Ntetra Y stripes CH %2.2d",i), 4096, 0., 4095.);
d1tNtetra_x[i] = MakeTH1('I', Form("tNtetra/tx/tx_%2.2d",i)
, Form("Ntetra tX stripes CH %2.2d",i), 8000, 0, 7999);
d1tNtetra_y[i] = MakeTH1('I', Form("tNtetra/ty/ty_%2.2d",i)
, Form("Ntetra tY stripes CH %2.2d",i), 20000, 0, 19999);
//-----SQ telescope calibrated-----
d1sq1_x_c[i] = MakeTH1('D', Form("sq1/cx1/cx1_%2.2d",i)
, Form("Square X stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq1_y_c[i] = MakeTH1('D', Form("sq1/cy1/cy1_%2.2d",i)
, Form("Square Y stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq2_x_c[i] = MakeTH1('D', Form("sq2/cx2/cx2_%2.2d",i)
, Form("Square X stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq2_y_c[i] = MakeTH1('D', Form("sq2/cy2/cy2_%2.2d",i)
, Form("Square Y stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq3_x_c[i] = MakeTH1('D', Form("sq3/cx3/cx3_%2.2d",i)
, Form("Square X stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq3_y_c[i] = MakeTH1('D', Form("sq3/cy3/cy3_%2.2d",i)
, Form("Square Y stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq4_x_c[i] = MakeTH1('D', Form("sq4/cx4/cx4_%2.2d",i)
, Form("Square X stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq4_y_c[i] = MakeTH1('D', Form("sq4/cy4/cy4_%2.2d",i)
, Form("Square Y stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq1_v_c[i] = MakeTH1('D', Form("sq1/cv1/cv1_%2.2d",i)
, Form("Square stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq2_v_c[i] = MakeTH1('D', Form("sq2/cv2/cv2_%2.2d",i)
, Form("Square stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq3_v_c[i] = MakeTH1('D', Form("sq3/cv3/cv3_%2.2d",i)
, Form("Square stripes MeV %2.2d",i), 2000, -2., 20.);
d1sq4_v_c[i] = MakeTH1('D', Form("sq4/cv4/cv4_%2.2d",i)
, Form("Square stripes MeV %2.2d",i), 2000, -2., 20.);
//
//-----tetra Neutron telescope calirated-----
//
d1Ntetra_x_c[i] = MakeTH1('D', Form("Ntetra/cx/cx_%2.2d",i)
, Form("Ntetra X stripes MeV %2.2d",i), 2000, -2., 20.);
d1Ntetra_y_c[i] = MakeTH1('D', Form("Ntetra/cy/cy_%2.2d",i)
, Form("Ntetra Y stripes MeV %2.2d",i), 2000, -2., 20.);
}
//-----neutrons-----
for (i = 0; i < 48; ++i)
{
d1neutAmp[i] = MakeTH1('I', Form("Neutrons/Amp/Amp_%2.2d",i)
, Form("Neutrons Amp CH %2.2d",i), 4096, 0., 4095.);
d1neutTAC[i] = MakeTH1('I', Form("Neutrons/TAC/TAC_%2.2d",i)
, Form("Neutrons TAC CH %2.2d",i), 4096, 0., 4095.);
d1neutTDC[i] = MakeTH1('I', Form("Neutrons/time/time_%2.2d",i)
, Form("Neutrons time CH %2.2d",i), 4999, 0., 5000.);
d2Ngamma[i] = MakeTH2('I', Form("Neutrons/Ng/Ng_%2.2d",i)
, Form("N gamma %2.2d",i), 400, 0., 4095., 400, 0., 4095.,"Amp","TAC");
}
for (i = 0; i < 4; ++i)
{
d2sq_v[i] = MakeTH2('D', Form("2D/dExE/sq_v_%2.2d",i+1) // adc
, Form("sq1_x vs v %2.2d",i+1), 400, 0., 20., 400, 0., 20., "sq_x", "veto");
}
//
d2Ntetra = MakeTH2('D', "2D/dExE/dExE_Ntetra"
, "Ntetra_x vs v Ntetra_y", 400, 0., 20., 400, 0., 20., "1mm", "20um");
//
d1F3[0] = MakeTH1('I',"F3/QDC/F3_QDC_L","F3 QDC left", 4096, 0., 4095.);
d1F3[1] = MakeTH1('I',"F3/QDC/F3_QDC_R","F3 QDC right", 4096, 0., 4095.);
d1F3[2] = MakeTH1('I',"F3/QDC/F3_QDC_U","F3 QDC up", 4096, 0., 4095.);
d1F3[3] = MakeTH1('I',"F3/QDC/F3_QDC_D","F3 QDC down", 4096, 0., 4095.);
d1tF3[0] = MakeTH1('I',"F3/TDC/tF3_TDC_L","F3 TDC left", 10000, 0, 9999);
d1tF3[1] = MakeTH1('I',"F3/TDC/tF3_TDC_R","F3 TDC right", 10000, 0, 9999);
d1tF3[2] = MakeTH1('I',"F3/TDC/tF3_TDC_U","F3 TDC up", 10000, 0, 9999);
d1tF3[3] = MakeTH1('I',"F3/TDC/tF3_TDC_D","F3 TDC down", 10000, 0, 9999);
//
d1F5[0] = MakeTH1('I',"F5/QDC/F5_QDC_L","F5 QDC left", 4096, 0., 4095.);
d1F5[1] = MakeTH1('I',"F5/QDC/F5_QDC_R","F5 QDC right", 4096, 0., 4095.);
d1F5[2] = MakeTH1('I',"F5/QDC/F5_QDC_U","F5 QDC up", 4096, 0., 4095.);
d1F5[3] = MakeTH1('I',"F5/QDC/F5_QDC_D","F5 QDC down", 4096, 0., 4095.);
d1tF5[0] = MakeTH1('I',"F5/TDC/tF5_TDC_L","F5 TDC left", 10000, 0, 9999);
d1tF5[1] = MakeTH1('I',"F5/TDC/tF5_TDC_R","F5 TDC right", 10000, 0, 9999);
d1tF5[2] = MakeTH1('I',"F5/TDC/tF5_TDC_U","F5 TDC up", 10000, 0, 9999);
d1tF5[3] = MakeTH1('I',"F5/TDC/tF5_TDC_D","F5 TDC down", 10000, 0, 9999);
//
d1F6[0] = MakeTH1('I',"F6/QDC/F6_QDC_L","F6 QDC left", 4096, 0., 4095.);
d1F6[1] = MakeTH1('I',"F6/QDC/F6_QDC_R","F6 QDC right", 4096, 0., 4095.);
d1F6[2] = MakeTH1('I',"F6/QDC/F6_QDC_U","F6 QDC up", 4096, 0., 4095.);
d1F6[3] = MakeTH1('I',"F6/QDC/F6_QDC_D","F6 QDC down", 4096, 0., 4095.);
d1tF6[0] = MakeTH1('I',"F6/TDC/tF6_TDC_L","F6 TDC left", 10000, 0, 9999);
d1tF6[1] = MakeTH1('I',"F6/TDC/tF6_TDC_R","F6 TDC right", 10000, 0, 9999);
d1tF6[2] = MakeTH1('I',"F6/TDC/tF6_TDC_U","F6 TDC up", 10000, 0, 9999);
d1tF6[3] = MakeTH1('I',"F6/TDC/tF6_TDC_D","F6 TDC down", 10000, 0, 9999);
//-----ToF-----
d1ToF = MakeTH1('D', "ToF/ToF", "time of flight", 10000,-100.,400.,"ToF(ns)");
d1aF3 = MakeTH1('D', "ToF/aF3", "amplitude of plastic F3", 4000,0.,4000.,"amp F3");
d2ToFaF3 = MakeTH2('D', "ToF/ToFaF3", "ToF vs aF3", 400,50.,200.,400,0.,4000.,"ToF","aF3");
d2ToFaF3_cut = MakeTH2('D', "ToF/ToFaF3_cut", "ToF vs aF3 with only 8he", 50,165,190,200,600,1200,"ToF","aF3");
d1aF5 = MakeTH1('D', "ToF/aF5", "amplitude of plastic F5", 4000,0.,4000.,"amp F5");
d2ToFaF5 = MakeTH2('D', "ToF/ToFaF5", "ToF vs aF5", 400,50.,200.,400,0.,4000.,"ToF","aF5");
d2ToFaF5_beam = MakeTH2('D', "ToF/ToFaF5_beam", "ToF vs aF5 with beam trigger", 400,50.,200.,400,0.,4000.,"ToF","aF5");
d2tF3aF3_L = MakeTH2('I', "2D/tF3aF3_L", "tdcF3 left vs qdcF3 left", 200,0.,4000.,200,0.,4000.,"tdc","qdc");
d2tF3aF3_R = MakeTH2('I', "2D/tF3aF3_R", "tdcF3 right vs qdcF3 right", 200,0.,4000.,200,0.,4000.,"tdc","qdc");
d2tF3aF3_U = MakeTH2('I', "2D/tF3aF3_U", "tdcF3 up vs qdcF3 up", 200,0.,4000.,200,0.,4000.,"tdc","qdc");
d2tF3aF3_D = MakeTH2('I', "2D/tF3aF3_D", "tdcF3 down vs qdcF3 down", 200,0.,4000.,200,0.,4000.,"tdc","qdc");
d2tF6aF6 = MakeTH2('I', "2D/tF6aF6", "(tF6-tF5) vs qdcF6", 500,200.,700.,500,0.,3000.,"tdc","qdc");
//-----MWPC-----
d2XY1 = MakeTH2('I', "MWPC/XY1", "WIRES 1 Y1 vs X1", 32,0.,32.,32,0.,32.,"X1","Y1");
d2XY2 = MakeTH2('I', "MWPC/XY2", "WIRES 2 Y2 vs X2", 32,0.,32.,32,0.,32.,"X2","Y2");
d2XY1beam = MakeTH2('I', "MWPC/XY1_beam", "WIRES 1 Y1 vs X1 beam trigger", 32,0.,32.,32,0.,32.,"X1","Y1");
d2XY2beam = MakeTH2('I', "MWPC/XY2_beam", "WIRES 2 Y2 vs X2 beam trigger", 32,0.,32.,32,0.,32.,"X2","Y2");
d2XYbeamOnTar = MakeTH2('f', "MWPC/XY_beamOnTar", "beam profile at target", 200,-50.0,50.0,200,-50,50,"X(Z=-70.0mm)","Y(Z=-70.0mm)");
d2XYbeamOnTar_trig2 = MakeTH2('f', "MWPC/XY_beamOnTar_trig2", "beam profile at target with trigg==2", 200,-50.0,50.0,200,-50,50,"X(Z=-70.0mm)","Y(Z=-70.0mm)");
d2XYbeamOnTar_F6 = MakeTH2('f', "MWPC/XY_beamOnTar_F6", "beam profile at target with trig=F6", 200,-50.0,50.0,200,-50,50,"X(Z=-70.0mm)","Y(Z=-70.0mm)");
d1X1 = MakeTH1('I', "MWPC/X1","WIRES X1",32,0.,32.);
d1Y1 = MakeTH1('I', "MWPC/Y1","WIRES Y1",32,0.,32.);
d1X2 = MakeTH1('I', "MWPC/X2","WIRES X2",32,0.,32.);
d1Y2 = MakeTH1('I', "MWPC/Y2","WIRES Y2",32,0.,32.);
d1tMWPC[0] = MakeTH1('I',"MWPC/tX1","MWPC TDC X1", 10000, 0, 9999);
d1tMWPC[1] = MakeTH1('I',"MWPC/tY1","MWPC TDC Y1", 10000, 0, 9999);
d1tMWPC[2] = MakeTH1('I',"MWPC/tX2","MWPC TDC X2", 10000, 0, 9999);
d1tMWPC[3] = MakeTH1('I',"MWPC/tY2","MWPC TDC Y2", 10000, 0, 9999);
d1NX1 = MakeTH1('I', "MWPC/NX1","WIRES X1",32,0.,32.);
d1NY1 = MakeTH1('I', "MWPC/NY1","WIRES Y1",32,0.,32.);
d1NX2 = MakeTH1('I', "MWPC/NX2","WIRES X2",32,0.,32.);
d1NY2 = MakeTH1('I', "MWPC/NY2","WIRES Y2",32,0.,32.);
d1CX1 = MakeTH1('I', "MWPC/CX1","clusters X1",32,0.,32.);
d1CY1 = MakeTH1('I', "MWPC/CY1","clusters Y1",32,0.,32.);
d1CX2 = MakeTH1('I', "MWPC/CX2","clusters X2",32,0.,32.);
d1CY2 = MakeTH1('I', "MWPC/CY2","clusters Y2",32,0.,32.);
//------
d2Alarm = MakeTH2('I', "2D/Alarm","Correlation loss",1,0.,1.,1,0,1);
d2Alarm->SetDrawOption("scatter");
d2Alarm->SetMarkerStyle(20);
d2Alarm->SetMarkerSize(50);
d2Alarm->SetMarkerColor(kRed);
mult1_x = MakeTH1('I', "MULTIPLICITIES/mult1_x","sq1_x multiplicity",16,0,16);
mult2_x = MakeTH1('I', "MULTIPLICITIES/mult2_x","sq2_x multiplicity",16,0,16);
mult3_x = MakeTH1('I', "MULTIPLICITIES/mult3_x","sq3_x multiplicity",16,0,16);
mult4_x = MakeTH1('I', "MULTIPLICITIES/mult4_x","sq4_x multiplicity",16,0,16);
mult1_v = MakeTH1('I', "MULTIPLICITIES/mult1_v","sq1_v multiplicity",16,0,16);
mult2_v = MakeTH1('I', "MULTIPLICITIES/mult2_v","sq2_v multiplicity",16,0,16);
mult3_v = MakeTH1('I', "MULTIPLICITIES/mult3_v","sq3_v multiplicity",16,0,16);
mult4_v = MakeTH1('I', "MULTIPLICITIES/mult4_v","sq4_v multiplicity",16,0,16);
//------------------------------------------------------------
cout << "**** TNeProc: Pictures" << endl;
dx1=0.25;
dx2=-0.05;
dy1=-0.3;
dy2=-0.15;
dtx=0;
dty=0;
pxa0 = -95.;
pxa1 = -90.;
pxa2 = -30.;
pxa3 = 0.;
pxa4 = 5.;
pya1 = 4.;
pya2 = 4.;
pya3 = 2.2;
ntrackx = 100;
ntracky = 100;
fLWAX1 = new TLine(pxa1, -0.5*pya1+dx1, pxa1, 0.5*pya1+dx1);
fLWAX2 = new TLine(pxa2, -0.5*pya2+dx2, pxa2, 0.5*pya2+dx2);
fLWAX3 = new TLine(pxa3, -0.5*pya3+dtx, pxa3, 0.5*pya3+dtx);
fLWAX1->SetLineWidth(5);
fLWAX2->SetLineWidth(5);
fLWAX3->SetLineWidth(5);
fTracksX = new TGraph(ntrackx*3);
fTracksX->SetName("Tracks X");
for(i = 0; i < fTracksX->GetN(); ++i)
fTracksX->SetPoint(i,pxa1,0.);
fTracksX->SetLineColor(3);
AddObject(fTracksX);
fPTrackX = new TGo4Picture("PTrackX","Tracking X wires");
fPTrackX->AddGraph(fTracksX,"AL");
fPTrackX->AddSpecialObject(fLWAX1,"SAME");
fPTrackX->AddSpecialObject(fLWAX2,"SAME");
fPTrackX->AddSpecialObject(fLWAX3,"SAME");
fPTrackX->SetAutoScale(false);
fPTrackX->SetRangeX(pxa0,pxa4);
fPTrackX->SetRangeY(-0.5*(pya1+1.),0.5*(pya1+1.));
fPTrackX->SetLegendDraw(false);
fPTrackX->SetHisStats(false);
AddPicture(fPTrackX);
itrackAX = 0;
pxb0 = -95.;
pxb1 = -90.;
pxb2 = -30.;
pxb3 = 0.;
pxb4 = 5.;
pyb1 = 4.;
pyb2 = 4.;
pyb3 = 2.;
fLWBX1 = new TLine(pxb1, -0.5*pyb1+dy1, pxb1, 0.5*pyb1+dy1);
fLWBX2 = new TLine(pxb2, -0.5*pyb2+dy2, pxb2, 0.5*pyb2+dy2);
fLWBX3 = new TLine(pxb3, -0.5*pyb3+dty, pxb3, 0.5*pyb3+dty);
fLWBX1->SetLineWidth(5);
fLWBX2->SetLineWidth(5);
fLWBX3->SetLineWidth(5);
fTracksY = new TGraph(ntracky*3);
fTracksY->SetName("Tracks Y");
for(i = 0; i < fTracksY->GetN(); ++i)
fTracksY->SetPoint(i,pxb1,0.);
fTracksY->SetLineColor(3);
AddObject(fTracksY);
fPTrackY = new TGo4Picture("PTrackY","Tracking Y wires");
fPTrackY->AddGraph(fTracksY,"AL");
fPTrackY->AddSpecialObject(fLWBX1,"SAME");
fPTrackY->AddSpecialObject(fLWBX2,"SAME");
fPTrackY->AddSpecialObject(fLWBX3,"SAME");
fPTrackY->SetAutoScale(false);
fPTrackY->SetRangeX(pxb0,pxb4);
fPTrackY->SetRangeY(-0.5*(pyb1+1.),0.5*(pyb1+1.));
fPTrackY->SetLegendDraw(false);
fPTrackY->SetHisStats(false);
AddPicture(fPTrackY);
itrackBX = 0;
}//------------------------------------------------------------
Bool_t TNeProc::BuildEvent(TGo4EventElement* target)
{
// called by framework from TNeEvent to fill it
TGo4Analysis *go4 = TGo4Analysis::Instance();
TNeEvent* NeEvent = (TNeEvent*) target;
TGo4MbsSubEvent* psubevt;
TGo4MbsEvent* fInput = (TGo4MbsEvent* ) GetInputEvent();
if(fInput == 0)
{
cout << "AnlProc: no input event !"<< endl;
return kFALSE;
}
bool dooutput = false;
double value1, value2;
int msq1_x = 0, msq1_y =0;
int msq2_x = 0, msq2_y =0;
int msq3_x = 0, msq3_y =0;
int msq4_x = 0, msq4_y =0;
int msq1_v = 0, msq2_v =0, msq3_v = 0, msq4_v =0;
//
int mNtetra_x = 0, mNtetra_y =0;
//
double esq1_x = 0, esq1_y = 0;
double esq2_x = 0, esq2_y = 0;
double esq3_x = 0, esq3_y = 0;
double esq4_x = 0, esq4_y = 0;
double esq1_v = 0, esq2_v = 0, esq3_v = 0, esq4_v = 0;
//
double eNtetra_x = 0, eNtetra_y = 0;
//
int num = 0, sz = 0;
int i, n, geo, typ, header,caen_header, module_id=0, crate=-1, cnt, chnl, evnt, ch;
// int mDSD_X, mDSD_Y, mCsI;
bool m_bool= false, c_bool = false;
uint16_t MSB, LSB;
uint32_t MSBLSB, adc;
uint32_t *idata;
double af3=0., af5=0., tf3=0., tf5=0., ToF=0., tf6=0.0, af6=0.0;
fInput->ResetIterator();
while((psubevt = fInput->NextSubEvent()) != 0)
{
num++;
sz += psubevt->GetIntLen();
idata = (uint32_t*) psubevt->GetDataField();
n = -1;
while(++n < psubevt->GetIntLen())
{
header = idata[n] >> 24;
caen_header = header & 0x7;
if (dooutput)
printf("Raw data = %x\n", idata[n]);
switch (psubevt->GetProcid())
{
case 100: //VME_0, see setup.usf
if (header==0x40)
m_bool=true; //MESYTEC header flag
else if (caen_header == 2)
c_bool=true; //CAEN header flag
else if ((idata[n]==0xaffeaffe) || (idata[n]== 0x06000000) || (idata[n]== 0x05000000))
{
c_bool=false;
m_bool=false;
}
if (m_bool) //in case of MESYTEC data
{
typ=idata[n] >> 30;
switch(typ)
{
case 1: //MESYTEC header
module_id = (idata[n] >> 16) & 0xff;
if (dooutput)
printf("Mesytec Module ID %d\n", module_id);
break;
case 0: //MESYTEC data
if(idata[n] >> 24!=0x04) break;
switch (module_id)
{
case 8: // mTDC: tSQ1_x && tSQ1_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq1_x[chnl] = adc;
}
else
{
NeEvent->tsq1_y[chnl-16] = adc;
}
break;
case 9: // mADC: SQ1_x && SQ1_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq1_x[chnl] = adc;
}
else
{
NeEvent->sq1_y[chnl-16] = adc;
}
break;
case 10: // mTDC: tSQ2_x && tSQ2_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq2_x[chnl] = adc;
}
else
{
NeEvent->tsq2_y[chnl-16] = adc;
}
break;
case 11: // mADC: SQ2_x && SQ2_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq2_x[chnl] = adc;
}
else
{
NeEvent->sq2_y[chnl-16] = adc;
}
break;
case 12: // mTDC: tSQ3_x & tSQ3_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq3_x[chnl] = adc;
}
else
{
NeEvent->tsq3_y[chnl-16] = adc;
}
break;
case 13: // mADC: SQ3_x && SQ3_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq3_x[chnl] = adc;
}
else
{
NeEvent->sq3_y[chnl-16] = adc;
}
break;
case 14: // mTDC: tSQ4_x && tSQ4_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq4_x[chnl] = adc;
}
else
{
NeEvent->tsq4_y[chnl-16] = adc;
}
break;
case 15: // mADC: SQ4_x && SQ4_y
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq4_x[chnl] = adc;
}
else
{
NeEvent->sq4_y[chnl-16] = adc;
}
break;
case 16: // mTDC: SQ1_v && SQ2_v
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq1_v[chnl] = adc;
}
else
{
NeEvent->tsq2_v[chnl-16] = adc;
}
break;
case 17: // mADC: SQ1_v && SQ2_v
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq1_v[chnl] = adc;
}
else
{
NeEvent->sq2_v[chnl-16] = adc;
}
break;
case 18: // mTDC: SQ3_v && SQ4_v
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->tsq3_v[chnl] = adc;
}
else
{
NeEvent->tsq4_v[chnl-16] = adc;
}
break;
case 19: // mADC: SQ3_v && SQ4_v
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->sq3_v[chnl] = adc;
}
else
{
NeEvent->sq4_v[chnl-16] = adc;
}
break;
case 0: //mTDC: ToF
if ((idata[n] >> 16) & 0x20) break; //T bit analysis
chnl= (idata[n] >> 16) & 0x1f;
adc = idata[n] & 0xffff; //only 16 bits
if(chnl<4) NeEvent->tF3[chnl] = adc;
else if(chnl<8) NeEvent->tF5[chnl-4] = adc;
else if(chnl<12) NeEvent->tF6[chnl-8] = adc;
else if(chnl<16) NeEvent->tMWPC[chnl-12] = adc;
else NeEvent->tNtetra_y[chnl-16] = adc;
break;
case 1: //mQDC:
chnl= (idata[n] >> 16) & 0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<4) NeEvent->F3[chnl] = adc;
else if(chnl<8) NeEvent->F5[chnl-4] = adc;
else if(chnl<12) NeEvent->F6[chnl-8] = adc;
break;
}
break;
case 3: //-----MESYTEC footer-----
m_bool=false;
break;
default:
printf("ERROR !!!!!! Unknown MESYTEC typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
else if (c_bool) //in case of CAEN data
{
typ = (idata[n] >> 24) & 0x7;
geo = idata[n] >> 27;
if (dooutput)
printf("CAEN geo %d\n", geo);
switch(typ)
{
case 2: //CAEN header
crate = (idata[n] >> 16) & 0xff;
cnt = (idata[n] >> 8) & 0x1f;
if (geo==30)
NeEvent->mtime=idata[n++];//machine time
if (dooutput)
printf("Header: geo:%d crate:%d cnt = %d\n", geo, crate, cnt);
break;
case 0: //CAEN data
adc = idata[n] & 0xfff;
chnl = (idata[n] >> 16) & 0x1f;
//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++];
break;
}
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break;
case 4: //CAEN footer
c_bool = false;
evnt = idata[n] & 0xffffff;
if (dooutput)
printf(" Event: geo:%d number:%d\n", geo, evnt);
break;
case 6: //CAEN no valid data
c_bool = false;
if (dooutput)
printf("!!!No valid data from CAEN!!!");
break;
default:
printf("ERROR !!!!!! Uncknown CAEN typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
break; //end of VME_0
case 101: // CAMAC through VME_0, see setup.usf
geo = idata[n] >> 27;
switch(geo)
{
case 1:
NeEvent->nx1 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC X1= %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x1[NeEvent->nx1++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB = (MSB << 16) | LSB;
//printf("Second word from MWPC X1= %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x1[NeEvent->nx1++] = i+16;
adc = idata[++n];//pass throug footer
//printf("Third word from MWPC X1= %x\n", adc);
NeEvent->rx1=MSBLSB;
break;
case 2:
NeEvent->ny1 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC Y1 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y1[NeEvent->ny1++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC Y1 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y1[NeEvent->ny1++] = i+16;
adc = idata[++n];//pass through footer
//printf("Third word from MWPC Y1 = %x\n", adc);
NeEvent->ry1=MSBLSB;
break;
case 3:
NeEvent->nx2 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC X2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x2[NeEvent->nx2++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC X2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->x2[NeEvent->nx2++] = i+16;
adc = idata[++n];//pass through footer
//printf("Third word from MWPC X2 = %x\n", adc);
NeEvent->rx2=MSBLSB;
break;
case 4:
NeEvent->ny2 = 0;
adc = idata[++n];
LSB=adc;
//printf("First word from MWPC Y2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y2[NeEvent->ny2++] = i;
adc = idata[++n];
MSB = adc;
MSBLSB= (MSB << 16) | LSB;
//printf("Second word from MWPC Y2 = %x\n", adc);
for(i = 0; i < 16; ++i)
if((adc & bit[i]) > 0) NeEvent->y2[NeEvent->ny2++] = i+16;
adc = idata[++n];//pass throug footer
//printf("Third word from MWPC Y2 = %x\n", adc);
NeEvent->ry2=MSBLSB;
break;
}
break; // end of CAMAC
case 200: // VME_1, see setup.usf
if (header==0x40)
m_bool=true; //MESYTEC header flag
else if (caen_header == 2)
c_bool=true; //CAEN header flag
else if ((idata[n]==0xaffeaffe) || (idata[n]== 0x06000000) || (idata[n]== 0x05000000))
{
c_bool=false;
m_bool=false;
}
if (m_bool) //in case of MESYTEC data
{
typ=idata[n] >> 30;
switch(typ)
{
case 1: //MESYTEC header
module_id = (idata[n] >> 16) & 0xff;
break;
case 0: //MESYTEC data
if(idata[n] >> 24!=0x04) break;
switch (module_id)
{
case 3: //mTDC:
if ((idata[n] >> 16) & 0x20) break; //T bit analysis
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0x1fff; //only 13 bits
NeEvent->neutTDC[chnl] = adc;
break;
case 4: //mTDC:
if ((idata[n] >> 16) & 0x20) break; //T bit analysis
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0x1fff; //only 13 bits
if(chnl<16)
{
NeEvent->neutTDC[chnl+32] = adc;
}
else //times tNtetra_x
{
NeEvent->tNtetra_x[chnl-16] = adc;
}
break;
case 5: // mADC: Ntetra_x && Ntetra_x
chnl= (idata[n] >> 16)&0x1f;
adc = idata[n] & 0xfff; //only 12 bits
if(chnl<16)
{
NeEvent->Ntetra_x[chnl] = adc;
}
else
{
NeEvent->Ntetra_y[chnl-16] = adc;
}
break;
}
break;
case 3: //MESYTEC footer
m_bool=false;
break;
default:
printf("ERROR !!!!!! Uncknown MESYTEC typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
else if (c_bool) //in case of CAEN data
{
typ = (idata[n] >> 24) & 0x7;
geo = idata[n] >> 27;
switch(typ)
{
case 2: //CAEN header
crate = (idata[n] >> 16) & 0xff;
cnt = (idata[n] >> 8) & 0x1f;
if (dooutput)
printf("Header: geo:%d crate:%d cnt = %d\n", geo, crate, cnt);
break;
case 0: //CAEN data
adc = idata[n] & 0xfff;
chnl = (idata[n] >> 16) & 0x1f;
switch(geo)
{
case 0: //ADC
if (chnl%2==0){
ch = chnl/2;
NeEvent->neutAmp[ch] = adc;
}
else {
ch = chnl/2;
NeEvent->neutTAC[ch] = adc;
}
break;
case 1: //ADC
if (chnl%2==0){
ch = chnl/2;
NeEvent->neutAmp[ch+16] = adc;
}
else {
ch = chnl/2;
NeEvent->neutTAC[ch+16] = adc;
}
break;
case 2: //ADC
if (chnl%2==0){
ch = chnl/2;
NeEvent->neutAmp[ch+32] = adc;
}
else {
ch = chnl/2;
NeEvent->neutTAC[ch+32] = adc;
}
break;
}
// printf(" Data: geo:%d chnl:%d adc:%d\n", geo, chnl, adc);
break;
case 4: //CAEN footer
c_bool = false;
evnt = idata[n] & 0xffffff;
if (dooutput)
printf(" Event: geo:%d number:%d\n", geo, evnt);
break;
case 6: //CAEN no valid data
c_bool = false;
if (dooutput)
printf("!!!No valid data from CAEN!!!");
break;
default:
printf("ERROR !!!!!! Unknown CAEN typ %d\n", typ);
printf("Data = %x\n", idata[n]);
break;
}
}
break; //end of VME_1
} //end of GetProcID
} //end of GetIntLen
} //end of NextSubEvent
NeEvent->nevent = fInput->GetCount();
NeEvent->trigger = fInput->GetTrigger();
NeEvent->subevents = num;
NeEvent->evsize = sz;
fTrigger->Fill(NeEvent->trigger);
fSubEvents->Fill(num);
fEventsSizes->Fill(sz);
//
for (n=0; n<4; ++n)
// if(NeEvent->trigger == 2)
{
if(NeEvent->F3[n] > 0 ) d1F3[n]->Fill(NeEvent->F3[n]);
if(NeEvent->F5[n] > 0) d1F5[n]->Fill(NeEvent->F5[n]);
if(NeEvent->F6[n] > 0) d1F6[n]->Fill(NeEvent->F6[n]);
if(NeEvent->tF3[n] > 0) d1tF3[n]->Fill(NeEvent->tF3[n]);
if(NeEvent->tF5[n] > 0) d1tF5[n]->Fill(NeEvent->tF5[n]);
if(NeEvent->tF6[n] > 0) d1tF6[n]->Fill(NeEvent->tF6[n]);
if(NeEvent->tMWPC[n] > 0) d1tMWPC[n]->Fill(NeEvent->tMWPC[n]);
}
//d2tF6aF6
if(NeEvent->tF3[0] > 0 && NeEvent->F3[0] > 0) d2tF3aF3_L->Fill(NeEvent->tF3[0],NeEvent->F3[0]);
if(NeEvent->tF3[1] > 0 && NeEvent->F3[1] > 0) d2tF3aF3_R->Fill(NeEvent->tF3[1],NeEvent->F3[1]);
if(NeEvent->tF3[2] > 0 && NeEvent->F3[2] > 0) d2tF3aF3_U->Fill(NeEvent->tF3[2],NeEvent->F3[2]);
if(NeEvent->tF3[3] > 0 && NeEvent->F3[3] > 0) d2tF3aF3_D->Fill(NeEvent->tF3[3],NeEvent->F3[3]);
//
if(NeEvent->F3[0]>0&&NeEvent->F3[1]>0&&NeEvent->F3[2]>0&&NeEvent->F3[3]>0)
af3 = (NeEvent->F3[0]+NeEvent->F3[1]+NeEvent->F3[2]+NeEvent->F3[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->F5[0]>0&&NeEvent->F5[1]>0&&NeEvent->F5[2]>0&&NeEvent->F5[3]>0)
af5 = (NeEvent->F5[0]+NeEvent->F5[1]+NeEvent->F5[2]+NeEvent->F5[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->F6[0]>0&&NeEvent->F6[1]>0&&NeEvent->F6[2]>0&&NeEvent->F6[3]>0)
af6 = (NeEvent->F6[0]+NeEvent->F6[1]+NeEvent->F6[2]+NeEvent->F6[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->tF3[0]>0&&NeEvent->tF3[1]>0&&NeEvent->tF3[2]>0&&NeEvent->tF3[3]>0)
tf3 = (NeEvent->tF3[0]+NeEvent->tF3[1]+NeEvent->tF3[2]+NeEvent->tF3[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->tF5[0]>0&&NeEvent->tF5[1]>0&&NeEvent->tF5[2]>0&&NeEvent->tF5[3]>0)
tf5 = (NeEvent->tF5[0]+NeEvent->tF5[1]+NeEvent->tF5[2]+NeEvent->tF5[3]+4.*gRandom->Uniform())/4.;
if(NeEvent->tF6[0]>0&&NeEvent->tF6[1]>0&&NeEvent->tF6[2]>0&&NeEvent->tF6[3]>0)
tf6 = (NeEvent->tF6[0]+NeEvent->tF6[1]+NeEvent->tF6[2]+NeEvent->tF6[3]+4.*gRandom->Uniform())/4.;
//
// ToF = (tf5 - tf3)*0.125+89.165;
// ToF = (tf5 - tf3)*0.0625;
// ToF = (tf5 - tf3)*0.0625 + 68.55;
// ToF = (tf5 - tf3)*0.0625 + 68.475;
daily quest
if(af3*af5*tf3*tf5!=0)
{
// if(NeEvent->trigger == 1)
{
d1ToF->Fill(ToF);
d1aF3->Fill(af3);
d2ToFaF3->Fill(ToF,af3);
// if (ToF>155 && ToF<170 && af3>400 && af3<1000) d2ToFaF3_cut->Fill(ToF,af3); //for 6he
// if (ToF>163 && ToF<175 && af3>500 && af3<1000) d2ToFaF3_cut->Fill(ToF,af3); // for 9li
if (ToF>165 && ToF<190 && af3>600 && af3<1200) d2ToFaF3_cut->Fill(ToF,af3); // for 8He
if (d2ToFaF3_cut->GetEntries()>800) d2Alarm->Fill(0.5,0.5);
d1aF5->Fill(af5);
d2ToFaF5->Fill(ToF,af5);
if(ToF<165 && ToF>168 && af5<500 && af5>700)
{
qdc_tdc_corr++;
}
if(NeEvent->trigger == 1)
{
d2ToFaF5_beam->Fill(ToF,af5);
}
}
}
if (tf6>0 && tf5>0 && af6>0)
{
d2tF6aF6->Fill(tf6-tf5, af6);
}
//-----SQ telescopes amp.-----
for (n=0; n<16; ++n)
{
if(NeEvent->sq1_x[n] > 0)
d1sq1_x[n]->Fill(NeEvent->sq1_x[n]);
if(NeEvent->sq1_y[n] > 0)
d1sq1_y[n]->Fill(NeEvent->sq1_y[n]);
if(NeEvent->sq2_x[n] > 0)
d1sq2_x[n]->Fill(NeEvent->sq2_x[n]);
if(NeEvent->sq2_y[n] > 0)
d1sq2_y[n]->Fill(NeEvent->sq2_y[n]);
if(NeEvent->sq3_x[n] > 0)
d1sq3_x[n]->Fill(NeEvent->sq3_x[n]);
if(NeEvent->sq3_y[n] > 0)
d1sq3_y[n]->Fill(NeEvent->sq3_y[n]);
if(NeEvent->sq4_x[n] > 0)
d1sq4_x[n]->Fill(NeEvent->sq4_x[n]);
if(NeEvent->sq4_y[n] > 0)
d1sq4_y[n]->Fill(NeEvent->sq4_y[n]);
if(NeEvent->sq1_v[n] > 0)
d1sq1_v[n]->Fill(NeEvent->sq1_v[n]);
if(NeEvent->sq2_v[n] > 0)
d1sq2_v[n]->Fill(NeEvent->sq2_v[n]);
if(NeEvent->sq3_v[n] > 0)
d1sq3_v[n]->Fill(NeEvent->sq3_v[n]);
if(NeEvent->sq4_v[n] > 0)
d1sq4_v[n]->Fill(NeEvent->sq4_v[n]);
}
//-----Ntetra telescopes amp.-----
for (n=0; n<16; ++n)
{
if(NeEvent->Ntetra_x[n] > 0)
d1Ntetra_x[n]->Fill(NeEvent->Ntetra_x[n]);
if(NeEvent->Ntetra_y[n] > 0)
d1Ntetra_y[n]->Fill(NeEvent->Ntetra_y[n]);
}
//-----SQ telescopes time---
for (n=0; n<16; ++n)
{
if(NeEvent->tsq1_x[n] > 0)
d1tsq1_x[n]->Fill(NeEvent->tsq1_x[n]);
if(NeEvent->tsq1_y[n] > 0)
d1tsq1_y[n]->Fill(NeEvent->tsq1_y[n]);
if(NeEvent->tsq2_x[n] > 0)
d1tsq2_x[n]->Fill(NeEvent->tsq2_x[n]);
if(NeEvent->tsq2_y[n] > 0)
d1tsq2_y[n]->Fill(NeEvent->tsq2_y[n]);
if(NeEvent->tsq3_x[n] > 0)
d1tsq3_x[n]->Fill(NeEvent->tsq3_x[n]);
if(NeEvent->tsq3_y[n] > 0)
d1tsq3_y[n]->Fill(NeEvent->tsq3_y[n]);
if(NeEvent->tsq4_x[n] > 0)
d1tsq4_x[n]->Fill(NeEvent->tsq4_x[n]);
if(NeEvent->tsq4_y[n] > 0)
d1tsq4_y[n]->Fill(NeEvent->tsq4_y[n]);
if(NeEvent->tsq1_v[n] > 0)
d1tsq1_v[n]->Fill(NeEvent->tsq1_v[n]);
if(NeEvent->tsq2_v[n] > 0)
d1tsq2_v[n]->Fill(NeEvent->tsq2_v[n]);
if(NeEvent->tsq3_v[n] > 0)
d1tsq3_v[n]->Fill(NeEvent->tsq3_v[n]);
if(NeEvent->tsq4_v[n] > 0)
d1tsq4_v[n]->Fill(NeEvent->tsq4_v[n]);
}
//-----Ntetra telescopes time-----
for (n=0; n<16; ++n)
{
if(NeEvent->tNtetra_x[n] > 0)
d1tNtetra_x[n]->Fill(NeEvent->tNtetra_x[n]);
if(NeEvent->tNtetra_y[n] > 0)
d1tNtetra_y[n]->Fill(NeEvent->tNtetra_y[n]);
}
//-----SQ telescopes calibrated-----
for (n=0; n<16; ++n)
{
if(NeEvent->tsq1_x[n] > 0)
{
value1 = (double)NeEvent->sq1_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ1_X_EC->Energy(value1, n);
d1sq1_x_c[n]->Fill(value2);
msq1_x++;
esq1_x = value2;
}
if(NeEvent->tsq1_y[n] > 0)
{
value1 = (double)NeEvent->sq1_y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ1_Y_EC->Energy(value1, n);
d1sq1_y_c[n]->Fill(value2);
msq1_y++;
esq1_y = value2;
}
if(NeEvent->tsq2_x[n] > 0)
{
value1 = (double)NeEvent->sq2_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ2_X_EC->Energy(value1, n);
d1sq2_x_c[n]->Fill(value2);
msq2_x++;
esq2_x = value2;
}
if(NeEvent->tsq2_y[n] > 0)
{
value1 = (double)NeEvent->sq2_y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ2_Y_EC->Energy(value1, n);
d1sq2_y_c[n]->Fill(value2);
msq2_y++;
esq2_y = value2;
}
if(NeEvent->tsq3_x[n] > 0)
{
value1 = (double)NeEvent->sq3_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ3_X_EC->Energy(value1, n);
d1sq3_x_c[n]->Fill(value2);
msq3_x++;
esq3_x = value2;
}
if(NeEvent->tsq3_y[n] > 0)
{
value1 = (double)NeEvent->sq3_y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ3_Y_EC->Energy(value1, n);
d1sq3_y_c[n]->Fill(value2);
msq3_y++;
esq3_y = value2;
}
if(NeEvent->tsq4_x[n] > 0)
{
value1 = (double)NeEvent->sq4_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ4_X_EC->Energy(value1, n);
d1sq4_x_c[n]->Fill(value2);
msq4_x++;
esq4_x = value2;
}
if(NeEvent->tsq4_y[n] > 0)
{
value1 = (double)NeEvent->sq4_y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ4_Y_EC->Energy(value1, n);
d1sq4_y_c[n]->Fill(value2);
msq4_y++;
esq4_y = value2;
}
if(NeEvent->tsq1_v[n] > 0)
{
value1 = (double)NeEvent->sq1_v[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ1_V_EC->Energy(value1, n);
d1sq1_v_c[n]->Fill(value2);
msq1_v++;
esq1_v = value2;
}
if(NeEvent->tsq2_v[n] > 0)
{
value1 = (double)NeEvent->sq2_v[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ2_V_EC->Energy(value1, n);
d1sq2_v_c[n]->Fill(value2);
msq2_v++;
esq2_v = value2;
}
if(NeEvent->tsq3_v[n] > 0)
{
value1 = (double)NeEvent->sq3_v[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ3_V_EC->Energy(value1, n);
d1sq3_v_c[n]->Fill(value2);
msq3_v++;
esq3_v = value2;
}
if(NeEvent->tsq4_v[n] > 0)
{
value1 = (double)NeEvent->sq4_v[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ4_V_EC->Energy(value1, n);
d1sq4_v_c[n]->Fill(value2);
msq4_v++;
esq4_v = value2;
}
}
//
//-----Ntetra telescopes calibrated-----
for (n=0; n<16; ++n)
{
if(NeEvent->tNtetra_x[n] > 0)
{
value1 = (double)NeEvent->Ntetra_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pNTETRA_X_EC->Energy(value1, n);
d1Ntetra_x_c[n]->Fill(value2);
mNtetra_x++;
eNtetra_x = value2;
}
if(NeEvent->tNtetra_y[n] > 0)
{
value1 = (double)NeEvent->Ntetra_y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pNTETRA_Y_EC->Energy(value1, n);
d1Ntetra_y_c[n]->Fill(value2);
mNtetra_y++;
eNtetra_y = value2;
}
}
//----- MULTIPLICITIES 1D----
mult1_x->Fill(msq1_x);
mult2_x->Fill(msq2_x);
mult3_x->Fill(msq3_x);
mult4_x->Fill(msq4_x);
mult1_v->Fill(msq1_v);
mult2_v->Fill(msq2_v);
mult3_v->Fill(msq3_v);
mult4_v->Fill(msq4_v);
//-----SQ telescopes 2D-----
if(msq1_x*msq1_v==1 && tf5>5000 && tf5<7000) d2sq_v[0]->Fill(esq1_x,esq1_v);
if(msq2_x*msq2_v==1 && tf5>5000 && tf5<7000) d2sq_v[1]->Fill(esq2_x,esq2_v);
if(msq3_x*msq3_v==1 && tf5>5000 && tf5<7000) d2sq_v[2]->Fill(esq3_x,esq3_v);
if(msq4_x*msq4_v==1 && tf5>5000 && tf5<7000) d2sq_v[3]->Fill(esq4_x,esq4_v);
//______dExE Ntetra
// if(mNtetra_x*mNtetra_y==1 && tf5>5000 && tf5<7000) d2Ntetra->Fill(eNtetra_y,eNtetra_x);
if(mNtetra_x*mNtetra_y==1) d2Ntetra->Fill(eNtetra_y,eNtetra_x);
//-----neutrons-----
for (n=0; n<48; ++n)
{
if(NeEvent->neutAmp[n] > 0)
d1neutAmp[n]->Fill(NeEvent->neutAmp[n]);
if(NeEvent->neutTAC[n] > 0)
d1neutTAC[n]->Fill(NeEvent->neutTAC[n]);
if(NeEvent->neutTDC[n] > 0)
d1neutTDC[n]->Fill(NeEvent->neutTDC[n]);
if(NeEvent->neutAmp[n] > 0 && NeEvent->neutTAC[n] > 0)
d2Ngamma[n]->Fill(NeEvent->neutAmp[n],NeEvent->neutTAC[n]);
}
//-----CALIBRATED-----
//-----SQ telescope-----
/*
for (n=0; n<16; ++n)
{
if(NeEvent->tsq1_x[n] > 0)
{
value1 = (double)NeEvent->sq1_x[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pSQ1_X_EC->Energy(value1, n);
d1sq1_x_c[n]->Fill(value2);
msq1_x++;
// d1nDSD_X->Fill(n);
// EDSD_X = value2;
}
if(NeEvent->tDSD_X[n] > 0)
{
value1 = (double)NeEvent->DSD_X[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pDSD_X_EC->Energy(value1, n);
d1DSD_X_C[n]->Fill(value2);
mDSD_X++;
// d1nDSD_X->Fill(n);
EDSD_X = value2;
}
if(NeEvent->tDSD_Y[n] > 0)
{
value1 = (double)NeEvent->DSD_Y[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pDSD_Y_EC->Energy(value1, n);
d1DSD_Y_C[n]->Fill(value2);
mDSD_Y++;
// d1nDSD_Y->Fill(n);
EDSD_Y = value2;
}
if(NeEvent->tCsI[n] > 0) //
{
value1 = (double)NeEvent->CsI[n] + gRandom->Uniform();
value2 = ((TNeAnalysis*)go4)->pCsI_EC->Energy(value1, n);
d1CsI_C[n]->Fill(value2);
mCsI++;
// d1nDSD_Y->Fill(n);
ECsI = value2;
}
}
*/
// Two dimensional spectra
//---------------------start of MWPC----------------------------------------
// if(NeEvent->trigger == 1 && ToF > 165 && ToF <185)
// {
for(i = 0; i < NeEvent->nx1; ++i) d1X1->Fill(NeEvent->x1[i]);
for(i = 0; i < NeEvent->ny1; ++i) d1Y1->Fill(NeEvent->y1[i]);
for(i = 0; i < NeEvent->nx2; ++i) d1X2->Fill(NeEvent->x2[i]);
for(i = 0; i < NeEvent->ny2; ++i) d1Y2->Fill(NeEvent->y2[i]);
// }
if(NeEvent->nx1 > 0) d1NX1->Fill(NeEvent->nx1);
if(NeEvent->ny1 > 0) d1NY1->Fill(NeEvent->ny1);
if(NeEvent->nx2 > 0) d1NX2->Fill(NeEvent->nx2);
if(NeEvent->ny2 > 0) d1NY2->Fill(NeEvent->ny2);
if(NeEvent->nx1 > 0)
d1CX1->Fill(GetClasters(NeEvent->nx1, NeEvent->x1));
if(NeEvent->ny1 > 0)
d1CY1->Fill(GetClasters(NeEvent->ny1, NeEvent->y1));
if(NeEvent->nx2 > 0)
d1CX2->Fill(GetClasters(NeEvent->nx2, NeEvent->x2));
if(NeEvent->ny2 > 0)
d1CY2->Fill(GetClasters(NeEvent->ny2, NeEvent->y2));
// Li9
// if (NeEvent->nx1*NeEvent->ny1*NeEvent->nx2*NeEvent->ny2 == 1 && 162<ToF && ToF<170 && 1000<af3 && af3<1700)
// He6
// if (NeEvent->nx1*NeEvent->ny1*NeEvent->nx2*NeEvent->ny2 == 1 && ToF>158 && ToF<168 && af3>500 && af3<1100)
if (NeEvent->nx1*NeEvent->ny1*NeEvent->nx2*NeEvent->ny2 == 1)
{
mwz1 = -816;
mwx1 = (16 - NeEvent->x1[0] + gRandom->Uniform())*1.25;
mwy1 = (NeEvent->y1[0] - 16 + gRandom->Uniform())*1.25;
mwz2 = -270;
mwx2 = (16 - NeEvent->x2[0] + gRandom->Uniform())*1.25;
mwy2 = (NeEvent->y2[0] - 16 + gRandom->Uniform())*1.25;
zbt = -70;
xbt = mwx2 + (mwx2 - mwx1)*(zbt-mwz2)/(mwz2-mwz1);
ybt = mwy2 + (mwy2 - mwy1)*(zbt-mwz2)/(mwz2-mwz1);
if (NeEvent->trigger == 1)
{
d2XYbeamOnTar->Fill(xbt, ybt);
}
if (NeEvent->trigger == 2, NeEvent->trigger == 3, NeEvent->trigger == 4, NeEvent->trigger == 5)
{
d2XYbeamOnTar_trig2->Fill(xbt, ybt);
}
if (NeEvent->tF6[0]*NeEvent->tF6[1]*NeEvent->tF6[2]*NeEvent->tF6[3]>0)
{
d2XYbeamOnTar_F6->Fill(xbt, ybt);
}
}
//
if(NeEvent->nx1 > 0 && NeEvent->ny1 > 0 && (GetClasters(NeEvent->nx1, NeEvent->x1)) == 1 && (GetClasters(NeEvent->ny1, NeEvent->y1)) == 1)
{
// d2XY1->Fill(NeEvent->x1[0],NeEvent->y1[0]);
// if(NeEvent->tF6[2] >100) d2XY1beam->Fill(NeEvent->x1[0],NeEvent->y1[0]);
if(NeEvent->trigger == 1) d2XY1beam->Fill(NeEvent->x1[0],NeEvent->y1[0]);
else d2XY1->Fill(NeEvent->x1[0],NeEvent->y1[0]);
}
if(NeEvent->nx2 > 0 && NeEvent->ny2 > 0 && (GetClasters(NeEvent->nx2, NeEvent->x2)) == 1 && (GetClasters(NeEvent->ny2, NeEvent->y2)) == 1)
{
// d2XY2->Fill(NeEvent->x2[0],NeEvent->y2[0]);
// if(NeEvent->tF6[2] >100) d2XY2beam->Fill(NeEvent->x2[0],NeEvent->y2[0]);
if(NeEvent->trigger == 1) d2XY2beam->Fill(NeEvent->x2[0],NeEvent->y2[0]);
else d2XY2->Fill(NeEvent->x2[0],NeEvent->y2[0]);
}
/*
if(NeEvent->nx1 == 1 && NeEvent->ny1 == 1 && NeEvent->trigger == 1)
{
d2XY1->Fill(NeEvent->x1[0],NeEvent->y1[0]);
}
if(NeEvent->nx2 == 1 && NeEvent->ny2 == 1 && NeEvent->trigger == 1)
{
d2XY2->Fill(NeEvent->x2[0],NeEvent->y2[0]);
}
*/
//---Pictures---
/*
if(NeEvent->nx1 == 1 && NeEvent->nx2 == 1)
{
ya1 = -0.5*pya1 + dx1 + (pya1 / 32.)*NeEvent->x1[0];
ya2 = -0.5*pya2 + dx2 + (pya2 / 32.)*NeEvent->x2[0];
ya3 = ya1 + dtx + (ya2 - ya1) * (pxa3 - pxa1) / (pxa2 - pxa1);
if(ya3 > -0.5*pya1 && ya3 < 0.5*pya1)
{
if(((TNeAnalysis*)go4)->pMTracks->mtracksx != ntrackx)
{
ntrackx = ((TNeAnalysis*)go4)->pMTracks->mtracksx;
fTracksX->Set(3*ntrackx);
itrackAX = 0;
for(i = 0; i < fTracksX->GetN(); ++i)
fTracksX->SetPoint(i,pxb1,0.);
}
if(itrackAX == fTracksX->GetN()) itrackAX = 0;
fTracksX->SetPoint(itrackAX++,pxa1,ya1);
fTracksX->SetPoint(itrackAX++,pxa3,ya3);
fTracksX->SetPoint(itrackAX++,pxa1,ya1);
}
}
if(NeEvent->ny1 == 1 && NeEvent->ny2 == 1)
{
yb1 = -0.5*pyb1 + dy1+ (pyb1 / 32.)*NeEvent->y1[0];
yb2 = -0.5*pyb2 + dy2+ (pyb2 / 32.)*NeEvent->y2[0];
yb3 = yb1 + dty + (yb2 - yb1) * (pxb3 - pxb1) / (pxb2 - pxb1);
if(yb3 > -0.5*pyb1 && yb3 < 0.5*pyb1)
{
if(((TNeAnalysis*)go4)->pMTracks->mtracksy != ntracky)
{
ntracky = ((TNeAnalysis*)go4)->pMTracks->mtracksy;
fTracksY->Set(3*ntracky);
itrackBX = 0;
for(i = 0; i < fTracksY->GetN(); ++i)
fTracksY->SetPoint(i,pxb1,0.);
}
if(itrackBX == fTracksY->GetN()) itrackBX = 0;
fTracksY->SetPoint(itrackBX++,pxb1,yb1);
fTracksY->SetPoint(itrackBX++,pxb3,yb3);
fTracksY->SetPoint(itrackBX++,pxb1,yb1);
}
}
if(NeEvent->nx1 == 1 && NeEvent->nx2 == 1 && NeEvent->ny1 == 1 && NeEvent->ny2 == 1 )
{
d2Target->Fill(ya3,yb3);
}*/
if (qdc_tdc_corr<-1)
{
fQDC_TDC_corr->SetMarkerColor(kRed);
}
//--------------------end of MWPC----------------------------------------
NeEvent->SetValid(kTRUE); // to store
return kTRUE;
} //-------------------------------------------------------------------
double TNeProc::GetClasters(unsigned short n, unsigned short *x)
{
int i;
double clasters = 1;
if(n == 0) clasters = 0.;
else if(n > 1)
{
for(i = 1; i < n; ++i)
{
if(abs(x[i] - x[i-1]) > 1) clasters += 1.;
}
}
return clasters;
} //--------------------------------------------------------------------
#ifndef TUNPACKPROCESSOR_H
#define TUNPACKPROCESSOR_H
#include <TLine.h>
#include <TGraph.h>
#include <TGraphErrors.h>
#include "TGo4EventProcessor.h"
//-----class TNeParam-----;
extern int otl;
class TNeProc : public TGo4EventProcessor
{
public:
TNeProc() ;
TNeProc(const char* name);
virtual ~TNeProc() ;
Bool_t BuildEvent(TGo4EventElement* target); // event processing function
double GetClasters(unsigned short n, unsigned short *x);
static long bit[32];
private:
TH1 *fTrigger;
TH1 *fSubEvents;
TH1 *fEventsSizes;
//
//-----SQ-----
//-----raw-----
TH2 * hT1a;
TH2 * hT1t;
TH1 *d1T1xa[16];
TH1 *d1T1xt[16];
TH1 *d1T1xc[16];
TH1 *d1T1ya[16];
TH1 *d1T1yt[16];
TH1 *d1T1yc[16];
//-----clb-----
TH1 *d1sq1_x_c[16];
//-----ToF+MWPC-----
TH1 *d1F3[4];
TH1 *d1tF3[4];
TH1 *d1F5[4];
TH1 *d1tF5[4];
TH1 *d1tMWPC[4];
//
TH1 *d1ToF;
TH1 *d1aF3;
TH2 *d2ToFaF3;
TH2 *d2ToFaF3_cut;
TH1 *d1aF5;
TH2 *d2ToFaF5;
//-----CALIBRATED-----
//-----neutrons-----
//-----WIRES-----
TH1 *d1X1;
TH1 *d1Y1;
TH1 *d1X2;
TH1 *d1Y2;
TH1 *d1NX1;
TH1 *d1NY1;
TH1 *d1NX2;
TH1 *d1NY2;
TH2 *d2XY1;
TH2 *d2XY2;
TH1 *d1CX1;
TH1 *d1CY1;
TH1 *d1CX2;
TH1 *d1CY2;
ClassDef(TNeProc,1)
};
#endif //TUNPACKPROCESSOR_H
//===================================================================
//== TNeSel.cxx: exp0211
//== Version: 2011-03-01
//===================================================================
using namespace std;
#include "TNeSel.h"
#include <stdio.h>
#include "Riostream.h"
//***********************************************************
TNeSel::TNeSel(const char* name)
:TGo4Parameter(name)
,lval(0.)
,uval(4096.)
{
;
} //----------------------------------------------------------------
TNeSel::~TNeSel()
{
} //-----------------------------------------------------------------
Bool_t TNeSel::UpdateFrom(TGo4Parameter *source)
{
cout << "**** TNeDet1 " << GetName()
<< " updated from auto save file" << endl;
TNeSel * from = dynamic_cast<TNeSel *>(source);
if(from==0)
{
cout << "Wrong parameter class: "
<< source->ClassName() << endl;
return kFALSE;
}
lval = from->lval;
uval = from->uval;
return kTRUE;
} //-----------------------------------------------------------------
int TNeSel::CheckValue(double val)
{
if(val > lval && val < uval) return 1;
return 0;
} //-----------------------------------------------------------------
//===================================================================
//== TNeSel.h: exp0211
//== Version: 2011-03-01
//===================================================================
#ifndef TNeSEL_H
#define TNeSEL_H
#include "TGo4Parameter.h"
class TNeSel : public TGo4Parameter
{
public:
TNeSel(const char* name = 0);
virtual ~TNeSel();
virtual Bool_t UpdateFrom(TGo4Parameter *);
int CheckValue(double val);
double lval;
double uval;
ClassDef(TNeSel,1)
};
#endif
2
16
-0.08733 0.004911 0
-0.08709 0.004893 0
-0.08096 0.004951 0
-0.07999 0.004812 0
-0.08556 0.004968 0
-0.08162 0.004784 0
-0.08238 0.004891 0
-0.0817 0.004798 0
-0.09605 0.005018 0
-0.06971 0.004917 0
-0.09164 0.004982 0
-0.07341 0.005013 0
-0.08384 0.005046 0
-0.07682 0.004999 0
-0.08593 0.005024 0
-0.07198 0.004797 0
2
16
-0.08733 0.004911 0
-0.08709 0.004893 0
-0.08096 0.004951 0
-0.07999 0.004812 0
-0.08556 0.004968 0
-0.08162 0.004784 0
-0.08238 0.004891 0
-0.0817 0.004798 0
-0.09605 0.005018 0
-0.06971 0.004917 0
-0.09164 0.004982 0
-0.07341 0.005013 0
-0.08384 0.005046 0
-0.07682 0.004999 0
-0.08593 0.005024 0
-0.07198 0.004797 0
#dir_in=$1
dir_out=/media/analysis_nas/exp202003/data/clb/
#echo $dir_in $dir_out
for file in $(ls -tr $(find ../data/clb/ -type f -newermt '10/01/2020 0:00:00'))
do
fbname=$(basename "$file" .lmd)
go4analysis -file $file -store $dir_out$fbname.root
echo $file
done
../data/clb/crun_tdc_0001.lmd
../data/clb/crun_tdc_0002.lmd
2
16
-0.9015 0.045 0
-1.079 0.045 0
-0.8041 0.045 0
-1.068 0.045 0
-0.8626 0.045 0
-1.076 0.045 0
-0.9041 0.045 0
-1.051 0.045 0
-0.9148 0.045 0
-1.192 0.045 0
-0.9555 0.045 0
-1.137 0.045 0
-0.9097 0.045 0
-1.123 0.045 0
-0.9576 0.045 0
-1.124 0.045 0
2
16
-0.7645 0.01016 0
-0.7662 0.01012 0
-0.7496 0.01023 0
-0.8303 0.01048 0
-0.7535 0.01038 0
-0.7891 0.01036 0
-0.827 0.01012 0
-0.8044 0.01003 0
-0.7979 0.01001 0
-0.9127 0.01026 0
-0.7932 0.01036 0
-0.8673 0.0104 0
-0.7567 0.01003 0
-0.932 0.01052 0
-0.7518 0.01011 0
-0.8896 0.01044 0
find: `/root': Permission denied
find: `/run/udisks': Permission denied
find: `/run/samba/winbindd_privileged': Permission denied
find: `/run/exim4': Permission denied
find: `/run/gdm3': Permission denied
find: `/run/cups/certs': Permission denied
find: `/usr/NX/var/db/node/externalports': Permission denied
find: `/usr/NX/var/db/closed': Permission denied
find: `/usr/NX/var/db/running': Permission denied
find: `/usr/NX/var/db/failed': Permission denied
find: `/usr/NX/var/tmp/nx': Permission denied
find: `/usr/NX/var/nx': Permission denied
find: `/lost+found': Permission denied
find: `/tmp/mc-root': Permission denied
find: `/tmp/pulse-PKdhtXMmr18n': Permission denied
find: `/tmp/pulse-CcctT9RwKSB1': Permission denied
find: `/tmp/mc-aculina': Permission denied
find: `/media/data_nas/159.93.80.138/data1/lost+found': Permission denied
find: `/media/data_nas/159.93.80.138/data/lost+found': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0211': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0313': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0116': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0212': Permission denied
find: `/media/data_nas/159.93.80.106/data/neut': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1703': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0217': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0512': Permission denied
find: `/media/data_nas/159.93.80.106/data/ns': Permission denied
find: `/media/data_nas/159.93.80.106/data/japan': Permission denied
find: `/media/data_nas/159.93.80.106/data/stilbene': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0212': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0313': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/qt4': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/qt3': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/include': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/macros': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/icons': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/etc': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/build': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/docs': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/MbsAPIbase': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/RawAPI': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/gsl': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/root': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/qt': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/vme': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1016': Permission denied
find: `/media/data_nas/159.93.80.106/data/lost+found': Permission denied
find: `/media/data_nas/159.93.80.106/data/test': Permission denied
find: `/media/data_nas/159.93.80.106/data/.Trash-aculina': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp1016': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1212': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp1210': Permission denied
find: `/root': Permission denied
find: `/run/udisks': Permission denied
find: `/run/samba/winbindd_privileged': Permission denied
find: `/run/exim4': Permission denied
find: `/run/gdm3': Permission denied
find: `/run/cups/certs': Permission denied
find: `/usr/NX/var/db/node/externalports': Permission denied
find: `/usr/NX/var/db/closed': Permission denied
find: `/usr/NX/var/db/running': Permission denied
find: `/usr/NX/var/db/failed': Permission denied
find: `/usr/NX/var/tmp/nx': Permission denied
find: `/usr/NX/var/nx': Permission denied
find: `/lost+found': Permission denied
find: `/tmp/pulse-PKdhtXMmr18n': Permission denied
find: `/tmp/mc-aculina': Permission denied
find: `/media/data_nas/159.93.80.138/data1/lost+found': Permission denied
find: `/media/data_nas/159.93.80.138/data/lost+found': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0211': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0313': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0116': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0212': Permission denied
find: `/media/data_nas/159.93.80.106/data/neut': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1703': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp0217': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0512': Permission denied
find: `/media/data_nas/159.93.80.106/data/ns': Permission denied
find: `/media/data_nas/159.93.80.106/data/japan': Permission denied
find: `/media/data_nas/159.93.80.106/data/stilbene': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0212': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb0313': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/qt4': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/qt3': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/include': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/macros': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/icons': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/etc': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/build': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/docs': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/MbsAPIbase': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/go4/go4-4.3.0/RawAPI': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/gsl': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/root': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/qt': Permission denied
find: `/media/data_nas/159.93.80.106/data/Soft/vme': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1016': Permission denied
find: `/media/data_nas/159.93.80.106/data/lost+found': Permission denied
find: `/media/data_nas/159.93.80.106/data/test': Permission denied
find: `/media/data_nas/159.93.80.106/data/.Trash-aculina': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp1016': Permission denied
find: `/media/data_nas/159.93.80.106/data/clb1212': Permission denied
find: `/media/data_nas/159.93.80.106/data/exp1210': Permission denied
// Automatically generated startup script
// Do not change it!
go4->SetMainWindowState(4,"000000ff00000000fd00000002000000000000009e00000359fc0200000001fb0000001600420072006f00770073006500720044006f0063006b010000005b000003590000007a00ffffff000000030000078000000055fc0100000001fc00000000000007800000000000fffffffa000000020200000003fb00000016004c006f00670049006e0066006f0044006f0063006b0000000000ffffffff0000005300fffffffb0000001a004d006200730056006900650077006500720044006f0063006b0000000000ffffffff0000006500fffffffb0000001e0044004100420043004d006f006e00690074006f00720044006f0063006b0000000279000000ce0000000000000000000006de0000035900000004000000040000000800000008fc0000000900000002000000070000001600460069006c00650054006f006f006c0042006100720000000000000000f700000000000000000000001e0041006e0061006c00790073006900730054006f006f006c00420061007201000000000000011c00000000000000000000001a0044006900760069006400650050006100640044006f0063006b0000000125000000e400000000000000000000002c0041006e0061006c00790073006900730043006f006d006d0061006e00640054006f006f006c004200610072000000035000000430000000000000000000000020005300630061006c0065004f007000740069006f006e00730044006f0063006b010000011cffffffff0000000000000000000000240048006900730044007200610077004f007000740069006f006e00730044006f0063006b01000002c8ffffffff00000000000000000000001e0044007200610077004f007000740069006f006e00730044006f0063006b010000041bffffffff0000000000000000000000020000000000000002000000000000000200000001000000180047006f0034005300740079006c00650044006f0063006b0000000000000004b10000000000000000000000020000000000000002000000020000002400420072006f0077007300650072004f007000740069006f006e00730044006f0063006b0100000000000001250000000000000000000000160047006f00340054006f006f006c007300420061007201000001250000065e0000000000000000000000030000000000000003000000010000001e0043006f006d006d0061006e0064004c0069006e00650044006f0063006b0000000000000004b1000000000000000000000003000000010000001c00540072006500650056006900650077006500720044006f0063006b0000000000000004b10000000000000000");
go4->SetMainWindowGeometry(4,"01d9d0cb00020000000000000000001b0000077f000004160000001900000084000006cd000003e000000000020000000780");
go4->LaunchAnalysis("A-2_", "/home/LynxOS/mbsusr/mbsdaq/mbsrun/exp202003/go4", "/home/LynxOS/mbsusr/mbsdaq/mbsrun/exp202003/go4/libGo4UserAnalysis.so", "localhost", Go4_sh, Go4_qt, Go4_lib);
go4->WaitAnalysis(300);
// configuration of analysis
go4->AnalysisAutoSave("dubna_tempASF.root", 500, 5, kFALSE, kFALSE);
go4->AnalysisConfigName("Go4AnalysisPrefs.root");
// step Analysis
go4->ConfigStep("Analysis", kTRUE, kTRUE, kFALSE);
go4->StepMbsStreamSource("Analysis", "lipc-1", 1);
go4->StepFileStore("Analysis", "dubna_tempOutput", kTRUE, 32000, 99, 5, 10000);
go4->SubmitAnalysisConfig(20);
go4->SetAnalysisConfigMode(-1);
go4->SetAnalysisTerminalMode(-1);
go4->StartAnalysis();
// in some analysis one requires to wait several seconds before new histograms appears
// go4->Wait(1);
go4->RefreshNamesList();
TGo4Picture *pic1 = new TGo4Picture("pic1", "temporary object to setup viewpanel");
pic1->SetCrosshair(false);
pic1->SetRangeX(0.025, 17.975);
pic1->SetRangeY(0.025, 7.975);
pic1->SetRangeZ(0, 6.3);
pic1->SetLineAtt(1, 1, 1, -1);
pic1->SetFillAtt(10, 1001, -1);
pic1->SetHisStats(true);
pic1->SetStatsAttr(0.666107, 0.422018, 0.994966, 0.944954, 11111111, "6.4g", 0, "5.4g");
pic1->SetHisTitle(true);
pic1->SetTitleAttr(0.15, 0.933235, 0.85, 0.995);
pic1->SetTitleTime(true);
pic1->SetTitleDate(true);
pic1->SetTitleItem(true);
pic1->SetAutoScale(true);
pic1->SetApplyToAll(false);
pic1->SetAutoZoom(false);
pic1->SetXYRatioOne(false);
pic1->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic1->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic1->AddObjName("Analysis/Histograms/2D/dExE/dExE_Ntetra", "COL");
pic1->SetLineAtt(602, 1, 1, 0);
pic1->SetFillAtt(0, 1001, 0);
pic1->SetMarkerAtt(1, 1, 1, 0);
pic1->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic1->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic1->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(273, 472, 617, 381, Go4_normal, pic1);
delete pic1;
TGo4Picture *pic2 = new TGo4Picture("pic2", "temporary object to setup viewpanel");
pic2->SetCrosshair(false);
pic2->SetHisStats(true);
pic2->SetHisTitle(true);
pic2->SetAutoScale(true);
pic2->SetApplyToAll(true);
pic2->SetAutoZoom(false);
pic2->SetXYRatioOne(false);
pic2->SetPadAtt(0, 2, 0, 0, 0, 0, 0, 0);
pic2->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic2->SetDivision(2, 2);
pic2->Pic(0,0)->SetRangeX(0.025, 19.975);
pic2->Pic(0,0)->SetRangeY(0.025, 19.975);
pic2->Pic(0,0)->SetRangeZ(0, 7);
pic2->Pic(0,0)->SetLineAtt(1, 1, 1, -1);
pic2->Pic(0,0)->SetFillAtt(10, 1001, -1);
pic2->Pic(0,0)->SetHisStats(true);
pic2->Pic(0,0)->SetStatsAttr(0.769274, 0.778585, 0.974773, 0.940084, 11111111, "6.4g", 0, "5.4g");
pic2->Pic(0,0)->SetHisTitle(true);
pic2->Pic(0,0)->SetTitleAttr(0.15, 0.927598, 0.85, 0.995);
pic2->Pic(0,0)->SetTitleTime(true);
pic2->Pic(0,0)->SetTitleDate(true);
pic2->Pic(0,0)->SetTitleItem(true);
pic2->Pic(0,0)->SetAutoScale(false);
pic2->Pic(0,0)->SetApplyToAll(true);
pic2->Pic(0,0)->SetAutoZoom(false);
pic2->Pic(0,0)->SetXYRatioOne(false);
pic2->Pic(0,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic2->Pic(0,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic2->Pic(0,0)->AddObjName("Analysis/Histograms/2D/dExE/sq_v_01", "COL");
pic2->Pic(0,0)->SetLineAtt(602, 1, 1, 0);
pic2->Pic(0,0)->SetFillAtt(0, 1001, 0);
pic2->Pic(0,0)->SetMarkerAtt(1, 1, 1, 0);
pic2->Pic(0,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(0,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(0,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic2->Pic(0,1)->SetRangeX(0.025, 19.975);
pic2->Pic(0,1)->SetRangeY(0.025, 19.975);
pic2->Pic(0,1)->SetRangeZ(0, 7);
pic2->Pic(0,1)->SetLineAtt(1, 1, 1, -1);
pic2->Pic(0,1)->SetFillAtt(10, 1001, -1);
pic2->Pic(0,1)->SetHisStats(true);
pic2->Pic(0,1)->SetStatsAttr(0.753017, 0.761539, 0.975905, 0.938952, 11111111, "6.4g", 0, "5.4g");
pic2->Pic(0,1)->SetHisTitle(true);
pic2->Pic(0,1)->SetTitleAttr(0.15, 0.926663, 0.85, 0.995);
pic2->Pic(0,1)->SetTitleTime(true);
pic2->Pic(0,1)->SetTitleDate(true);
pic2->Pic(0,1)->SetTitleItem(true);
pic2->Pic(0,1)->SetAutoScale(false);
pic2->Pic(0,1)->SetApplyToAll(true);
pic2->Pic(0,1)->SetAutoZoom(false);
pic2->Pic(0,1)->SetXYRatioOne(false);
pic2->Pic(0,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic2->Pic(0,1)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic2->Pic(0,1)->AddObjName("Analysis/Histograms/2D/dExE/sq_v_02", "COL");
pic2->Pic(0,1)->SetLineAtt(602, 1, 1, 0);
pic2->Pic(0,1)->SetFillAtt(0, 1001, 0);
pic2->Pic(0,1)->SetMarkerAtt(1, 1, 1, 0);
pic2->Pic(0,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(0,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(0,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic2->Pic(1,0)->SetRangeX(0.025, 19.975);
pic2->Pic(1,0)->SetRangeY(0.025, 19.975);
pic2->Pic(1,0)->SetRangeZ(0, 7);
pic2->Pic(1,0)->SetLineAtt(1, 1, 1, -1);
pic2->Pic(1,0)->SetFillAtt(10, 1001, -1);
pic2->Pic(1,0)->SetHisStats(true);
pic2->Pic(1,0)->SetStatsAttr(0.78, 0.775, 0.98, 0.935, 11111111, "6.4g", 0, "5.4g");
pic2->Pic(1,0)->SetHisTitle(true);
pic2->Pic(1,0)->SetTitleAttr(0.15, 0.926663, 0.85, 0.995);
pic2->Pic(1,0)->SetTitleTime(true);
pic2->Pic(1,0)->SetTitleDate(true);
pic2->Pic(1,0)->SetTitleItem(true);
pic2->Pic(1,0)->SetAutoScale(false);
pic2->Pic(1,0)->SetApplyToAll(true);
pic2->Pic(1,0)->SetAutoZoom(false);
pic2->Pic(1,0)->SetXYRatioOne(false);
pic2->Pic(1,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic2->Pic(1,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic2->Pic(1,0)->AddObjName("Analysis/Histograms/2D/dExE/sq_v_03", "COL");
pic2->Pic(1,0)->SetLineAtt(602, 1, 1, 0);
pic2->Pic(1,0)->SetFillAtt(0, 1001, 0);
pic2->Pic(1,0)->SetMarkerAtt(1, 1, 1, 0);
pic2->Pic(1,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(1,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(1,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic2->Pic(1,1)->SetRangeX(0.025, 19.975);
pic2->Pic(1,1)->SetRangeY(0.025, 19.975);
pic2->Pic(1,1)->SetRangeZ(0, 7);
pic2->Pic(1,1)->SetLineAtt(1, 1, 1, -1);
pic2->Pic(1,1)->SetFillAtt(10, 1001, -1);
pic2->Pic(1,1)->SetHisStats(true);
pic2->Pic(1,1)->SetStatsAttr(0.78, 0.775, 0.98, 0.935, 11111111, "6.4g", 0, "5.4g");
pic2->Pic(1,1)->SetHisTitle(true);
pic2->Pic(1,1)->SetTitleAttr(0.15, 0.926663, 0.85, 0.995);
pic2->Pic(1,1)->SetTitleTime(true);
pic2->Pic(1,1)->SetTitleDate(true);
pic2->Pic(1,1)->SetTitleItem(true);
pic2->Pic(1,1)->SetAutoScale(false);
pic2->Pic(1,1)->SetApplyToAll(true);
pic2->Pic(1,1)->SetAutoZoom(false);
pic2->Pic(1,1)->SetXYRatioOne(false);
pic2->Pic(1,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic2->Pic(1,1)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic2->Pic(1,1)->AddObjName("Analysis/Histograms/2D/dExE/sq_v_04", "COL");
pic2->Pic(1,1)->SetLineAtt(602, 1, 1, 0);
pic2->Pic(1,1)->SetFillAtt(0, 1001, 0);
pic2->Pic(1,1)->SetMarkerAtt(1, 1, 1, 0);
pic2->Pic(1,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(1,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic2->Pic(1,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(780, 3, 708, 491, Go4_normal, pic2);
delete pic2;
TGo4Picture *pic3 = new TGo4Picture("pic3", "temporary object to setup viewpanel");
pic3->SetCrosshair(false);
pic3->SetRangeX(0.46875, 7.03125);
pic3->SetRangeY(0, 23893.8);
pic3->SetLineAtt(1, 1, 1, -1);
pic3->SetFillAtt(10, 1001, -1);
pic3->SetHisStats(true);
pic3->SetStatsAttr(0.00743494, 0.523636, 0.297398, 0.923636, 11111111, "6.4g", 0, "5.4g");
pic3->SetHisTitle(true);
pic3->SetTitleAttr(0.15, 0.933636, 0.85, 0.995);
pic3->SetTitleTime(true);
pic3->SetTitleDate(true);
pic3->SetTitleItem(true);
pic3->SetAutoScale(true);
pic3->SetApplyToAll(false);
pic3->SetAutoZoom(false);
pic3->SetXYRatioOne(false);
pic3->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic3->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic3->AddObjName("Analysis/Histograms/Trigger", "HIST");
pic3->SetLineAtt(602, 1, 1, 0);
pic3->SetFillAtt(0, 1001, 0);
pic3->SetMarkerAtt(1, 1, 1, 0);
pic3->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic3->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic3->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(7, 6, 282, 329, Go4_normal, pic3);
delete pic3;
TGo4Picture *pic4 = new TGo4Picture("pic4", "temporary object to setup viewpanel");
pic4->SetCrosshair(false);
pic4->SetHisStats(true);
pic4->SetHisTitle(true);
pic4->SetAutoScale(true);
pic4->SetApplyToAll(true);
pic4->SetAutoZoom(false);
pic4->SetXYRatioOne(false);
pic4->SetPadAtt(0, 2, 0, 0, 0, 0, 0, 0);
pic4->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic4->SetDivision(2, 2);
pic4->Pic(0,0)->SetRangeX(0.499878, 1500.13);
pic4->Pic(0,0)->SetRangeY(0, 66.15);
pic4->Pic(0,0)->SetLineAtt(1, 1, 1, -1);
pic4->Pic(0,0)->SetFillAtt(10, 1001, -1);
pic4->Pic(0,0)->SetHisStats(true);
pic4->Pic(0,0)->SetStatsAttr(0.610035, 0.34499, 0.976819, 0.940228, 11111111, "6.4g", 0, "5.4g");
pic4->Pic(0,0)->SetHisTitle(true);
pic4->Pic(0,0)->SetTitleAttr(0.308586, 0.937693, 0.691414, 0.995);
pic4->Pic(0,0)->SetTitleTime(true);
pic4->Pic(0,0)->SetTitleDate(false);
pic4->Pic(0,0)->SetTitleItem(false);
pic4->Pic(0,0)->SetAutoScale(true);
pic4->Pic(0,0)->SetApplyToAll(true);
pic4->Pic(0,0)->SetAutoZoom(false);
pic4->Pic(0,0)->SetXYRatioOne(false);
pic4->Pic(0,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic4->Pic(0,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic4->Pic(0,0)->AddObjName("Analysis/Histograms/F5/QDC/F5_QDC_L", "HIST");
pic4->Pic(0,0)->SetLineAtt(602, 1, 1, 0);
pic4->Pic(0,0)->SetFillAtt(0, 1001, 0);
pic4->Pic(0,0)->SetMarkerAtt(1, 1, 1, 0);
pic4->Pic(0,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic4->Pic(0,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(0,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(0,1)->SetRangeX(0.499878, 1500.13);
pic4->Pic(0,1)->SetRangeY(0, 69.3);
pic4->Pic(0,1)->SetLineAtt(1, 1, 1, -1);
pic4->Pic(0,1)->SetFillAtt(10, 1001, -1);
pic4->Pic(0,1)->SetHisStats(true);
pic4->Pic(0,1)->SetStatsAttr(0.78, 0.775, 0.98, 0.935, 11111111, "6.4g", 0, "5.4g");
pic4->Pic(0,1)->SetHisTitle(true);
pic4->Pic(0,1)->SetTitleAttr(0.247082, 0.925876, 0.752918, 0.995);
pic4->Pic(0,1)->SetTitleTime(true);
pic4->Pic(0,1)->SetTitleDate(false);
pic4->Pic(0,1)->SetTitleItem(false);
pic4->Pic(0,1)->SetAutoScale(true);
pic4->Pic(0,1)->SetApplyToAll(true);
pic4->Pic(0,1)->SetAutoZoom(false);
pic4->Pic(0,1)->SetXYRatioOne(false);
pic4->Pic(0,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic4->Pic(0,1)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic4->Pic(0,1)->AddObjName("Analysis/Histograms/F5/QDC/F5_QDC_R", "HIST");
pic4->Pic(0,1)->SetLineAtt(602, 1, 1, 0);
pic4->Pic(0,1)->SetFillAtt(0, 1001, 0);
pic4->Pic(0,1)->SetMarkerAtt(1, 1, 1, 0);
pic4->Pic(0,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic4->Pic(0,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(0,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(1,0)->SetRangeX(0.499878, 1500);
pic4->Pic(1,0)->SetRangeY(0, 74.55);
pic4->Pic(1,0)->SetLineAtt(1, 1, 1, -1);
pic4->Pic(1,0)->SetFillAtt(10, 1001, -1);
pic4->Pic(1,0)->SetHisStats(true);
pic4->Pic(1,0)->SetHisTitle(true);
pic4->Pic(1,0)->SetAutoScale(true);
pic4->Pic(1,0)->SetApplyToAll(true);
pic4->Pic(1,0)->SetAutoZoom(false);
pic4->Pic(1,0)->SetXYRatioOne(false);
pic4->Pic(1,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic4->Pic(1,0)->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic4->Pic(1,0)->AddObjName("Analysis/Histograms/F5/QDC/F5_QDC_U");
pic4->Pic(1,0)->SetLineAtt(602, 1, 1, 0);
pic4->Pic(1,0)->SetFillAtt(0, 1001, 0);
pic4->Pic(1,0)->SetMarkerAtt(1, 1, 1, 0);
pic4->Pic(1,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic4->Pic(1,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(1,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(1,1)->SetRangeX(0.499878, 1500);
pic4->Pic(1,1)->SetRangeY(0, 57.75);
pic4->Pic(1,1)->SetLineAtt(1, 1, 1, -1);
pic4->Pic(1,1)->SetFillAtt(10, 1001, -1);
pic4->Pic(1,1)->SetHisStats(true);
pic4->Pic(1,1)->SetStatsAttr(0.78, 0.775, 0.98, 0.935, 11111111, "6.4g", 0, "5.4g");
pic4->Pic(1,1)->SetHisTitle(true);
pic4->Pic(1,1)->SetTitleAttr(0.232671, 0.937396, 0.767329, 0.995);
pic4->Pic(1,1)->SetTitleTime(true);
pic4->Pic(1,1)->SetTitleDate(false);
pic4->Pic(1,1)->SetTitleItem(false);
pic4->Pic(1,1)->SetAutoScale(true);
pic4->Pic(1,1)->SetApplyToAll(true);
pic4->Pic(1,1)->SetAutoZoom(false);
pic4->Pic(1,1)->SetXYRatioOne(false);
pic4->Pic(1,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic4->Pic(1,1)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic4->Pic(1,1)->AddObjName("Analysis/Histograms/F5/QDC/F5_QDC_D", "HIST");
pic4->Pic(1,1)->SetLineAtt(602, 1, 1, 0);
pic4->Pic(1,1)->SetFillAtt(0, 1001, 0);
pic4->Pic(1,1)->SetMarkerAtt(1, 1, 1, 0);
pic4->Pic(1,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic4->Pic(1,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic4->Pic(1,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(891, 463, 297, 390, Go4_normal, pic4);
delete pic4;
TGo4Picture *pic5 = new TGo4Picture("pic5", "temporary object to setup viewpanel");
pic5->SetCrosshair(false);
pic5->SetHisStats(true);
pic5->SetHisTitle(true);
pic5->SetAutoScale(true);
pic5->SetApplyToAll(false);
pic5->SetAutoZoom(false);
pic5->SetXYRatioOne(false);
pic5->SetPadAtt(0, 2, 0, 0, 0, 0, 0, 0);
pic5->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic5->SetDivision(2, 2);
pic5->Pic(0,0)->SetRangeX(0.49995, 9998.5);
pic5->Pic(0,0)->SetRangeY(0, 55.65);
pic5->Pic(0,0)->SetLineAtt(1, 1, 1, -1);
pic5->Pic(0,0)->SetFillAtt(10, 1001, -1);
pic5->Pic(0,0)->SetHisStats(true);
pic5->Pic(0,0)->SetStatsAttr(0.7303, 0.268684, 0.978316, 0.937261, 11111111, "6.4g", 0, "5.4g");
pic5->Pic(0,0)->SetHisTitle(true);
pic5->Pic(0,0)->SetTitleAttr(0.195924, 0.94, 0.804076, 0.995);
pic5->Pic(0,0)->SetTitleTime(true);
pic5->Pic(0,0)->SetTitleDate(false);
pic5->Pic(0,0)->SetTitleItem(false);
pic5->Pic(0,0)->SetAutoScale(true);
pic5->Pic(0,0)->SetApplyToAll(false);
pic5->Pic(0,0)->SetAutoZoom(false);
pic5->Pic(0,0)->SetXYRatioOne(false);
pic5->Pic(0,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic5->Pic(0,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic5->Pic(0,0)->AddObjName("Analysis/Histograms/MWPC/tX1", "HIST");
pic5->Pic(0,0)->SetLineAtt(602, 1, 1, 0);
pic5->Pic(0,0)->SetFillAtt(0, 1001, 0);
pic5->Pic(0,0)->SetMarkerAtt(1, 1, 1, 0);
pic5->Pic(0,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic5->Pic(0,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(0,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(0,1)->SetRangeY(0, 60.9);
pic5->Pic(0,1)->SetLineAtt(1, 1, 1, -1);
pic5->Pic(0,1)->SetFillAtt(10, 1001, -1);
pic5->Pic(0,1)->SetHisStats(true);
pic5->Pic(0,1)->SetHisTitle(true);
pic5->Pic(0,1)->SetAutoScale(true);
pic5->Pic(0,1)->SetApplyToAll(false);
pic5->Pic(0,1)->SetAutoZoom(false);
pic5->Pic(0,1)->SetXYRatioOne(false);
pic5->Pic(0,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic5->Pic(0,1)->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic5->Pic(0,1)->AddObjName("Analysis/Histograms/MWPC/tY1");
pic5->Pic(0,1)->SetLineAtt(602, 1, 1, 0);
pic5->Pic(0,1)->SetFillAtt(0, 1001, 0);
pic5->Pic(0,1)->SetMarkerAtt(1, 1, 1, 0);
pic5->Pic(0,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(0,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(0,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,0)->SetRangeY(0, 70.35);
pic5->Pic(1,0)->SetLineAtt(1, 1, 1, -1);
pic5->Pic(1,0)->SetFillAtt(10, 1001, -1);
pic5->Pic(1,0)->SetHisStats(true);
pic5->Pic(1,0)->SetHisTitle(true);
pic5->Pic(1,0)->SetAutoScale(true);
pic5->Pic(1,0)->SetApplyToAll(false);
pic5->Pic(1,0)->SetAutoZoom(false);
pic5->Pic(1,0)->SetXYRatioOne(false);
pic5->Pic(1,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic5->Pic(1,0)->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic5->Pic(1,0)->AddObjName("Analysis/Histograms/MWPC/tX2");
pic5->Pic(1,0)->SetLineAtt(602, 1, 1, 0);
pic5->Pic(1,0)->SetFillAtt(0, 1001, 0);
pic5->Pic(1,0)->SetMarkerAtt(1, 1, 1, 0);
pic5->Pic(1,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,1)->SetRangeY(0, 59.85);
pic5->Pic(1,1)->SetLineAtt(1, 1, 1, -1);
pic5->Pic(1,1)->SetFillAtt(10, 1001, -1);
pic5->Pic(1,1)->SetHisStats(true);
pic5->Pic(1,1)->SetHisTitle(true);
pic5->Pic(1,1)->SetAutoScale(true);
pic5->Pic(1,1)->SetApplyToAll(false);
pic5->Pic(1,1)->SetAutoZoom(false);
pic5->Pic(1,1)->SetXYRatioOne(false);
pic5->Pic(1,1)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic5->Pic(1,1)->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic5->Pic(1,1)->AddObjName("Analysis/Histograms/MWPC/tY2");
pic5->Pic(1,1)->SetLineAtt(602, 1, 1, 0);
pic5->Pic(1,1)->SetFillAtt(0, 1001, 0);
pic5->Pic(1,1)->SetMarkerAtt(1, 1, 1, 0);
pic5->Pic(1,1)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,1)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic5->Pic(1,1)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(1188, 448, 307, 403, Go4_normal, pic5);
delete pic5;
TGo4Picture *pic6 = new TGo4Picture("pic6", "temporary object to setup viewpanel");
pic6->SetCrosshair(false);
pic6->SetRangeX(122.938, 197.188);
pic6->SetRangeY(5, 2075);
pic6->SetRangeZ(0, 23.1);
pic6->SetLineAtt(1, 1, 1, -1);
pic6->SetFillAtt(10, 1001, -1);
pic6->SetHisStats(true);
pic6->SetStatsAttr(0.111111, 0.752294, 0.432323, 0.93578, 1100011, "6.4g", 0, "5.4g");
pic6->SetHisTitle(true);
pic6->SetTitleAttr(0.15, 0.928579, 0.85, 0.995);
pic6->SetTitleTime(true);
pic6->SetTitleDate(true);
pic6->SetTitleItem(true);
pic6->SetAutoScale(true);
pic6->SetApplyToAll(false);
pic6->SetAutoZoom(false);
pic6->SetXYRatioOne(false);
pic6->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic6->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic6->AddObjName("Analysis/Histograms/ToF/ToFaF5_beam", "COL");
pic6->SetLineAtt(602, 1, 1, 0);
pic6->SetFillAtt(0, 1001, 0);
pic6->SetMarkerAtt(1, 1, 1, 0);
pic6->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic6->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic6->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(275, 3, 508, 490, Go4_normal, pic6);
delete pic6;
TGo4Picture *pic7 = new TGo4Picture("pic7", "temporary object to setup viewpanel");
pic7->SetCrosshair(false);
pic7->SetHisStats(true);
pic7->SetHisTitle(true);
pic7->SetAutoScale(true);
pic7->SetApplyToAll(true);
pic7->SetAutoZoom(false);
pic7->SetXYRatioOne(false);
pic7->SetPadAtt(0, 2, 0, 0, 0, 0, 0, 0);
pic7->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic7->SetDivision(3, 1);
pic7->Pic(0,0)->SetRangeX(-29.75, 30.25);
pic7->Pic(0,0)->SetRangeY(-29.75, 30.25);
pic7->Pic(0,0)->SetRangeZ(0, 15.75);
pic7->Pic(0,0)->SetLineAtt(1, 1, 1, -1);
pic7->Pic(0,0)->SetFillAtt(10, 1001, -1);
pic7->Pic(0,0)->SetHisStats(true);
pic7->Pic(0,0)->SetStatsAttr(0.78, 0.775, 0.98, 0.935, 11111111, "6.4g", 0, "5.4g");
pic7->Pic(0,0)->SetHisTitle(true);
pic7->Pic(0,0)->SetTitleAttr(0.15, 0.932453, 0.85, 0.995);
pic7->Pic(0,0)->SetTitleTime(true);
pic7->Pic(0,0)->SetTitleDate(false);
pic7->Pic(0,0)->SetTitleItem(false);
pic7->Pic(0,0)->SetAutoScale(true);
pic7->Pic(0,0)->SetApplyToAll(true);
pic7->Pic(0,0)->SetAutoZoom(false);
pic7->Pic(0,0)->SetXYRatioOne(false);
pic7->Pic(0,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic7->Pic(0,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic7->Pic(0,0)->AddObjName("Analysis/Histograms/MWPC/XY_beamOnTar", "COL");
pic7->Pic(0,0)->SetLineAtt(602, 1, 1, 0);
pic7->Pic(0,0)->SetFillAtt(0, 1001, 0);
pic7->Pic(0,0)->SetMarkerAtt(1, 1, 1, 0);
pic7->Pic(0,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(0,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(0,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic7->Pic(1,0)->SetRangeX(-29.75, 30.25);
pic7->Pic(1,0)->SetRangeY(-29.75, 30.25);
pic7->Pic(1,0)->SetRangeZ(0, 18.9);
pic7->Pic(1,0)->SetLineAtt(1, 1, 1, -1);
pic7->Pic(1,0)->SetFillAtt(10, 1001, -1);
pic7->Pic(1,0)->SetHisStats(true);
pic7->Pic(1,0)->SetStatsAttr(0.69502, 0.708489, 0.978686, 0.941035, 11111111, "6.4g", 0, "5.4g");
pic7->Pic(1,0)->SetHisTitle(true);
pic7->Pic(1,0)->SetTitleAttr(0.15, 0.936455, 0.85, 0.995);
pic7->Pic(1,0)->SetTitleTime(true);
pic7->Pic(1,0)->SetTitleDate(true);
pic7->Pic(1,0)->SetTitleItem(true);
pic7->Pic(1,0)->SetAutoScale(true);
pic7->Pic(1,0)->SetApplyToAll(true);
pic7->Pic(1,0)->SetAutoZoom(false);
pic7->Pic(1,0)->SetXYRatioOne(false);
pic7->Pic(1,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic7->Pic(1,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic7->Pic(1,0)->AddObjName("Analysis/Histograms/MWPC/XY_beamOnTar_trig2", "COL");
pic7->Pic(1,0)->SetLineAtt(602, 1, 1, 0);
pic7->Pic(1,0)->SetFillAtt(0, 1001, 0);
pic7->Pic(1,0)->SetMarkerAtt(1, 1, 1, 0);
pic7->Pic(1,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(1,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(1,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic7->Pic(2,0)->SetRangeX(-29.75, 30.25);
pic7->Pic(2,0)->SetRangeY(-29.75, 30.25);
pic7->Pic(2,0)->SetRangeZ(0, 26.25);
pic7->Pic(2,0)->SetLineAtt(1, 1, 1, -1);
pic7->Pic(2,0)->SetFillAtt(10, 1001, -1);
pic7->Pic(2,0)->SetHisStats(true);
pic7->Pic(2,0)->SetStatsAttr(0.781696, 0.854164, 0.978686, 0.938362, 11111111, "6.4g", 0, "5.4g");
pic7->Pic(2,0)->SetHisTitle(true);
pic7->Pic(2,0)->SetTitleAttr(0.15, 0.931577, 0.85, 0.995);
pic7->Pic(2,0)->SetTitleTime(true);
pic7->Pic(2,0)->SetTitleDate(true);
pic7->Pic(2,0)->SetTitleItem(true);
pic7->Pic(2,0)->SetAutoScale(true);
pic7->Pic(2,0)->SetApplyToAll(true);
pic7->Pic(2,0)->SetAutoZoom(false);
pic7->Pic(2,0)->SetXYRatioOne(false);
pic7->Pic(2,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic7->Pic(2,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic7->Pic(2,0)->AddObjName("Analysis/Histograms/MWPC/XY_beamOnTar_F6", "COL");
pic7->Pic(2,0)->SetLineAtt(602, 1, 1, 0);
pic7->Pic(2,0)->SetFillAtt(0, 1001, 0);
pic7->Pic(2,0)->SetMarkerAtt(1, 1, 1, 0);
pic7->Pic(2,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(2,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic7->Pic(2,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(1483, 1, 272, 850, Go4_normal, pic7);
delete pic7;
TGo4Picture *pic8 = new TGo4Picture("pic8", "temporary object to setup viewpanel");
pic8->SetCrosshair(false);
pic8->SetLineAtt(1, 1, 1, -1);
pic8->SetFillAtt(10, 1001, -1);
pic8->SetHisStats(true);
pic8->SetHisTitle(true);
pic8->SetAutoScale(true);
pic8->SetApplyToAll(false);
pic8->SetAutoZoom(false);
pic8->SetXYRatioOne(false);
pic8->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic8->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic8->SetDivision(2, 1);
pic8->Pic(0,0)->SetRangeX(0.5, 31.5);
pic8->Pic(0,0)->SetRangeY(0.5, 31.5);
pic8->Pic(0,0)->SetRangeZ(0, 258.3);
pic8->Pic(0,0)->SetLineAtt(1, 1, 1, -1);
pic8->Pic(0,0)->SetFillAtt(10, 1001, -1);
pic8->Pic(0,0)->SetHisStats(true);
pic8->Pic(0,0)->SetStatsAttr(0.77881, 0.777327, 0.987444, 0.993777, 11111111, "6.4g", 0, "5.4g");
pic8->Pic(0,0)->SetHisTitle(true);
pic8->Pic(0,0)->SetTitleAttr(0.15, 0.930065, 0.85, 0.995);
pic8->Pic(0,0)->SetTitleTime(true);
pic8->Pic(0,0)->SetTitleDate(true);
pic8->Pic(0,0)->SetTitleItem(true);
pic8->Pic(0,0)->SetAutoScale(true);
pic8->Pic(0,0)->SetApplyToAll(false);
pic8->Pic(0,0)->SetAutoZoom(false);
pic8->Pic(0,0)->SetXYRatioOne(false);
pic8->Pic(0,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic8->Pic(0,0)->SetXAxisAttTime(0, "%H:%M:%S%F1995-01-01 00:00:00s0", -1);
pic8->Pic(0,0)->AddObjName("Analysis/Histograms/MWPC/XY1", "COL");
pic8->Pic(0,0)->SetLineAtt(602, 1, 1, 0);
pic8->Pic(0,0)->SetFillAtt(0, 1001, 0);
pic8->Pic(0,0)->SetMarkerAtt(1, 1, 1, 0);
pic8->Pic(0,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 2048, 0);
pic8->Pic(0,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 2048, 0);
pic8->Pic(0,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic8->Pic(1,0)->SetRangeZ(0, 435.75);
pic8->Pic(1,0)->SetLineAtt(1, 1, 1, -1);
pic8->Pic(1,0)->SetFillAtt(10, 1001, -1);
pic8->Pic(1,0)->SetHisStats(true);
pic8->Pic(1,0)->SetHisTitle(true);
pic8->Pic(1,0)->SetAutoScale(true);
pic8->Pic(1,0)->SetApplyToAll(false);
pic8->Pic(1,0)->SetAutoZoom(false);
pic8->Pic(1,0)->SetXYRatioOne(false);
pic8->Pic(1,0)->SetPadAtt(0, 2, 0, 0, 30, 30, 0, 0);
pic8->Pic(1,0)->SetXAxisAttTime(0, "%H:%M:%S", -1);
pic8->Pic(1,0)->AddObjName("Analysis/Histograms/MWPC/XY2");
pic8->Pic(1,0)->SetLineAtt(602, 1, 1, 0);
pic8->Pic(1,0)->SetFillAtt(0, 1001, 0);
pic8->Pic(1,0)->SetMarkerAtt(1, 1, 1, 0);
pic8->Pic(1,0)->SetAxisAtt(0, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
pic8->Pic(1,0)->SetAxisAtt(1, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 0, 0.035, kFALSE, "+", 0, 0);
pic8->Pic(1,0)->SetAxisAtt(2, 1, 1, 42, 0.005, 0.035, 510, 0.03, 1, 42, 1, 0.035, kFALSE, "+", 0, 0);
go4->StartViewPanel(6, 324, 272, 529, Go4_normal, pic8);
delete pic8;
go4->MonitorItem("Analysis/Histograms/sq1", kFALSE);
go4->MonitorItem("Analysis/Histograms/sq2", kFALSE);
go4->MonitorItem("Analysis/Histograms/sq3", kFALSE);
go4->MonitorItem("Analysis/Histograms/sq4", kFALSE);
go4->StartMonitoring(10);
void rcall(const char* name)
{
TNeDet1 *pDet
= (TNeDet1*)(TGo4Analysis::Instance())->GetParameter(name);
if(!pDet)
{
printf("OBJECT: %s WAS NOT FOUND \n",name);
return;
}
TString fname(name);
fname.ToLower();
fname += ".cal";
pDet->Read(fname.Data());
}
#! /bin/bash
# Replace Go4 demo analysis by user experiment names
# J.Adamczewski 18.03.2002
# H.Essel 30.7.2002: two args
# The GSI Online Offline Object Oriented (GO4) Project
# Experiment Data Processing at DVEE department, GSI
# usage: rename.sh old new
FILELIST='Makefile Module.mk *.cxx *.h *.C Readme.txt'
#echo $FILELIST
if [ $# -ne 2 ] ; then
echo 'args: "oldstring" "newstring"'
else
echo Replace $1 by $2 in
echo "Makefile Module.mk *.cxx *.cpp *.h Readme.txt"
for FILENAME in $FILELIST;
do
#echo $FILENAME;
cat $FILENAME | awk -v rep=$2 -v str=$1 '{ gsub(str,rep) ; print }' > temp.txt
mv temp.txt $FILENAME;
NEWNAME=`echo $FILENAME | awk -v rep=$2 -v str=$1 '{ gsub(str,rep) ; print }'`;
echo $NEWNAME;
mv $FILENAME $NEWNAME;
done
fi
#!/bin/bash
if [ -z ${GO4SYS+x} ]; then
echo "GO4SYS is unset. Aborting.";
exit;
else
echo "GO4SYS is set to '$GO4SYS'";
fi
# =============================================================================
# Please specify the path to a directory which contains _ONLY_ the files you want to analyse
# You should not put the trailing slash sign (but actually if you will, it should not affect the result...)
# You need to have write access to this directory
INPUTLMDDIR=/home/LynxOS/mbsusr/mbsdaq/mbsrun/exp202003/data/clb
if [ ! -d "${INPUTLMDDIR}" ]; then
echo -e "Directory ${INPUTLMDDIR} does not exist. Aborting."
exit;
fi
# Please specify the path to the output directory where the resulting root files will be written
OUTPUTROOTDIR=/media/analysis_nas/exp202003/clb/root
# TODO check that ${OUTPUTROOTDIR} exists ???
# Please specify the input XML configuration file
SETUPFILE=/media/analysis_nas/exp202003/raw2/conversion/setupEXP2003.xml
# TODO check that ${SETUPFILE} exists
# Please specify how many threads do you want to occupy
NTHREADS=1
# Please specify the prefix for the generated lml files
# In principle, there are no constraints, but you may want to keep it the same as the directory name
PREFIX=crun_0
FILES=${INPUTLMDDIR}/${PREFIX}*.lmd
# Remove textual output if it already exists from previous analysis runs
if [ -d ${OUTPUTROOTDIR}/textoutput/ ]; then
rm -fv ${OUTPUTROOTDIR}/textoutput/*.txt
else
mkdir ${OUTPUTROOTDIR}/textoutput
fi
# Remove asf output if it already exists from previous analysis runs
if ! [ -d ${OUTPUTROOTDIR}/autosave/ ]; then
mkdir ${OUTPUTROOTDIR}/autosave
fi
# =============================================================================
#NAMES=${FILES}-${INPUTLMDDIR}
# Count input data files
NFILES=`ls -1q ${FILES} | wc -l`
echo "nFiles=${NFILES}"
echo "nThreads=${NTHREADS}"
#let IBATCH=1
let iFile=0
for INPUTFILENAME in ${FILES}
do
NAME=$(basename "$INPUTFILENAME")
OUTPUTFILENAME=${NAME//lmd/root}
OUTPUTFILENAME=${OUTPUTROOTDIR}/${OUTPUTFILENAME}
TEXTERRFILE=${OUTPUTROOTDIR}/textoutput/${NAME}_err.txt # Default: textoutput/err.txt
TEXTOUTFILE=${OUTPUTROOTDIR}/textoutput/${NAME}_out.txt # Default: textoutput/out.txt # No reason to suppres
AUTOSAVEFILE=${OUTPUTROOTDIR}/autosave/${NAME}_asf.root
# Remove output file if it already exists from previous analysis runs
if [ -f $OUTPUTFILENAME ]; then
rm ${OUTPUTFILENAME}
fi
# Remove autosave file if it already exists from previous analysis runs
if [ -f $AUTOSAVEFILE ]; then
rm ${AUTOSAVEFILE}
fi
if [ $iFile -eq $NTHREADS ]; then
echo -e "\e[1;32;1mWaiting for all threads to finish\e[0m"
wait
let iFile=0
fi
if [ $iFile -lt $NTHREADS ]; then
ANARUNINFO="========================== ANALYSIS RUN INFO ===================================
Current date and time ${DATETIME}
Processing input file ${INPUTFILENAME}
into output file ${OUTPUTFILENAME}
Text output file: ${TEXTOUTFILE}
Text error file: ${TEXTERRFILE}
============================================================================================"
# Starting outoutfile with ANARUNINFO
cat > ${TEXTOUTFILE} << EOF
${ANARUNINFO}
EOF
echo -e "\e[1m\e[34m${ANARUNINFO}\e[0m"
echo -e "\e[1m\e[32m"`date` "Analysis started.\e[0m"
go4analysis -file ${INPUTFILENAME} -store ${OUTPUTFILENAME} >> ${TEXTOUTFILE} 2> ${TEXTERRFILE}
let iFile++
fi
done
echo -e "\e[1m\e[32m"`date` "Analysis finished.\e[0m"
go4analysis -file ../data/clb/dsd_r_01_0001.lmd -store /media/analysis_nas/exp201810/dsd_r_01_0001.root
go4analysis -file ../data/clb/dsd_20_r_02_0001.lmd -store /media/analysis_nas/exp201810/dsd_20_r_02_0001.root
go4analysis -file ../data/clb/dsd_20_r_02_0002.lmd -store /media/analysis_nas/exp201810/dsd_20_r_02_0002.root
go4analysis -file ../data/clb/dsd_20_r_02_0003.lmd -store /media/analysis_nas/exp201810/dsd_20_r_02_0003.root
go4analysis -file ../data/clb/dsd_20_r_02_0004.lmd -store /media/analysis_nas/exp201810/dsd_20_r_02_0004.root
go4analysis -file ../data/clb/dsd_20_r_02_0005.lmd -store /media/analysis_nas/exp201810/dsd_20_r_02_0005.root
go4analysis -file ../data/clb/dsd_20_r_03_0001.lmd -store /media/analysis_nas/exp201810/dsd_20_r_03_0001.root
go4analysis -file ../data/clb/tuning01.lml -store ../data/clb/tuning01.lml.root
go4analysis -file ../data/clb/tuning02.lml -store ../data/clb/tuning02.lml.root
go4analysis -file ../data/clb/tuning03.lml -store ../data/clb/tuning03.lml.root
go4analysis -file ../data/clb/tuning04.lml -store ../data/clb/tuning04.lml.root
go4analysis -file ../data/clb/tuning05.lml -store ../data/clb/tuning05.lml.root
go4analysis -file ../data/clb/tuning06.lml -store ../data/clb/tuning06.lml.root
go4analysis -file ../data/clb/tuning07.lml -store ../data/clb/tuning07.lml.root
go4analysis -file ../data/clb/tuning08.lml -store ../data/clb/tuning08.lml.root
go4analysis -file ../data/clb/tuning09.lml -store ../data/clb/tuning09.lml.root
go4analysis -file ../data/clb/tuning10.lml -store ../data/clb/tuning10.lml.root
go4analysis -file ../data/clb/tuning11.lml -store ../data/clb/tuning11.lml.root
go4analysis -file ../data/clb/tuning12.lml -store ../data/clb/tuning12.lml.root
go4analysis -file ../data/clb/tuning13.lml -store ../data/clb/tuning13.lml.root
go4analysis -file ../data/clb/tuning14.lml -store ../data/clb/tuning14.lml.root
go4analysis -file ../data/clb/tuning15.lml -store ../data/clb/tuning15.lml.root
go4analysis -file ../data/clb/tuning16.lml -store ../data/clb/tuning16.lml.root
go4analysis -file ../data/clb/tuning17.lml -store ../data/clb/tuning17.lml.root
go4analysis -file ../data/clb/tuning18.lml -store ../data/clb/tuning18.lml.root
go4analysis -file ../data/clb/tuning19.lml -store ../data/clb/tuning19.lml.root
go4analysis -file ../data/clb/tuning20.lml -store ../data/clb/tuning20.lml.root
go4analysis -file ../data/clb/tuning21.lml -store ../data/clb/tuning21.lml.root
go4analysis -file ../data/clb/tuning22.lml -store ../data/clb/tuning22.lml.root
go4analysis -file ../data/clb/tuning23.lml -store ../data/clb/tuning23.lml.root
go4analysis -file ../data/clb/tuning24.lml -store ../data/clb/tuning24.lml.root
go4analysis -file ../data/clb/tuning25.lml -store ../data/clb/tuning25.lml.root
go4analysis -file ../data/clb/tuning26.lml -store ../data/clb/tuning26.lml.root
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