The calibration at GSI is done on the batch farm. The results are merged per run.
-
-
-
\ No newline at end of file
+
+List of files:
+Macros:
+CalibrateTPC.C - standard in $ALICE_ROOT/TPC/macros
+ConfigOCDB.C - example (to be mofieid according studies) in $ALICE_ROOT/TPC/macros
+filterESD.C - $ALICE_ROOT/TPC/macros/filterESD.C
+
+Shell scripts:
+balice.sh - symbolic link to the AliRoot setup script
+ - example (to be modified):
+ ln -sf ~/.balice64HEAD0108 balice.sh
+alienSetup.sh - symbolic link to the alien setup script
+ - hint (don't modify unles you know what are you doing):
+ - ln -sf $ALICE_ROOT/TPC/CalibMacros/alienSetupGSI.sh alienSetup.sh
+submitcalib.sh - hint: copy of the (don't change it unless ...)
+ - cp $ALICE_ROOT/TPC/CalibMacros/submitcalib.sh .
+
+Run lists:
+(No recepie for the moment how to create it)
+run.list - main source of the run numbers (created from the logbook)
+esdall.list - the list of files -standard
+esdalien.list - the list of files -alien
+
+
+Run the train:
+shells.sh - this is a recepie
--- /dev/null
+#
+# Run train commands at GSI
+# marian.ivanov@cern.ch
+#
+
+#
+# Make workspace
+# This is just example (see $ALICE_ROOT/TPC/CalibMacros/ReadmeTrain.txt)
+#
+cp $ALICE_ROOT/TPC/macros/CalibrateTPC.C .
+cp $ALICE_ROOT/TPC/macros/ConfigOCDB.C .
+#modify ConfigOCDB.C
+ln -sf ~/.balice64HEAD0108 balice.sh
+#use your favourite aliroot
+ln -sf $ALICE_ROOT/TPC/CalibMacros/alienSetupGSI.sh alienSetup.sh
+#use your alien setup
+cp $ALICE_ROOT/TPC/CalibMacros/submitcalib.sh .
+#copy your lists
+#run.list - main source of the run numbers (created from the logbook)
+#esdall.list - the list of files -standard
+#esdalien.list - the list of files -alien
+
+# Make a esd all list
+# This is just example
+#
+for a in `find /lustre/alice/alien/alice/data/2009/LHC09c/0000* | grep .zip` ; do echo $a#AliESDs.root; done >esdall.list
+for a in `find /lustre/alice/alien/alice/data/2009/LHC09c/0000* | grep AliESDfriend` ; do echo `dirname $a`/AliESDs.root; done >>esdall.list
+
+
+
+#
+# Create a list for each run
+# and make directory structure
+# This is fast
+mydir=`pwd`
+for adir in `cat run.list`; do
+ mkdir $adir;
+ cat $mydir/esdall.list | grep $adir >esd${adir}.txt
+ cat $mydir/esdalien.list | grep $adir >>esd${adir}.txt
+ cp esd${adir}.txt $adir/esd.txt
+done
+
+#
+# filter lists of files
+# make 2 lists - esd.txt.Good and esd.txt.Bad
+# Wait until jobs will finish
+#
+mydir=`pwd`
+for adir in `cat run.list`; do
+myvar=0;
+cd $mydir
+cd $adir
+bsub -q alice-t3_8h aliroot -b -q $ALICE_ROOT/TPC/macros/filterESD.C
+echo _____________________________________
+echo Run $adir
+echo _____________________________________
+cd $mydir
+done
+
+
+# You have to wait until the lists are filtered
+# Only Afterwards you should process with calibration submission
+# Submitting calibration
+#
+mydir=`pwd`
+#for adir in `cat runMag5.list`; do
+for adir in `cat run.list`; do
+myvar=0;
+cd $mydir
+mkdir $mydir/$adir
+cd $adir
+echo SUBMITING DIRECTORY $adir
+cp ../ConfigOCDB.C .
+cp ../CalibrateTPC.C .
+rm -rf *_*
+rm -rf */V3/
+up=`cat esd.txt | grep -c .root`
+while [ $myvar -le ${up} ] ;
+ do
+ bsub -q alice-t3_8h ../submitcalib.sh $myvar $(($myvar+4)) `pwd`/esd.txt.Good $adir;
+ myvar=$(( $myvar +5 )) ;
+ echo $myvar ;
+ done;
+done;
+
+
+#
+# Submitting merging
+#
+
+mydir=`pwd`
+for adir in `cat run.list`; do
+myvar=0;
+cd $mydir
+cd $adir
+rm CalibObjects*.root
+ls `pwd`/*_*/V3/*/*/CalibObjectsTrain1.root > mergelistTrain1.txt
+ls `pwd`/*_*/V3/*/*/CalibObjectsTrain2.root > mergelistTrain2.txt
+#cat ../getmean.C | sed s_runxxx_\{$adir}\_g | sed s_{__ | sed s_}__> getmean.C
+#cat ../getmeanT.C | sed "s|runxxx|$adir|" | sed s_{__ | sed s_}__> getmean.C
+bsub -q alice-t3_8h aliroot $ALICE_ROOT/TPC/macros/CalibFileMerger.C+\(\"CalibObjectsTrain1.root\",10000,\"mergelistTrain1.txt\"\)
+bsub -q alice-t3_8h aliroot $ALICE_ROOT/TPC/macros/CalibFileMerger.C+\(\"CalibObjectsTrain2.root\",10000,\"mergelistTrain2.txt\"\)
+echo _____________________________________
+echo Run $adir
+echo _____________________________________
+cd $mydir
+done
+
+#
+# Merge mag field data
+#
+mydir=`pwd`
+rm mergeMagTrain1.txt
+rm mergeMagTrain2.txt
+for adir in `cat runMag.list`; do
+ls $mydir/$adir/CalibObjectsTrain1.root >> mergeMagTrain1.txt;
+ls $mydir/$adir/CalibObjectsTrain2.root >> mergeMagTrain2.txt;
+done;
+aliroot $ALICE_ROOT/TPC/macros/CalibFileMerger.C+\(\"CalibObjectsTrain1.root\",10000,\"mergeMagTrain1.txt\"\)
+aliroot $ALICE_ROOT/TPC/macros/CalibFileMerger.C+\(\"CalibObjectsTrain2.root\",10000,\"mergeMagTrain2.txt\"\)
+#
+
+
+#
+# get debug streamer list for different components
+#
+
+find `pwd`/*/*_*/V3/ | grep calibTrigg > trigger.txt
+find `pwd`/*/*_*/V3/ | grep calibTime > time.txt
+
+
+#
+# Submitting analysis
+#
+
+mydir=`pwd`
+for adir in `cat esd.list`; do
+myvar=0;
+cd $mydir
+cd $adir
+ls `pwd`/*_*/V3/*/*/CalibOb* > mergelist.txt
+#cat ../getmean.C | sed s_runxxx_\{$adir}\_g | sed s_{__ | sed s_}__> getmean.C
+cat ../getmeanT.C | sed "s|runxxx|$adir|" | sed s_{__ | sed s_}__> getmean.C
+echo _____________________________________
+echo Run $adir
+ls -al `pwd`/mergelist.txt
+echo _____________________________________
+aliroot < getmean.C &
+cd $mydir
+done
+
+
+ls `pwd`/*/laserMe* > laserScan.txt
+for a in `cat laserScan.txt` ; do echo /lustre/alice/miranov/rec/LHC09d_TPC/vscan_laser1807/77475/laserMean.root; done > laserScanRefA.txt
+for a in `cat laserScan.txt` ; do echo /lustre/alice/miranov/rec/LHC09d_TPC/vscan_laser1807/77656/laserMean.root; done > laserScanRefC.txt
+
+
+
+
+
+
+
+
+
+
+
+
#myvar=0;
#while [ $myvar -ne 640 ] ; do bsub -q alice-t3_8h submitcalib.sh $myvar $(($myvar+1)) /lustre_alpha/alice/miranov/rec/october2008/all/esdzip.txt; myvar=$(( $myvar +2 )) ; echo $myvar ; done
-echo $1 $2 $3
-source /u/miranov/.balice64HEAD0108
+echo Hallo world
+echo Hostname $HOSTNAME
+df /tmp
+echo $1 $2 $3
+source ../balice.sh
+source ../alienSetup.sh
mkdir $1_$2
cp *.C $1_$2
cdbrun=$4
echo start aliroot
echo command aliroot -q -b CalibrateTPC.C\($fstart,$fend,$cdbrun\)
+echo PWD `pwd`
command aliroot -q -b "CalibrateTPC.C($fstart,$fend,$cdbrun)"
rm list.txt
mem.MakeReport(0,0,"order 0 sortstat 3 sortstamp 0 sortdeep 10 stackdeep 15 maxlength 50")
*/
-void SetupCalibTask(TObject * task1);
+
+void SetupCalibTaskTrain1(TObject * task1);
+void SetupCalibTaskTrain2(TObject * task2);
+
char * prefix = "/V6/";
// Global parameters to set
TTimeStamp startTime(2009,8,7,0,0,0);
AliESDInputHandler* esdH=new AliESDInputHandler;
esdH->SetActiveBranches("ESDfriend");
mgr->SetInputEventHandler(esdH);
- AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("TPC calibration task");
+
+ //
+ // Train 1 - to be run always on full statistic (
//
- SetupCalibTaskTime(task1);
+ AliTPCAnalysisTaskcalib *task1=new AliTPCAnalysisTaskcalib("CalibObjectsTrain1");
+ //
+ SetupCalibTaskTrain1(task1);
//
mgr->AddTask(task1);
AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer();
if (!cinput1) cinput1 = mgr->CreateContainer("cchain",TChain::Class(),
AliAnalysisManager::kInputContainer);
- AliAnalysisDataContainer *coutput1 =mgr->CreateContainer("TPCCalib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "CalibObjects.root");
+ AliAnalysisDataContainer *coutput1 =mgr->CreateContainer("TPCCalib",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "CalibObjectsTrain1.root");
mgr->ConnectInput(task1,0,cinput1);
mgr->ConnectOutput(task1,0,coutput1);
+ //
+ //
+ //
+ AliTPCAnalysisTaskcalib *task2=new AliTPCAnalysisTaskcalib("CalibObjectsTrain2");
+ //
+ SetupCalibTaskTrain2(task2);
+ //
+ mgr->AddTask(task2);
+ AliAnalysisDataContainer *cinput2 = mgr->GetCommonInputContainer();
+
+ if (!cinput2) cinput2 = mgr->CreateContainer("cchain",TChain::Class(),
+ AliAnalysisManager::kInputContainer);
+
+ AliAnalysisDataContainer *coutput2 =mgr->CreateContainer("TPCCalib2",TObjArray::Class(), AliAnalysisManager::kOutputContainer, "CalibObjectsTrain2.root");
+ mgr->ConnectInput(task2,0,cinput2);
+ mgr->ConnectOutput(task2,0,coutput2);
+
+
+
//
if (!mgr->InitAnalysis()) return 0;
mgr->PrintStatus();
//
//
-void SetupCalibTaskTime(TObject* task){
+void SetupCalibTaskTrain1(TObject* task){
//
//
//
}
+void SetupCalibTaskTrain2(TObject* task){
+ //
+ //
+ //
+ AliTPCClusterParam * clusterParam = AliTPCcalibDB::Instance()->GetClusterParam();
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ // AddCalibCalib(task);
+ // AddCalibAlign()
+ // AddCalibTracks()
+ AddCalibPID(task);
+ //
+ TString path=gSystem->pwd();
+ path+=prefix;
+ gSystem->mkdir(path);
+ myTask->SetDebugOuputhPath(path.Data());
+}
+
gSystem->Load("libANALYSIS");
gSystem->Load("libTPCcalib");
gSystem->Setenv("alien_CLOSE_SE",closeSE);
- TGrid * alien = TGrid::Connect("alien://",0,0,"t");
+ TGrid * alien = TGrid::Connect("alien://",0,0,"t");
+ gSystem->Exec("rm -f isOK");
gROOT->Macro(Form("ConfigOCDB.C\(%d\)",run));
//
// Setup analysis manager
//
mgr->SetDebugLevel(1);
mgr->StartAnalysis("local",chain);
+ gSystem->Exec("touch isOK");
}
}
AliMagF::BMap_t smag = AliMagF::k5kG;
Double_t bzfac = bz/5;
+ if (bzfac==0) { // force default magnetic field if 0 field used
+ bzfac=1;
+ bz=5;
+ }
TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 2, bzfac, 1., 10., smag));
printf("\n\nSET EXB FIELD\t%f\n\n", -bz);
//
//
//
+ //gSystem->Setenv("alien_CLOSE_SE","ALICE::GSI::SE");
+ //TGrid * alien = TGrid::Connect("alien://",0,0,"t");
printf("Filtering esd.C\n");
gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
gROOT->LoadMacro("$ALICE_ROOT/TPC/macros/AliXRDPROOFtoolkit.cxx+");