FEDRA emulsion software from the OPERA Collaboration
TOracleServerE2 Class Reference

#include <TOracleServerE2.h>

Inheritance diagram for TOracleServerE2:
Collaboration diagram for TOracleServerE2:

Public Member Functions

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 eRTS
 

Constructor & Destructor Documentation

◆ TOracleServerE2()

TOracleServerE2::TOracleServerE2 ( const char *  db,
const char *  uid,
const char *  pw 
)
inline
18  :
19  TOracleServer(db, uid, pw){}
TOracleServer(const char *db, const char *uid, const char *pw)
TOracleServerE * db
Definition: test_oracle.C:8

◆ ~TOracleServerE2()

TOracleServerE2::~TOracleServerE2 ( )
inline
20 {}

Member Function Documentation

◆ ConvertMicrotracksDataSetToEdb()

Int_t TOracleServerE2::ConvertMicrotracksDataSetToEdb ( const char *  query,
const char *  outdir,
int  major = 0,
int  minor = 0,
bool  structure_only = false 
)
859 {
860  // Input: query providing the list of zones to be extracted
861  // outdir - where to write the dataset
862  // major,minor - versions for the files names like: brick.plate,major.minor.raw.root
863 
864  //check if outdir is accessible:
866  if(!sproc.CheckDirWritable(outdir)) return 0;
867  EdbScanSet ss;
868 
869  int nviewtot=0;
870  std::map<int,ULong64_t> pl_zones;
871  int brick =-999, plate=0;
872  ULong64_t zone=0;
873  Float_t z=0;
874 
875  try{
876  if (!fStmt) fStmt = fConn->createStatement();
877  fStmt->setSQL(query);
878  Log(2,"ConvertMicrotracksDataSetToEdb","execute sql query: %s ...",query);
879  fStmt->execute();
880  ResultSet *rs = fStmt->getResultSet();
881  while (rs->next()){
882  sscanf( (rs->getString(1)).c_str(),"%d" , &brick );
883  sscanf( (rs->getString(2)).c_str(),"%d" , &plate );
884  sscanf( (rs->getString(3)).c_str(),"%lld", &zone );
885  sscanf( (rs->getString(4)).c_str(),"%f" , &z );
886  pl_zones[plate]=zone;
887 
888  EdbPlateP *plt = new EdbPlateP();
889  plt->SetID(plate);
890  plt->SetZlayer(z,z-150,z+150);
891  ss.eB.AddPlate(plt);
892  ss.eIDS.Add(new EdbID(brick,plate,major,minor));
893  }
894  } catch (SQLException &oraex) {
895  Error("TOracleServerE", "ConvertMicrotracksDataSetToEdb: failed: (error: %s)", (oraex.getMessage()).c_str());
896  }
897 
898  Log(1,"ConvertMicrotracksDataSetToEdb","found ScanSet: %d %d %d %d with %d plates",brick,0,major,minor,ss.eB.Npl() );
899 
901  int id[4]={brick,0,major,minor};
902  ss.eB.SetID(brick);
903  ss.MakePIDList();
904  if(gEDBDEBUGLEVEL>2) ss.Print();
905  sproc.WriteScanSet(id,ss);
907 
908  if(!structure_only) {
909 // int plate0 =-999;
910  EdbRun *run=0;
912  for (iter=pl_zones.begin(); iter != pl_zones.end(); ++iter) {
913  plate= iter->first;
914  zone = iter->second;
915  Log(2,"ConvertMicrotracksDataSetToEdb","for plate: %d read zone: %lld", plate,zone);
916  id[0] = brick; id[1]=plate; id[2]=major; id[3]=minor;
917  /* // it seems that update is never required so - comment out
918  TString str; sproc.MakeFileName(str,id,"raw.root");
919  sproc.CheckProcDir(id);
920  if(plate!=plate0) {
921  plate0=plate;
922  run = new EdbRun(str.Data(),"RECREATE");
923  } else run = new EdbRun(str.Data(),"UPDATE");
924  */
925  run=sproc.InitRun(id); // in case of more zones in the same plate - create *root.save files so one can resolve manually
926  if(run) {
927  nviewtot+=ConvertMicrotracksZoneToEdb(brick,zone,*run);
928  run->Close(); SafeDelete(run);
929  }
930  }
931 
932  }
933  Log(1,"ConvertMicrotracksDataSetToEdb","%d views are extracted from db for the brick %d",nviewtot,brick);
934  return nviewtot;
935 }
bool Log(int level, const char *location, const char *fmt,...)
Definition: EdbLog.cxx:75
BRICK brick
Definition: RecDispMC.C:103
Definition: EdbID.h:7
void SetZlayer(float z, float zmin, float zmax)
Definition: EdbLayer.h:102
void SetID(int id)
Definition: EdbLayer.h:95
Definition: EdbBrick.h:13
Definition: EdbRun.h:74
void Close()
Definition: EdbRun.cxx:466
Definition: EdbScanProc.h:12
int WriteScanSet(EdbID id, EdbScanSet &ss)
Definition: EdbScanProc.cxx:1467
bool CheckDirWritable(const char *dir)
Definition: EdbScanProc.cxx:1801
EdbRun * InitRun(int id[4], char *runname_=NULL, char *runnamesrv_=NULL, bool createrun_=true)
Definition: EdbScanProc.cxx:1985
bool MakeAFFSet(EdbScanSet &sc)
Definition: EdbScanProc.cxx:394
TString eProcDirClient
Definition: EdbScanProc.h:14
Definition: EdbScanSet.h:11
Int_t ConvertMicrotracksZoneToEdb(Int_t id_eventbrick, ULong64_t id_zone, EdbRun &run)
Definition: TOracleServerE2.cxx:690
Connection * fConn
Definition: TOracleServer.h:48
oracle::occi::Statement * fStmt
Definition: TOracleServer.h:52
EdbScanProc * sproc
Definition: comptonmap.cpp:29
const char * outdir
Definition: emrec.cpp:37
gEDBDEBUGLEVEL
Definition: energy.C:7
ss
Definition: energy.C:62
EdbRun * run
Definition: check_raw.C:38
Int_t plate
Definition: merge_Energy_SytematicSources_Electron.C:1
ConstRelationIterator const_iterator
Definition: VtRelationList.hh:54

◆ ConvertMicrotracksParentProcessToEdb()

Int_t TOracleServerE2::ConvertMicrotracksParentProcessToEdb ( ULong64_t  parentprocessoperation,
const char *  outdir,
int  major = 0,
int  minor = 0,
bool  structure_only = false 
)
842 {
843  char query[2048];
844  sprintf(query,"\
845  select tz.id_eventbrick,tz.id_plate,tz.ID,tp.Z \
846  from TB_ZONES%s tz, TB_PLATES%s tp, tb_proc_operations%s op where \
847  tz.id_eventbrick=tp.id_eventbrick and op.id_eventbrick=tp.id_eventbrick and \
848  op.id_parent_operation=%lld and tz.id_plate=tp.id and tp.id=op.id_plate and tz.ID_PROCESSOPERATION=op.id \
849  order by tp.id",
850  eRTS.Data(),eRTS.Data(),eRTS.Data(), processoperation);
851 
852  int nv= ConvertMicrotracksDataSetToEdb( query, outdir, major, minor, structure_only );
853  Log(1,"ConvertMicrotracksProcessToEdb","%d views are extracted from db for the processoperation %lld",nv,processoperation);
854  return nv;
855 }
TString eRTS
Definition: TOracleServerE2.h:16
Int_t ConvertMicrotracksDataSetToEdb(const char *query, const char *outdir, int major=0, int minor=0, bool structure_only=false)
Definition: TOracleServerE2.cxx:858

◆ ConvertMicrotracksProcessToEdb()

Int_t TOracleServerE2::ConvertMicrotracksProcessToEdb ( ULong64_t  processoperation,
const char *  outdir,
int  major = 0,
int  minor = 0,
bool  structure_only = false 
)
827 {
828  char query[2048];
829  sprintf(query,"\
830  select tz.id_eventbrick,tz.id_plate,tz.ID,tp.Z from TB_ZONES%s tz, TB_PLATES%s tp where \
831  tz.id_processoperation=%lld and tz.id_eventbrick=tp.id_eventbrick and tz.id_plate=tp.id order by tp.id",
832  eRTS.Data(),
833  eRTS.Data(),
834  processoperation);
835  int nv= ConvertMicrotracksDataSetToEdb( query, outdir, major, minor, structure_only );
836  Log(1,"ConvertMicrotracksProcessToEdb","%d views are extracted from db for the processoperation %lld",nv,processoperation);
837  return nv;
838 }

◆ ConvertMicrotracksVolumeToEdb()

Int_t TOracleServerE2::ConvertMicrotracksVolumeToEdb ( ULong64_t  id_volume,
const char *  outdir,
int  major = 0,
int  minor = 0,
bool  structure_only = false 
)
812 {
813  char query[2048];
814  sprintf(query,"\
815  select sl.id_eventbrick,sl.id_plate,sl.id_zone, pl.z from TB_VOLUME_SLICES%s sl, TB_PLATES%s pl where \
816  sl.id_volume=%lld and sl.id_eventbrick=pl.id_eventbrick and sl.id_plate=pl.id order by pl.id",
817  eRTS.Data(),
818  eRTS.Data(),
819  id_volume);
820  int nv= ConvertMicrotracksDataSetToEdb( query, outdir, major, minor, structure_only );
821  Log(1,"ConvertMicrotracksVolumeToEdb","%d views are extracted from db for the volume %lld",nv,id_volume);
822  return nv;
823 }

◆ ConvertMicrotracksZoneToEdb()

Int_t TOracleServerE2::ConvertMicrotracksZoneToEdb ( Int_t  id_eventbrick,
ULong64_t  id_zone,
EdbRun run 
)
691 {
692  // read possibly full information for all views and microtracks for the given zone and fill the run file with the raw data (rwd like)
693 
694  int nviews=0;
695  TObjArray edbviews1;
696  int n1= ReadViewsZone(id_zone,1,edbviews1);
697  if(n1>0) {
698  nviews += n1;
699  ReadMicrotracksZone( id_eventbrick, id_zone, 1, edbviews1 );
700  for(int i=0; i<edbviews1.GetEntries(); i++) run.AddView( (EdbView *)(edbviews1.At(i)) );
701  }
702 
703  TObjArray edbviews2;
704  int n2 = ReadViewsZone(id_zone,2,edbviews2);
705  if(n2>0) {
706  nviews += n2;
707  ReadMicrotracksZone( id_eventbrick, id_zone, 2, edbviews2 );
708  for(int i=0; i<edbviews2.GetEntries(); i++) run.AddView( (EdbView *)(edbviews2.At(i)) );
709  }
710  run.Save();
711  return nviews;
712 }
void Save()
Definition: EdbRun.cxx:451
void AddView()
Definition: EdbRun.cxx:332
Definition: EdbView.h:134
Int_t ReadViewsZone(ULong64_t id_zone, int side, TObjArray &edbviews)
Definition: TOracleServerE2.cxx:643
Int_t ReadMicrotracksZone(Int_t id_eventbrick, ULong64_t id_zone, int side, TObjArray &edbviews)
Definition: TOracleServerE2.cxx:715

◆ ConvertScanbackPathToEdb()

Int_t TOracleServerE2::ConvertScanbackPathToEdb ( Int_t  id_eventbrick,
Int_t  path,
const char *  outdir,
int  major,
int  minor 
)
280 {
282  if(!sproc.CheckDirWritable(outdir)) return 0;
284  EdbTrackP t;
285  if(ReadScanbackPath(id_eventbrick,path,t)) {
286  EdbID id(id_eventbrick,0,major,minor);
287  if(sproc.WriteSBTrack(t, path, id)) return 1;
288  }
289  return 0;
290 }
TTree * t
Definition: check_shower.C:4
int WriteSBTrack(EdbTrackP &t, int path, EdbID id)
Definition: EdbScanProc.cxx:1425
Definition: EdbPattern.h:118
Int_t ReadScanbackPath(Int_t id_eventbrick, Int_t path, EdbTrackP &t)
Definition: TOracleServerE2.cxx:293
UInt_t id
Definition: tlg2pattern.C:118

◆ DumpBrickVolumesID()

Int_t TOracleServerE2::DumpBrickVolumesID ( char *  id_eventbrick)
1099 {
1100  // Dump on the screen the list of volumes IDs and correspondent process operation IDs
1101 
1102  char *query= new char[2048];
1103 
1104  try{
1105  if (!fStmt)
1106  fStmt = fConn->createStatement();
1107 
1108  sprintf(query,"select volume, id_processoperation, id from tb_volumes%s where id_eventbrick=%s",
1109  eRTS.Data(), id_eventbrick);
1110 
1111  fStmt->setSQL(query);
1112  Log(2,"DumpProcessOperations","execute sql query: %s ...",query);
1113  fStmt->execute();
1114  ResultSet *rs = fStmt->getResultSet();
1115  int count=0;
1116  while (rs->next()){
1117  if(++count==1) {
1118  printf("\n------------ Volumes stored for brick %s -------------\n",id_eventbrick);
1119  printf("\nVolume ProcessID volumeID\n");
1120  }
1121  printf(" %s %s %s\n",
1122  rs->getString(1).c_str(), rs->getString(2).c_str(), rs->getString(3).c_str());
1123  }
1124  delete rs;
1125 
1126  } catch (SQLException &oraex) {
1127  Error("TOracleServerE2", "DumpBrickVolumesID: failed: (error: %s)", (oraex.getMessage()).c_str());
1128  }
1129  return 0;
1130 }

◆ DumpEventsID()

Int_t TOracleServerE2::DumpEventsID ( char *  id_eventbrick)
1134 {
1135  // Dump on the screen the list of volumes IDs and correspondent process operation IDs
1136 
1137  char *query= new char[2048];
1138 
1139  try{
1140  if (!fStmt)
1141  fStmt = fConn->createStatement();
1142 
1143  sprintf(query,"select event from tb_predicted_events%s where ID in \
1144  (select id_event from tb_cs_candidates%s where id_eventbrick in \
1145  (select id from tb_eventbricks%s where id_brick=%s))",
1146  eRTS.Data(),eRTS.Data(),eRTS.Data(), id_eventbrick);
1147 
1148  fStmt->setSQL(query);
1149  Log(2,"DumpEventsID","execute sql query: %s ...\n",query);
1150  fStmt->execute();
1151  ResultSet *rs = fStmt->getResultSet();
1152  int count=0;
1153  while (rs->next()){
1154  if(++count==1) {
1155  printf("\n------------ Events defined for brick %s -------------\n",id_eventbrick);
1156  }
1157  printf("Event \t%s is associated with brick %s\n", rs->getString(1).c_str(), id_eventbrick);
1158  }
1159  if(count>0) printf("---------------------------------------------------------\n");
1160 
1161  delete rs;
1162 
1163  } catch (SQLException &oraex) {
1164  Error("TOracleServerE2", "DumpEventsID: failed: (error: %s)", (oraex.getMessage()).c_str());
1165  }
1166  return 0;
1167 }

◆ DumpProcessOperations() [1/2]

Int_t TOracleServerE2::DumpProcessOperations ( char *  id_eventbrick,
char *  id_programsettings 
)
1033 {
1034  // Dump on the screen the list of process operation IDs related to a given brick and program setting
1035 
1036  char *query= new char[2048];
1037 
1038  try{
1039  if (!fStmt)
1040  fStmt = fConn->createStatement();
1041 
1042  sprintf(query,"select ID,to_char(starttime),to_char(notes) from tb_proc_operations%s where id_eventbrick=%s and id_programsettings=%s",
1043  eRTS.Data(), id_eventbrick, id_programsettings);
1044 
1045  fStmt->setSQL(query);
1046  Log(2,"DumpProcessOperations","execute sql query: %s ...",query);
1047  fStmt->execute();
1048  ResultSet *rs = fStmt->getResultSet();
1049  while (rs->next()){
1050  printf("Operation: %s, start time: %s, notes: %s\n",
1051  rs->getString(1).c_str(),rs->getString(2).c_str(),rs->getString(3).c_str());
1052  }
1053  delete rs;
1054 
1055  } catch (SQLException &oraex) {
1056  Error("TOracleServerE2", "DumpProcessOperations; failed: (error: %s)", (oraex.getMessage()).c_str());
1057  }
1058  return 0;
1059 }

◆ DumpProcessOperations() [2/2]

Int_t TOracleServerE2::DumpProcessOperations ( char *  id_eventbrick,
Int_t  driverlevel 
)
1064 {
1065  // Dump on the screen the list of process operation IDs related to a given brick with a driverlevel greater or equal than the given value
1066 
1067  char *query= new char[2048];
1068 
1069  try{
1070  if (!fStmt)
1071  fStmt = fConn->createStatement();
1072 
1073  sprintf(query,"select ID, id_plate,to_char(starttime),to_char(notes),driverlevel from tb_proc_operations%s where id_eventbrick=%s and driverlevel>=%d order by starttime",
1074  eRTS.Data(), id_eventbrick, driverlevel);
1075 
1076  fStmt->setSQL(query);
1077  Log(2,"DumpProcessOperations","execute sql query: %s ...",query);
1078  fStmt->execute();
1079  ResultSet *rs = fStmt->getResultSet();
1080  int count=0;
1081  while (rs->next()){
1082  if(++count==1) {
1083  printf("\n----------------- Operations with driverlevel >= %d for brick %s ------------------------\n", driverlevel, id_eventbrick);
1084  printf("\n OperationID Plate Date Driverlevel Notes\n");
1085  }
1086  printf("%18s %3d %s %d %s\n",
1087  rs->getString(1).c_str(), rs->getInt(2), rs->getString(3).c_str(), rs->getInt(5), rs->getString(4).c_str());
1088  }
1089  delete rs;
1090 
1091  } catch (SQLException &oraex) {
1092  Error("TOracleServerE2", "DumpProcessOperations; failed: (error: %s)", (oraex.getMessage()).c_str());
1093  }
1094  return 0;
1095 }

◆ GetId_EventBrick()

Int_t TOracleServerE2::GetId_EventBrick ( const char *  id_brick,
const char *  id_set,
char *  id 
)
1171 {
1172  // Get the brick ID related to a given brick name and brick-set
1173  Int_t idnum=0;
1174  char *query= new char[2048];
1175  try{
1176  if (!fStmt)
1177  fStmt = fConn->createStatement();
1178 
1179  sprintf(query,"select ID from tb_eventbricks%s where id_brick=%s and id_set=%s ",
1180  eRTS.Data(), id_brick, id_set);
1181 
1182  // fStmt->setSQL(query);
1183  Log(2,"GetId_EventBrick","execute sql query: %s ...",query);
1184  // fStmt->execute();
1185  Query(query);
1186  ResultSet *rs = fStmt->getResultSet();
1187  if(rs) {
1188  while (rs->next()){
1189  if(id) strcpy(id,rs->getString(1).c_str());
1190  sscanf(rs->getString(1).c_str(),"%d", &idnum);
1191  }
1192  delete rs;
1193  }
1194  } catch (SQLException &oraex) {
1195  Error("TOracleServerE2", "GetId_Eventbrick; failed: (error: %s)", (oraex.getMessage()).c_str());
1196  }
1197  return idnum;
1198 }
TSQLResult * Query(const char *sql)
Definition: TOracleServer.cxx:97
strcpy(cmd,"cp Shower.root Shower2.root")

◆ GetId_ScanbackPath() [1/2]

Int_t TOracleServerE2::GetId_ScanbackPath ( char *  id_eventbrick,
char *  id_process_operation,
int  path,
char *  id 
)
1263 {
1264  // Get the scanback path ID related to a given brick, process operation and path
1265 
1266  char *query= new char[2048];
1267  try{
1268  if (!fStmt)
1269  fStmt = fConn->createStatement();
1270 
1271  sprintf(query,"select ID from TB_SCANBACK_PATHS%s where id_eventbrick=%s and ID_PROCESSOPERATION=%s and PATH=%d",
1272  eRTS.Data(), id_eventbrick, id_process_operation, path);
1273 
1274  fStmt->setSQL(query);
1275  Log(2,"GetId_ScanbackPath","execute sql query: %s ...",query);
1276  fStmt->execute();
1277  ResultSet *rs = fStmt->getResultSet();
1278  while (rs->next()){
1279  strcpy(id,rs->getString(1).c_str());
1280  }
1281  delete rs;
1282 
1283  } catch (SQLException &oraex) {
1284  Error("TOracleServerE2", "GetId_ScanbackPath; failed: (error: %s)", (oraex.getMessage()).c_str());
1285  }
1286  return 0;
1287 }

◆ GetId_ScanbackPath() [2/2]

ULong64_t TOracleServerE2::GetId_ScanbackPath ( ULong64_t  id_eventbrick,
ULong64_t  id_process_operation,
int  path 
)
1231 {
1232  // Get the scanback path ID related to a given brick, process operation and path
1233 
1234  ULong64_t id=0;
1235  char *query= new char[2048];
1236  try{
1237  if (!fStmt)
1238  fStmt = fConn->createStatement();
1239 
1240  sprintf(query,"select ID from TB_SCANBACK_PATHS%s where id_eventbrick=%s and ID_PROCESSOPERATION=%s and PATH=%d",
1241  eRTS.Data(),
1242  Ostr(id_eventbrick), Ostr(id_process_operation), path);
1243 
1244  fStmt->setSQL(query);
1245  Log(2,"GetId_ScanbackPath","execute sql query: %s ...",query);
1246  fStmt->execute();
1247  ResultSet *rs = fStmt->getResultSet();
1248  while (rs->next()){
1249  sscanf( (rs->getString(1)).c_str(),"%lld",&id);
1250  Log(2,"TOracleServerE2::GetId_ScanbackPath","%lld",id);
1251  }
1252  delete rs;
1253 
1254  } catch (SQLException &oraex) {
1255  Error("TOracleServerE2", "GetId_ScanbackPath; failed: (error: %s)", (oraex.getMessage()).c_str());
1256  }
1257  return id;
1258 }
const char * Ostr(ULong64_t num)

◆ GetId_Volume()

Int_t TOracleServerE2::GetId_Volume ( char *  id_eventbrick,
char *  id_process_operation,
int  ivolume,
char *  id 
)
1292 {
1293  // Get the volume ID related to a given brick, process operation and progressive number of the volume
1294 
1295  char *query= new char[2048];
1296  try{
1297  if (!fStmt)
1298  fStmt = fConn->createStatement();
1299 
1300  sprintf(query,"select ID from TB_VOLUMES%s where id_eventbrick=%s and ID_PROCESSOPERATION=%s and VOLUME=%d",
1301  eRTS.Data(), id_eventbrick, id_process_operation, ivolume);
1302 
1303  fStmt->setSQL(query);
1304  Log(2,"GetId_Volume","execute sql query: %s ...",query);
1305  fStmt->execute();
1306  ResultSet *rs = fStmt->getResultSet();
1307  while (rs->next()){
1308  strcpy(id,rs->getString(1).c_str());
1309  }
1310  delete rs;
1311 
1312  } catch (SQLException &oraex) {
1313  Error("TOracleServerE2", "GetId_Volume; failed: (error: %s)", (oraex.getMessage()).c_str());
1314  }
1315  return 0;
1316 }

◆ GetId_Zone()

Int_t TOracleServerE2::GetId_Zone ( char *  id_eventbrick,
char *  id_plate,
char *  id_process_operation,
char *  series,
char *  id 
)
1203 {
1204  // Get the zone ID related to a given brick, plate, process operation and series
1205 
1206  char *query= new char[2048];
1207  try{
1208  if (!fStmt)
1209  fStmt = fConn->createStatement();
1210 
1211  sprintf(query,"select ID from tb_zones%s where id_eventbrick=%s and id_plate=%s and id_processoperation=%s and series=%s",
1212  eRTS.Data(), id_eventbrick, id_plate, id_process_operation, series);
1213 
1214  fStmt->setSQL(query);
1215  Log(2,"GetId_Zone","execute sql query: %s ...",query);
1216  fStmt->execute();
1217  ResultSet *rs = fStmt->getResultSet();
1218  while (rs->next()){
1219  strcpy(id,rs->getString(1).c_str());
1220  }
1221  delete rs;
1222 
1223  } catch (SQLException &oraex) {
1224  Error("TOracleServerE2", "GetId_Zone; failed: (error: %s)", (oraex.getMessage()).c_str());
1225  }
1226  return 0;
1227 }

◆ GetProcessOperationID() [1/3]

Int_t TOracleServerE2::GetProcessOperationID ( char *  id_eventbrick,
char *  id_parent_operation,
char *  id_programsettings,
char *  id_plate,
char *  id 
)
968 {
969  // Get the last process operation ID related to a given brick, plate and program setting
970 
971  char *query= new char[2048];
972 
973  try{
974  if (!fStmt)
975  fStmt = fConn->createStatement();
976 
977  sprintf(query,"\
978  select ID from tb_proc_operations%s \
979  where id_parent_operation=%s and id_programsettings=%s and id_eventbrick=%s and id_plate=%s",eRTS.Data(),
980  id_parent_operation, id_programsettings, id_eventbrick, id_plate);
981 
982  fStmt->setSQL(query);
983  Log(2,"GetProcessOperationID","execute sql query: %s ...",query);
984  fStmt->execute();
985  ResultSet *rs = fStmt->getResultSet();
986  while (rs->next()){
987  strcpy(id,rs->getString(1).c_str());
988  }
989  delete rs;
990 
991  } catch (SQLException &oraex) {
992  Error("TOracleServerE2", "GetProcessOperationID; failed: (error: %s)", (oraex.getMessage()).c_str());
993  }
994  return 0;
995 }

◆ GetProcessOperationID() [2/3]

Int_t TOracleServerE2::GetProcessOperationID ( char *  id_eventbrick,
char *  id_programsettings,
char *  id 
)
939 {
940  // Get the last process operation ID related to a given brick and program setting
941 
942  char *query= new char[2048];
943 
944  try{
945  if (!fStmt)
946  fStmt = fConn->createStatement();
947 
948  sprintf(query,"select ID from tb_proc_operations%s where id_eventbrick=%s and id_programsettings=%s"
949  ,eRTS.Data(), id_eventbrick, id_programsettings);
950 
951  fStmt->setSQL(query);
952  Log(2,"GetProcessOperationID","execute sql query: %s ...",query);
953  fStmt->execute();
954  ResultSet *rs = fStmt->getResultSet();
955  while (rs->next()){
956  strcpy(id,rs->getString(1).c_str());
957  }
958  delete rs;
959 
960  } catch (SQLException &oraex) {
961  Error("TOracleServerE2", "GetProcessOperationID; failed: (error: %s)", (oraex.getMessage()).c_str());
962  }
963  return 0;
964 }

◆ GetProcessOperationID() [3/3]

ULong64_t TOracleServerE2::GetProcessOperationID ( ULong64_t  id_eventbrick,
ULong64_t  id_parent_operation,
ULong64_t  id_programsettings,
int  id_plate 
)
999 {
1000  // Get the last process operation ID related to a given brick, plate and program setting
1001 
1002  ULong64_t id = 0;
1003  char *query= new char[2048];
1004 
1005  try{
1006  if (!fStmt)
1007  fStmt = fConn->createStatement();
1008 
1009  sprintf(query,"\
1010  select ID from tb_proc_operations%s \
1011  where id_parent_operation=%s and id_programsettings=%s and id_eventbrick=%s and id_plate=%d",eRTS.Data(),
1012  Ostr(id_parent_operation), Ostr(id_programsettings), Ostr(id_eventbrick), id_plate);
1013 
1014  fStmt->setSQL(query);
1015  Log(2,"GetProcessOperationID","execute sql query: %s ...",query);
1016  fStmt->execute();
1017  ResultSet *rs = fStmt->getResultSet();
1018  while (rs->next()){
1019  sscanf( (rs->getString(1)).c_str(),"%lld",&id);
1020  }
1021  delete rs;
1022 
1023  } catch (SQLException &oraex) {
1024  Error("TOracleServerE2", "GetProcessOperationID; failed: (error: %s)", (oraex.getMessage()).c_str());
1025  }
1026  return id;
1027 }

◆ GetProcessType()

Int_t TOracleServerE2::GetProcessType ( char *  IDPROCESS)
1320 {
1321  // GL: strange function; probably can be useful as an example of the complex query
1322 
1323  char *query= new char[2048];
1324  int scanback=-1;
1325  int SBFLAG=-99,TSFLAG=-99;
1326 
1327  try{
1328  if (!fStmt)
1329  fStmt = fConn->createStatement();
1330 
1331  sprintf(query,"\
1332 select SBFLAG, TSFLAG FROM (select decode(count(*),0,0,1) as SBFLAG from tb_scanback_paths \
1333 where (id_eventbrick, id_processoperation) in (select id_eventbrick, id from tb_proc_operations \
1334 where id = %s)),(select decode(count(*),0,0,1) as TSFLAG from tb_volumes \
1335 where (id_eventbrick, id_processoperation) \
1336 in (select id_eventbrick, id from tb_proc_operations where id = %s))",
1337  IDPROCESS,IDPROCESS);
1338 
1339  fStmt->setSQL(query);
1340  Log(2,"GetProcessType","execute sql query: %s ...",query);
1341  fStmt->execute();
1342  ResultSet *rs = fStmt->getResultSet();
1343 
1344  if(!rs->next()) return scanback;
1345 
1346  SBFLAG = rs->getInt(1);
1347  TSFLAG = rs->getInt(2);
1348 
1349  if (SBFLAG == 0 && TSFLAG == 0)
1350  scanback = -1;
1351  else if (SBFLAG == 1)
1352  scanback = 1;
1353  else if (TSFLAG == 1)
1354  scanback = 0;
1355 
1356  delete rs;
1357  } catch (SQLException &oraex) {
1358  Error("TOracleServerE", "GetProcessType; failed: (error: %s)", (oraex.getMessage()).c_str());
1359  }
1360  return scanback;
1361 }

◆ Ostr() [1/2]

const char * TOracleServerE2::Ostr ( Int_t  num)
24 {
25  // return "null" if arg<=0;
26  return num>0 ? Form("%d",num) : Form("null");
27 }

◆ Ostr() [2/2]

const char* TOracleServerE2::Ostr ( ULong64_t  num)

◆ Print()

void TOracleServerE2::Print ( )
1388 {
1389  if(IsConnected()) printf("TOracleServerE2 is connected to: %s://%s:%d/%s\n", ServerInfo(),GetHost(),GetPort(),GetDB() );
1390  else printf("TOracleServerE2 is not connected!\n");
1391 }
const char * ServerInfo()
Definition: TOracleServer.cxx:305

◆ PrintBrickInfo()

void TOracleServerE2::PrintBrickInfo ( Long_t  id_eventbrick,
int  level 
)
1380 {
1381  DumpProcessOperations( Form("%ld",brick), 0);
1382  DumpBrickVolumesID( Form("%ld",brick));
1383  DumpEventsID( Form("%ld",brick) );
1384 }
Int_t DumpEventsID(char *id_eventbrick)
Definition: TOracleServerE2.cxx:1133
Int_t DumpProcessOperations(char *id_eventbrick, char *id_programsettings)
Definition: TOracleServerE2.cxx:1032
Int_t DumpBrickVolumesID(char *id_eventbrick)
Definition: TOracleServerE2.cxx:1098

◆ PrintBrickInfoFull()

void TOracleServerE2::PrintBrickInfoFull ( Long_t  id_eventbrick,
int  level 
)
1365 {
1366  if(brick<1000000) {
1367  PrintBrickInfo( 4000000 + brick, level );
1368  PrintBrickInfo( 3000000 + brick, level );
1369  PrintBrickInfo( 2000000 + brick, level );
1370  PrintBrickInfo( 1000000 + brick, level );
1371  DumpEventsID(Form("%ld",brick));
1372  } else {
1373  PrintBrickInfo( brick, level );
1374  DumpEventsID( Form("%ld",brick%1000000));
1375  }
1376 }
void PrintBrickInfo(Long_t id_eventbrick, int level)
Definition: TOracleServerE2.cxx:1379

◆ ReadBasetracksPattern()

Int_t TOracleServerE2::ReadBasetracksPattern ( char *  selection,
EdbPattern pat 
)

!! a kind of hack

599 {
600  // read basetracks from the tb_mipbasetracks table using the given selection string
601 
602  int ntracks=0;
603  char query[2048];
604  try{
605  if (!fStmt)
606  fStmt = fConn->createStatement();
607  sprintf(query, "SELECT \
608  ID_EVENTBRICK, id_zone, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, PH, SIGMA \
609  from tb_mipbasetracks%s where %s",eRTS.Data(),
610  selection);
611  fStmt->setSQL(query);
612  fStmt->setPrefetchRowCount(2000);
613  Log(2,"ReadBasetracksPattern","execute sql query: %s ...",query);
614  fStmt->execute();
615  ResultSet *rs = fStmt->getResultSet();
616  EdbSegP seg;
617  while (rs->next()){
618  seg.Set(
619  rs->getInt(3), //id
620  rs->getFloat(4), //posx
621  rs->getFloat(5), //posy
622  rs->getFloat(6), //slopex
623  rs->getFloat(7), //slopey
624  rs->getInt(8), //grains
625  0 //flag
626  );
627  seg.SetZ(pat.Z());
628  seg.SetDZ(300.);
629  seg.SetVolume(rs->getInt(10));
630  seg.SetVid(pat.PID(),0); // keep in a segment also plate ID (by Ale)
631  pat.AddSegment(seg);
632  ntracks++;
633  }
634  delete rs;
635  } catch (SQLException &oraex) {
636  Error("TOracleServerE", "ReadBasetracksPattern failed: (error: %s)", (oraex.getMessage()).c_str());
637  }
638  Log(2,"ReadBasetracksPattern","%d segments are read\n", ntracks);
639  return ntracks;
640 }
int PID() const
Definition: EdbPattern.h:329
Definition: EdbSegP.h:18
void SetVolume(float w)
Definition: EdbSegP.h:133
void SetZ(float z)
Definition: EdbSegP.h:122
void SetDZ(float dz)
Definition: EdbSegP.h:123
void SetVid(int vid, int sid)
Definition: EdbSegP.h:134
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:86
Float_t Z() const
Definition: EdbPattern.h:87
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:71

◆ ReadBrickOffset()

Int_t TOracleServerE2::ReadBrickOffset ( Int_t  id_brick,
EdbMarksSet ms 
)
243 {
244  ms.GetAbsolute()->GetMarks()->Clear("C");
245  ms.eBrick = id_brick;
246 
247  char *query= new char[2048];
248 
249  try{
250  if (!fStmt)
251  fStmt = fConn->createStatement();
252 
253  sprintf(query,
254  "select MINX_CM*10000,MINY_CM*10000 from tb_opera_predicted_bricks%s \
255  where id_event in \
256  (select id_event from tb_b_bmm_brick_extractions%s where id_eventbrick = 1000000+%d) \
257  and id_eventbrick = 1000000+%d",
258  eRTS.Data(),eRTS.Data(),id_brick,id_brick);
259  fStmt->setSQL(query);
260  Log(2,"ReadBrickOffset","execute sql query: %s ...",query);
261  fStmt->execute();
262  ResultSet *rs = fStmt->getResultSet();
263  while (rs->next()){
264  ms.eXmin = rs->getFloat(1);
265  ms.eXmax = 0.;
266  ms.eYmin = rs->getFloat(2);
267  ms.eYmax = 0.;
268  }
269  delete rs;
270 
271  } catch (SQLException &oraex) {
272  Error("TOracleServerE::ReadBrickOffset", "Error!!! %s", (oraex.getMessage()).c_str());
273  return false;
274  }
275  return (0);
276 }
TClonesArray * GetMarks() const
Definition: EdbFiducial.h:72
Long_t eBrick
Definition: EdbFiducial.h:98
EdbMarksBox * GetAbsolute() const
Definition: EdbFiducial.h:109
Float_t eXmin
Definition: EdbFiducial.h:96
Float_t eYmin
Definition: EdbFiducial.h:97
Float_t eYmax
Definition: EdbFiducial.h:97
Float_t eXmax
Definition: EdbFiducial.h:96

◆ ReadCSPredictions()

Int_t TOracleServerE2::ReadCSPredictions ( Int_t  id_brick,
EdbPattern pred 
)
31 {
32  // Fills an EdbPattern object with CS predictions
33  // bugged version. Please use ReadCSPredictions2() instead
34 
35  pred.Reset();
36  char *query= new char[2048];
37 
38  try{
39  if (!fStmt)
40  fStmt = fConn->createStatement();
41 
42  // select * from vw_cs_candidates@opita01 vwcs
43  // inner join tb_cs_candidate_validation@opita01 vld on (vld.id_candidate= vwcs.id_candidate)
44  // where vld.id_eventbrick = 3021343 and vld.valid = 'Y';
45 
46  sprintf(query,
47  "select cand,posx,posy,slopex,slopey,grains from vw_local_cs_candidates%s where id_cs_eventbrick in (select id from tb_eventbricks where id_brick=%d) and id_plate=2",
48  eRTS.Data(),id_brick);
49 
50  fStmt->setSQL(query);
51  Log(2,"ReadCSPredictions","execute sql query: %s ...",query);
52  fStmt->execute();
53  ResultSet *rs = fStmt->getResultSet();
54  while (rs->next()){
55  pred.AddSegment(rs->getInt(1),rs->getFloat(2),rs->getFloat(3),rs->getFloat(4),rs->getFloat(5),
56  rs->getInt(6),0);
57  }
58  delete rs;
59 
60  } catch (SQLException &oraex) {
61  Error("TOracleServerE::ReadCSPredictions", "Error!!! %s", (oraex.getMessage()).c_str());
62  return false;
63  }
64  return (pred.N());
65 }
void Reset()
Definition: EdbPattern.cxx:1632
Int_t N() const
Definition: EdbPattern.h:89

◆ ReadCSPredictions2()

Int_t TOracleServerE2::ReadCSPredictions2 ( Int_t  id_brick,
EdbPattern pred 
)
110 {
111  // Fills an EdbPattern object with CS predictions
112  // The query is better than the one in ReadCSPredictions because takes
113  // into account also the 3 over 4 selection
114 
115  pred.Reset();
116  EdbSegP seg;
117  char *query= new char[2048];
118 
119  try{
120  if (!fStmt)
121  fStmt = fConn->createStatement();
122 
123  // select * from vw_cs_candidates@opita01 vwcs
124  // inner join tb_cs_candidate_validation@opita01 vld on (vld.id_candidate= vwcs.id_candidate)
125  // where vld.id_eventbrick = 3021343 and vld.valid = 'Y';
126 
127  sprintf(query,
128  "select cand, posx, posy, slopex, slopey, grains, id_plate from \
129  (select idcand, cand, posx, posy, slopex, slopey, id_plate, grains, row_number() \
130  over (partition by idcand order by grains desc, id_plate desc) as rnum from \
131  vw_local_cs_candidates where id_cs_eventbrick in \
132  (select id from tb_eventbricks where mod(id_brick,1000000)=%d)) \
133  where rnum = 1 order by cand",
134  id_brick);
135 
136  fStmt->setSQL(query);
137  Log(2,"ReadCSPredictions2","execute sql query: %s ...",query);
138  fStmt->execute();
139  ResultSet *rs = fStmt->getResultSet();
140  while (rs->next()){
141  seg.Set(rs->getInt(1),rs->getFloat(2),rs->getFloat(3),rs->getFloat(4),rs->getFloat(5),
142  rs->getInt(6),0);
143  seg.SetPID(rs->getInt(7));
144  pred.AddSegment(seg);
145  }
146  delete rs;
147 
148  } catch (SQLException &oraex) {
149  Error("TOracleServerE::ReadCSPredictions2", "Error!!! %s", (oraex.getMessage()).c_str());
150  return false;
151  }
152  return (pred.N());
153 }
void SetPID(int pid)
Definition: EdbSegP.h:126

◆ ReadCSPredictions_remote_v2()

Int_t TOracleServerE2::ReadCSPredictions_remote_v2 ( Int_t  id_brick,
EdbPattern pred,
int  csid 
)
69 {
70  // Fills an EdbPattern object with CS predictions
71  // The query is better than the one in ReadCSPredictions because takes
72  // into account also the 3 over 4 selection
73  // csid: 1 or 2
74 
75  pred.Reset();
76  EdbSegP seg;
77  char *query= new char[2048];
78 
79  try{
80  if (!fStmt)
81  fStmt = fConn->createStatement();
82 
83  if(csid==1) {
84  sprintf(query, "select distinct candidate,posx_1,posy_1,slopex_1,slopey_1,grains_1 from vw_cs_candidates_v2 where mod(id_eventbrick,1000000)=%d order by candidate", id_brick);
85  } else if(csid==2) {
86  sprintf(query, "select distinct candidate,posx_2,posy_2,slopex_2,slopey_2,grains_2 from vw_cs_candidates_v2 where mod(id_eventbrick,1000000)=%d order by candidate", id_brick);
87  }
88 
89  fStmt->setSQL(query);
90  Log(2,"ReadCSPredictions2","execute sql query: %s ...",query);
91  fStmt->execute();
92  ResultSet *rs = fStmt->getResultSet();
93  while (rs->next()){
94  seg.Set(rs->getInt(1),rs->getFloat(2),rs->getFloat(3),rs->getFloat(4),rs->getFloat(5),
95  rs->getInt(6),0);
96  seg.SetPID(csid);
97  pred.AddSegment(seg);
98  }
99  delete rs;
100 
101  } catch (SQLException &oraex) {
102  Error("TOracleServerE::ReadCSPredictions2", "Error!!! %s", (oraex.getMessage()).c_str());
103  return false;
104  }
105  return (pred.N());
106 }

◆ ReadDataSet()

Int_t TOracleServerE2::ReadDataSet ( ULong64_t  id_parent_op,
int  id_brick,
ULong64_t  path,
EdbPatternsVolume vol 
)
358 {
359  // read all basetracks patterns corresponsing to the given parent process for the given brick and given path ("series" in tb_zones table)
360  // TO CHECK: this set of selection parameters guarantee the consistence and uniqueness of data? (all data of calibration/scanback/totalscan, etc)
361  int nsegtot=0;
362  char query[2048];
363  int npat = 0;
364  TObjArray patterns(100);
365  ULong64_t *proc_list = new ULong64_t[100];
366  EdbPattern *pat=0;
367  try{
368  if (!fStmt)
369  fStmt = fConn->createStatement();
370 
371  sprintf(query,"\
372  select to_char(op.id), op.id_plate, pl.z, op.success \
373  from tb_proc_operations%s op, tb_plates%s pl \
374  where op.id_eventbrick=%d and pl.id_eventbrick=%d and pl.id=op.id_plate and op.id_parent_operation=%lld \
375  order by op.id_plate", eRTS.Data(), eRTS.Data(),
376  id_brick, id_brick, id_parent_op);
377 
378  fStmt->setSQL(query);
379  Log(2,"ReadDataSet","execute sql query: %s ...",query);
380  fStmt->execute();
381  ResultSet *rs = fStmt->getResultSet();
382 
383  ULong64_t procop=0LL;
384  float z=0;
385  int plate=0;
386  npat=0;
387  while (rs->next()){
388  sscanf( (rs->getString(1)).c_str(),"%lld", &procop );
389  if(strncmp(rs->getString(4).c_str(),"Y",1)) continue;
390  plate = rs->getInt(2);
391  z = rs->getFloat(3);
392  proc_list[npat] = procop;
393  npat++;
394  pat = new EdbPattern(0.,0.,z);
395  pat->SetPID(plate);
396  patterns.Add( pat );
397  }
398 
399  } catch (SQLException &oraex) {
400  Error("TOracleServerE", "ReadPatternsVolume; failed: (error: %s)", (oraex.getMessage()).c_str());
401  }
402 
403  for(int i=0; i<npat; i++) {
404  pat = (EdbPattern*)patterns.At(i);
405  if( !ReadZplate(id_brick, pat->PID(), *pat ) )
406  { Log(1,"ReadDataSet","skip plate %d %d !", id_brick,pat->PID()); continue; }
407  sprintf(query,"id_zone in (select id from tb_zones%s where id_processoperation=%lld and id_plate=%d and series=%lld)",eRTS.Data(),
408  proc_list[i],pat->PID(), path);
409  nsegtot += ReadBasetracksPattern( query, *pat);
410  vol.AddPattern(pat);
411  }
412  Log(2,"ReadDataSet","%d segments extracted from db into PatternsVolume",nsegtot);
413 
414  return nsegtot;
415 }
EdbPatternsVolume * vol
Definition: RecDispNU.C:116
Int_t npat
Definition: Xi2HatStartScript.C:33
Definition: EdbPattern.h:280
void SetPID(int pid)
Definition: EdbPattern.h:319
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1867
EdbPoint * At(int i) const
Definition: EdbPattern.h:90
Int_t ReadBasetracksPattern(char *selection, EdbPattern &pat)
Definition: TOracleServerE2.cxx:598
bool ReadZplate(int id_plate, int id_eventbrick, EdbPattern &pat)
Definition: TOracleServerE2.cxx:559

◆ ReadMicrotracksPattern()

Int_t TOracleServerE2::ReadMicrotracksPattern ( int  id_eventbrick,
char *  selection,
EdbPattern pat 
)

!! a kind of hack

763 {
764  // read all microtracks from TB_MIPMICROTRACKS table for the given selection
765 
766  int ntracks=0;
767  char query[2048];
768  try{
769  if (!fStmt)
770  fStmt = fConn->createStatement();
771 
772  sprintf(query, "SELECT \
773  ID_EVENTBRICK, id_zone, ID, POSX, POSY, SLOPEX, SLOPEY, GRAINS, AREASUM, SIGMA, SIDE, ID_VIEW \
774  from TB_MIPMICROTRACKS%s where id_eventbrick=%d and %s",eRTS.Data(),
775  id_eventbrick, selection);
776 
777  fStmt->setSQL(query);
778  fStmt->setPrefetchRowCount(2000);
779  Log(2,"ReadMicrotracksPattern","execute sql query: %s ...",query);
780  fStmt->execute();
781  ResultSet *rs = fStmt->getResultSet();
782  EdbSegP seg;
783  while (rs->next()){
784  seg.Set(
785  rs->getInt(3), //id
786  rs->getFloat(4), //posx
787  rs->getFloat(5), //posy
788  rs->getFloat(6), //slopex
789  rs->getFloat(7), //slopey
790  rs->getInt(8), //grains
791  0 //flag
792  );
793  seg.SetSZ(rs->getFloat(11)); // put sigma here!
794  seg.SetZ(pat.Z());
795  seg.SetDZ(45.);
796  seg.SetVolume(rs->getInt(9)); //areasum
797  seg.SetVid(pat.PID(),0); // keep in a segment also plate ID (by Ale)
798  seg.SetAid(0,rs->getInt(12), rs->getInt(11)); // area id, view id, side
799  pat.AddSegment(seg);
800  ntracks++;
801  }
802  delete rs;
803  } catch (SQLException &oraex) {
804  Error("TOracleServerE2", "ReadMicrotracksPattern failed: (error: %s)", (oraex.getMessage()).c_str());
805  }
806  Log(2,"ReadMicrotracksPattern","%d segments are read", ntracks);
807  return ntracks;
808 }
void SetSZ(float sz)
Definition: EdbSegP.h:121
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:135

◆ ReadMicrotracksZone()

Int_t TOracleServerE2::ReadMicrotracksZone ( Int_t  id_eventbrick,
ULong64_t  id_zone,
int  side,
TObjArray &  edbviews 
)
716 {
717  // read all microtracks for the one side of the one zone
718 
719  char selection[1024];
720  sprintf(selection, " id_zone=%lld and side=%d", id_zone, side );
721  EdbPattern pat;
722  int nseg = ReadMicrotracksPattern( id_eventbrick, selection, pat);
723 
724  std::map<int,EdbView*> id_views;
725  EdbView *v=0;
726  for(int i=0; i<edbviews.GetEntriesFast(); i++) {
727  v = (EdbView*)edbviews.At(i);
728  id_views[v->GetViewID()]=v;
729  }
730 
731  EdbSegment sv;
732  EdbSegP *sp=0;
733  float z=0;
734  for(int i=0; i<nseg; i++ ) {
735  sp = pat.GetSegment(i);
736  //v = (EdbView*)edbviews.At(sp->Aid(1)-1); // assume that views are in the order!
737 
738  v = id_views.find(sp->Aid(1))->second; // do not assume that views are in the order
739  if(!v) {
740  Log(1,"ReadMicrotracksZone","ERROR! do not found view for segment with Aid: %d %d - skipped!",sp->Aid(0),sp->Aid(1));
741  continue;
742  }
743 
744  if(v->GetNframesTop()>0) z = v->GetZ2();
745  else z = v->GetZ3();
746  sv.Set( sp->X()-v->GetXview(),
747  sp->Y()-v->GetYview(),
748  z,sp->TX(),
749  sp->TY(),
750  sp->DZ(), // dz - not exist the real one??
751  side,
752  int(sp->W()),
753  0 ); // id - where to get it???
754  sv.SetSigma(sp->SZ(),0);
755  v->AddSegment(&sv);
756  }
757 
758  return 0;
759 }
Float_t DZ() const
Definition: EdbSegP.h:151
Float_t TX() const
Definition: EdbSegP.h:172
Float_t SZ() const
Definition: EdbSegP.h:164
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 Aid(int i) const
Definition: EdbSegP.h:166
Definition: EdbSegment.h:61
void Set(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=0)
Definition: EdbSegment.cxx:92
void SetSigma(float sx, float sy)
Definition: EdbSegment.h:83
EdbSegP * GetSegment(int i) const
Definition: EdbPattern.h:66
Float_t GetXview() const
Definition: EdbView.h:193
EdbSegment * AddSegment(float x, float y, float z, float tx, float ty, float dz=0, int side=0, int puls=0, int id=-1)
Definition: EdbView.h:231
Int_t GetNframesTop() const
Definition: EdbView.h:207
Float_t GetZ3() const
Definition: EdbView.h:198
Int_t GetViewID() const
Definition: EdbView.h:190
Float_t GetZ2() const
Definition: EdbView.h:197
Float_t GetYview() const
Definition: EdbView.h:194
Int_t ReadMicrotracksPattern(int id_eventbrick, char *selection, EdbPattern &pat)
Definition: TOracleServerE2.cxx:762

◆ ReadScanbackPath()

Int_t TOracleServerE2::ReadScanbackPath ( Int_t  id_eventbrick,
Int_t  path,
EdbTrackP t 
)

!! a kind of hack

!! a kind of hack

294 {
295  // read scanback track from vw_scanback_history and fill track t
296  // the found segments stored as "s", the predicted ones as "sf"
297 
298  int nseg=0;
299  char query[2048];
300  try{
301  if (!fStmt) fStmt = fConn->createStatement();
302 
303  sprintf(query, "select \
304 id_track,id_plate,z,grains,fpx,fpy,fsx,fsy,ppx,ppy,psx,psy \
305 from vw_scanback_history%s \
306 where id_eventbrick=%d and path=%d and grains is not null order by id_plate"
307  ,eRTS.Data(), id_eventbrick, path);
308 
309  fStmt->setSQL(query);
310  fStmt->setPrefetchRowCount(2000);
311  Log(2,"ReadScanbackPath","execute sql query: %s ...",query);
312  fStmt->execute();
313  ResultSet *rs = fStmt->getResultSet();
314  EdbSegP seg;
315  EdbSegP segp;
316  while (rs->next()){
317  seg.Set(
318  rs->getInt(1), //id_track
319  rs->getFloat(5), //fpx
320  rs->getFloat(6), //fpy
321  rs->getFloat(7), //fsx
322  rs->getFloat(8), //fsy
323  rs->getInt(4), //grains
324  0 //flag
325  );
326  seg.SetPID(rs->getInt(2)); // id_plate
327  seg.SetZ(rs->getFloat(3)); // z
328  seg.SetDZ(300.);
329  segp.Set(
330  rs->getInt(1), //id_track
331  rs->getFloat(9), //ppx
332  rs->getFloat(10), //ppy
333  rs->getFloat(11), //psx
334  rs->getFloat(12), //psy
335  rs->getInt(4), //grains
336  0 //flag
337  );
338  segp.SetPID(rs->getInt(2)); // id_plate
339  segp.SetZ(rs->getFloat(3)); // z
340  segp.SetDZ(300.);
341  t.AddSegment(new EdbSegP(seg));
342  t.AddSegmentF(new EdbSegP(segp));
343  nseg++;
344  }
345  delete rs;
346  } catch (SQLException &oraex) {
347  Error("TOracleServerE", "ReadBasetracksPattern failed: (error: %s)", (oraex.getMessage()).c_str());
348  }
349  Log(2,"ReadScanbackPath","%d segments are read\n", nseg);
350  t.SetID(path);
351  t.SetSegmentsTrack(path);
352  t.SetCounters();
353  return nseg;
354 }

◆ ReadTemplateMarks()

Int_t TOracleServerE2::ReadTemplateMarks ( Int_t  id_brick,
EdbMarksSet ms 
)
195 {
196  ms.GetAbsolute()->GetMarks()->Clear("C");
197  ms.eBrick = id_brick;
198 
199  char *query= new char[2048];
200 
201  try{
202  if (!fStmt)
203  fStmt = fConn->createStatement();
204 
205  sprintf(query,
206  "select minx,maxx,miny,maxy from tb_eventbricks%s where mod(id_brick,1000000)=%d",
207  eRTS.Data(),id_brick);
208  fStmt->setSQL(query);
209  Log(2,"ReadTemplateMarks","execute sql query: %s ...",query);
210  fStmt->execute();
211  ResultSet *rs = fStmt->getResultSet();
212  while (rs->next()){
213  ms.eXmin = rs->getFloat(1);
214  ms.eXmax = rs->getFloat(2);
215  ms.eYmin = rs->getFloat(3);
216  ms.eYmax = rs->getFloat(4);
217  }
218  delete rs;
219 
220  sprintf(query,
221  "select id_mark,posx,posy,side from tb_templatemarksets%s where id_eventbrick in \
222  (select id from tb_eventbricks where mod(id_brick,1000000)=%d) and shape='X'",
223  eRTS.Data(),id_brick);
224 
225  fStmt->setSQL(query);
226  Log(2,"ReadTemplateMarks","execute sql query: %s ...",query);
227  fStmt->execute();
228  rs = fStmt->getResultSet();
229  while (rs->next()){
230  ms.GetAbsolute()->AddMark(rs->getInt(1),rs->getFloat(2),rs->getFloat(3),rs->getInt(4));
231  }
232  delete rs;
233 
234  } catch (SQLException &oraex) {
235  Error("TOracleServerE::ReadTemplateMarks", "Error!!! %s", (oraex.getMessage()).c_str());
236  return false;
237  }
238  return (ms.GetAbsolute()->N());
239 }
Int_t N() const
Definition: EdbFiducial.h:75
void AddMark(int id, float x, float y, int flag=0)
Definition: EdbFiducial.cxx:716

◆ ReadVetoTracks()

Int_t TOracleServerE2::ReadVetoTracks ( Int_t  id_brick,
EdbPattern pred 
)
158 {
159  // Fills an EdbPattern object with veto tracks
160  // The query reads from the table tb_veto_tracks
161 
162  veto.Reset();
163  EdbSegP seg;
164  char *query= new char[2048];
165 
166  try{
167  if (!fStmt)
168  fStmt = fConn->createStatement();
169 
170  sprintf(query,
171  "select track,posx,posy,slopex,slopey from tb_veto_tracks%s where mod(id_cs_eventbrick,1000000)=%d",
172  eRTS.Data(),id_brick);
173 
174  fStmt->setSQL(query);
175  Log(2,"ReadVetoTracks","execute sql query: %s ...",query);
176  fStmt->execute();
177  ResultSet *rs = fStmt->getResultSet();
178  while (rs->next()){
179  seg.Set(rs->getInt(1),rs->getFloat(2),rs->getFloat(3),rs->getFloat(4),rs->getFloat(5),0,0);
180  seg.SetPID(57);
181  veto.AddSegment(seg);
182  }
183  delete rs;
184 
185  } catch (SQLException &oraex) {
186  Error("TOracleServerE::ReadVetoTracks", "Error!!! %s", (oraex.getMessage()).c_str());
187  return false;
188  }
189  return (veto.N());
190 }

◆ ReadViewsZone()

Int_t TOracleServerE2::ReadViewsZone ( ULong64_t  id_zone,
int  side,
TObjArray &  edbviews 
)
644 {
645  // read TB_VIEWS for the given zone and fill the array of edbviews with the correct headers information
646 
647  int nviews=0;
648  char query[2048];
649  try{
650  if (!fStmt)
651  fStmt = fConn->createStatement();
652  sprintf(query, "SELECT \
653  id_eventbrick, side, id, downz, upz, posx, posy \
654  from TB_VIEWS%s where id_zone=%lld and side=%d order by id", eRTS.Data(),
655  id_zone,side);
656  fStmt->setSQL(query);
657  fStmt->setPrefetchRowCount(2000);
658  Log(2,"ReadViewsZone","execute sql query: %s ...",query);
659  fStmt->execute();
660  ResultSet *rs = fStmt->getResultSet();
661  EdbView *view=0;
662  while (rs->next()) {
663  view = new EdbView();
664  view->GetHeader()->SetAreaID(id_zone%10000000);
665  view->GetHeader()->SetViewID(rs->getInt(3));
666 
667  //inverted 1 and 2 (vt 26/05)
668  if (side==2) {
669  view->SetNframes(0,15); //bottom side
670  view->GetHeader()->SetCoordZ( 0,0, rs->getFloat(5), rs->getFloat(4) ); //to check it!
671  }
672  else if(side==1) {
673  view->SetNframes(15,0); //top side
674  view->GetHeader()->SetCoordZ( rs->getFloat(5), rs->getFloat(4), 0,0 ); //to check it!
675  }
676  view->GetHeader()->SetCoordXY( rs->getFloat(6), rs->getFloat(7) );
677 
678  edbviews.Add(view);
679  nviews++;
680  }
681  delete rs;
682  } catch (SQLException &oraex) {
683  Error("TOracleServerE2", "ReadViews is failed: (error: %s)", (oraex.getMessage()).c_str());
684  }
685  Log(2,"ReadViewsZone","%d views are read\n", nviews);
686  return nviews;
687 }
void SetCoordZ(float z1, float z2, float z3, float z4)
Definition: EdbView.h:102
void SetAreaID(int id)
Definition: EdbView.h:100
void SetViewID(int id)
Definition: EdbView.h:99
void SetCoordXY(float x, float y)
Definition: EdbView.h:101
EdbViewHeader * GetHeader() const
Definition: EdbView.h:163
void SetNframes(int top, int bot)
Definition: EdbView.h:184

◆ ReadVolume() [1/4]

Int_t TOracleServerE2::ReadVolume ( char *  id_volume,
EdbPatternsVolume vol 
)
435 {
436  int nsegtot=0;
437  char query[2048];
438  TObjArray patterns(100);
439  EdbPattern *pat=0;
440  try{
441  if (!fStmt)
442  fStmt = fConn->createStatement();
443  sprintf(query,"\
444  select id_plate,id_eventbrick from TB_VOLUME_SLICES%s where id_volume=%s order by id_plate",eRTS.Data(), id_volume);
445  fStmt->setSQL(query);
446  Log(2,"ReadVolume","\nexecute sql query: %s ...",query);
447  fStmt->execute();
448  ResultSet *rs = fStmt->getResultSet();
449  if(!rs) return 0;
450  int plate=0;
451  int brick=0;
452  while (rs->next()){
453  sscanf( (rs->getString(1)).c_str(),"%d", &plate );
454  sscanf( (rs->getString(2)).c_str(),"%d", &brick );
455  pat = new EdbPattern(0.,0.,0);
456  pat->SetPID(plate);
457  pat->SetID(brick);
458  patterns.Add( pat );
459  }
460  } catch (SQLException &oraex) {
461  Error("TOracleServerE", "ReadPatternsVolume; failed: (error: %s)", (oraex.getMessage()).c_str());
462  }
463  int npat = patterns.GetEntries();
464  for(int i=0; i<npat; i++) {
465  pat = (EdbPattern*)patterns.At(i);
466  //if( !ReadZplate(pat->ID(), pat->PID(), *pat ) )
467  if( !ReadZplate_nominal(pat->ID(), pat->PID(), *pat ) )
468  { Log(1,"ReadVolume","skip plate %d %d !", pat->ID(),pat->PID()); continue; }
469  sprintf(query,"id_eventbrick=%d and id_zone in (select id_zone from TB_VOLUME_SLICES%s where id_volume=%s and id_plate=%d)",pat->ID(), eRTS.Data(), id_volume,pat->PID());
470  nsegtot += ReadBasetracksPattern(query, *pat);
471  vol.AddPattern(pat);
472  }
473  Log(2,"ReadVolume","%d segments extracted from db into PatternsVolume",nsegtot);
474 
475  return nsegtot;
476 }
void SetID(int id)
Definition: EdbPattern.h:318
int ID() const
Definition: EdbPattern.h:328
bool ReadZplate_nominal(int id_plate, int id_eventbrick, EdbPattern &pat)
Definition: TOracleServerE2.cxx:525

◆ ReadVolume() [2/4]

Int_t TOracleServerE2::ReadVolume ( char *  id_volume,
EdbPatternsVolume vol,
Int_t  min,
Int_t  max 
)
480 {
481  int nsegtot=0;
482  char query[2048];
483  TObjArray patterns(100);
484  EdbPattern *pat=0;
485  try{
486  if (!fStmt)
487  fStmt = fConn->createStatement();
488  sprintf(query,"\
489  select id_plate,id_eventbrick from TB_VOLUME_SLICES%s where (id_volume=%s and id_plate > %d-1 and id_plate < %d+1) order by id_plate",
490  eRTS.Data(),
491  id_volume,min,max);
492  fStmt->setSQL(query);
493  Log(2,"ReadVolume","execute sql query: %s ...",query);
494  fStmt->execute();
495  ResultSet *rs = fStmt->getResultSet();
496  int plate=0;
497  int brick=0;
498  while (rs->next()){
499  sscanf( (rs->getString(1)).c_str(),"%d", &plate );
500  sscanf( (rs->getString(2)).c_str(),"%d", &brick );
501  pat = new EdbPattern(0.,0.,0);
502  pat->SetPID(plate);
503  pat->SetID(brick);
504  patterns.Add( pat );
505  }
506  } catch (SQLException &oraex) {
507  Error("TOracleServerE", "ReadPatternsVolume; failed: (error: %s)", (oraex.getMessage()).c_str());
508  }
509  int npat = patterns.GetEntries();
510  for(int i=0; i<npat; i++) {
511  pat = (EdbPattern*)patterns.At(i);
512  if( !ReadZplate(pat->ID(), pat->PID(), *pat ) )
513  { Log(1,"ReadVolume","skip plate %d %d !", pat->ID(),pat->PID()); continue; }
514  sprintf(query,"id_zone in (select id_zone from TB_VOLUME_SLICES%s where id_volume=%s and id_plate=%d)",eRTS.Data(),
515  id_volume,pat->PID());
516  nsegtot += ReadBasetracksPattern(query, *pat);
517  vol.AddPattern(pat);
518  }
519  Log(2,"ReadVolume","%d segments extracted from db into PatternsVolume",nsegtot);
520 
521  return nsegtot;
522 }
float min(TClonesArray *t)
Definition: bitview.cxx:275
int max
Definition: check_shower.C:41

◆ ReadVolume() [3/4]

Int_t TOracleServerE2::ReadVolume ( ULong64_t  id_volume,
EdbPatternsVolume vol 
)
419 {
420  char id[24];
421  sprintf(id,"%lld",id_volume);
422  return ReadVolume(id,vol);
423 }
Int_t ReadVolume(char *id_volume, EdbPatternsVolume &vol)
Definition: TOracleServerE2.cxx:434

◆ ReadVolume() [4/4]

Int_t TOracleServerE2::ReadVolume ( ULong64_t  id_volume,
EdbPatternsVolume vol,
Int_t  min_pl,
Int_t  max_pl 
)
426 {
427  char id[24];
428  Int_t min= min_pl;
429  Int_t max= max_pl;
430  sprintf(id,"%lld",id_volume);
431  return ReadVolume(id,vol,min,max);
432 }

◆ ReadZplate()

bool TOracleServerE2::ReadZplate ( int  id_plate,
int  id_eventbrick,
EdbPattern pat 
)
560 {
561  // read z of the plate after calibration from the tb_plate_calibrations table
562 
563  char *query= new char[2048];
564  Float_t Z=0;
565  EdbAffine2D *aff=0;
566  try{
567  if (!fStmt)
568  fStmt = fConn->createStatement();
569 
570  sprintf(query,
571  "select z,MAPXX,MAPXY,MAPYX,MAPYY,MAPDX,MAPDY from tb_plate_calibrations%s \
572  where id_eventbrick=%d and id_plate=%d", eRTS.Data(),
573  id_eventbrick, id_plate);
574  fStmt->setSQL(query);
575  Log(2,"ReadZplate","execute sql query: %s ...",query);
576  fStmt->execute();
577  ResultSet *rs = fStmt->getResultSet();
578  while (rs->next()){
579  Z = rs->getFloat(1);
580  aff = new EdbAffine2D(rs->getFloat(2),
581  rs->getFloat(3),
582  rs->getFloat(4),
583  rs->getFloat(5),
584  rs->getFloat(6),
585  rs->getFloat(7));
586  }
587  delete rs;
588  pat.SetZ(Z);
589  aff->Print();
590  } catch (SQLException &oraex) {
591  Error("TOracleServerE", "ReadBasetracksPattern; Affine failed: (error: %s)", (oraex.getMessage()).c_str());
592  return false;
593  }
594  return true;
595 }
Definition: EdbAffine.h:17
void Print(Option_t *opt="") const
Definition: EdbAffine.cxx:52
void SetZ(float z)
Definition: EdbPattern.h:41
struct @8 Z

◆ ReadZplate_nominal()

bool TOracleServerE2::ReadZplate_nominal ( int  id_plate,
int  id_eventbrick,
EdbPattern pat 
)
526 {
527  // read nominal z of the plate from the tb_plates table
528 
529  char *query= new char[2048];
530  Float_t Z=0;
531 
532  try{
533  if (!fStmt)
534  fStmt = fConn->createStatement();
535 
536  sprintf(query,
537  "select pl.z-br.minz from tb_plates%s pl, tb_eventbricks%s br\
538  where pl.id_eventbrick=%d and pl.id=%d and br.id=pl.id_eventbrick",eRTS.Data(),eRTS.Data(),
539  id_eventbrick, id_plate);
540 
541  fStmt->setSQL(query);
542  Log(2,"ReadZplate_nominal","execute sql query: %s ...",query);
543  fStmt->execute();
544  ResultSet *rs = fStmt->getResultSet();
545  while (rs->next()){
546  Z = rs->getFloat(1);
547  }
548  delete rs;
549  pat.SetZ(Z);
550 
551  } catch (SQLException &oraex) {
552  Error("TOracleServerE", "ReadBasetracksPattern; Affine failed: (error: %s)", (oraex.getMessage()).c_str());
553  return false;
554  }
555  return true;
556 }

Member Data Documentation

◆ eRTS

TString TOracleServerE2::eRTS

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