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 :
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:21
Int_t N() const
Definition: EdbPattern.h:86
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)
s
Definition: check_shower.C:55

◆ 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
Int_t Aid(int i) const
Definition: EdbSegP.h:169
Int_t Vid(int i) const
Definition: EdbSegP.h:168
Connection * fConn
Definition: TOracleServer.h:48
oracle::occi::Statement * fStmt
Definition: TOracleServer.h:52
EdbSegP * s1
Definition: tlg2couples.C:29
EdbSegP * s2
Definition: tlg2couples.C:30

◆ 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 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
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:38
virtual void Transform(const EdbAffine2D *aff)
Definition: EdbSegment.cxx:59
virtual Float_t GetTx() const
Definition: EdbSegment.h:41
virtual Float_t GetY0() const
Definition: EdbSegment.h:39
virtual Float_t GetTy() const
Definition: EdbSegment.h:42
segment of the track
Definition: EdbSegment.h:63
Int_t GetVolume() const
Definition: EdbSegment.h:91
Int_t GetPuls() const
Definition: EdbSegment.h:90
float GetSigmaX() const
Definition: EdbSegment.h:86
Float_t GetZ4() const
Definition: EdbView.h:113
EdbAffine2D const * GetAffine() const
Definition: EdbView.h:72
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
EdbSegment * GetSegment(int i) const
Definition: EdbView.h:219
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
#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:100
EdbRun * GetRun() const
Definition: EdbRunAccess.h:111
Definition: EdbRun.h:75
Base scanning data object: entry into Run tree.
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{
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: tlg2couples.C:117

◆ 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: