]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Changing structure of the directory:
authorzampolli <zampolli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Mar 2010 15:49:58 +0000 (15:49 +0000)
committerzampolli <zampolli@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 25 Mar 2010 15:49:58 +0000 (15:49 +0000)
- Pass0
All the files (.jdl, .sh, .C) needed for Pass0

- PassX
All the files (.jdl, .sh, .C) needed for PassX

- MergeCalibration
All the files (.jdl, .sh, .C) needed for merging and extracting the calibration objects (run level)

(Marian + Chiara)

29 files changed:
ANALYSIS/CalibMacros/CalibJob.jdl [deleted file]
ANALYSIS/CalibMacros/MergeCalibration/ConfigCalibTrain.C [moved from ANALYSIS/CalibMacros/ConfigCalibTrain.C with 100% similarity]
ANALYSIS/CalibMacros/MergeCalibration/LoadLibraries.C [moved from ANALYSIS/CalibMacros/LoadLibraries.C with 100% similarity]
ANALYSIS/CalibMacros/MergeCalibration/MergeJob.jdl [moved from ANALYSIS/CalibMacros/MergeJob.jdl with 100% similarity]
ANALYSIS/CalibMacros/MergeCalibration/makeOCDB.C [new file with mode: 0644]
ANALYSIS/CalibMacros/MergeCalibration/merge.C [moved from ANALYSIS/CalibMacros/merge.C with 100% similarity]
ANALYSIS/CalibMacros/MergeCalibration/mergeCalibObjects.C [moved from ANALYSIS/CalibMacros/mergeCalibObjects.C with 98% similarity]
ANALYSIS/CalibMacros/MergeCalibration/mergeCalibObjects.sh [moved from ANALYSIS/CalibMacros/mergeCalibObjects.sh with 100% similarity]
ANALYSIS/CalibMacros/MergeCalibration/validationMerging.sh [moved from ANALYSIS/CalibMacros/validationMerging.sh with 100% similarity]
ANALYSIS/CalibMacros/Pass0/AddTaskTPCCalib.C [moved from ANALYSIS/CalibMacros/AddTaskTPCCalib.C with 100% similarity]
ANALYSIS/CalibMacros/Pass0/ConfigCalibTrain.C [new file with mode: 0644]
ANALYSIS/CalibMacros/Pass0/LoadLibraries.C [new file with mode: 0644]
ANALYSIS/CalibMacros/Pass0/Pass0.jdl [new file with mode: 0644]
ANALYSIS/CalibMacros/Pass0/recPass0.C [moved from ANALYSIS/CalibMacros/recPass0.C with 100% similarity]
ANALYSIS/CalibMacros/Pass0/runCalibTrain.C [new file with mode: 0644]
ANALYSIS/CalibMacros/Pass0/runPass0.sh [new file with mode: 0644]
ANALYSIS/CalibMacros/Pass0/validation.sh [new file with mode: 0644]
ANALYSIS/CalibMacros/PassX/AddTaskAddObject.C [moved from ANALYSIS/CalibMacros/AddTaskAddObject.C with 100% similarity]
ANALYSIS/CalibMacros/PassX/AddTaskFilterFriend.C [moved from ANALYSIS/CalibMacros/AddTaskFilterFriend.C with 100% similarity]
ANALYSIS/CalibMacros/PassX/AddTaskFilterFriendSecond.C [moved from ANALYSIS/CalibMacros/AddTaskFilterFriendSecond.C with 100% similarity]
ANALYSIS/CalibMacros/PassX/AddTaskTPCCalib.C [new file with mode: 0644]
ANALYSIS/CalibMacros/PassX/ConfigCalibTrain.C [new file with mode: 0644]
ANALYSIS/CalibMacros/PassX/LoadLibraries.C [new file with mode: 0644]
ANALYSIS/CalibMacros/PassX/PassX.jdl [new file with mode: 0644]
ANALYSIS/CalibMacros/PassX/rec.C [moved from ANALYSIS/CalibMacros/rec.C with 81% similarity]
ANALYSIS/CalibMacros/PassX/runCalibTrain.C [moved from ANALYSIS/CalibMacros/runCalibTrain.C with 97% similarity]
ANALYSIS/CalibMacros/PassX/runPassX.sh [moved from ANALYSIS/CalibMacros/runPassX.sh with 100% similarity]
ANALYSIS/CalibMacros/PassX/tag.C [moved from ANALYSIS/CalibMacros/tag.C with 100% similarity]
ANALYSIS/CalibMacros/PassX/validation.sh [moved from ANALYSIS/CalibMacros/validation.sh with 100% similarity]

diff --git a/ANALYSIS/CalibMacros/CalibJob.jdl b/ANALYSIS/CalibMacros/CalibJob.jdl
deleted file mode 100644 (file)
index 269300e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-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"};
-
diff --git a/ANALYSIS/CalibMacros/MergeCalibration/makeOCDB.C b/ANALYSIS/CalibMacros/MergeCalibration/makeOCDB.C
new file mode 100644 (file)
index 0000000..d812f8e
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+  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;
+}
similarity index 98%
rename from ANALYSIS/CalibMacros/mergeCalibObjects.C
rename to ANALYSIS/CalibMacros/MergeCalibration/mergeCalibObjects.C
index c587ed1a3fb6f95310bcfd84d83e09b8ce546326..51298930e5b697612831f3d437f7a4d369be1dee 100644 (file)
@@ -188,6 +188,8 @@ void Merge(TFile* fileIn, TObjArray * array){
     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);
diff --git a/ANALYSIS/CalibMacros/Pass0/ConfigCalibTrain.C b/ANALYSIS/CalibMacros/Pass0/ConfigCalibTrain.C
new file mode 100644 (file)
index 0000000..87a3bd5
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// 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");
+}
diff --git a/ANALYSIS/CalibMacros/Pass0/LoadLibraries.C b/ANALYSIS/CalibMacros/Pass0/LoadLibraries.C
new file mode 100644 (file)
index 0000000..86eab50
--- /dev/null
@@ -0,0 +1,19 @@
+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");
+}
diff --git a/ANALYSIS/CalibMacros/Pass0/Pass0.jdl b/ANALYSIS/CalibMacros/Pass0/Pass0.jdl
new file mode 100644 (file)
index 0000000..83258cd
--- /dev/null
@@ -0,0 +1,38 @@
+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"};
+
diff --git a/ANALYSIS/CalibMacros/Pass0/runCalibTrain.C b/ANALYSIS/CalibMacros/Pass0/runCalibTrain.C
new file mode 100644 (file)
index 0000000..957ffd9
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+  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;
+}
diff --git a/ANALYSIS/CalibMacros/Pass0/runPass0.sh b/ANALYSIS/CalibMacros/Pass0/runPass0.sh
new file mode 100644 (file)
index 0000000..9684eca
--- /dev/null
@@ -0,0 +1,44 @@
+#!/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
+
diff --git a/ANALYSIS/CalibMacros/Pass0/validation.sh b/ANALYSIS/CalibMacros/Pass0/validation.sh
new file mode 100644 (file)
index 0000000..cadafcc
--- /dev/null
@@ -0,0 +1,75 @@
+#!/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
diff --git a/ANALYSIS/CalibMacros/PassX/AddTaskTPCCalib.C b/ANALYSIS/CalibMacros/PassX/AddTaskTPCCalib.C
new file mode 100644 (file)
index 0000000..25e8e0e
--- /dev/null
@@ -0,0 +1,206 @@
+//=============================================================================
+//
+// *** 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); 
+}
+
+
+
+
diff --git a/ANALYSIS/CalibMacros/PassX/ConfigCalibTrain.C b/ANALYSIS/CalibMacros/PassX/ConfigCalibTrain.C
new file mode 100644 (file)
index 0000000..87a3bd5
--- /dev/null
@@ -0,0 +1,79 @@
+//
+// 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");
+}
diff --git a/ANALYSIS/CalibMacros/PassX/LoadLibraries.C b/ANALYSIS/CalibMacros/PassX/LoadLibraries.C
new file mode 100644 (file)
index 0000000..86eab50
--- /dev/null
@@ -0,0 +1,19 @@
+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");
+}
diff --git a/ANALYSIS/CalibMacros/PassX/PassX.jdl b/ANALYSIS/CalibMacros/PassX/PassX.jdl
new file mode 100644 (file)
index 0000000..d27888b
--- /dev/null
@@ -0,0 +1,42 @@
+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"};
+
similarity index 81%
rename from ANALYSIS/CalibMacros/rec.C
rename to ANALYSIS/CalibMacros/PassX/rec.C
index e8a86d82e2fc1211adcf676432962629ddc854a2..e2db10d4c787171d9ce86be5ab368fbb2732b695 100644 (file)
@@ -38,13 +38,6 @@ void rec(const char *filename="raw.root")
   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)
 
similarity index 97%
rename from ANALYSIS/CalibMacros/runCalibTrain.C
rename to ANALYSIS/CalibMacros/PassX/runCalibTrain.C
index e69b2752d3e4005d97ac467bed673c28bfa3f434..5677f00bebfdb03c743a00ad312269b57dc5b4ed 100644 (file)
@@ -35,7 +35,6 @@ void runCalibTrain(TString runNumberString, const char *inFileName = "AliESDs.ro
   // Input
   
   AliESDInputHandler* inpHandler = new AliESDInputHandler();
-  inpHandler->SetActiveBranches("ESDfriend*");
   mgr->SetInputEventHandler  (inpHandler);
   
   // Output