FEDRA emulsion software from the OPERA Collaboration
EdbScanClientSysal Class Reference

remote scanning from Bern More...

#include <EdbScanClientSysal.h>

Inheritance diagram for EdbScanClientSysal:
Collaboration diagram for EdbScanClientSysal:

Public Member Functions

virtual void AsyncScanAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname)
 
virtual void AsyncScanPreloadAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)
 
virtual int AsyncWaitForScanResult ()
 
 EdbScanClientSysal ()
 
virtual int LoadPlate (int BRICK, int PLATE, const char *mapext, int nAttempts=1)
 
virtual void Print ()
 
int RcvLine (TSocket *sock, char *line, int size)
 
virtual int ScanAreas (ScanType st, int id[4], EdbPattern &areas, EdbRun *run, const char *options="")
 
virtual bool ServerCreatesTarget ()
 
virtual void SetClusterThresholds (int TOP, int BOT)
 
virtual int SetFragmentSize (int X, int Y)
 
virtual void SetOdysseyThresholds (int itop, int ibottom, int size, int TOP, int BOT)
 
virtual void SetParameter (const char *Object, const char *Parameter, const char *Value)
 
virtual int UnloadPlate ()
 
virtual ~EdbScanClientSysal ()
 
- Public Member Functions inherited from EdbScanClientCommon
virtual int AddRWC_ (EdbRun *run, char *rwcname, int bAddRWD=true, const char *options="")
 
virtual void AsyncScanAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname)=0
 
virtual void AsyncScanPreloadAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)=0
 
virtual int AsyncWaitForScanResult ()=0
 
void CloseSocket ()
 
virtual int ConvertAreas (int id[4], EdbPattern &areas, EdbRun &run, const char *options="")
 
 EdbScanClientCommon ()
 
const char * GetCmd ()
 
int GetMaxAttempts ()
 
int GetMaxFails ()
 
const char * GetMess ()
 
const char * GetMess1 ()
 
float GetNXView ()
 
float GetNYView ()
 
int GetPort ()
 
const char * GetProcPthServer ()
 
const char * GetProcTgtServer ()
 
const char * GetRawDirClient ()
 
const char * GetRawDirServer ()
 
const char * GetServer ()
 
const char * GetServerCreatedRunName ()
 
float GetXstep ()
 
float GetYstep ()
 
virtual int InitializeSocket ()
 
virtual int LoadPlate (int BRICK, int PLATE, const char *mapext, int nAttempts=1)=0
 
virtual void Print ()=0
 
virtual int ScanAreas (ScanType st, int id[4], EdbPattern &areas, EdbRun *run, const char *options="")=0
 
virtual int ScanPreloadAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)
 
virtual bool ServerCreatesTarget ()=0
 
virtual void SetClusterThresholds (int TOP, int BOT)=0
 
void SetCmd (const char *cmd_)
 
virtual int SetFragmentSize (int X, int Y)=0
 
void SetMaxAttempts (int attempts_)
 
void SetMaxFails (int fails_)
 
void SetMess (const char *mess_)
 
void SetMess1 (const char *mess_)
 
void SetNXview (float nxview_)
 
void SetNYview (float nyview_)
 
virtual void SetOdysseyThresholds (int itop, int ibottom, int size, int TOP, int BOT)=0
 
virtual void SetParameter (const char *Object, const char *Parameter, const char *Value)=0
 
void SetPort (int port_)
 
void SetProcPthServer (const char *prcpthserver_)
 
void SetProcTgtServer (const char *prctgtserver_)
 
void SetRawDirClient (const char *rawdirclient_)
 
void SetRawDirServer (const char *rawdirserver_)
 
void SetServer (const char *server_)
 
void SetXstep (float xstep_)
 
void SetYstep (float ystep_)
 
virtual Short_t ShortBrick (Int_t brick)
 
virtual int UnloadPlate ()=0
 
virtual ~EdbScanClientCommon ()
 
- Public Member Functions inherited from EdbScanClientBase
virtual int AddRWC_ (EdbRun *run, char *rwcname, int bAddRWD=true, const char *options="")=0
 
virtual void AsyncScanAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname)=0
 
virtual void AsyncScanPreloadAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)=0
 
virtual int AsyncWaitForScanResult ()=0
 
virtual int ConvertAreas (int id[4], EdbPattern &areas, EdbRun &run, const char *options="")=0
 
 EdbScanClientBase ()
 
virtual int InitializeSocket ()=0
 
virtual int LoadPlate (int BRICK, int PLATE, const char *mapext, int nAttempts=1)=0
 
virtual void Print ()=0
 
virtual int ScanAreas (ScanType st, int id[4], EdbPattern &areas, EdbRun *run, const char *options="")=0
 
virtual int ScanPreloadAreaS (int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)=0
 
virtual void SetClusterThresholds (int TOP, int BOT)=0
 
virtual int SetFragmentSize (int X, int Y)=0
 
virtual void SetOdysseyThresholds (int itop, int ibottom, int size, int TOP, int BOT)=0
 
virtual void SetParameter (const char *Object, const char *Parameter, const char *Value)=0
 
virtual Short_t ShortBrick (Int_t brick)=0
 
virtual int UnloadPlate ()=0
 
virtual ~EdbScanClientBase ()
 

Additional Inherited Members

- Public Types inherited from EdbScanClientBase
enum  ScanType { stPred , stVolume }
 
- Protected Attributes inherited from EdbScanClientCommon
char eCMD [CMD_LEN]
 
int eMAXFAILS
 
int eMAXSCANATTEMPTS
 
char eMess [CMD_LEN]
 
char eMess1 [CMD_LEN]
 
float eNXview
 
float eNYview
 
int ePORT
 
TString eProcPthServer
 
TString eProcTgtServer
 
TString eRawDirClient
 
TString eRawDirServer
 
TString eServer
 
TString eServerCreatedRunName
 
TSocket * eSock
 
float eXstep
 
float eYstep
 

Detailed Description

remote scanning from Bern

Constructor & Destructor Documentation

◆ EdbScanClientSysal()

EdbScanClientSysal::EdbScanClientSysal ( )
inline
16{};

◆ ~EdbScanClientSysal()

virtual EdbScanClientSysal::~EdbScanClientSysal ( )
inlinevirtual
17{};

Member Function Documentation

◆ AsyncScanAreaS()

void EdbScanClientSysal::AsyncScanAreaS ( int  id1,
int  id2,
int  id3,
int  id4,
float  x1,
float  x2,
float  y1,
float  y2,
const char *  fname 
)
virtual

Implements EdbScanClientCommon.

219{
220 if(!eSock)
222 if(!eSock)
223 return;
224 // send the instruction for area scan and do not wait for the result
225 memset(eCMD,0,256);
226 sprintf(eCMD,"101 %d %d %d %d %f %f %f %f %s\n", ShortBrick(id1),id2,id3,id4,x1,x2,y1,y2,fname);
227 printf("%s",eCMD);
228 eSock->SendRaw(eCMD,strlen(eCMD));
229 return;
230}
virtual int InitializeSocket()
Definition: EdbScanClientBase.cxx:49
virtual Short_t ShortBrick(Int_t brick)
Definition: EdbScanClientBase.h:94
char eCMD[CMD_LEN]
Definition: EdbScanClientBase.h:59
TSocket * eSock
Definition: EdbScanClientBase.h:58
const char * fname
Definition: mc2raw.cxx:41

◆ AsyncScanPreloadAreaS()

void EdbScanClientSysal::AsyncScanPreloadAreaS ( int  id1,
int  id2,
int  id3,
int  id4,
float  x1,
float  x2,
float  y1,
float  y2,
const char *  fname,
float  x1n,
float  x2n,
float  y1n,
float  y2n 
)
virtual

Implements EdbScanClientCommon.

