+++ /dev/null
-Executable="/alice/cern.ch/user/z/zampolli/bin/runPassX.sh";
-
-Packages={"VO_ALICE@AliRoot::v4-19-07-AN","VO_ALICE@ROOT::v5-26-00b-1","VO_ALICE@APISCONFIG::V1.1x"};
-Jobtag =
- {
- "test Calibration Train"
- };
-
-GUIDFILE="guid.txt";
-TTL = "160000";
-Price = 1;
-
-Requirements = ( other.CE == "ALICE::CERN::LCG" );
-
-Validationcommand ="/alice/cern.ch/user/z/zampolli/CalibTrain/validation.sh";
-
-Split="file";
-
-JDLVariables={"Packages", "OutputDir"};
-GUIDFILE="guid.txt";
-
-
-SplitArguments = {"/alice/data/2009/LHC09d/$1/raw/#alienfilename#"};
-Workdirectorysize={"6000MB"};
-
-InputFile={"LF:/alice/cern.ch/user/z/zampolli/CalibTrain/rec.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/ConfigCalibTrain.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/runCalibTrain.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/AddTaskAddObject.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/AddTaskFilterFriend.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/AddTaskFilterFriendSecond.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/AddTaskTPCCalib.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/tag.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/LoadLibraries.C",
- "LF:/alice/cern.ch/user/z/zampolli/CalibTrain/tag.C"
-};
-InputDataCollection="LF:/alice/data/2009/LHC09d/$1/collection,nodownload";
-
-OutputDir="/alice/cern.ch/user/z/zampolli/CalibTrain/output/$1/#alienfilename/.root//#";
-
-OutputArchive={"log_archive:*.log@disk=1",
- "root_archive.zip:galice.root,AliESDs.root,AliESDfriends.root,AliESDs_v1.root,AliESDfriends_v1.root,Merged.QA.Data*.root,*.ESD.tag.root,@disk=1"};
-
--- /dev/null
+/*
+ Template of calibration/filtering macro using ESD
+
+ Example:
+ .L $ALICE_ROOT/ANALYSIS/macros/runCalibTrain.C
+ runCalibTrain(105160);
+
+*/
+
+void makeOCDB(TString runNumberString, TString ocdbStorage)
+{
+ gROOT->Macro("LoadLibraries.C");
+ gROOT->LoadMacro("ConfigCalibTrain.C");
+
+ // detector tasks
+
+ gROOT->LoadMacro("makeOCDBTPC.C");
+
+ AliLog::SetClassDebugLevel("AliESDEvent",19);
+ Int_t runNumber = runNumberString.Atoi();
+ printf("runNumber from runCalibTrain = %d\n",runNumber);
+ ConfigCalibTrain(runNumber, "raw://");
+
+ // Steering Tasks -set output storage
+ // DefaultStorage set already before - in ConfigCalibTrain.C
+ //
+ AliCDBManager::Instance()->SetSpecificStorage("*/*/*",ocdbStorage.Data());
+
+
+ // Detector Tasks
+ makeOCDBTPC(runNumber);
+
+
+ return;
+}
if (!callEnv.IsValid()) {continue;}
TObject *mergedObject = array->FindObject(currentObject->GetName());
+ TString oname=mergeObject->GetNanme();
+ if (oname.Contains("esdFriendTree") continue;
if (!mergedObject) {
array->AddLast(currentObject);
carray->RemoveAt(i);
--- /dev/null
+//
+// Macro to initialize:
+// - the OCDB (run number required as input argument)
+// - the geometry (expected to be in the current directory)
+// to run the Calibration train.
+//
+
+void ConfigCalibTrain(Int_t run, const char *ocdb="raw://"){
+
+ // OCDB
+
+ printf("setting run to %d\n",run);
+ AliCDBManager::Instance()->SetDefaultStorage(ocdb);
+ AliCDBManager::Instance()->SetRun(run);
+
+ // geometry
+ AliGeomManager::LoadGeometry();
+ AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC");
+
+
+
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
+ AliGRPObject* grpData = (AliGRPObject*)entry->GetObject();
+
+ Bool_t ok=kTRUE;
+ Float_t l3Current = grpData->GetL3Current((AliGRPObject::Stats)0);
+ if (l3Current == AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the L3 current !");
+ ok = kFALSE;
+ }
+
+ Char_t l3Polarity = grpData->GetL3Polarity();
+ if (l3Polarity == AliGRPObject::GetInvalidChar()) {
+ printf("GRP/GRP/Data entry: missing value for the L3 polarity !");
+ ok = kFALSE;
+ }
+
+ // Dipole
+ Float_t diCurrent = grpData->GetDipoleCurrent((AliGRPObject::Stats)0);
+ if (diCurrent == AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the dipole current !");
+ ok = kFALSE;
+ }
+
+ Char_t diPolarity = grpData->GetDipolePolarity();
+ if (diPolarity == AliGRPObject::GetInvalidChar()) {
+ printf("GRP/GRP/Data entry: missing value for the dipole polarity !");
+ ok = kFALSE;
+ }
+
+ TString beamType = grpData->GetBeamType();
+ if (beamType==AliGRPObject::GetInvalidString()) {
+ printf("GRP/GRP/Data entry: missing value for the beam type ! Using UNKNOWN");
+ beamType = "UNKNOWN";
+ }
+
+ Float_t beamEnergy = grpData->GetBeamEnergy();
+ if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the beam energy ! Using 0");
+ beamEnergy = 0;
+ }
+
+ // read special bits for the polarity convention and map type
+ //Int_t polConvention = grpData->IsPolarityConventionLHC() ? AliMagF::kConvLHC : AliMagF::kConvDCS2008;
+ Int_t polConvention = grpData->IsPolarityConventionLHC() ? 0 : 1;
+ Bool_t uniformB = grpData->IsUniformBMap();
+
+ if (ok) {
+ AliMagF* fld = AliMagF::CreateFieldMap(TMath::Abs(l3Current) * (l3Polarity ? -1:1),
+ TMath::Abs(diCurrent) * (diPolarity ? -1:1),
+ polConvention,uniformB,beamEnergy, beamType.Data());
+ if (fld) {
+ TGeoGlobalMagField::Instance()->SetField( fld );
+ TGeoGlobalMagField::Instance()->Lock();
+ printf("Running with the B field constructed out of GRP !");
+ }
+ }
+ printf("Problem with magnetic field setup\n");
+}
--- /dev/null
+void LoadLibraries(){
+ gSystem->Load("libTree");
+ gSystem->Load("libGeom");
+ gSystem->Load("libPhysics");
+ gSystem->Load("libVMC");
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ gSystem->Load("libANALYSIScalib");
+ gSystem->Load("libCORRFW");
+ gSystem->Load("libPWG3muon");
+ //
+ // detector libraries
+ //
+ gSystem->Load("libTPCcalib");
+}
--- /dev/null
+Executable="/alice/cern.ch/user/z/zampolli/bin/runPassX.sh";
+
+Packages={"VO_ALICE@AliRoot::v4-19-07-AN","VO_ALICE@ROOT::v5-26-00b-1","VO_ALICE@APISCONFIG::V1.1x"};
+Jobtag =
+ {
+ "test Calibration Train"
+ };
+
+GUIDFILE="guid.txt";
+TTL = "160000";
+Price = 1;
+
+Requirements = ( other.CE == "ALICE::CERN::LCG" );
+
+Validationcommand ="/alice/cern.ch/user/z/zampolli/Pass0/validation.sh";
+
+Split="file";
+
+JDLVariables={"Packages", "OutputDir"};
+GUIDFILE="guid.txt";
+
+
+SplitArguments = {"/alice/data/2009/LHC09d/$1/raw/#alienfilename#"};
+Workdirectorysize={"6000MB"};
+
+InputFile={"LF:/alice/cern.ch/user/z/zampolli/Pass0/recPass0.C",
+ "LF:/alice/cern.ch/user/z/zampolli/Pass0/ConfigCalibTrain.C",
+ "LF:/alice/cern.ch/user/z/zampolli/Pass0/runPass0.C",
+ "LF:/alice/cern.ch/user/z/zampolli/Pass0/AddTaskTPCCalib.C",
+ "LF:/alice/cern.ch/user/z/zampolli/Pass0/LoadLibraries.C"
+};
+InputDataCollection="LF:/alice/data/2009/LHC09d/$1/collection,nodownload";
+
+OutputDir="/alice/cern.ch/user/z/zampolli/Pass0/output/$1/#alienfilename/.root//#";
+
+OutputArchive={"log_archive:*.log@disk=1",
+ "root_archive.zip:galice.root,AliESDs.root, AliESDfriends.root,AliESDfriends_v1.root,@disk=1"};
+
--- /dev/null
+/*
+ Template of calibration/filtering macro using ESD
+
+ Example:
+ .L $ALICE_ROOT/ANALYSIS/macros/runCalibTrain.C
+ runCalibTrain(105160);
+
+*/
+
+void runCalibTrain(TString runNumberString, const char *inFileName = "AliESDs.root")
+{
+ gROOT->Macro("LoadLibraries.C");
+ gROOT->LoadMacro("ConfigCalibTrain.C");
+
+ // detector tasks
+
+ gROOT->LoadMacro("AddTaskTPCCalib.C");
+
+ AliLog::SetClassDebugLevel("AliESDEvent",19);
+ TChain *chain = new TChain("esdTree");
+
+ // Steering input chain
+
+ chain->Add(inFileName);
+ Int_t runNumber = runNumberString.Atoi();
+ printf("runNumber from runCalibTrain = %d\n",runNumber);
+ ConfigCalibTrain(runNumber, "raw://");
+
+ AliAnalysisManager *mgr = new AliAnalysisManager("ESD to ESD", "Analysis Manager");
+ // mgr->SetDebugLevel(3);
+
+ // Input
+
+ AliESDInputHandler* inpHandler = new AliESDInputHandler();
+ mgr->SetInputEventHandler (inpHandler);
+
+ // Output
+
+ AliESDHandler* esdHandler = new AliESDHandler();
+ mgr->SetOutputEventHandler(esdHandler);
+ esdHandler->SetOutputFileName("AliESDfriends_v1.root");
+ // Steering Tasks
+ // not needed
+
+ // Detector Tasks
+
+ AliAnalysisTask* tTPC = AddTaskTPCCalib(runNumber);
+
+ // Run the analysis
+
+ if (!mgr->InitAnalysis()) {
+ printf("Analysis cannot be started, returning\n");
+ return;
+ }
+
+ mgr->PrintStatus();
+ mgr->StartAnalysis("local", chain);
+
+ return;
+}
--- /dev/null
+#!/bin/bash
+
+# Script to run:
+# 1. reconstruction
+# 2. calibration and friend track filtering
+# 3. tag creation
+#
+# Files assumed to be in working directory:
+# rec.C - reconstruction macro
+# runCalibTrain.C - calibration/filtering macro
+# Arguments:
+# 1 - raw data file name
+# 2 - number of events to be processed
+# 3 - run number
+
+# example:
+# runPassX.sh raw.root 50 104892
+
+#ALIEN setting
+entries=1000
+# $1 = raw input filename
+runnum=`echo $1 | cut -d "/" -f 6`
+
+#Local setting
+#entries=$2
+#runnum=$3
+
+echo File to be processed $1
+echo Number of events to be processed $entries
+
+echo ">>>>>>>>> PATH is..."
+echo $PATH
+echo ">>>>>>>>> LD_LIBRARY_PATH is..."
+echo $LD_LIBRARY_PATH
+echo ">>>>>>>>> rec.C is..."
+cat rec.C
+echo
+
+echo ">>>>>>> Running AliRoot to reconstruct $1. Run number is $runnum..."
+aliroot -l -b -q recPass0.C\(\"alien://$1\"\) 2>&1 | tee rec.log
+
+echo ">>>>>>> Running AliRoot to make calibration..."
+aliroot -l -b -q runCalibTrain.C\(\"$runnum\"\) 2>&1 | tee calib.log
+
--- /dev/null
+#!/bin/sh
+##################################################
+validateout=`dirname $0`
+validatetime=`date`
+validated="0";
+error=1
+
+if [ -z $validateout ]
+then
+ validateout="."
+fi
+cd $validateout;
+validateworkdir=`pwd`;
+
+echo "*******************************************************" >> stdout;
+echo "* AliRoot Validation Script V1.0 *" >> stdout;
+echo "* Time: $validatetime " >> stdout;
+echo "* Dir: $validateout" >> stdout;
+echo "* Workdir: $validateworkdir" >> stdout;
+echo "* ----------------------------------------------------*" >> stdout;
+ls -la ./ >> stdout;
+echo "* ----------------------------------------------------*" >> stdout;
+
+cp stdout stdout.log
+cp stderr stderr.log
+
+##################################################
+if [ -f rec.log ] && [ -f calib.log ] && [ -f AliESDs.root ] && [ -f AliESDfriends_v1.root ]
+then
+sv=`grep -i "Segmentation violation" *.log`
+if [ "$sv" = "" ]
+ then
+ sf=`grep -i "Segmentation fault" *.log`
+ if [ "$sf" = "" ]
+ then
+ be=`grep -i "Bus error" *.log`
+ if [ "$be" = "" ]
+ then
+ ab=`grep -i "Break" *.log`
+ if [ "$ab" = "" ]
+ then
+ fp=`grep -i "Floating point exception" *.log`
+ if [ "$fp" = "" ]
+ then
+ kl=`grep -i "Killed" *.log`
+ if [ "$kl" = "" ]
+ then
+ bf=`grep -i "busy flag cleared" *.log`
+ if [ "$bf" = "" ]
+ then
+ echo "* ---------------- Job Validated ------------------*" >> stdout;
+ error="0";
+ else
+ echo "* # Check Macro failed ! #" >> stdout;
+ fi
+ fi
+ fi
+ fi
+ fi
+ fi
+fi
+else
+ echo "* ########## Job not validated - no rec.log or calib.log or AliESDs.root && AliESDfriends.root ###" >> stdout;
+ echo "* ########## Removing all ROOT files from the local directory, leaving only the logs ###" >> stdout;
+ rm -rf *.root
+fi
+if [ "$error" = "1" ]
+ then
+ echo "* ################ Job not validated ################" >> stdout;
+fi
+echo "* ----------------------------------------------------*" >> stdout;
+echo "*******************************************************" >> stdout;
+sleep 15;
+cd -
+exit $error
--- /dev/null
+//=============================================================================
+//
+// *** AddTaskTPCCalib
+//
+// This macros setup the TPC calibration task
+//
+//=============================================================================
+
+
+
+
+Int_t debugLevel = 2;
+Int_t streamLevel = 20;
+TTimeStamp startTime(2010,2,1,0,0,0);
+TTimeStamp stopTime(2010,12,31,0,0,0);
+char * prefix = "/V6/";
+
+void ConfigOCDB(Int_t crun);
+
+AliAnalysisTask *AddTaskTPCCalib(Int_t runNumber)
+{
+ gSystem->Load("libTPCcalib");
+ // pointer to the analysis manager
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ Error("AddTaskTPCCalib", "No analysis manager to connect to.");
+ return NULL;
+ }
+
+ // check the input handler
+ if (!mgr->GetInputEventHandler()) {
+ ::Error("AddTask", "This task requires an input event handler");
+ return NULL;
+ }
+ ConfigOCDB(runNumber);
+ 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, "AliESDfriends_v1.root");
+ mgr->ConnectInput(task1,0,cinput1);
+ mgr->ConnectOutput(task1,0,coutput1);
+ return task1;
+}
+
+
+
+
+void AddCalibCalib(TObject* task){
+ //
+ // Responsible: Marian Ivanov
+ // Description:
+ // calibCalib is a prefilter
+ // The current OCDB entries transformation are applied on cluster, tracks are refitted
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibCalib *calibCalib = new AliTPCcalibCalib("calibTPC","calibTPC");
+ calibCalib->SetDebugLevel(debugLevel);
+ calibCalib->SetStreamLevel(streamLevel);
+ calibCalib->SetTriggerMask(-1,-1,kFALSE); //accept everything
+ myTask->AddJob(calibCalib);
+
+}
+void AddCalibTimeGain(TObject* task, Bool_t isCosmic = kFALSE, char * name = "calibTimeGain"){
+ //
+ // Responsible: Alexander Kalweit
+ // Description:
+ // Parameters to set
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibTimeGain *calibTimeGain = new AliTPCcalibTimeGain(name,"calibTimeGain", startTime.GetSec(), stopTime.GetSec(), 30*60);
+ //calibTimeGain->SetLowMemoryConsumption(kTRUE);
+ //calibTimeGain->SetMIP(25.);
+ calibTimeGain->SetIsCosmic(isCosmic);
+ calibTimeGain->SetUseCookAnalytical(kTRUE);
+ calibTimeGain->SetUseMax(kFALSE);
+ calibTimeGain->SetDebugLevel(debugLevel);
+ calibTimeGain->SetStreamLevel(streamLevel);
+ calibTimeGain->SetTriggerMask(-1,-1,kTRUE); //reject laser
+ myTask->AddJob(calibTimeGain);
+}
+
+void AddCalibTime(TObject* task){
+ //
+ // Responsible: Dag Larsen
+ // Description:
+ //
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibTime *calibTime = new AliTPCcalibTime("calibTime","calibTime", startTime.GetSec(), stopTime.GetSec(), 20*60);
+ calibTime->SetDebugLevel(debugLevel);
+ calibTime->SetStreamLevel(streamLevel);
+ calibTime->SetTriggerMask(-1,-1,kFALSE); //accept everything
+ myTask->AddJob(calibTime);
+}
+
+void AddCalibLaser(TObject* task){
+ //
+ // Responsible: Marian Ivanov
+ // Description:
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibLaser *calibLaser = new AliTPCcalibLaser("laserTPC","laserTPC");
+ calibLaser->SetDebugLevel(debugLevel);
+ calibLaser->SetStreamLevel(streamLevel);
+ calibLaser->SetTriggerMask(-1,-1,kFALSE); //accept everything
+ myTask->AddJob(calibLaser);
+}
+
+
+void AddCalibAlign(TObject* task){
+ //
+ // Responsible: Marian Ivanov
+ // Description:
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibAlign *calibAlign = new AliTPCcalibAlign("alignTPC","Alignment of the TPC sectors");
+ calibAlign->SetDebugLevel(debugLevel);
+ calibAlign->SetStreamLevel(streamLevel);
+ calibAlign->SetTriggerMask(-1,-1,kTRUE); //accept everything
+ myTask->AddJob(calibAlign);
+}
+
+void AddCalibCosmic(TObject* task){
+ //
+ // Responsible: Marian Ivanov
+ // Description:
+ // Histogram residuals and pulls of the track parameters in bins of track parameters
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AliTPCcalibCosmic *calibCosmic = new AliTPCcalibCosmic("cosmicTPC","cosmicTPC");
+ calibCosmic->SetDebugLevel(debugLevel);
+ calibCosmic->SetStreamLevel(streamLevel);
+ calibCosmic->SetTriggerMask(-1,-1,kTRUE); //accept everything
+ myTask->AddJob(calibCosmic);
+}
+
+
+
+
+void SetupCalibTaskTrain1(TObject* task){
+ //
+ //
+ //
+ AliTPCAnalysisTaskcalib* myTask = (AliTPCAnalysisTaskcalib*) task;
+ AddCalibCalib(task);
+ AddCalibTimeGain(task);
+ AddCalibTimeGain(task,kTRUE,"calibTimeGainCosmic"); // 2nd task for cosmic runs
+ AddCalibTime(task);
+ AddCalibLaser(task);
+ AddCalibAlign(task);
+ AddCalibCosmic(task);
+ //
+ TString path=gSystem->pwd();
+ path+=prefix;
+ gSystem->mkdir(path);
+ myTask->SetDebugOuputhPath(path.Data());
+
+}
+
+
+
+void ConfigOCDB(Int_t run){
+ //
+ printf("SETUP OCBD for TPC\n");
+ printf("SETUP OCBD for TPC\n");
+ printf("SETUP OCBD for TPC Run =%d\n", run);
+ //
+ //
+ AliTPCParam *param= AliTPCcalibDB::Instance()->GetParameters();
+ param->ReadGeoMatrices();
+ //
+ AliMagF* magF= TGeoGlobalMagField::Instance()->GetField();
+ printf("\n\nSET EXB FIELD\t\n\n");
+ AliTPCcalibDB::Instance()->SetExBField(magF);
+ //
+ //
+ //
+ AliTPCTransform *transform = AliTPCcalibDB::Instance()->GetTransform() ;
+ AliTPCRecoParam * tpcRecoParam = AliTPCRecoParam::GetCosmicTestParam(kTRUE);
+ //
+ transform->SetCurrentRecoParam(tpcRecoParam);
+ tpcRecoParam->SetUseGainCorrectionTime(0);
+ tpcRecoParam->SetUseRPHICorrection(kTRUE);
+ tpcRecoParam->SetUseTOFCorrection(kFALSE);
+ //
+ tpcRecoParam->SetUseDriftCorrectionTime(0);
+ tpcRecoParam->SetUseDriftCorrectionGY(0);
+ //
+ tpcRecoParam->SetUseRadialCorrection(kFALSE);
+ tpcRecoParam->SetUseQuadrantAlignment(kFALSE);
+ //
+ tpcRecoParam->SetUseSectorAlignment(kTRUE);
+ tpcRecoParam->SetUseGainCorrectionTime(kFALSE);
+ tpcRecoParam->SetUseFieldCorrection(kFALSE);
+ tpcRecoParam->SetUseExBCorrection(kTRUE);
+ AliTPCcalibDB::Instance()->SetRun(run);
+}
+
+
+
+
--- /dev/null
+//
+// Macro to initialize:
+// - the OCDB (run number required as input argument)
+// - the geometry (expected to be in the current directory)
+// to run the Calibration train.
+//
+
+void ConfigCalibTrain(Int_t run, const char *ocdb="raw://"){
+
+ // OCDB
+
+ printf("setting run to %d\n",run);
+ AliCDBManager::Instance()->SetDefaultStorage(ocdb);
+ AliCDBManager::Instance()->SetRun(run);
+
+ // geometry
+ AliGeomManager::LoadGeometry();
+ AliGeomManager::ApplyAlignObjsFromCDB("GRP ITS TPC");
+
+
+
+ AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/GRP/Data");
+ AliGRPObject* grpData = (AliGRPObject*)entry->GetObject();
+
+ Bool_t ok=kTRUE;
+ Float_t l3Current = grpData->GetL3Current((AliGRPObject::Stats)0);
+ if (l3Current == AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the L3 current !");
+ ok = kFALSE;
+ }
+
+ Char_t l3Polarity = grpData->GetL3Polarity();
+ if (l3Polarity == AliGRPObject::GetInvalidChar()) {
+ printf("GRP/GRP/Data entry: missing value for the L3 polarity !");
+ ok = kFALSE;
+ }
+
+ // Dipole
+ Float_t diCurrent = grpData->GetDipoleCurrent((AliGRPObject::Stats)0);
+ if (diCurrent == AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the dipole current !");
+ ok = kFALSE;
+ }
+
+ Char_t diPolarity = grpData->GetDipolePolarity();
+ if (diPolarity == AliGRPObject::GetInvalidChar()) {
+ printf("GRP/GRP/Data entry: missing value for the dipole polarity !");
+ ok = kFALSE;
+ }
+
+ TString beamType = grpData->GetBeamType();
+ if (beamType==AliGRPObject::GetInvalidString()) {
+ printf("GRP/GRP/Data entry: missing value for the beam type ! Using UNKNOWN");
+ beamType = "UNKNOWN";
+ }
+
+ Float_t beamEnergy = grpData->GetBeamEnergy();
+ if (beamEnergy==AliGRPObject::GetInvalidFloat()) {
+ printf("GRP/GRP/Data entry: missing value for the beam energy ! Using 0");
+ beamEnergy = 0;
+ }
+
+ // read special bits for the polarity convention and map type
+ //Int_t polConvention = grpData->IsPolarityConventionLHC() ? AliMagF::kConvLHC : AliMagF::kConvDCS2008;
+ Int_t polConvention = grpData->IsPolarityConventionLHC() ? 0 : 1;
+ Bool_t uniformB = grpData->IsUniformBMap();
+
+ if (ok) {
+ AliMagF* fld = AliMagF::CreateFieldMap(TMath::Abs(l3Current) * (l3Polarity ? -1:1),
+ TMath::Abs(diCurrent) * (diPolarity ? -1:1),
+ polConvention,uniformB,beamEnergy, beamType.Data());
+ if (fld) {
+ TGeoGlobalMagField::Instance()->SetField( fld );
+ TGeoGlobalMagField::Instance()->Lock();
+ printf("Running with the B field constructed out of GRP !");
+ }
+ }
+ printf("Problem with magnetic field setup\n");
+}
--- /dev/null
+void LoadLibraries(){
+ gSystem->Load("libTree");
+ gSystem->Load("libGeom");
+ gSystem->Load("libPhysics");
+ gSystem->Load("libVMC");
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libANALYSISalice");
+ gSystem->Load("libANALYSIScalib");
+ gSystem->Load("libCORRFW");
+ gSystem->Load("libPWG3muon");
+ //
+ // detector libraries
+ //
+ gSystem->Load("libTPCcalib");
+}
--- /dev/null
+Executable="/alice/cern.ch/user/z/zampolli/bin/runPassX.sh";
+
+Packages={"VO_ALICE@AliRoot::v4-19-07-AN","VO_ALICE@ROOT::v5-26-00b-1","VO_ALICE@APISCONFIG::V1.1x"};
+Jobtag =
+ {
+ "test Calibration Train"
+ };
+
+GUIDFILE="guid.txt";
+TTL = "160000";
+Price = 1;
+
+Requirements = ( other.CE == "ALICE::CERN::LCG" );
+
+Validationcommand ="/alice/cern.ch/user/z/zampolli/PassX/validation.sh";
+
+Split="file";
+
+JDLVariables={"Packages", "OutputDir"};
+GUIDFILE="guid.txt";
+
+
+SplitArguments = {"/alice/data/2009/LHC09d/$1/raw/#alienfilename#"};
+Workdirectorysize={"6000MB"};
+
+InputFile={"LF:/alice/cern.ch/user/z/zampolli/PassX/rec.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/ConfigCalibTrain.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/runCalibTrain.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/AddTaskAddObject.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/AddTaskFilterFriend.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/AddTaskFilterFriendSecond.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/AddTaskTPCCalib.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/LoadLibraries.C",
+ "LF:/alice/cern.ch/user/z/zampolli/PassX/tag.C"
+};
+InputDataCollection="LF:/alice/data/2009/LHC09d/$1/collection,nodownload";
+
+OutputDir="/alice/cern.ch/user/z/zampolli/PassX/output/$1/#alienfilename/.root//#";
+
+OutputArchive={"log_archive:*.log@disk=1",
+ "root_archive.zip:galice.root,AliESDs.root,AliESDfriends.root,AliESDfriends_v1.root,Merged.QA.Data*.root,*.ESD.tag.root,@disk=1"};
+
rec.SetInput(filename);
rec.SetUseTrackingErrorsForAlignment("ITS");
- // Magnetic field hack for L3 off, dipole on
-
- AliMagF* fld = new AliMagF("map","map",0,-1, AliMagF::k5kG,AliMagF::kBeamTypepp, 450);
- fld->SetBit(AliMagF::kOverrideGRP);
- TGeoGlobalMagField::Instance()->SetField(fld);
- TGeoGlobalMagField::Instance()->Lock();
- printf(" ATTENTION: Using external field with WRONG CURRENTS COMBINATION\n");
// Specially for ITS (https://savannah.cern.ch/bugs/?59368)
// Input
AliESDInputHandler* inpHandler = new AliESDInputHandler();
- inpHandler->SetActiveBranches("ESDfriend*");
mgr->SetInputEventHandler (inpHandler);
// Output