Useful commands on lxplus etc.
Some general commands
-
setenv<project>[<version>] = SetupProject --build-env <Project>[<version>]
- Create a working directory for a given project
-
Setup<project> = SetupProject <project>
- Load environment variables for the project, takes into account value of CMTCONFIG
-
getpack -i
- List and choose from a list of all packages
-
lhcb_bkk
- executes Feicim for choosing dataset
-
fs listquota
- your local disk quota
-
cmt show version
- shows version number of a package
-
cmt show uses
- shows dependencies of a package
-
SetupProject LHCb; dump_db_to_files.py -c sqlite_file:$SQLITEDBPATH/DDDB.db/DDDB -s /param/ParticleTable.txt -d ./ -v
- lists all particles and their properties
Check in new .dec files and Stripping lines
- 1. Be a member of the group:
lhcb-svn-writers
- 2. Check out DecFiles package:
getpack Gen/DecFiles head
- 3. Optional in ./DecFiles:
- 3.1 Compare packages with reference:
svn status -u
- 3.2 May be update of the package:
svn update
- 4. Copy
mydecay.dec
to Gen/DecFiles/dkfiles/.
- 5. Tag your file for check in:
svn add mydecay.dec
- 6. Update release.notes in Gen/DecFiles/doc
- 7. Do
svn commit
./DecFiles
Stripping Lines
- 1.
getpack Phys/StrippingSelections head
- 2. Optional in Phys/StrippingSelections/ :
svn status -u
and svn update
- 4. Copy
mystrippingfile.py
to Phys/StrippingSelections/python/StrippingSelections/. :
- 5. Tag your file for check in:
svn add meineStrippingLine.py
- 6. Import your new line in
__init__.py
- 7. Add a note in Phys/StrippingSelections/doc/release.notes
- 8. In Phys/StrippingSelections/ :
svn commit
Test .dec file with Gauss
- 1. Check out Gauss :
setenvGauss
- 2.
getpack Sim/Gauss
, cd Sim/Gauss/cmt
, cmt make
3.
SetupProject Gauss # Gauss Umgeb.Variablen laden
4. Decay File schreiben # nutze emacs: emacs xyz.dec -> erstellt template
5. Option File schreiben, ggf.
EventTypeNummer ausdenken
6. Gauss-Job.py bearbeiten: nEvts=2 , idFile='irgendein_Name' , auskommentieren von
HistogramPersistencySvc ... und
OutputStream ...
Aufruf:
gaudirun.py $GAUSSOPTS/Gauss-MC10.py $DECFILESROOT/options/11144101.opts $GAUSSOPTS/Gauss-Job.py
gaudirun.py $GAUSSOPTS/Gauss-MC10.py ./11624001.opts $GAUSSOPTS/Gauss-Job.py >& output.log &
Digitalisieren mit Boole
########################
1. setenvBoole
2. getpack Digi/Boole , cd Digi/Boole/cmt, cmt make
#############################################################################################################
Suche nach bereits vorhandenen Event type numbers
#################################################
1. getpack Gen/DecFiles head # z.B. in ~/cmtuser/. # "head" ist die aktuelle Entwicklerversion
2. cd Gen/DecFiles/dkfiles/.
3. grep "searched number"
.
#############################################################################################################
AFS Permissions abfragen:
#########################
fs listacl ./ordner
AFS Permissions setzen:
#######################
# einzeln:
fs setacl ./ordner system:anyuser rl
# mehrere mit 'find' abfrage:
find . -type d -exec fs setacl {} system:anyuser rl \;
# nur bis verzeichnistiefe 2:
find . -type d -maxdepth 2 -exec fs setacl {} system:anyuser rl \;
#############################################################################################################
Ganga-Befehle
#############
gridProxy.renew() # erneuern des Grid-Proxy Tickets
jobs # Listet jobs aus der registry
templates # Listet templates aus der registry
jobs(i).remove() # entfernt job(i) aus registry
templates(i).remove() # entfernt template(i) aus registry
Templates
#########
t =
JobTemplate(jobs(0)) # Aus Job 0 ein Template t erzeugen
t.name = 'MyGangaJob' # Name von t Festlegen
Jobs Konfiguration
##################
j=Job() # Definiert neuen leeren Job j
j=Job(t) # Definiert neuen Job j nach dem Template t
j=Job(templates(1)) # Definiert neuen Job j nach dem Template 1 aus der Template-Liste
j.application =
DaVinci(version="29r1") #
j.application.optsfile = '/afs/cern.ch/user/o/ogruenbe/cmtuser/DaVinci_v29r1/Tutorial/Analysis/options/Lb2Kmu.py' #
j.inputdata = ... #
j.backend = Interactive() #
= Local() #
= LSF(queue="1nh") #
= Dirac() #
j.outputsandbox = ... #
j.inputdata =
LHCbDataset()
j.inputdata.files = ['PFN:/afs/cern.ch/user/o/ogruenbe/public/toy/Brunel/test.dst']
j.inputdata.files.append('PFN:/afs/cern.ch/user/o/ogruenbe/public/toy/Brunel/test.dst')
data=BKQuery('/LHCb/Collision11/Beam3500GeV-VeloClosed-MagDown/Real Data/Reco12/Stripping17/90000000/DIMUON.DST', dqflag=['OK']).getDataset()
data = browseBK() # oeffnet Feicim in ganga
# in Ganga, lokale Datei als Input, die aus feicim abgespeichert wurde
t.inputdata = t.application.readInputData(["/afs/cern.ch/user/o/ogruenbe/cmtuser/DaVinci_v29r1/Tutorial/Analysis/mydata/pfn/bhadron.py"])
j.outputdir
j.status
j.peek()
j.subjobs
j.splitter
j.merger =
CustomMerger, DSTMerger,
RootMerger,
SmartMerger,
TextMerger
LSF Splitter bei
ROOT files
###########################
t.splitter =
SplitByFiles(filesPerJob=10)
t.merger =
RootMerger(files=['MyTuple.root','MyTuple_2.root'])
###################################################################################################
Ganga-Backends
##############
There are 4 backends of interest for running LHCb jobs: PFN LFN
- Interactive : in the foreground on the client x -
- Local : in the background on the client x -
- LSF : on the LSF batch system (SGE/PBS/Condor systems supported as well) x x
- Dirac : on the Grid via
DIRAC x
###################################################################################################
CMT-Befehle
###########
> cmt config
- Configures the package (creates setup and make files)
- Invoked automatically by getpack
> cmt show uses
- Show dependencies and actual versions used
> cmt show macro
- Show the value of a macro for the current configuration
> cmt broadcast
- Recursive CMT command in all used packages found in the current CMT project
e.g. cmt broadcast gmake
> cmt run
- Executes in current package environment
###################################################################################################
LSF-Queues
##########
> bqueues -u
There are queues for jobs requiring different lengths of CPU time (e.g.
8nm [8 minutes] -> default
1nh [1 hour]
8nh [8 hours]
1nd [1 day]
1nw [1 week]
2nw [2 weeks]
The queue time limit is based on normalised CPU time. This is not the run time limit (the real clock time limit),
but is based on how much normalised CPU time your job consumes. The CPU value used in the calculation is normalised
to ensure that the limit applies sensibly regardless of whether the job lands on a new, fast machine or an older, slower one.
By default, jobs are sent to the 8nm (8 normalised minutes) queue. This queue is intended for very short debug runs.
For longer debugging and benchmarking of batch jobs, the best queue to use is the test queue, which has very high priority but
can only run 1 job per user at any one time.
To specify the queue, use the bsub -q parameter. e.g. to send the job myjob to the 1 hour queue, type:
> bsub -q 1nh myjob
###################################################################################################
Castor-Verwaltung
#################
http://castorold.web.cern.ch/castorold/ug/node2.html
rfdir $CASTOR_HOME/
rfrm $CASTOR_HOME//
###################################################################################################
LFN nach PFN wandeln
####################
I have seen the same problem but you can simply change
"LFN:" to
"PFN:castor:/castor/cern.ch/grid/" and that will give the PFN location.
i.e.
'LFN:/lhcb/LHCb/Collision11/BHADRON.DST/00012545/0000/00012545_00000002_1.bhadron.dst',
to
'PFN:castor:/castor/cern.ch/grid/lhcb/LHCb/Collision11/BHADRON.DST/00012545/0000/00012545_00000002_1.bhadron.dst',
###################################################################################################
###################################################################################################
Info ueber LFN
##############
dirac-dms-lfn-replicas
It happens that some files are temporarily unavailable at a site for multiple reasons:
* Site in downtime. Then usual the SE is banned. You can see this using dirac-dms-lfn-replicas --All
* Disk server temporarily down. This is usually temporary (up to few hours to a few days).
In case the event is reported by the site with a list of files, they are marked unavailable in the LFC.
This can be seen as well with the above command.
You can have a look in the computing/operation elog, a known problem will be mentioned.
http://lblogbook.cern.ch/Operations/
###################################################################################################
VNC benutzen
############
vncserver # auf dem Server, vergibt displayport, z.b. 2
export DISPLAY=:2.0 # auf dem Server, lenkt Bildschirmausgabe auf Port 2
vncviewer -via ogruenbe@lxplus421NOSPAMPLEASE.cern.ch localhost:1 # auf dem client
vncserver -kill :2 # im vncviewer Terminal, beendet vncserver und schliesst vncviewer
http://lhcb-comp.web.cern.ch/lhcb-comp/support/DevStudio/VNC.html
###################################################################################################
Panoramix
#########
SetupPanoramix
python $myPanoramix --help
###################################################################################################
# ansicht der z.V. stehenden Teilchenlisten
SetupDaVinci # setzt variable $COMMONPARTICLESROOT
cd $COMMONPARTICLESROOT/python/CommonParticles/.
###################################################################################################
# Falls es Probleme beim SetupXXX gibt wegen der Plattform
# -> neu einloggen mit:
LbLogin -c x86_64-slc5-gcc43-opt
###################################################################################################
## Info ueber DaVinci configuration
less $DAVINCIROOT/python/DaVinci/Configuration.py