New features since version for tdaq-01-06-00:
Multiple RDB Servers per Node.
Multiple data network support.
You can specify now the number of L2PUApplications per L2PU node.
New features since version for tdaq-01-06-00:
Nodes can be now grouped in racks
The nodes can be added without a SSH access (offline) mode, using a map containig the node information.
Imagine that we want to create a full chain, localhost, partition, with the following options:
1 Readout System (ROS)
3 RoBs per ROSE (ROB)
1 LVL2 Supervisor (L2SV)
1 LVL2 Processing Unit (L2PU) with 1 Worker Thread (WT)
1 Sub Farm Input (SFI)
1 Event Filter Application (EFD) with one Processing Task (PT)
1 Sub Farm Output (SFO)
TCP network protocol, since we have the ROSE and the LVL2 Result Handler in the same node.
You don't need to specify the use of LVL2 Result Handler (ex-pROS) or a Dataflow Manager (DFM), since the PartitionMaker automatically insert them as needed. So, let's imagine that we want to generate our localhost partition on the pcatb123 node. To start, after login on the pcatb123 node, just call, from the command line, the PartitionMaker integrated environment by typing pmaker.
Next, after the environment is opened, just type the following commands:
cluster = pm.farmscanner.FarmScanner(localHostNode = 'pcatb123')
robMap = pm.rossegment.genDummyROBMap(1, 3)
part = pm.tdaqpartition.TDAQPartition(cluster, name='part_lh', robMap=robMap, nL2SV=1, nL2PU=1, nWorkerThreads=1, nSFI=1, nEFD=1, nPT=1, nSFO=1, useTCP=True)
pm.project.quickGenerate(part.getPartition(), printAll=True)
After these 5 commands, a partition file named 'part_lh.data.xml' will be created in your local directory. Below follows the explanation of each of the above typed commands.
This command creates a cluster containing just one node (pcatb123) already set for localhost operation.
Generates a dummy ROB to ROS python map to be used by the PartitionMaker. the TDAQPartition class gets the information about number of ROSs and number of ROBs per ROS from this map.
Initializes the class that will, at the end, return an OKS Partition object fully configured, based on the parameters passed to its constructor. Just note that, since we are explicitly typing the parameter name and value ('nL2SV=1', for instance), they can be in any order, so that it would not be an error place the 'nL2SV=1' parameter after the parameter 'useROSE=True' for instance.
Generates the partition file, by receiving the OKS components returned by the method part.getPartition. The printAll parameter is optional and tells the method to print all objects parameters in the partition file. If this value is False (the default), only the parameters which values differs from their initial value within the schema file will be printed.
The above partition was created using the integrated environment. If desired by the user, the above code could be placed into a script file ('my_part.py'), and be executed by doing pmaker my_part.py. The final result is the same.
IMPORTANT NOTE: the PartitionMaker follows the python's syntax, so, for instance, you must not insert spaces in the left side of the above typed commands. More information can be found here.
For more information on parameters settings, helper functions, other functionalities, users are invited to take a look at the DOxygen documentation in the $PARTITION_MAKER_HOME/Documents/DOxygen/index.html.