HOW-TO enable 'elementID' support for a given offline table
Let's see how elementID support could be added on example of "[bemc|bprs|bsmde|bsmdp]Map" tables.
1. Lets' try [bemc|bprs]Map table first:
1.1 Create table 'TowerIDs' (4800 channels)
CREATE TABLE TowerIDs ( ID smallint(6) NOT NULL auto_increment, elementID int(11) NOT NULL default '0', Tower int(11) NOT NULL default '0', KEY ID (ID), KEY Tower (Tower) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
1.2 Fill this table with values (spanning from 1 to [maximum number of rows]):
INSERT INTO TowerIDs VALUES (1,1,1); INSERT INTO TowerIDs VALUES (2,2,2); INSERT INTO TowerIDs VALUES (3,3,3); ... INSERT INTO TowerIDs VALUES (4800,4800,4800);
Sample bash script to generate ids
#!/bin/sh echo "USE Calibrations_emc;" for ((i=1;i<=4800;i+=1)); do echo "INSERT INTO TowerIDs VALUES ($i,$i,$i);" done for ((i=1;i<=18000;i+=1)); do echo "INSERT INTO SmdIDs VALUES ($i,$i,$i);" done
1.3 Update 'Nodes' table to make it aware of new index :
UPDATE Nodes SET Nodes.indexName = 'Tower' WHERE Nodes.structName = 'bemcMap'; UPDATE Nodes SET Nodes.indexName = 'Tower' WHERE Nodes.structName = 'bprsMap';
2. Now, smdChannelIDs (18000 channels)
1.1 Create db index table:
CREATE TABLE SmdIDs ( ID smallint(6) NOT NULL auto_increment, elementID int(11) NOT NULL default '0', Smd int(11) NOT NULL default '0', KEY ID (ID), KEY Smd (Smd)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
1.2 Fill this table with values:
INSERT INTO SmdIDs VALUES (1,1,1); INSERT INTO SmdIDs VALUES (2,2,2); INSERT INTO SmdIDs VALUES (3,3,3); ... INSERT INTO SmdIDs VALUES (18000,18000,18000);
(see helper bash script above)
1.3 Update 'Nodes' to make it aware of additional index :
UPDATE Nodes SET Nodes.indexName = 'Smd' WHERE Nodes.structName = 'bsmdeMap'; UPDATE Nodes SET Nodes.indexName = 'Smd' WHERE Nodes.structName = 'bsmdpMap';
LAST STEP: Simple root4star macro to check that everything is working fine ( courtesy of Adam Kocoloski ):
{ gROOT->Macro("LoadLogger.C"); gROOT->Macro("loadMuDst.C"); gSystem->Load("StDbBroker"); gSystem->Load("St_db_Maker"); St_db_Maker dbMk("StarDb", "MySQL:StarDb"); // dbMk.SetDebug(10); // Could be enabled to see full debug output dbMk.SetDateTime(20300101, 0); dbMk.Init(); dbMk.GetInputDB("Calibrations/emc/y3bemc"); dbMk.GetInputDB("Calibrations/emc/map"); }