236{
237 if(!eSock)
239 if(!eSock)
240 return;
241 memset(eCMD,0,256);
242 sprintf(eCMD,"102 %d %d %d %d %f %f %f %f %s %f %f %f %f\n",
243 ShortBrick(id1),id2,id3,id4,x1,x2,y1,y2,fname,x1n,x2n,y1n,y2n);
244 printf("%s",eCMD);
245 eSock->SendRaw(eCMD,strlen(eCMD));
246 return;
247}

◆ AsyncWaitForScanResult()

int EdbScanClientSysal::AsyncWaitForScanResult ( )
virtual

Implements EdbScanClientCommon.

251{
252 memset(eMess,0,256);
253 memset(eMess1,0,256);
254 RcvLine(eSock,eMess,sizeof(eMess));
255 RcvLine(eSock,eMess,sizeof(eMess));
256 RcvLine(eSock,eMess1,sizeof(eMess1));
257 if(eMess1[0]!='O') {printf("Error scanning the plate! return 0\n"); return 0;}
258 printf("Area scan complete\n");
259 return 1;
260}
char eMess[CMD_LEN]
Definition: EdbScanClientBase.h:60
char eMess1[CMD_LEN]
Definition: EdbScanClientBase.h:61
int RcvLine(TSocket *sock, char *line, int size)
Definition: EdbScanClientSysal.cxx:30

◆ LoadPlate()

int EdbScanClientSysal::LoadPlate ( int  BRICK,
int  PLATE,
const char *  mapext,
int  nAttempts = 1 
)
virtual

Implements EdbScanClientCommon.

61{
62 if(!eSock)
64 if(!eSock)
65 return 0;
66 Int_t attempt=1;
67 eMess1[0]=0;
68
69 while( (attempt<nAttempts+1) && (eMess1[0]!='O') )
70 {
71 printf("Plate %d brick %d : load attempt %d (of %d)\n",PLATE,BRICK,attempt,nAttempts);
72 sprintf(eCMD,"201 %d %d 0 0 gg %s\n",ShortBrick(BRICK),PLATE,mapext);
73 printf("%s",eCMD);
74 eSock->SendRaw(eCMD,strlen(eCMD));
75 RcvLine(eSock,eMess,sizeof(eMess));
76 RcvLine(eSock,eMess1,sizeof(eMess1));
77 attempt++;
78 }
79 if(eMess1[0]!='O') {printf("Error loading the plate. \n"); return -1;}
80 printf("Plate loaded\n");
81 return 1;
82}
int PLATE
Definition: shower_btr.C:18
Definition: RecDispMC.C:95

◆ Print()

virtual void EdbScanClientSysal::Print ( )
virtual

Implements EdbScanClientCommon.

◆ RcvLine()

int EdbScanClientSysal::RcvLine ( TSocket *  sock,
char *  line,
int  size 
)
31{
32 if(!eSock)
34 if(!eSock)
35 return 0;
36 // Receave the line from socket; return the number of bytes receaved
37 char chr=0;
38 int i=0;
39 if(!(sock->IsValid())) return -1;
40 while( chr!=10 ) { sock->RecvRaw(&chr,1); if(i<size-1) { line[i]=chr; i++;} }
41 line[i]=0;
42 return i;
43}

◆ ScanAreas()

int EdbScanClientSysal::ScanAreas ( ScanType  st,
int  id[4],
EdbPattern areas,
EdbRun run,
const char *  options = "" 
)
virtual

this function scan the list of areas and save into EdbRun
the run should be already correctly opened
prediction id will be used for the temporary file name construction and so should be unique
return number of correctly scanned and converted areas

Implements EdbScanClientCommon.

162{
167
168 int n = areas.N();
169 printf("ScanAreas: %d \n",n);
170 int scanned=0, failed=0;
171 EdbSegP *s = 0;
172 EdbSegP *sn = 0;
173 char str[256];
174 for(int i=0; i<n; i++) {
175 s = areas.GetSegment(i);
176
177 if( (s->SX() < 0.5*eNXview*eXstep) || (s->SY() < 0.5*eNYview*eYstep) ) // set the fragments size for sysal
178 s->SetErrors(0.5*eNXview*eXstep, 0.5*eNYview*eYstep, 0., .1, .1);
179
180 if(i<n-1) sn = areas.GetSegment(i+1);
181 else sn = areas.GetSegment(i);
182
183#ifdef WIN32
184 sprintf(str,"del %s/raw.%d.%d.%d.%d.*",eRawDirClient.Data(),ShortBrick(id[0]), id[1], id[2], s->ID()); // s->ID() must be unique!
185#else
186 sprintf(str,"rm -f %s/raw.%d.%d.%d.%d.*",eRawDirClient.Data(),ShortBrick(id[0]), id[1], id[2], s->ID()); // s->ID() must be unique!
187#endif
188
189 gSystem->Exec(str);
190 printf("ScanAreas: scan progress: %d out of %d (%4.1f%%)\n",i,n,100.*i/n);
191 sprintf(str,"%s/raw.%d.%d.%d.%d",eRawDirServer.Data(),ShortBrick(id[0]), id[1], id[2], s->ID());
192
193 if( !ScanPreloadAreaS( id[0], id[1], id[2], s->ID(),
194 s->X()-s->SX(), s->X()+s->SX(), s->Y()-s->SY(), s->Y()+s->SY(),
195 str,sn->X()-sn->SX(), sn->X()+sn->SX(), sn->Y()-sn->SY(), sn->Y()+sn->SY() ) ) {
196 // i--; //? Igor added this line?
197 printf("EdbScanClient::ScanAreas: WARNING!!! scanning failed for area %d (%d.%d.%d.%d)!\n",
198 i, id[0], id[1], id[2], s->ID());
199 if(++failed > eMAXFAILS) {
200 printf("EdbScanClient::ScanAreas: ERROR!!! too many failures - stop scanning!\n");
201 break;
202 }
203 continue; // still try to scan other predictions
204 }
205 sprintf(str,"%s/raw.%d.%d.%d.%d.rwc",eRawDirClient.Data(),ShortBrick(id[0]), id[1], id[2], s->ID());
206 run->GetHeader()->SetFlag(9, s->ID());
207 run->GetHeader()->SetFlag(8, s->MCEvt());
208 AddRWC(run,str,true,options);
209 scanned++;
210 }
211
212 return scanned;
213}
void SetFlag(int i, int value)
Definition: EdbRunHeader.h:131
EdbRunHeader * GetHeader() const
Definition: EdbRun.h:138
float eNXview
Definition: EdbScanClientBase.h:63
virtual int ScanPreloadAreaS(int id1, int id2, int id3, int id4, float x1, float x2, float y1, float y2, const char *fname, float x1n, float x2n, float y1n, float y2n)
Definition: EdbScanClientBase.cxx:62
TString eRawDirClient
Definition: EdbScanClientBase.h:72
float eYstep
Definition: EdbScanClientBase.h:64
float eXstep
Definition: EdbScanClientBase.h:64
int eMAXFAILS
Definition: EdbScanClientBase.h:67
float eNYview
Definition: EdbScanClientBase.h:63
TString eRawDirServer
Definition: EdbScanClientBase.h:71
Definition: EdbSegP.h:21
Float_t SY() const
Definition: EdbSegP.h:163
Float_t X() const
Definition: EdbSegP.h:173
Float_t Y() const
Definition: EdbSegP.h:174
Float_t SX() const
Definition: EdbSegP.h:162
Int_t N() const
Definition: EdbPattern.h:86
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
int AddRWC(EdbRun *run, char *rwcname, int bAddRWD, const char *options)
Definition: libDataConversion.cpp:64
EdbRun * run
Definition: check_raw.C:38
s
Definition: check_shower.C:55

◆ ServerCreatesTarget()

virtual bool EdbScanClientSysal::ServerCreatesTarget ( )
inlinevirtual

Implements EdbScanClientCommon.

36{return false;};

◆ SetClusterThresholds()

void EdbScanClientSysal::SetClusterThresholds ( int  TOP,
int  BOT 
)
virtual

Implements EdbScanClientCommon.

101{
102 if(!eSock)
104 if(!eSock)
105 return;
106 sprintf(eCMD,"203 VertigoScanner TopClusterThreshold %d\n",TOP);
107 printf("%s",eCMD);
108 eSock->SendRaw(eCMD,strlen(eCMD));
109 RcvLine(eSock,eMess,sizeof(eMess));
110 printf("%s",eMess);
111 sprintf(eCMD,"203 VertigoScanner BottomClusterThreshold %d\n",BOT);
112 printf("%s",eCMD);
113 eSock->SendRaw(eCMD,strlen(eCMD));
114 RcvLine(eSock,eMess,sizeof(eMess));
115 printf("%s",eMess);
116}
@ TOP
Definition: tlg2couples.C:36
@ BOT
Definition: tlg2couples.C:36

◆ SetFragmentSize()

int EdbScanClientSysal::SetFragmentSize ( int  X,
int  Y 
)
virtual

Implements EdbScanClientCommon.

139{
140 if(!eSock)
142 if(!eSock)
143 return 0;
144 eNXview = X;
145 eNYview = Y;
146 eCMD[0]=0;
147 sprintf(eCMD,"203 VertigoScanner XFields %d\n",X);
148 printf("%s",eCMD);
149 eSock->SendRaw(eCMD,strlen(eCMD));
150 RcvLine(eSock,eMess,sizeof(eMess));
151 printf("%s",eMess);
152 sprintf(eCMD,"203 VertigoScanner YFields %d\n",Y);
153 printf("%s",eCMD);
154 eSock->SendRaw(eCMD,strlen(eCMD));
155 RcvLine(eSock,eMess,sizeof(eMess));
156 printf("%s",eMess);
157 return 1; //todo!!!
158}
Double_t X
Definition: tlg2couples.C:76
Double_t Y
Definition: tlg2couples.C:76

◆ SetOdysseyThresholds()

void EdbScanClientSysal::SetOdysseyThresholds ( int  itop,
int  ibottom,
int  size,
int  TOP,
int  BOT 
)
virtual

Implements EdbScanClientCommon.

120{
121 if(!eSock)
123 if(!eSock)
124 return;
125 sprintf(eCMD,"203 Frame_Grabber VPProgram%d 0008000804F003F0%4.4X%02d%02d\n",itop,TOP,size,size);
126 printf("%s",eCMD);
127 eSock->SendRaw(eCMD,strlen(eCMD));
128 RcvLine(eSock,eMess,sizeof(eMess));
129 printf("%s",eMess);
130 sprintf(eCMD,"203 Frame_Grabber VPProgram%d 0008000804F003F0%4.4X%02d%02d\n",ibottom,BOT,size,size);
131 printf("%s",eCMD);
132 eSock->SendRaw(eCMD,strlen(eCMD));
133 RcvLine(eSock,eMess,sizeof(eMess));
134 printf("%s",eMess);
135}

◆ SetParameter()

void EdbScanClientSysal::SetParameter ( const char *  Object,
const char *  Parameter,
const char *  Value 
)
virtual

Implements EdbScanClientCommon.

86{
87 if(!eSock)
89 if(!eSock)
90 return;
91 memset(eCMD,0,256);
92 sprintf(eCMD,"203 %s %s %s\n",Object,Parameter,Value);
93 printf("%s",eCMD);
94 eSock->SendRaw(eCMD,strlen(eCMD));
95 RcvLine(eSock,eMess,sizeof(eMess));
96 printf("%s",eMess);
97}

◆ UnloadPlate()

int EdbScanClientSysal::UnloadPlate ( )
virtual

!! todo

Implements EdbScanClientCommon.

47{
48 if(!eSock)
50 if(!eSock)
51 return 0;
52 sprintf(eCMD,"202\n");
53 printf("%s: UnloadPlate\n",eCMD);
54 eSock->SendRaw(eCMD,strlen(eCMD));
55 RcvLine(eSock,eMess,sizeof(eMess));
56 return 1;
57}

The documentation for this class was generated from the following files: