FEDRA emulsion software from the OPERA Collaboration
TOracleServerE2WX Class Reference

#include <TOracleServerE2WX.h>

Inheritance diagram for TOracleServerE2WX:
Collaboration diagram for TOracleServerE2WX:

Public Member Functions

Int_t AddBaseTrack (const char *data)
 
Int_t AddBaseTracks (EdbPattern &pat, ULong64_t id_eventbrick, ULong64_t id_zone)
 
Int_t AddBaseTracks (TTree *tree, ULong64_t id_eventbrick, ULong64_t id_zone, Int_t nvpa, bool usebuffer)
 
Int_t AddBrick_Set (char *id, char *idrange_min, char *idrange_max, char *id_partition)
 
Int_t AddBrick_Space (char *id_brick, char *id_set)
 
Int_t AddBSBpathsVolumes (char *databsbpathsvolumes)
 
Int_t AddEventBrick (const char *str)
 
Int_t AddMicroTrack (char *datamicro)
 
Int_t AddMicroTrack (ULong64_t eventbrick, ULong64_t zone, int side, int id_view, EdbSegP &s)
 
Int_t AddPlate (ULong64_t id_eventbrick, const char *dataplate)
 
Int_t AddPlateCalibration (ULong64_t id_eventbrick, ULong64_t id_process_operation, EdbPlateP *plate)
 
ULong64_t AddProcessOperation (ULong64_t id_machine, ULong64_t id_programsettings, ULong64_t id_requester, ULong64_t id_parent_operation, ULong64_t id_eventbrick, Int_t id_plate, Int_t driverlevel, ULong64_t id_calibration, const char *starttime, const char *finishtime, const char *success, const char *notes)
 
Int_t AddScanbackPath (ULong64_t id_eventbrick, ULong64_t id_header_operation, int id_path, int id_start_plate, int skipCSconnection)
 
Int_t AddScanbackPrediction (char *dataprediciton)
 
Int_t AddTemplateMarkSets (char *datamarks)
 
Int_t AddView (EdbView *view, int id_view, ULong64_t id_eventbrick, ULong64_t id_zone, bool usebuffer=true)
 
Int_t AddViews (EdbRunTracking &rt, ULong64_t id_eventbrick, ULong64_t id_zone, bool usebuffer=true)
 
ULong64_t AddVolume (ULong64_t id_eventbrick, ULong64_t id_process_operation, int ivolume)
 
Int_t DeleteBrick (char *id_eventbrick)
 
Int_t DeleteBrickSpace (char *id_brick)
 
Int_t DeleteOperation (char *id_brick, char *id_process_operation)
 
Int_t DeletePlateOperation (char *id_brick, char *id_process_operation, char *id_plate)
 
void FinishTransaction ()
 
int GetDBErrors ()
 
ULong64_t IfEventBrick (ULong64_t id_eventbrick, const char *id_set)
 
Int_t MyQuery (const char *sqlquery)
 
ULong64_t MyQueryInsertReturning (const char *query, const char *var)
 
Int_t NviewsPerArea ()
 
void Print ()
 
Int_t ROLLBACK ()
 
void Set0 ()
 
void SetCommit (bool i)
 
void SetTestLoad (int n)
 
Int_t SetTransactionRW ()
 
Bool_t TestLoad ()
 
const char * Timestamp ()
 
 TOracleServerE2WX (const char *db, const char *uid, const char *pw)
 as "NA" More...
 
 ~TOracleServerE2WX ()
 
- Public Member Functions inherited from TOracleServerE2
Int_t ConvertMicrotracksDataSetToEdb (const char *query, const char *outdir, int major=0, int minor=0, bool structure_only=false)
 
Int_t ConvertMicrotracksParentProcessToEdb (ULong64_t parentprocessoperation, const char *outdir, int major=0, int minor=0, bool structure_only=false)
 
Int_t ConvertMicrotracksProcessToEdb (ULong64_t processoperation, const char *outdir, int major=0, int minor=0, bool structure_only=false)
 
Int_t ConvertMicrotracksVolumeToEdb (ULong64_t id_volume, const char *outdir, int major=0, int minor=0, bool structure_only=false)
 
Int_t ConvertMicrotracksZoneToEdb (Int_t id_eventbrick, ULong64_t id_zone, EdbRun &run)
 
Int_t ConvertScanbackPathToEdb (Int_t id_eventbrick, Int_t path, const char *outdir, int major, int minor)
 
Int_t DumpBrickVolumesID (char *id_eventbrick)
 
Int_t DumpEventsID (char *id_eventbrick)
 
Int_t DumpProcessOperations (char *id_eventbrick, char *id_programsettings)
 
Int_t DumpProcessOperations (char *id_eventbrick, Int_t driverlevel)
 
Int_t GetId_EventBrick (const char *id_brick, const char *id_set, char *id)
 
Int_t GetId_ScanbackPath (char *id_eventbrick, char *id_process_operation, int path, char *id)
 
ULong64_t GetId_ScanbackPath (ULong64_t id_eventbrick, ULong64_t id_process_operation, int path)
 
Int_t GetId_Volume (char *id_eventbrick, char *id_process_operation, int ivolume, char *id)
 
Int_t GetId_Zone (char *id_eventbrick, char *id_plate, char *id_process_operation, char *series, char *id)
 
Int_t GetProcessOperationID (char *id_eventbrick, char *id_parent_operation, char *id_programsettings, char *id_plate, char *id)
 
Int_t GetProcessOperationID (char *id_eventbrick, char *id_programsettings, char *id)
 
ULong64_t GetProcessOperationID (ULong64_t id_eventbrick, ULong64_t id_parent_operation, ULong64_t id_programsettings, int id_plate)
 
Int_t GetProcessType (char *IDPROCESS)
 
const char * Ostr (Int_t num)
 
const char * Ostr (ULong64_t num)
 
void Print ()
 
void PrintBrickInfo (Long_t id_eventbrick, int level)
 
void PrintBrickInfoFull (Long_t id_eventbrick, int level)
 
Int_t ReadBasetracksPattern (char *selection, EdbPattern &pat)
 
Int_t ReadBrickOffset (Int_t id_brick, EdbMarksSet &ms)
 
Int_t ReadCSPredictions (Int_t id_brick, EdbPattern &pred)
 
Int_t ReadCSPredictions2 (Int_t id_brick, EdbPattern &pred)
 
Int_t ReadCSPredictions_remote_v2 (Int_t id_brick, EdbPattern &pred, int csid)
 
Int_t ReadDataSet (ULong64_t id_parent_op, int id_brick, ULong64_t path, EdbPatternsVolume &vol)
 
Int_t ReadMicrotracksPattern (int id_eventbrick, char *selection, EdbPattern &pat)
 
Int_t ReadMicrotracksZone (Int_t id_eventbrick, ULong64_t id_zone, int side, TObjArray &edbviews)
 
Int_t ReadScanbackPath (Int_t id_eventbrick, Int_t path, EdbTrackP &t)
 
Int_t ReadTemplateMarks (Int_t id_brick, EdbMarksSet &ms)
 
Int_t ReadVetoTracks (Int_t id_brick, EdbPattern &pred)
 
Int_t ReadViewsZone (ULong64_t id_zone, int side, TObjArray &edbviews)
 
Int_t ReadVolume (char *id_volume, EdbPatternsVolume &vol)
 
Int_t ReadVolume (char *id_volume, EdbPatternsVolume &vol, Int_t min, Int_t max)
 
Int_t ReadVolume (ULong64_t id_volume, EdbPatternsVolume &vol)
 
Int_t ReadVolume (ULong64_t id_volume, EdbPatternsVolume &vol, Int_t min_pl, Int_t max_pl)
 
bool ReadZplate (int id_plate, int id_eventbrick, EdbPattern &pat)
 
bool ReadZplate_nominal (int id_plate, int id_eventbrick, EdbPattern &pat)
 
 TOracleServerE2 (const char *db, const char *uid, const char *pw)
 
 ~TOracleServerE2 ()
 
- Public Member Functions inherited from TOracleServer
void Close (Option_t *opt="")
 
Int_t CreateDataBase (const char *dbname)
 
Int_t DropDataBase (const char *dbname)
 
TSQLResult * GetColumns (const char *dbname, const char *table, const char *wild=0)
 
TSQLResult * GetDataBases (const char *wild=0)
 
TSQLResult * GetTables (const char *dbname, const char *wild=0)
 
Int_t PrintResult ()
 
Int_t PrintResultStr (TString &result)
 
TSQLResult * Query (const char *sql)
 
Int_t QueryTree (char *query, TTree *tree, char *leafs=0)
 
Int_t Reload ()
 
Int_t SelectDataBase (const char *dbname)
 
const char * ServerInfo ()
 
Int_t Shutdown ()
 
 TOracleServer (const char *db, const char *uid, const char *pw)
 
 ~TOracleServer ()
 

Public Attributes

TString eLa
 as "NAPOLI" More...
 
TString eLab
 
Int_t eNviewsPerArea
 
- Public Attributes inherited from TOracleServerE2
TString eRTS
 

Private Attributes

Bool_t eDoCommit
 
Int_t eERROR
 
Int_t eNTestLoad
 
Bool_t eTestLoad
 

Constructor & Destructor Documentation

◆ TOracleServerE2WX()

TOracleServerE2WX::TOracleServerE2WX ( const char *  db,
const char *  uid,
const char *  pw 
)
inline

as "NA"

27  :
28  TOracleServerE2(db, uid, pw){eNviewsPerArea=0;}
Int_t eNviewsPerArea
Definition: TOracleServerE2WX.h:22
friend class TOracleServerE2
Definition: TOracleServer.h:41
TOracleServerE * db
Definition: test_oracle.C:8

◆ ~TOracleServerE2WX()

TOracleServerE2WX::~TOracleServerE2WX ( )
inline
29 {}

Member Function Documentation

◆ AddBaseTrack()

Int_t TOracleServerE2WX::AddBaseTrack ( const char *  data)
100 {
101  return MyQuery( Form( "\
102  INSERT INTO OPERA.TB_MIPBASETRACKS(\
103  ID_EVENTBRICK, ID_ZONE, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA,\
104  ID_DOWNSIDE, ID_DOWNTRACK, ID_UPSIDE, ID_UPTRACK) \
105  VALUES (%s)", data) );
106 }
Int_t MyQuery(const char *sqlquery)
Definition: TOracleServerE2WX.cxx:57

◆ AddBaseTracks() [1/2]

Int_t TOracleServerE2WX::AddBaseTracks ( EdbPattern pat,
ULong64_t  id_eventbrick,
ULong64_t  id_zone 
)
430 {
431  // Adds a basetrack into the DB
432  // Table involved: TB_MIPBASETRACKS
433  Int_t nseg = pat.N();
434  if(eTestLoad) nseg = Min(nseg,eNTestLoad); // load only few segments
435  for(int i=0; i<nseg; i++)
436  {
437  EdbSegP *s = pat.GetSegment(i);
438  if(s) {
439  MyQuery(Form("\
440  INSERT INTO OPERA.TB_MIPBASETRACKS (\
441  ID_EVENTBRICK, ID_ZONE, POSX, POSY, SLOPEX, SLOPEY, GRAINS,\
442  AREASUM, PH, SIGMA, ID_DOWNSIDE, ID_DOWNTRACK, ID_UPSIDE, ID_UPTRACK) \
443  VALUES (%s, %s, %.2f, %.2f, %.2f, %.2f, %d, %d, %d, %d, %d, %d, %d, %d)",
444  Ostr(id_eventbrick),
445  Ostr(id_zone),
446  s->X(), s->Y(), s->TX(), s->TY(), (int)s->W(), (int)s->Volume(),
447  0, 0, 0, 0, 0, 0)
448  );
449  }
450  }
451  return pat.N();
452 }
Definition: EdbSegP.h:18
Float_t TX() const
Definition: EdbSegP.h:172
Float_t Volume() const
Definition: EdbSegP.h:155
Float_t X() const
Definition: EdbSegP.h:170
Float_t Y() const
Definition: EdbSegP.h:171
Float_t W() const
Definition: EdbSegP.h:148
Float_t TY() const
Definition: EdbSegP.h:173
Int_t N() const
Definition: EdbPattern.h:89
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
Bool_t eTestLoad
Definition: TOracleServerE2WX.h:18
Int_t eNTestLoad
Definition: TOracleServerE2WX.h:17
const char * Ostr(ULong64_t num)
EdbSegP * s
Definition: tlg2pattern.C:32

◆ AddBaseTracks() [2/2]

Int_t TOracleServerE2WX::AddBaseTracks ( TTree *  tree,
ULong64_t  id_eventbrick,
ULong64_t  id_zone,
Int_t  nvpa,
bool  usebuffer 
)

Warning! inverted definition to make it compatible with the DB

Int_t id_up = s1->Vid(0)*100000 + s1->Vid(1); Int_t id_down = s2->Vid(0)*100000 + s2->Vid(1); !! the above convention used by VT should always work but probably some service is lost (to check) !! the below convention used by L.Scotto but it's rely on eNviewsPerArea which not always defined correctly

Int_t id_up = s1->Vid(0)*100000 + s1->Vid(1)%100000; Int_t id_down = s2->Vid(0)*100000 + s2->Vid(1)%100000;

456 {
457  // Adds a set of basetracks from a TTree (cp.root file) into the DB,
458  // assuming that the corresponding microtracks are already added into the DB
459  // Table involved: TB_MIPBASETRACKS through AddBaseTrack(...)
460  // Details: no queries directly executed
461 
462  if(!tree) return(0);
463 
464  EdbSegP *s1=0, *s2=0, *s=0;
465  TBranch *b_s=0, *b_s1=0, *b_s2=0;
466  b_s = tree->GetBranch("s.");
467  b_s1 = tree->GetBranch("s1.");
468  b_s2 = tree->GetBranch("s2.");
469  b_s->SetAddress( &s );
471  b_s1->SetAddress( &s2 );
472  b_s2->SetAddress( &s1 );
473 
474  int nentr = (int)(tree->GetEntries());
475  if(eTestLoad) nentr = Min(nentr,eNTestLoad); // load only few segments
476 
477  if (!usebuffer) {
478  for(int i=0; i<nentr; i++ ) {
479  b_s->GetEntry(i);
480  b_s1->GetEntry(i);
481  b_s2->GetEntry(i);
482 
487  //printf("nvpa=%d s1->Aid(0)=%d s1->Aid(1)=%d s1->Vid(1)=%d \n", nvpa, s1->Aid(0),s1->Aid(1), s1->Vid(1)%100000 );
488  int id_view_up = (s1->Aid(0))*nvpa+s1->Aid(1);
489  int id_view_down = (s2->Aid(0))*nvpa+s2->Aid(1);
490  int id_up = id_view_up *100000 + 10000*2 + s1->Vid(1)%100000;
491  int id_down = id_view_down*100000 + 10000*1 + s2->Vid(1)%100000;
492 
493  MyQuery( Form("\
494  INSERT INTO OPERA.TB_MIPBASETRACKS(\
495  ID_EVENTBRICK, ID_ZONE, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM,\
496  SIGMA, ID_DOWNSIDE, ID_DOWNTRACK, ID_UPSIDE, ID_UPTRACK) \
497  VALUES \
498  (%s, %s, %d, %2f, %2f, %2f, %2f, %2f, %2f, %2f, %d, %d, %d, %d)",
499  Ostr(id_eventbrick),
500  Ostr(id_zone),
501  i, s->X(), s->Y(), s->TX(), s->TY(), s->W(), s->Volume(), s->Chi2(),
502  1, id_down, 2, id_up
503  ));
504  }
505 
506  Log(2,"AddBaseTracks","Basetracks added (without buffering): %d basetracks added assuming microtracks previously added",nentr);
507 
508  } else {
509 
510  try{
511  if (!fStmt)
512  fStmt = fConn->createStatement();
513 
514  char ID_EVENTBRICK[10000][50],ID_ZONE[10000][50];
515  int ID[10000];
516  float POSX[10000],POSY[10000],SLOPEX[10000],SLOPEY[10000];
517  int GRAINS[10000],AREASUM[10000];
518  float SIGMA[10000];
519  int ID_DOWNSIDE[10000],ID_DOWNTRACK[10000],ID_UPSIDE[10000],ID_UPTRACK[10000];
520  ub2 SINT[10000],SFLOAT[10000],SID_EVENTBRICK[10000],SID_ZONE[10000];
521 
522  int nstep = nentr/10000+1;
523  for(int istep=0; istep<nstep; istep++ ) {
524 
525  char query[2048];
526  sprintf(query,"\
527  INSERT INTO OPERA.TB_MIPBASETRACKS \
528  (ID_EVENTBRICK, ID_ZONE, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA, ID_DOWNSIDE, ID_DOWNTRACK, ID_UPSIDE, ID_UPTRACK) \
529  VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14)");
530  fStmt->setSQL(query);
531 
532  int ibt=0;
533 
534  for(int ibasetrack=10000*istep; (ibasetrack<nentr && ibasetrack<10000*(istep+1)); ibasetrack++ ) {
535 
536  b_s->GetEntry(ibasetrack);
537  b_s1->GetEntry(ibasetrack);
538  b_s2->GetEntry(ibasetrack);
539 
542 
543  int id_view_up = (s1->Aid(0))*nvpa+s1->Aid(1);
544  int id_view_down = (s2->Aid(0))*nvpa+s2->Aid(1);
545  int id_up = id_view_up *100000 + 10000*2 + s1->Vid(1)%100000;
546  int id_down = id_view_down*100000 + 10000*1 + s2->Vid(1)%100000;
547 
548  sprintf(ID_EVENTBRICK[ibt],"%s%c",Ostr(id_eventbrick),0); // 1
549  sprintf(ID_ZONE[ibt],"%s%c",Ostr(id_zone),0); // 2
550  ID[ibt]=ibasetrack; // 3
551  POSX[ibt]=s->X(); // 4
552  POSY[ibt]=s->Y(); // 5
553  SLOPEX[ibt]=s->TX(); // 6
554  SLOPEY[ibt]=s->TY(); // 7
555  GRAINS[ibt]=(int)s->W(); // 8
556  AREASUM[ibt]=(int)s->Volume(); // 9
557  SIGMA[ibt]=s->Chi2(); // 10
558  ID_DOWNSIDE[ibt]=1; // 11
559  ID_DOWNTRACK[ibt]=id_down; // 12
560  ID_UPSIDE[ibt]=2; // 13
561  ID_UPTRACK[ibt]=id_up; // 14
562 
563  SID_EVENTBRICK[ibt]=strlen(ID_EVENTBRICK[ibt])+1;
564  SID_ZONE[ibt]=strlen(ID_ZONE[ibt])+1;
565  SINT[ibt]=sizeof(int);
566  SFLOAT[ibt]=sizeof(float);
567  ibt++;
568  }
569  fStmt->setDataBuffer( 1, ID_EVENTBRICK, OCCI_SQLT_STR, sizeof(ID_EVENTBRICK[0]), (unsigned short *) &SID_EVENTBRICK);
570  fStmt->setDataBuffer( 2, ID_ZONE, OCCI_SQLT_STR, sizeof(ID_ZONE[0]), (unsigned short *) &SID_ZONE);
571  fStmt->setDataBuffer( 3, ID, OCCIINT, sizeof(int), (unsigned short *) &SINT);
572  fStmt->setDataBuffer( 4, POSX, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
573  fStmt->setDataBuffer( 5, POSY, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
574  fStmt->setDataBuffer( 6, SLOPEX, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
575  fStmt->setDataBuffer( 7, SLOPEY, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
576  fStmt->setDataBuffer( 8, GRAINS, OCCIINT, sizeof(int), (unsigned short *) &SINT);
577  fStmt->setDataBuffer( 9, AREASUM, OCCIINT, sizeof(int), (unsigned short *) &SINT);
578  fStmt->setDataBuffer(10, SIGMA, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
579  fStmt->setDataBuffer(11, ID_DOWNSIDE, OCCIINT, sizeof(int), (unsigned short *) &SINT);
580  fStmt->setDataBuffer(12, ID_DOWNTRACK, OCCIINT, sizeof(int), (unsigned short *) &SINT);
581  fStmt->setDataBuffer(13, ID_UPSIDE, OCCIINT, sizeof(int), (unsigned short *) &SINT);
582  fStmt->setDataBuffer(14, ID_UPTRACK, OCCIINT, sizeof(int), (unsigned short *) &SINT);
583  fStmt->executeArrayUpdate(ibt);
584  } // istep
585 
586  } catch (SQLException &oraex) {
587  Error("TOracleServerE2WX", "AddBaseTracksWithBuffer; failed: (error: %s)", (oraex.getMessage()).c_str());
588  }
589 
590  Log(2,"AddBaseTracksWithBuffer","Basetracks added (with buffering): %d basetracks added assuming microtracks previously added",nentr);
591 
592  }
593 
594  return nentr;
595 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
Float_t Chi2() const
Definition: EdbSegP.h:154
Int_t Aid(int i) const
Definition: EdbSegP.h:166
Int_t Vid(int i) const
Definition: EdbSegP.h:165
Connection * fConn
Definition: TOracleServer.h:48
oracle::occi::Statement * fStmt
Definition: TOracleServer.h:52
EdbSegP * s1
Definition: tlg2pattern.C:30
EdbSegP * s2
Definition: tlg2pattern.C:31

◆ AddBrick_Set()

Int_t TOracleServerE2WX::AddBrick_Set ( char *  id,
char *  idrange_min,
char *  idrange_max,
char *  id_partition 
)
756 {
757  // Adds a brick-set into the DB
758  // Procedure involved: PC_ADD_BRICK_SET (it fills TB_BRICK_SETS)
759 
760  char query[2048];
761  try{
762  if (!fStmt)
763  fStmt = fConn->createStatement();
764 
765  /*sprintf(query,"\
766  INSERT INTO OPERA.TB_BRICK_SETS (ID, IDRANGE_MIN, IDRANGE_MAX, ID_PARTITION) \
767  VALUES (%s, %s, %s, %s)", */
768  sprintf(query,"CALL PC_ADD_BRICK_SET(%s, %s, %s, %s)",
769  id, idrange_min, idrange_max, id_partition);
770 
771  fStmt->setSQL(query);
772  Log(2,"AddBrick_Set","execute sql query: %s ...",query);
773  fStmt->execute();
774 
775  Log(2,"AddBrick_Set","Brick_Set added, partition created");
776  return 0;
777 
778  } catch (SQLException &oraex) {
779  Error("TOracleServerE2WX", "AddBrick_Set; failed: (error: %s)", (oraex.getMessage()).c_str());
780  }
781 
782  return 1;
783 }

◆ AddBrick_Space()

Int_t TOracleServerE2WX::AddBrick_Space ( char *  id_brick,
char *  id_set 
)
790 {
791  // Adds a brick-space into the DB
792  // Procedure involved: PC_ADD_BRICK_SPACE
793 
794  char query[2048];
795 
796  try{
797  if (!fStmt)
798  fStmt = fConn->createStatement();
799 
800  sprintf(query,"CALL PC_ADD_BRICK_SPACE(%s, %s)",
801  id_brick, id_set);
802 
803  fStmt->setSQL(query);
804  Log(2,"AddBrick_Space","execute sql query: %s ...",query);
805  fStmt->executeUpdate();
806 
807  Log(2,"AddBrick_Space","Brick_Space mapped");
808  return 0;
809 
810  } catch (SQLException &oraex) {
811  Error("TOracleServerE2WX", "AddBrick_Space; failed: (error: %s)", (oraex.getMessage()).c_str());
812  }
813 
814  return 1;
815 }

◆ AddBSBpathsVolumes()

Int_t TOracleServerE2WX::AddBSBpathsVolumes ( char *  databsbpathsvolumes)
669 {
670  // Adds a connection between brick, sbpath and volume into the DB
671  // Table involved: TB_B_SBPATHS_VOLUMES
672 
673  return MyQuery( Form(
674  "INSERT INTO OPERA.TB_B_SBPATHS_VOLUMES \
675  (ID_EVENTBRICK, ID_SCANBACK_PROCOPID, PATH, ID_VOLUMESCAN_PROCOPID, VOLUME, ID_PLATE) \
676  VALUES (%s)",
677  databsbpathsvolumes
678  ));
679 }

◆ AddEventBrick()

Int_t TOracleServerE2WX::AddEventBrick ( const char *  str)
183 {
184  // Adds a brick into the DB
185  // Table involved: TB_EVENTBRICKS
186 
187  return MyQuery(
188  Form( "\
189  INSERT INTO OPERA.TB_EVENTBRICKS \
190  (ID, MINX, MAXX, MINY, MAXY, MINZ, MAXZ, ID_SET, ID_BRICK, ZEROX, ZEROY, ZEROZ) VALUES (%s)",
191  databrick
192  ));
193 }

◆ AddMicroTrack() [1/2]

Int_t TOracleServerE2WX::AddMicroTrack ( char *  datamicro)
109 {
110  return MyQuery( Form( "\
111  INSERT INTO OPERA.TB_MIPMICROTRACKS(ID_EVENTBRICK, ID_ZONE, SIDE, ID, ID_VIEW, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA) \
112  VALUES (%s)", datamicro
113  ));
114 }

◆ AddMicroTrack() [2/2]

Int_t TOracleServerE2WX::AddMicroTrack ( ULong64_t  eventbrick,
ULong64_t  zone,
int  side,
int  id_view,
EdbSegP s 
)
118 {
119  return AddMicroTrack( Form(
120  "%s, %s ,%d, %d, %d, %2f, %2f, %2f, %2f, %2f, %2f, %2f",
121  Ostr(eventbrick),
122  Ostr(zone),
123  side,
124  s.ID(), id_view,
125  s.X(), s.Y(), s.TX(), s.TY(), s.W(), s.Volume(), s.Chi2()
126  ) );
127 }
Int_t ID() const
Definition: EdbSegP.h:144
Int_t AddMicroTrack(char *datamicro)
Definition: TOracleServerE2WX.cxx:108

◆ AddPlate()

Int_t TOracleServerE2WX::AddPlate ( ULong64_t  id_eventbrick,
const char *  dataplate 
)
250 {
251  // Adds a plate into the DB
252  // Table involved: TB_PLATE
253 
254  return MyQuery(Form( "\
255  INSERT INTO OPERA.TB_PLATES (ID_EVENTBRICK, ID, Z) \
256  VALUES (%s, %s)", Ostr(id_eventbrick), dataplate));
257 }

◆ AddPlateCalibration()

Int_t TOracleServerE2WX::AddPlateCalibration ( ULong64_t  id_eventbrick,
ULong64_t  id_process_operation,
EdbPlateP plate 
)
683 {
684  // Adds a plate calibration into the DB
685  // Table involved: TB_PLATE_CALIBRATIONS
686  EdbAffine2D *a = plate->GetAffineXY();
687  if(a)
688  {
689  if(!MyQuery(Form( "\
690  INSERT INTO OPERA.TB_PLATE_CALIBRATIONS \
691  (ID_EVENTBRICK, ID_PROCESSOPERATION, ID_PLATE, Z, MAPXX, MAPXY, MAPYX, MAPYY, MAPDX, MAPDY) \
692  VALUES (%s, %s, %d, %.2f, %f, %f, %f, %f, %f, %f)",
693  Ostr(id_eventbrick),
694  Ostr(id_process_operation),
695  plate->ID(), plate->Z(),
696  a->A11(), a->A12(), a->A21(), a->A22(), a->B1(), a->B2() ))) return 0;
697 
698  Log(3,"TOracleServerE2WX:AddPlateCalibration","ok");
699  return 1;
700  }
701  return 0;
702 }
void a()
Definition: check_aligned.C:59
Definition: EdbAffine.h:17
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1

◆ AddProcessOperation()

ULong64_t TOracleServerE2WX::AddProcessOperation ( ULong64_t  id_machine,
ULong64_t  id_programsettings,
ULong64_t  id_requester,
ULong64_t  id_parent_operation,
ULong64_t  id_eventbrick,
Int_t  id_plate,
Int_t  driverlevel,
ULong64_t  id_calibration,
const char *  starttime,
const char *  finishtime,
const char *  success,
const char *  notes 
)
155 {
156  // Adds a process operation into the DB
157  // Table involved: TB_PROC_OPERATIONS
158 
159  return MyQueryInsertReturning(
160  Form(
161  "INSERT INTO OPERA.TB_PROC_OPERATIONS ( \
162  ID_MACHINE, ID_PROGRAMSETTINGS, ID_REQUESTER, \
163  ID_PARENT_OPERATION, ID_EVENTBRICK, ID_PLATE, DRIVERLEVEL, ID_CALIBRATION_OPERATION, \
164  STARTTIME, FINISHTIME, SUCCESS, NOTES) \
165  VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, '%s' )",
166  Ostr(id_machine),
167  Ostr(id_programsettings),
168  Ostr(id_requester),
169  Ostr(id_parent_operation),
170  Ostr(id_eventbrick),
171  Ostr(id_plate),
172  Ostr(driverlevel),
173  Ostr(id_calibration),
174  starttime,
175  finishtime,
176  success,
177  notes
178  ), "ID" );
179 }
ULong64_t MyQueryInsertReturning(const char *query, const char *var)
Definition: TOracleServerE2WX.cxx:73

◆ AddScanbackPath()

Int_t TOracleServerE2WX::AddScanbackPath ( ULong64_t  id_eventbrick,
ULong64_t  id_header_operation,
int  id_path,
int  id_start_plate,
int  skipCSconnection 
)
599 {
600  // Adds a scanback path into the DB and connects it with the CS prediction
601  // Table involved: TB_SCANBACK_PATHS, TB_B_CSCANDS_SBPATHS
602 
603  MyQuery( Form("\
604  INSERT INTO OPERA.TB_SCANBACK_PATHS (ID_EVENTBRICK, ID_PROCESSOPERATION, PATH, ID_START_PLATE, ID_FORK_PATH, ID_CANCEL_PLATE) VALUES (%s, %s, %d, %d, NULL, NULL)",
605  Ostr(id_eventbrick),
606  Ostr(id_header_operation),
607  id_path,
608  id_start_plate
609  ));
610 
611  if (!skipCSconnection) {
612  ULong64_t id_cs_eventbrick = 3000000 + id_eventbrick%1000000;
613  if(MyQuery( Form(
614  "SELECT ID FROM OPERA.TB_CS_CANDIDATES WHERE ID_EVENTBRICK=%s and CANDIDATE=%d",
615  Ostr(id_cs_eventbrick),
616  id_path%10000
617  )))
618  {
619  ResultSet *rs = fStmt->getResultSet();
620  ULong64_t id_candidate=0;
621  int icopy=0;
622  while (rs->next()){
623  sscanf(rs->getString(1).c_str(),"%lld",&id_candidate);
624  icopy++;
625  }
626  delete rs;
627  MyQuery(Form("\
628  INSERT INTO OPERA.TB_B_CSCANDS_SBPATHS \
629  (ID_CS_EVENTBRICK, ID_CANDIDATE, ID_EVENTBRICK, ID_SCANBACK_PROCOPID, PATH) VALUES (%s, %s, %s, %s, %d)",
630  Ostr(id_cs_eventbrick),
631  Ostr(id_candidate),
632  Ostr(id_eventbrick),
633  Ostr(id_header_operation),
634  id_path
635  ));
636  }
637  } // end !skipCSconnection
638 
639  return 0;
640 }

◆ AddScanbackPrediction()

Int_t TOracleServerE2WX::AddScanbackPrediction ( char *  dataprediciton)
131 {
132  return MyQuery( Form( "\
133  INSERT INTO OPERA.TB_SCANBACK_PREDICTIONS(\
134  ID_EVENTBRICK,ID_PATH,ID_PLATE,POSX,POSY,SLOPEX,SLOPEY,\
135  POSTOL1,POSTOL2,SLOPETOL1,SLOPETOL2,\
136  FRAME,ID_ZONE,ID_CANDIDATE,DAMAGED,ISMANUAL)VALUES (%s)"
137  ,dataprediction
138  ));
139 }

◆ AddTemplateMarkSets()

Int_t TOracleServerE2WX::AddTemplateMarkSets ( char *  datamarks)
659 {
660  return MyQuery( Form(
661  "INSERT INTO OPERA.TB_TEMPLATEMARKSETS\
662  (ID_EVENTBRICK, ID_MARK, POSX, POSY, MARKROW, MARKCOL, SHAPE, SIDE)\
663  VALUES (%s)", datamarks
664  ));
665 }

◆ AddView()

Int_t TOracleServerE2WX::AddView ( EdbView view,
int  id_view,
ULong64_t  id_eventbrick,
ULong64_t  id_zone,
bool  usebuffer = true 
)

id_microtrack = id_view*100000+isegment;

ID[isegment]=id_view*100000 + isegment; // 4

291 {
292  // Adds a view and all its microtracks from an EdbView object into the DB
293  // Tables involved: TB_VIEWS through AddView(...) and TB_MIPMICROTRACKS through AddMicroTrack(...)
294  // Details: no queries directly executed
295 
296  time_t ti_v = time(NULL);
297 
298  int side;
299 // Warning! inverted definition to make it compatible with the DB
300  if(view->GetNframesTop()==0) side=2;
301  else side=1;
302 
303  EdbSegP sview(0,0,0,0,0);
304  sview.Transform(view->GetHeader()->GetAffine());
305  float xview = sview.X();
306  float yview = sview.Y();
307 
308  int AreaID = view->GetAreaID();
309  int ViewID = view->GetViewID();
310  int nsegV = view->Nsegments();
311  if(eTestLoad) nsegV = Min(nsegV,eNTestLoad); // load only few segments
312  Log(2,"TOracleServerE2WX::AddView","Area %d, View %d is in the (DB) side %d and contains %d segments",AreaID,ViewID,side,nsegV);
313 
314  float z1,z2;
315  if (side==1) { z1 = view->GetHeader()->GetZ1(); z2 = view->GetHeader()->GetZ2(); }
316  else { z1 = view->GetHeader()->GetZ4(); z2 = view->GetHeader()->GetZ3(); }
317 
318  MyQuery(
319  Form(
320  "INSERT INTO OPERA.TB_VIEWS (ID_EVENTBRICK, ID_ZONE, SIDE, ID, DOWNZ, UPZ, POSX, POSY) VALUES (%s, %s, %d, %d, %.2f, %.2f, %.2f, %.2f)",
321  Ostr(id_eventbrick),
322  Ostr(id_zone),
323  side,
324  id_view,
325  z1,
326  z2,
327  xview,
328  yview
329  ));
330 
331  if (nsegV<=0) return(-1);
332  if (!usebuffer)
333  {
334  EdbSegment *seg;
335  int id_microtrack;
336 
337  //if(nsegV>10) nsegV =10; //!!!!!!!!!!!!!!
338 
339  for(int isegment=0;isegment<nsegV;isegment++) {
340  seg = view->GetSegment(isegment);
341  seg->Transform(view->GetHeader()->GetAffine());
342  id_microtrack = id_view*100000 + side*10000 + isegment;
344  MyQuery( Form("\
345  INSERT INTO OPERA.TB_MIPMICROTRACKS(ID_EVENTBRICK, ID_ZONE, SIDE, ID, ID_VIEW, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA) \
346  VALUES (%s, %s ,%d, %d, %d, %f, %f, %f, %f, %d, %d, %f)",
347  Ostr(id_eventbrick),
348  Ostr(id_zone),
349  side, id_microtrack, id_view, seg->GetX0(), seg->GetY0(),
350  seg->GetTx(), seg->GetTy(), seg->GetPuls(), seg->GetVolume(), seg->GetSigmaX()
351  ));
352  }
353 
354  time_t tf_v = time(NULL);
355  Log(2,"TOracleServerE2WX::AddView","View added (without buffering): %d microtracks added in %ld s",nsegV, tf_v-ti_v );
356 
357  } else {
358 
359  try{
360  if (!fStmt) fStmt = fConn->createStatement();
361 
362  char query[2048];
363  sprintf(query,"\
364  INSERT INTO OPERA.TB_MIPMICROTRACKS \
365  (ID_EVENTBRICK, ID_ZONE, SIDE, ID, ID_VIEW, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA) \
366  VALUES (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12)");
367  fStmt->setSQL(query);
368 
369  char ID_EVENTBRICK[10000][50],ID_ZONE[10000][50];
370  int SIDE[10000],ID[10000],ID_VIEW[10000];
371  float POSX[10000],POSY[10000],SLOPEX[10000],SLOPEY[10000];
372  int GRAINS[10000],AREASUM[10000];
373  float SIGMA[10000];
374  ub2 SINT[10000],SFLOAT[10000],SID_EVENTBRICK[10000],SID_ZONE[10000];
375 
376  if (nsegV>10000) {
377  Log(1,"AddViewWithBuffer","Error! Number of segments (%d) in the view is greater than 10000",nsegV);
378  exit(1);
379  }
380 
381  EdbSegment *seg;
382  for(int isegment=0;isegment<nsegV;isegment++) {
383  seg = view->GetSegment(isegment);
384  seg->Transform(view->GetHeader()->GetAffine());
385  sprintf(ID_EVENTBRICK[isegment],"%s%c",Ostr(id_eventbrick),0); // 1
386  sprintf(ID_ZONE[isegment],"%s%c",Ostr(id_zone),0); // 2
387  SIDE[isegment]=side; // 3
389  ID[isegment]=id_view*100000 + side*10000 + isegment; // 4
390  ID_VIEW[isegment]=id_view; // 5
391  POSX[isegment]=seg->GetX0(); // 6
392  POSY[isegment]=seg->GetY0(); // 7
393  SLOPEX[isegment]=seg->GetTx(); // 8
394  SLOPEY[isegment]=seg->GetTy(); // 9
395  GRAINS[isegment]=seg->GetPuls(); // 10
396  AREASUM[isegment]=seg->GetVolume(); // 11
397  SIGMA[isegment]=seg->GetSigmaX(); // 13
398 
399  SID_EVENTBRICK[isegment]=strlen(ID_EVENTBRICK[isegment])+1;
400  SID_ZONE[isegment]=strlen(ID_ZONE[isegment])+1;
401  SINT[isegment]=sizeof(int);
402  SFLOAT[isegment]=sizeof(float);
403  }
404 
405  fStmt->setDataBuffer( 1, ID_EVENTBRICK, OCCI_SQLT_STR, sizeof(ID_EVENTBRICK[0]), (unsigned short *) &SID_EVENTBRICK);
406  fStmt->setDataBuffer( 2, ID_ZONE, OCCI_SQLT_STR, sizeof(ID_ZONE[0]), (unsigned short *) &SID_ZONE);
407  fStmt->setDataBuffer( 3, SIDE, OCCIINT, sizeof(int), (unsigned short *) &SINT);
408  fStmt->setDataBuffer( 4, ID, OCCIINT, sizeof(int), (unsigned short *) &SINT);
409  fStmt->setDataBuffer( 5, ID_VIEW, OCCIINT, sizeof(int), (unsigned short *) &SINT);
410  fStmt->setDataBuffer( 6, POSX, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
411  fStmt->setDataBuffer( 7, POSY, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
412  fStmt->setDataBuffer( 8, SLOPEX, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
413  fStmt->setDataBuffer( 9, SLOPEY, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
414  fStmt->setDataBuffer(10, GRAINS, OCCIINT, sizeof(int), (unsigned short *) &SINT);
415  fStmt->setDataBuffer(11, AREASUM, OCCIINT, sizeof(int), (unsigned short *) &SINT);
416  fStmt->setDataBuffer(12, SIGMA, OCCIFLOAT, sizeof(float), (unsigned short *) &SFLOAT);
417  fStmt->executeArrayUpdate(nsegV);
418  } catch (SQLException &oraex) {
419  Error("TOracleServerE2WX", "AddView; failed: (error: %s)", (oraex.getMessage()).c_str());
420  }
421  time_t tf_v = time(NULL);
422  Log(2,"AddView","View added (with buffering): %d microtracks added in %ld s",nsegV, tf_v-ti_v );
423  }
424 
425  return 0;
426 }
virtual Float_t GetX0() const
Definition: EdbSegment.h:37
virtual void Transform(const EdbAffine2D *aff)
Definition: EdbSegment.cxx:58
virtual Float_t GetTx() const
Definition: EdbSegment.h:40
virtual Float_t GetY0() const
Definition: EdbSegment.h:38
virtual Float_t GetTy() const
Definition: EdbSegment.h:41
Definition: EdbSegment.h:61
Int_t GetVolume() const
Definition: EdbSegment.h:89
Int_t GetPuls() const
Definition: EdbSegment.h:88
float GetSigmaX() const
Definition: EdbSegment.h:84
EdbAffine2D const * GetAffine() const
Definition: EdbView.h:72
Float_t GetZ4() const
Definition: EdbView.h:113
Float_t GetZ2() const
Definition: EdbView.h:111
Float_t GetZ3() const
Definition: EdbView.h:112
Float_t GetZ1() const
Definition: EdbView.h:110
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
Int_t GetNframesTop() const
Definition: EdbView.h:207
Int_t GetViewID() const
Definition: EdbView.h:190
Int_t Nsegments() const
Definition: EdbView.h:216
Int_t GetAreaID() const
Definition: EdbView.h:191
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219
#define NULL
Definition: nidaqmx.h:84

◆ AddViews()

Int_t TOracleServerE2WX::AddViews ( EdbRunTracking rt,
ULong64_t  id_eventbrick,
ULong64_t  id_zone,
bool  usebuffer = true 
)

int id_view = iview; AddView(view, id_view, id_eventbrick, id_zone, usebuffer);

261 {
262  // Adds all views stored in a EdbRun object (== raw.root file) and all their microtracks into the DB
263  // Tables involved: TB_VIEWS through AddView(EdbView,...)
264  // Details: no queries directly executed
265 
266  EdbRun *r = rt.GetRun(); if (!r) return 0;
267  int nviews = r->GetEntries(); if (!nviews) return 0;
268  int nvpa=rt.GetNviewsPerArea();
269 
270  if(eTestLoad) nviews = Min(nviews,eNTestLoad); // load only few views
271  for(int iview=0; iview<nviews; iview++) {
272  EdbView *view = r->GetEntry(iview);
273  if(view)
274  {
275  Log(2,"TOracleServerE2WX::AddView","%d/%d",iview+1,nviews);
276 
277  int id_view = (view->GetAreaID())*nvpa+view->GetViewID();
278  AddView(view, id_view, id_eventbrick, id_zone, usebuffer);
279 
282 
283  }
284  else Log(1,"TOracleServerE2WX::AddView","Error! view=0");
285  }
286  return 0;
287 }
Int_t GetNviewsPerArea()
Definition: EdbRunAccess.h:108
EdbRun * GetRun() const
Definition: EdbRunAccess.h:123
Definition: EdbRun.h:74
Definition: EdbView.h:134
Int_t AddView(EdbView *view, int id_view, ULong64_t id_eventbrick, ULong64_t id_zone, bool usebuffer=true)
Definition: TOracleServerE2WX.cxx:290
void r(int rid=2)
Definition: test.C:201

◆ AddVolume()

ULong64_t TOracleServerE2WX::AddVolume ( ULong64_t  id_eventbrick,
ULong64_t  id_process_operation,
int  ivolume 
)
646 {
647  return MyQueryInsertReturning(
648  Form("\
649  INSERT INTO OPERA.TB_VOLUMES (ID_EVENTBRICK, ID_PROCESSOPERATION, VOLUME) \
650  VALUES (%s, %s, %d)",
651  Ostr(id_eventbrick),
652  Ostr(id_process_operation),
653  ivolume
654  ), "ID" );
655 }

◆ DeleteBrick()

Int_t TOracleServerE2WX::DeleteBrick ( char *  id_eventbrick)
819 {
820  // Delete all informations related to a brick from the DB
821  // Tables involved: ... a lot, look at the code...
822 
823  char query[16][2048];
824 
825  try{
826  if (!fStmt)
827  fStmt = fConn->createStatement();
828 
829  sprintf(query[0], "delete from Tb_B_SBPATHS_VOLUMES where id_eventbrick=%s",id_eventbrick);
830  sprintf(query[1], "delete from Tb_Volume_Slices where id_eventbrick=%s",id_eventbrick);
831  sprintf(query[2], "delete from Tb_Volumes where id_eventbrick=%s",id_eventbrick);
832  sprintf(query[3], "delete from Tb_Scanback_Predictions where id_eventbrick=%s",id_eventbrick);
833  sprintf(query[4], "delete from Tb_B_CSCANDS_SBPATHS where id_eventbrick=%s",id_eventbrick);
834  sprintf(query[5], "delete from Tb_Scanback_Paths where id_eventbrick=%s",id_eventbrick);
835  sprintf(query[6], "delete from Tb_MipBasetracks where id_eventbrick=%s",id_eventbrick);
836  sprintf(query[7], "delete from Tb_MipMicrotracks where id_eventbrick=%s",id_eventbrick);
837  sprintf(query[8], "delete from Tb_Views where id_eventbrick=%s",id_eventbrick);
838  sprintf(query[9], "delete from Tb_Zones where id_eventbrick=%s",id_eventbrick);
839  sprintf(query[10],"delete from tb_proc_operations where id_eventbrick=%s and id_calibration_operation in (select id_processoperation from tb_plate_calibrations where id_eventbrick=%s)",id_eventbrick,id_eventbrick);
840  sprintf(query[11],"delete from Tb_Plate_calibrations where id_eventbrick=%s",id_eventbrick);
841  sprintf(query[12],"delete from Tb_Proc_operations where id_eventbrick=%s",id_eventbrick);
842  sprintf(query[13],"delete from Tb_Plates where id_eventbrick=%s",id_eventbrick);
843  sprintf(query[14],"delete from Tb_TemplateMarkSets where id_eventbrick=%s",id_eventbrick);
844  sprintf(query[15],"delete from Tb_Eventbricks where id=%s",id_eventbrick);
845 
846  for (int i=0;i<16;i++) {
847  fStmt->setSQL(query[i]);
848  Log(2,"DeleteBrick","execute sql query: %s ...",query[i]);
849  fStmt->execute();
850  }
851 
852  Log(2,"DeleteBrick","Brick deleted");
853  return 0;
854 
855  } catch (SQLException &oraex) {
856  Error("TOracleServerE2WX", "DeleteBrick; failed: (error: %s)", (oraex.getMessage()).c_str());
857  }
858 
859  return 1;
860 }

◆ DeleteBrickSpace()

Int_t TOracleServerE2WX::DeleteBrickSpace ( char *  id_brick)
864 {
865  // Delete a brick space related to a brick from the DB
866  // Procedure involved: PC_REMOVE_BRICK_SPACE
867 
868  char query[2048];
869 
870  try{
871  if (!fStmt)
872  fStmt = fConn->createStatement();
873 
874  sprintf(query,"call pc_remove_brick_space(%s,'OPERA NA BK01')",id_brick);
875 
876  fStmt->setSQL(query);
877  Log(2,"DeleteBrickSpace","execute sql query: %s ...",query);
878  fStmt->execute();
879 
880  Log(2,"DeleteBrickSpace","BrickSpace deleted");
881  return 0;
882 
883  } catch (SQLException &oraex) {
884  Error("TOracleServerE2WX", "DeleteBrickSpace; failed: (error: %s)", (oraex.getMessage()).c_str());
885  }
886 
887  return 1;
888 }

◆ DeleteOperation()

Int_t TOracleServerE2WX::DeleteOperation ( char *  id_brick,
char *  id_process_operation 
)
892 {
893  // Delete all informations related to a process operation of a brick from the DB
894  // Tables involved: ... a lot, look at the code...
895  // Details: DELETE queries
896 
897  char query[13][2048];
898 
899  try{
900  if (!fStmt)
901  fStmt = fConn->createStatement();
902 
903  sprintf(query[0], "delete from Tb_Scanback_Predictions where (id_path) in (select id from tb_scanback_paths where id_processoperation=%s) and id_eventbrick=%s",id_process_operation,id_brick);
904  sprintf(query[1], "delete from Tb_B_CSCANDS_SBPATHS where id_scanback_procopid=%s and id_eventbrick=%s",id_process_operation,id_brick);
905  sprintf(query[2], "delete from Tb_Scanback_Paths where id_processoperation=%s and id_eventbrick=%s",id_process_operation,id_brick);
906  sprintf(query[3], "delete from Tb_MipBasetracks where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s) and id_eventbrick=%s) and id_eventbrick=%s",id_process_operation,id_brick,id_brick);
907  sprintf(query[4], "delete from Tb_MipMicrotracks where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s) and id_eventbrick=%s) and id_eventbrick=%s",id_process_operation,id_brick,id_brick);
908  sprintf(query[5], "delete from tb_views where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s) and id_eventbrick=%s) and id_eventbrick=%s",id_process_operation,id_brick,id_brick);
909  sprintf(query[6], "delete from tb_b_sbpaths_volumes where id_eventbrick=%s and id_volumescan_procopid=%s",id_brick,id_process_operation);
910  sprintf(query[7], "delete from tb_volume_slices where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s))",id_process_operation);
911  sprintf(query[8], "delete from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s) and id_eventbrick=%s",id_process_operation,id_brick);
912  sprintf(query[9], "delete from tb_volumes where id_processoperation=%s",id_process_operation);
913  sprintf(query[10], "delete from tb_plate_calibrations where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s)",id_process_operation);
914  sprintf(query[11],"delete from tb_proc_operations where id_parent_operation=%s",id_process_operation);
915  sprintf(query[12],"delete from tb_proc_operations where id=%s",id_process_operation);
916 
917  for (int i=0;i<13;i++) {
918  fStmt->setSQL(query[i]);
919  Log(2,"DeleteOperation","execute sql query: %s ...",query[i]);
920  fStmt->execute();
921  }
922 
923  Log(2,"DeleteOperation","Operation deleted");
924  return 0;
925 
926  } catch (SQLException &oraex) {
927  Error("TOracleServerE2WX", "DeleteOperation; failed: (error: %s)", (oraex.getMessage()).c_str());
928  }
929 
930  return 1;
931 }

◆ DeletePlateOperation()

Int_t TOracleServerE2WX::DeletePlateOperation ( char *  id_brick,
char *  id_process_operation,
char *  id_plate 
)
936 {
937  // Delete all informations related to a plate of a process operation of a brick from the DB
938  // Tables involved: ... a lot, look at the code...
939  // Details: DELETE queries
940 
941  char query[7][2048];
942 
943  try{
944  if (!fStmt)
945  fStmt = fConn->createStatement();
946 
947  sprintf(query[0], "delete from Tb_Scanback_Predictions where (id_path) in (select id from tb_scanback_paths where id_processoperation=%s) and id_eventbrick=%s and id_plate=%s",id_process_operation,id_brick,id_plate);
948  sprintf(query[1], "delete from Tb_MipBasetracks where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s and id_plate=%s)) and id_eventbrick=%s",id_process_operation,id_plate,id_brick);
949  sprintf(query[2], "delete from Tb_MipMicrotracks where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s and id_plate=%s)) and id_eventbrick=%s",id_process_operation,id_plate,id_brick);
950  sprintf(query[3], "delete from tb_views where (id_zone) in (select id from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s and id_plate=%s))",id_process_operation,id_plate);
951  sprintf(query[4], "delete from tb_zones where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s and id_plate=%s)",id_process_operation,id_plate);
952  sprintf(query[5], "delete from tb_plate_calibrations where (id_processoperation) in (select id from tb_proc_operations where id_parent_operation=%s and id_plate=%s)",id_process_operation,id_plate);
953  sprintf(query[6], "delete from tb_proc_operations where id_parent_operation=%s and id_plate=%s",id_process_operation,id_plate);
954 
955  for (int i=0;i<7;i++) {
956  fStmt->setSQL(query[i]);
957  Log(2,"DeletePlateOperation","execute sql query: %s ...",query[i]);
958  fStmt->execute();
959  }
960 
961  Log(2,"DeletePlateOperation","Plate operation deleted");
962  return 0;
963 
964  } catch (SQLException &oraex) {
965  Error("TOracleServerE2WX", "DeletePlateOperation; failed: (error: %s)", (oraex.getMessage()).c_str());
966  }
967 
968  return 1;
969 }

◆ FinishTransaction()

void TOracleServerE2WX::FinishTransaction ( )
46 {
47  try{
48  if(eDoCommit) MyQuery("COMMIT");
49  else MyQuery("ROLLBACK");
50  } catch (SQLException &oraex) {
51  Log(1,"TOracleServerE2WX::FinishTransaction","failed: (error: %s)",
52  (oraex.getMessage()).c_str());
53  }
54 }
Bool_t eDoCommit
Definition: TOracleServerE2WX.h:19

◆ GetDBErrors()

int TOracleServerE2WX::GetDBErrors ( )
inline
31 {return eERROR;}
Int_t eERROR
Definition: TOracleServerE2WX.h:20

◆ IfEventBrick()

ULong64_t TOracleServerE2WX::IfEventBrick ( ULong64_t  id_eventbrick,
const char *  id_set 
)
197 {
198  // Check if brick structure is in DB
199  ULong64_t id = 0, id_brick = 0;
200  if(MyQuery(Form( "\
201  SELECT ID, ID_BRICK FROM OPERA.TB_EVENTBRICKS \
202  WHERE ID=%lld and ID_SET=%s", id_eventbrick,id_set)))
203  {
204  if(fStmt) {
205  ResultSet *rs = fStmt->getResultSet();
206  if(rs) {
207  while (rs->next()){
208  sscanf( (rs->getString(1)).c_str(),"%lld",&id);
209  sscanf( (rs->getString(2)).c_str(),"%lld",&id_brick);
210  }
211  delete rs;
212  }
213  }
214  }
215  if(id) Log(1,"TOracleServerE2WFB::IfEventBrick","brick ID=%lld of set=%s is found in DB with ID_BRICK=%lld",id_eventbrick,id_set,id_brick);
216  else Log(1,"TOracleServerE2WFB::IfEventBrick","brick ID=%lld of set=%s is not found in DB!",id_eventbrick,id_set);
217  return id;
218 }
UInt_t id
Definition: tlg2pattern.C:118

◆ MyQuery()

Int_t TOracleServerE2WX::MyQuery ( const char *  sqlquery)
58 {
59  try{
60  if (!fStmt) fStmt = fConn->createStatement();
61  fStmt->setSQL(query);
62  Log(2,"TOracleServerE2WX::MyQuery","%s",query);
63  fStmt->execute();
64  } catch (SQLException &oraex) {
65  Log(1,"TOracleServerE2WX::MyQuery","failed: (error: %s)",(oraex.getMessage()).c_str());
66  eDoCommit=0; eERROR++;
67  return 0;
68  }
69  return 1;
70 }

◆ MyQueryInsertReturning()

ULong64_t TOracleServerE2WX::MyQueryInsertReturning ( const char *  query,
const char *  var 
)
74 {
75  ULong64_t id=0;
76  try{
77  if (!fStmt) fStmt = fConn->createStatement();
78  TString s=Form("BEGIN %s returning %s into :1; END;",query,var);
79  Log(2,"TOracleServerE2WX::MyQueryInsertReturning","%s",s.Data());
80  fStmt->setSQL(s.Data());
81  fStmt->registerOutParam(1, OCCISTRING,64);
82  fStmt->executeUpdate();
83  if(!(fStmt->getString(1)).c_str()) {
84  Log(2,"TOracleServerE2WX::MyQueryInsertReturning","ERROR! empty operation returned!");
85  eDoCommit=0; eERROR++;
86  return 0;
87  }
88  Log(2,"","%s", (fStmt->getString(1)).c_str() );
89  sscanf( (fStmt->getString(1)).c_str(),"%lld",&id);
90  } catch (SQLException &oraex) {
91  Log(1,"TOracleServerE2WX::MyQuery","failed: (error: %s)",(oraex.getMessage()).c_str());
92  eDoCommit=0; eERROR++;
93  return 0;
94  }
95  return id;
96 }

◆ NviewsPerArea()

Int_t TOracleServerE2WX::NviewsPerArea ( )
inline
49 {return eNviewsPerArea;};

◆ Print()

void TOracleServerE2WX::Print ( )
28 {
30  printf( " eDoCommit = %d \n", eDoCommit );
31  printf( " eERROR = %d \n", eERROR );
32  printf( " eTestLoad = %d \n", eTestLoad );
33  printf( " eNTestLoad = %d \n", eNTestLoad );
34  if(eTestLoad) printf( " eNTestLoad = %d \n", eNTestLoad );
35 }
void Print()
Definition: TOracleServerE2.cxx:1387

◆ ROLLBACK()

Int_t TOracleServerE2WX::ROLLBACK ( )
inline
58 {return MyQuery("ROLLBACK");}

◆ Set0()

void TOracleServerE2WX::Set0 ( )

◆ SetCommit()

void TOracleServerE2WX::SetCommit ( bool  i)
inline
33 {eTestLoad=false; eDoCommit=i; eNTestLoad=kMaxInt;}

◆ SetTestLoad()

void TOracleServerE2WX::SetTestLoad ( int  n)
inline
32 {eTestLoad=true; eDoCommit=0; eNTestLoad=n;}

◆ SetTransactionRW()

Int_t TOracleServerE2WX::SetTransactionRW ( )
inline
56 {return MyQuery("SET TRANSACTION READ WRITE");}

◆ TestLoad()

Bool_t TOracleServerE2WX::TestLoad ( )
inline
34 {return eTestLoad;}

◆ Timestamp()

const char * TOracleServerE2WX::Timestamp ( )
39 {
40  TTimeStamp timestamp;
41  return Form("timestamp'%s'",timestamp.AsString("s"));
42 }

Member Data Documentation

◆ eDoCommit

Bool_t TOracleServerE2WX::eDoCommit
private

◆ eERROR

Int_t TOracleServerE2WX::eERROR
private

◆ eLa

TString TOracleServerE2WX::eLa

as "NAPOLI"

◆ eLab

TString TOracleServerE2WX::eLab

◆ eNTestLoad

Int_t TOracleServerE2WX::eNTestLoad
private

◆ eNviewsPerArea

Int_t TOracleServerE2WX::eNviewsPerArea

◆ eTestLoad

Bool_t TOracleServerE2WX::eTestLoad
private

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