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;
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();
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:101
void SetID(int id)
Definition: EdbLayer.h:94
Definition: EdbBrick.h:14
Definition: EdbRun.h:75
void Close()
Definition: EdbRun.cxx:439
scanned data processing
Definition: EdbScanProc.h:12
int WriteScanSet(EdbID id, EdbScanSet &ss)
Definition: EdbScanProc.cxx:1428
bool CheckDirWritable(const char *dir)
Definition: EdbScanProc.cxx:1735
EdbRun * InitRun(int id[4], char *runname_=NULL, char *runnamesrv_=NULL, bool createrun_=true)
Definition: EdbScanProc.cxx:1919
bool MakeAFFSet(EdbScanSet &sc)
Definition: EdbScanProc.cxx:394
TString eProcDirClient
directory path for root data
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
EdbRun * run
Definition: check_raw.C:38
gEDBDEBUGLEVEL
Definition: energy.C:7
ss
Definition: energy.C:62
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:424
void AddView()
Definition: EdbRun.cxx:305
Base scanning data object: entry into Run tree.
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}
int WriteSBTrack(EdbTrackP &t, int path, EdbID id)
Definition: EdbScanProc.cxx:1386
Definition: EdbPattern.h:113
Int_t ReadScanbackPath(Int_t id_eventbrick, Int_t path, EdbTrackP &t)
Definition: TOracleServerE2.cxx:293
TTree * t
Definition: check_shower.C:4
UInt_t id
Definition: tlg2couples.C:117

◆ 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,"\
1332select SBFLAG, TSFLAG FROM (select decode(count(*),0,0,1) as SBFLAG from tb_scanback_paths \
1333where (id_eventbrick, id_processoperation) in (select id_eventbrick, id from tb_proc_operations \
1334where id = %s)),(select decode(count(*),0,0,1) as TSFLAG from tb_volumes \
1335where (id_eventbrick, id_processoperation) \
1336in (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:320
Definition: EdbSegP.h:21
void SetVolume(float w)
Definition: EdbSegP.h:136
void SetZ(float z)
Definition: EdbSegP.h:125
void SetDZ(float dz)
Definition: EdbSegP.h:126
void SetVid(int vid, int sid)
Definition: EdbSegP.h:137
void Set(int id, float x, float y, float tx, float ty, float w, int flag)
Definition: EdbSegP.h:87
Float_t Z() const
Definition: EdbPattern.h:84
EdbSegP * AddSegment(int i, EdbSegP &s)
Definition: EdbPattern.cxx:72

◆ 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
Float_t eXmin
Definition: EdbFiducial.h:96
Float_t eYmin
Definition: EdbFiducial.h:97
EdbMarksBox * GetAbsolute() const
Definition: EdbFiducial.h:109
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:1509
Int_t N() const
Definition: EdbPattern.h:86

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

◆ 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:273
void SetPID(int pid)
Definition: EdbPattern.h:310
void AddPattern(EdbPattern *pat)
Definition: EdbPattern.cxx:1707
EdbPoint * At(int i) const
Definition: EdbPattern.h:87
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:124
void SetAid(int a, int v, int side=0)
Definition: EdbSegP.h:138

◆ 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:154
Float_t TX() const
tangens = deltaX/deltaZ
Definition: EdbSegP.h:175
Float_t SZ() const
Definition: EdbSegP.h:167
Float_t X() const
Definition: EdbSegP.h:173
Float_t Y() const
Definition: EdbSegP.h:174
Float_t W() const
Definition: EdbSegP.h:151
Float_t TY() const
tangens = deltaY/deltaZ
Definition: EdbSegP.h:176
Int_t Aid(int i) const
Definition: EdbSegP.h:169
segment of the track
Definition: EdbSegment.h:63
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:93
void SetSigma(float sx, float sy)
Definition: EdbSegment.h:85
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 \
304id_track,id_plate,z,grains,fpx,fpy,fsx,fsy,ppx,ppy,psx,psy \
305from vw_scanback_history%s \
306where 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
mandatory virtual functions:
Definition: EdbFiducial.h:75
void AddMark(int id, float x, float y, int flag=0)
members access functions
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:309
int ID() const
Definition: EdbPattern.h:319
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
Double_t Z
Definition: tlg2couples.C:104

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