]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
updated macros, fix in AliFlatTrack::Fill : padRow now the same as in normal ESD
authorsgweber <steffen.georg.weber@cern.ch>
Thu, 3 Jul 2014 15:55:19 +0000 (17:55 +0200)
committersgweber <steffen.georg.weber@cern.ch>
Thu, 3 Jul 2014 15:55:19 +0000 (17:55 +0200)
17 files changed:
HLT/global/AliFlatESDTrack.cxx
HLT/global/FlatESDConverter.C
HLT/global/fladevMacros/compare/command.sh
HLT/global/fladevMacros/esdToFlat/command.sh [deleted file]
HLT/global/fladevMacros/esdToFlat/command_list.sh
HLT/global/fladevMacros/esdToFlat/read.sh
HLT/global/fladevMacros/plot/createHistos.C [new file with mode: 0644]
HLT/global/fladevMacros/plot/showHistos.C [deleted file]
HLT/global/fladevMacros/rawToFlat/command_list.sh
HLT/global/fladevMacros/rawToFlat/command_single.sh [deleted file]
HLT/global/fladevMacros/rawToFlat/config_Flat.C
HLT/global/fladevMacros/rawToFlat/createHistos.C [deleted file]
HLT/global/fladevMacros/rawToHltEsd/command.sh [deleted file]
HLT/global/fladevMacros/rawToHltEsd/command_list.sh
HLT/global/fladevMacros/rawToHltEsd/createHistos.C [deleted file]
HLT/global/fladevMacros/rawToNormalEsd/command_list.sh [new file with mode: 0755]
HLT/global/fladevMacros/rawToNormalEsd/rec.C [new file with mode: 0644]

index f3f31b0759260fd20a623469b8ad05d1c2b9894d..a189e052927c6e888d5fc1f21e427b16325967f8 100644 (file)
@@ -147,7 +147,8 @@ Int_t AliFlatESDTrack::Fill(const AliESDtrack* track, AliESDfriendTrack* friendT
          tmpCl.fX = currentCl->GetX();
          tmpCl.fY = currentCl->GetY();
          tmpCl.fZ = currentCl->GetZ();   
-         tmpCl.fPadRow  = idxRow; // TO BE CHECKED IF THIS NEEDED or currentCl->GetRow();
+        // tmpCl.fPadRow  = idxRow; // TO BE CHECKED IF THIS NEEDED or currentCl->GetRow();
+         tmpCl.fPadRow  = currentCl->GetRow();
          tmpCl.fSigmaY2 = currentCl->GetSigmaY2();
          tmpCl.fSigmaZ2 = currentCl->GetSigmaZ2();
          tmpCl.fCharge  = currentCl->GetQ();
@@ -193,7 +194,7 @@ Int_t AliFlatESDTrack::Fill(const AliESDtrack* track, AliESDfriendTrack* friendT
     //    Printf("DEBUG: Number of clusters for track = %d", fNTPCClusters);
 
     // -- Sorting clusters according to user defined function (increasing pad row numbering)
-    std::sort(GetTPCClusters(), GetTPCClusters()+fNTPCClusters, AliFlatTPCCluster::SortClusters);
+  //  std::sort(GetTPCClusters(), GetTPCClusters()+fNTPCClusters, AliFlatTPCCluster::SortClusters);
   }
 
   return iResult;
index 79da4a9bcedb932f442bacbb2c3bef0387f40c96..8be3570f6444c34cab7850619bef450076b4331d 100644 (file)
@@ -128,14 +128,19 @@ Int_t nCl = track->GetNumberOfTPCClusters();
 
     // -- Fill cluster
     if (seed) {
+    
+    Int_t idxRow2=0;
       for (Int_t idxRow = 0; idxRow <  nCl; idxRow++){
       AliFlatTPCCluster * cl = track->GetTPCCluster(idxRow);
+      
 
                                cout<<" idx fX fY fZ  fSigmaY2 fSigmaZ2 fCharge fQMax fPadRow" <<endl;
                                cout<< idxRow <<" "<< cl->GetX()<<" "<< cl->GetY()<<" "<< cl->GetZ()<<" "<< cl->GetSigmaY2()<<" "<< cl->GetSigmaZ2()<<" "<< cl->GetCharge()<<" "<< cl->GetQMax() <<" "<< cl->GetPadRow()<<endl;
                                
-                               AliTPCclusterMI* cl2 =seed->GetClusterPointer( cl->GetPadRow());
-      
+                               AliTPCclusterMI* cl2 = NULL; 
+      while(!cl2 && idxRow2<160){
+       cl2 = seed->GetClusterPointer(idxRow2++);
+      }
        if (cl2) {
          //cout<<" normalCl fX fY fZ fPadRow fSigmaY2 fSigmaZ2 fCharge fQMax" <<endl;
                                cout<< idxRow <<" "<< cl2->GetX()<<" "<< cl2->GetY()<<" "<< cl2->GetZ()<<" "<< cl2->GetSigmaY2()<<" "<< cl2->GetSigmaZ2()<<" "<< cl2->GetQ()<<" "<< cl2->GetMax()<<" "<< cl2->GetRow() <<endl<<endl;
index dfb6a6018905ff3b514ce3a435bdb522f3ada3ef..0c2455701b2f7b73b63cdfee3c161282d1186052 100755 (executable)
@@ -1,3 +1,23 @@
 #! /bin/bash
+if [ $# -lt 1 ]
+    then
+       file1="flat.dat"
+    else
+       file1=$1
+    fi
+if [ $# -lt 2 ]
+    then
+       file2="normal.dat"
+    else
+       file2=$2
+    fi
+if [ $# -lt 3 ]
+    then
+       verbose="kFALSE"
+    else
+       verbose=$3
+    fi
 
-aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/CompareFlatESDs.C++'("flat.dat","normal.dat")' | tee compare.out
+
+
+aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/CompareFlatESDs.C++'("'${file1}'","'${file2}'",'${verbose}')' | tee compare.out
diff --git a/HLT/global/fladevMacros/esdToFlat/command.sh b/HLT/global/fladevMacros/esdToFlat/command.sh
deleted file mode 100755 (executable)
index 29c478b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/bash
-
-aliroot -b - l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/FlatESDConverter.C++'("AliESDs.root",kTRUE,kTRUE)'
index 5e22ac08006ea5f25ccb49465c9150f5dd366d7b..ba280f675ed119cf6604f06b09fbd98d3ba00aea 100755 (executable)
@@ -1,19 +1,43 @@
 #! /bin/bash
 if [ $# -lt 1 ]
     then
-                       echo "please specify directory with input ESD data"
-                       exit
+       fileList=$PWD
     else
-                               fileList=$1
+       fileList=$1
+    fi
+if [ $# -lt 2 ]
+    then
+       useFriends=0
+    else
+       useFriends=$2
+    fi
+if [ $# -lt 3 ]
+    then
+       useHLTtree=1
+    else
+       useHLTtree=$3
+    fi
+if [ $# -lt 4 ]
+    then
+       verbose=0
+    else
+       verbose=$4
     fi
     
     iFile=1
 for file in ${fileList}*/AliESDs.root
 do
+  mkdir ${iFile}
   replace="AliESDfriends"
   fileFriends="${file/AliESDs/$replace}"
-  aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/FlatESDConverter.C++'("'${file}'", "'${fileFriends}'", "'${iFile}'.dat",kFALSE, kTRUE)' 2>&1| tee convert.log
-  cat ${iFile}.dat >> outFlatESD.dat
-  
+  aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/FlatESDConverter.C++'("'${file}'", "'${fileFriends}'", "'${iFile}'/out.dat",'${useFriends}', '${useHLTtree}','${verbose}')' 2>&1| tee convert.log -a
+  cat ${iFile}/out.dat >> outFlatESD.dat
+  mv syswatch.log ${iFile}/syswatch.log
+       if [ $iFile -eq 1 ]
+               then
+                       cp 1/syswatch.log syswatch_merged.log
+               else
+                       sed 1d $iFile/syswatch.log >> syswatch_merged.log
+       fi
   iFile=$((iFile+1))
 done
index a0ff5b375dfd4f86f3dd488edd4c11291e5db447..10c3af37bfe2dd1996dd0fa71b45e2a5a89a1759 100755 (executable)
@@ -1,8 +1,14 @@
 #! /bin/bash
 if [ $# -lt 1 ]
+    then
+                       verbose=0
+    else
+                               verbose=$1
+    fi
+if [ $# -lt 2 ]
     then
                        filename="outFlatESD.dat"
     else
-                               filename=$1
+                               filename=$2
     fi
-aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/ReadFlatESD.C++'("'${filename}'")' | tee readFlat.out
+aliroot -b -l -q $ALICE_ROOT/HLT/global/LoadLibs.C $ALICE_ROOT/HLT/global/ReadFlatESD.C++'("'${filename}'",'${verbose}')' | tee readFlat.out
diff --git a/HLT/global/fladevMacros/plot/createHistos.C b/HLT/global/fladevMacros/plot/createHistos.C
new file mode 100644 (file)
index 0000000..199f5f0
--- /dev/null
@@ -0,0 +1,370 @@
+TCanvas * c;
+
+
+void createHistos(bool single=true, bool combined = true, bool merged=true, int fromType=0, int toType=2){
+
+
+       c = new TCanvas();
+// 0 = raw->esd
+// 1 = raw->flat
+// 2= esd -> flat
+
+
+       TTree * t[4];
+
+
+       char*sname[4]={"DoEvent.Stop","DoEvent.Stop","DoEvent.Stop","DoEvent.Stop"};
+       char*conversion[4]={"rawToEsd","rawToFlat","HltEsdToFlat","NormalEsdToFlat"};
+       char *infolder="rawToHltEsd";
+       char *subfolder="";
+       Int_t outMax = 80;
+       Int_t inMax = 150;
+       Int_t timeMax = 20;
+
+
+// create histograms for different types of conversion 
+
+for(int type=fromType; type<=toType; ++type){
+
+       if(type==1){
+               timeMax=6;
+               outMax = 700;
+               inMax = 2000;
+               infolder = "rawToFlat";
+       }
+       else if(type==2){
+               timeMax = 1;
+               inMax =200;
+               infolder = "HltEsdToFlat";
+       }
+       else if(type==3){
+               timeMax = 1;
+               inMax =200;
+               infolder = "NormalEsdToFlat";
+       }
+
+
+       if(merged){
+               t[type] = AliSysInfo::MakeTree(Form("%s/syswatch_merged.log" , infolder) );
+               subfolder = "/merged";
+       }
+       else{
+               t[type] = AliSysInfo::MakeTree(Form("%s/syswatch.log" , infolder) );
+               subfolder = "/single";
+
+       }
+
+
+
+if (single){
+
+       cout<<"Creating plots for "<< infolder<<endl;
+
+       // Draw cpu, sys, cpu+sys time distribution
+
+       t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h(100,0,15)", Form("sname==\"%s\"", sname[type]) );
+       saveHist("cpuTimeUserDistribution",conversion[type] , infolder, subfolder, "cpu time (user)/event (ms)", "\#events","",kTRUE);
+
+       t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys)>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeSysDistribution",conversion[type] , infolder, subfolder, "cpu time (sys)/event (ms)", "\#events","",kTRUE);
+
+       t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys)>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserSysDistribution",conversion[type] , infolder, subfolder, "cpu time (user+sys)/event (ms)", "\#events","",kTRUE);
+
+
+
+       // Draw cpu, sys, cpu+sys time vs input size
+
+       //t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+
+
+       int scale = type==0? 1000:1;
+       t[type]->Draw( Form("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/%d>>h(100,0,%d,100,0,%d)", scale,inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (user)/event (ms)", "");
+
+       //t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw( Form("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1024/%d>>h(100,0,%d,100,0,%d)",scale,inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeSysVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (sys)/event (ms)","");
+
+       //t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw( Form("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1024/%d>>h(100,0,%d,100,0,%d)",scale, inMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserSysVsInputSize",conversion[type] , infolder, subfolder, "input size (kB)", "cpu time (user+sys)/event (ms)","");
+
+
+       // Draw cpu, sys, cpu+sys time vs output size
+
+       //t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw(Form("1000*(pI.fCpuUser-pIOld.fCpuUser):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (user)/event (ms)");
+       //t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw(Form("1000*(pI.fCpuSys-pIOld.fCpuSys):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeSysVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (sys)/event (ms)");
+
+       //t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id0/1000>>h(1000,0,120,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw(Form("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):id1/1024>>h(1000,0,%d,1000,0,%d)",outMax,timeMax) ,Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserSysVsOutSize",conversion[type] , infolder, subfolder, "output size (kB)", "cpu time (user+sys)/event (ms)");
+
+
+       // Draw cpu, sys, cpu+sys time vs timestamp
+
+       //t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (user)/event (ms)");
+
+       //t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeSysVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (sys)/event (ms)");
+
+       //t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):stampSec>>h(1000,1402524e3,1402534e3,1000,0,15)",Form("sname==\"%s\"", sname[type]));
+       t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):stampSec>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserSysVsTimestamp",conversion[type] , infolder, subfolder, "timestamp (s)", "cpu time (user+sys)/event (ms)");
+
+
+       // Draw cpu, sys, cpu+sys time vs time in event
+
+       t[type]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):T>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (user)/event (ms)");
+
+       t[type]->Draw("1000*(pI.fCpuSys-pIOld.fCpuSys):T>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeSysVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (sys)/event (ms)");
+
+       t[type]->Draw("1000*(pI.fCpuUser+pI.fCpuSys-pIOld.fCpuUser-pIOld.fCpuSys):T>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("cpuTimeUserSysVsT",conversion[type] , infolder, subfolder, "time in file (s)", "cpu time (user+sys)/event (ms)");
+
+       
+       // Draw input size distribution
+
+       t[type]->Draw("id0/1024>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("inputSize",conversion[type] , infolder, subfolder, "input size (kB)", "\#events","",kTRUE);
+
+
+       // Draw output size distribution
+
+       t[type]->Draw("id1/1024>>h()",Form("sname==\"%s\"", sname[type]));
+       saveHist("outputSize",conversion[type] , infolder, subfolder, "output size (kB)", "\#events","",kTRUE);
+
+
+       // Draw output vs input size
+
+       t[type]->Draw(Form("id1/1024/%d:id0/1024/%d>>h()",scale,scale),Form("sname==\"%s\"", sname[type]));
+       saveHist("OutVsIn",conversion[type] , infolder, subfolder, "input size (kB)", "output size (kB)","", kFALSE, kTRUE);
+
+}
+}
+
+
+// combined histo
+
+
+
+// draw time distribution for flat and esd in one histo
+if(combined){
+       cout<<"Creating combined plots"<<endl;
+
+       infolder = "combined";
+       subfolder = "";
+       char* legends[2] = {"ESD","flatESD"};
+       char* options[2] = {"",""};
+
+
+
+       t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h1(100,0,15)", Form("sname==\"%s\"", sname[0]) );
+       t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h2(100,0,15)", Form("sname==\"%s\"", sname[1]) );
+//     t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h1()", Form("sname==\"%s\"", sname[0]) );
+//     t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser)>>h2()", Form("sname==\"%s\"", sname[1]) );
+       save2Hists("cpuTimeUserDistribution","flatVsNormal" , infolder, subfolder, "cpu time (user)/event (ms)", "\#events",legends, options,kTRUE,1) ;
+
+       t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/1000>>h1(1000,0,2000,1000,0,16)", Form("sname==\"%s\"", sname[0]) );
+       t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024>>h2(1000,0,2000,1000,0,16)", Form("sname==\"%s\"", sname[1]) );
+       //t[0]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024/1000>>h1()", Form("sname==\"%s\"", sname[0]) );
+       //t[1]->Draw("1000*(pI.fCpuUser-pIOld.fCpuUser):id0/1024>>h2()", Form("sname==\"%s\"", sname[1]) );
+       save2Hists("cpuTimeUserVsInputSize","flatVsNormal" , infolder, subfolder, "input size (kB)", "cpu time (user)/event (ms)",legends, options,kFALSE,2);
+
+
+
+
+// loop over trees to get combined histos
+
+
+
+       TH2D*flatVsNormalCpuTime = new TH2D("flatVsNormalCpuTime", "cpu time: flat vs normal", 400,0,8,150,0,3);
+       TH2D*flatVsNormalInSize = new TH2D("flatVsNormalInSize", "input size: flat vs normal", 200,0,200,2000,0,2000);
+       TH2D*flatVsNormalOutSize = new TH2D("flatVsNormalOutSize", "output size: flat vs normal", 80,0,80,800,0,800);
+       Double_t cpuEsd , cpuOldEsd, cpuFlat, cpuOldFlat;
+       Int_t inputSizeEsd, inputSizeFlat,outputSizeEsd, outputSizeFlat;
+       char snameEsd[100]=".";
+       char snameFlat[100]=".";
+
+       t[0]->SetBranchAddress("pI.fCpuUser",&cpuEsd);
+       t[0]->SetBranchAddress("pIOld.fCpuUser",&cpuOldEsd);
+       t[0]->SetBranchAddress("sname",&snameEsd);
+       t[0]->SetBranchAddress("id0",&inputSizeEsd);
+       t[0]->SetBranchAddress("id1",&outputSizeEsd);
+
+       t[1]->SetBranchAddress("pI.fCpuUser",&cpuFlat);
+       t[1]->SetBranchAddress("pIOld.fCpuUser",&cpuOldFlat);
+       t[1]->SetBranchAddress("sname",&snameFlat);
+       t[1]->SetBranchAddress("id0",&inputSizeFlat);
+       t[1]->SetBranchAddress("id1",&outputSizeFlat);
+
+
+     t[0]->SetBranchStatus("*",0); //disable all branches
+     t[0]->SetBranchStatus("sname",1);
+     t[0]->SetBranchStatus("pI.fCpuUser",1);
+     t[0]->SetBranchStatus("pIOld.fCpuUser",1);
+     t[0]->SetBranchStatus("id0",1);
+     t[0]->SetBranchStatus("id1",1);
+
+     t[1]->SetBranchStatus("*",0); //disable all branches
+     t[1]->SetBranchStatus("sname",1);
+     t[1]->SetBranchStatus("pI.fCpuUser",1);
+     t[1]->SetBranchStatus("pIOld.fCpuUser",1);
+     t[1]->SetBranchStatus("id0",1);
+     t[1]->SetBranchStatus("id1",1);
+
+Int_t i2=0;
+
+// loop over timestamps in normalESD tree
+for (Int_t i1 = 0; i1 < t[0]->GetEntries()  ; i1++) {
+       
+       t[0]->GetEntry(i1);
+       if( strcmp(snameEsd,"DoEvent.Stop") == 0){
+               t[1]->GetEntry(i2++);
+               while(strcmp(snameFlat,"DoEvent.Stop") != 0 && i2 < t[1]->GetEntries()){
+                       t[1]->GetEntry(i2++);
+               }
+               if(i2 < t[1]->GetEntries()){
+//cout<<outputSizeEsd<<" "<<outputSizeFlat<<endl;
+                 flatVsNormalCpuTime->Fill( 1000*(cpuEsd-cpuOldEsd), 1000*(cpuFlat-cpuOldFlat) );
+                 flatVsNormalInSize->Fill( inputSizeEsd/1000/1024, inputSizeFlat/1024);
+                 flatVsNormalOutSize->Fill( outputSizeEsd/1000/1024, outputSizeFlat/1024);
+               }
+       }
+       
+}
+
+
+       saveHist(flatVsNormalCpuTime, infolder, subfolder, "cpu time ESD converter (ms)", "cpu time flatESD converter (ms)", "colz", kFALSE, kTRUE,kTRUE);
+       saveHist(flatVsNormalInSize, infolder, subfolder, "input size time ESD converter (kB)", "input size flatESD converter (kB)", "colz");
+       saveHist(flatVsNormalOutSize, infolder, subfolder, "output size ESD converter (kB)", "output size flatESD converter (kB)", "colz",kFALSE,kTRUE);
+delete flatVsNormalCpuTime;
+delete flatVsNormalInSize;
+delete flatVsNormalOutSize;
+
+}
+return;
+}
+
+void saveHist(TH1*h, char*infolder, char*subfolder, char*x="",char*y="",char*options="", Bool_t log=kFALSE, Bool_t fit = kFALSE, Bool_t xy=kFALSE){
+       TCanvas *c = new TCanvas();
+       if(log){
+               c->SetLogy();
+       }
+       h->GetXaxis()->SetTitle(x);
+       h->GetYaxis()->SetTitle(y);
+       h->SetStats(0);
+               h->SetMarkerStyle(6);
+       h->Draw(options);
+       //c->SaveAs( Form("%s%s/%s.png", infolder, subfolder, h->GetName()) );
+       //c->SaveAs( Form("%s%s/%s.root", infolder, subfolder, h->GetName()) );
+       if(fit){
+
+        TF1 *linear = new TF1("linear","pol2(0)", 0,2000);
+
+        linear->SetParameters(0.5,0.2);
+        linear->SetLineColor(kRed);
+        linear->SetLineWidth(2);
+               h->Fit(linear);
+
+       }
+       if(xy){
+
+        TF1 *linear = new TF1("lin","x",0,8);
+        linear->SetLineColor(kRed);
+        linear->SetLineWidth(2);
+               linear->Draw("same");
+
+       }
+       c->SaveAs( Form("%s%s/%s_fit.png", infolder, subfolder, h->GetName()) );
+       c->SaveAs( Form("%s%s/%s_fit.root", infolder, subfolder, h->GetName()) );
+}
+
+
+
+
+
+void saveHist(char* name, char* type, char*infolder, char*subfolder, char*x="",char*y="", char*options="", Bool_t log=kFALSE, Bool_t fit = kFALSE){
+       TCanvas *c = new TCanvas();
+       if(log){
+               c->SetLogy();
+       }
+       TH1* h = (TH1*)gDirectory->Get("h");
+       cout<<name<<" mean: "<< h->GetMean()<<endl;
+       h->SetTitle(Form("%s_%s", name, type) );
+       h->GetXaxis()->SetTitle(x);
+       h->GetYaxis()->SetTitle(y);
+       h->SetStats(0);
+       //h->SetMarkerStyle(6);
+       h->Draw(options);
+       if(fit){
+
+        TF1 *linear = new TF1("linear","pol2(0)", 0,2000);
+
+        linear->SetParameters(0.5,0.2);
+        linear->SetLineColor(kRed);
+        linear->SetLineWidth(2);
+               h->Fit(linear);
+
+       }
+
+
+       c->SaveAs( Form("%s%s/%s_%s.png", infolder, subfolder, name, type) );
+       c->SaveAs( Form("%s%s/%s_%s.root", infolder, subfolder, name, type) );
+       gDirectory->DeleteAll();
+}
+
+
+void save2Hists(char* name, char* infolder, char*subfolder, char*x="",char*y="", char**legends =0x0, char**options=0x0,  Bool_t log=kFALSE, Int_t dim=1){
+       TCanvas *c = new TCanvas();
+       if(log){
+               c->SetLogy();
+       }
+       TH1* h1 = (TH1*)gDirectory->Get("h1");
+       TH1* h2 = (TH1*)gDirectory->Get("h2");
+
+       if(dim==1){
+               h1->SetFillColor(kRed);
+               h2->SetFillColor(kBlue);
+       }
+       else if(dim==2){
+               h1->SetMarkerColor(kRed);
+               h2->SetMarkerColor(kBlue);
+               h1->SetMarkerStyle(6);
+               h2->SetMarkerStyle(6);
+       }
+
+       h1->SetTitle(Form("%s_%s", name, type) );
+       h1->GetXaxis()->SetTitle(x);
+       h1->GetYaxis()->SetTitle(y);
+       h1->SetStats(0);
+       h1->Draw();
+       h2->Draw("same");
+    TLegend* l=new TLegend(.58,0.68,.88,0.85);
+       l->SetFillColor(0);
+       l->SetBorderSize(0);
+
+       if(dim==1){
+               l->AddEntry(h1, legends[0], "f");
+               l->AddEntry(h2, legends[1],"f");
+       }
+       else if(dim==2){
+               l->AddEntry(h1, legends[0],"p");
+               l->AddEntry(h2, legends[1],"p");
+       }
+
+       l->Draw("same");
+       c->SaveAs( Form("%s%s/%s_%s.png", infolder, subfolder, name, type) );
+       c->SaveAs( Form("%s%s/%s_%s.root", infolder, subfolder, name,type) );
+       gDirectory->DeleteAll();
+       delete l;
+}
diff --git a/HLT/global/fladevMacros/plot/showHistos.C b/HLT/global/fladevMacros/plot/showHistos.C
deleted file mode 100644 (file)
index 335412f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-THnSparseD *s;
-
-
-void showHistos(const char * fn="histosBenchmark.root" ){
-  
-  
-  TFile * file = TFile::Open(fn);
-  s = (THnSparseD*)file->Get("benchmarkInformation");
-  
-  
-  if(!s){
-       cout<<"Cannot open THnSparse!"<<endl;
-       return;
-  }
-  
-    s->GetAxis(1)->SetRange(1,160);
-    s->GetAxis(2)->SetRange(1,600);
-    s->GetAxis(3)->SetRange(1,350);
-    s->GetAxis(5)->SetRange(1,400);
-  
-  createHisto(3,6,"realTimeVsTime");
-  createHisto(3,1,"realTimeVsSize","col");
-  createHisto(3,5,"realTimeVsnTracks","col");
-  createHisto(3,2,"realTimeVsOutsize","col");
-  createHisto(3,7,"realTimeVsV0s","col");
-  createHisto(2,1,"outVsIn","col");
-  createHisto(1,5,"sizeVsnTracks","col");
-  
-
-    s->GetAxis(7)->SetRange(2,10);
-  
-    TH2D * realTimeVsSizeV0s = s->Projection(3,1);
-    TCanvas *c = new TCanvas("benchmarks","benchmarks",500,400);
-       realTimeVsSizeV0s->SetStats(0);
-       realTimeVsSizeV0s->Draw("col");
-       c->SaveAs("realTimeVsSizeV0s.pdf");
-       c->SaveAs("realTimeVsSizeV0s.root");
-
-  
-}
-
-void createHisto( Int_t a1, Int_t a2, const char* name,const char* opt=""){
-  
-       TH2D*h=s->Projection(a1,a2);
-  
-    TCanvas *c = new TCanvas("benchmarks","benchmarks",500,400);
-       h->SetStats(0);
-       h->Draw(opt);
-       c->SaveAs( Form("%s.pdf", name ) );
-       c->SaveAs( Form("%s.root", name ));
-       delete c;
-}
\ No newline at end of file
index b8e30f9a89258f330ee7f8959f784570e862371b..b376bc861d859bb23e0a541a2169e0b359f00604 100755 (executable)
@@ -20,7 +20,7 @@ if [ $# -lt 3 ]
     fi
 if [ $# -lt 4 ]
     then
-        ocdb="local://$OCDB10"
+        ocdb="local://$OCDB10local"
     else
                                ocdb=$4
     fi
@@ -45,19 +45,25 @@ do
   #  dir=${dir%*/}
   #  echo ${dir##*/}
   echo "Now processing ${file}"
-  rm galice.root
   mkdir ${iFile}
   
   if [ $config = "flat" ]
        then
          echo "using flat ESD converter"
          aliroot -q -b ../config_Flat.C'("'${iFile}'","'${ouputfileName}'")' $ALICE_ROOT/HLT/exa/recraw-local.C'("'${file}'","'${ocdb}'", '${start}', '${end}', "HLT", "chains=RootWriter  ignore-hltout")' 2>&1|tee recraw-local.log -a
-         cat ${iFile}/* >> outFlatESD.dat
+         cat ${iFile}/*.dat >> outFlatESD.dat
        else
          echo "using normal ESD converter"
          aliroot -b -q -l $ALICE_ROOT/HLT/exa/recraw-local.C'("'${file}'","'${ocdb}'", '${start}', '${end}', "HLT","chains=GLOBAL-esd-converter ignore-hltout")' 2>&1|tee recraw-local.log -a
          mv AliESD* ${iFile}/
        fi
-  
+       mv syswatch.log ${iFile}/syswatch.log 
+       if [ $iFile -eq 1 ]
+               then
+                       cp 1/syswatch.log syswatch_merged.log
+               else
+                       sed 1d $iFile/syswatch.log >> syswatch_merged.log
+               fi
+       mv *.root ${iFile}/
   iFile=$((iFile+1))
 done
diff --git a/HLT/global/fladevMacros/rawToFlat/command_single.sh b/HLT/global/fladevMacros/rawToFlat/command_single.sh
deleted file mode 100755 (executable)
index 8aed890..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-#! /bin/bash
-if [ $# -lt 1 ]
-    then
-                       inputFileName="raw.root"
-    else
-                               inputFileName=$1
-    fi
-if [ $# -lt 2 ]
-    then
-                       outputDirectory="outFlat"
-    else
-                               outputDirectory=$2
-    fi
-if [ $# -lt 3 ]
-    then
-                       ouputfileName="outFlatHLT.dat"
-    else
-                               ouputfileName=$3
-    fi
-if [ $# -lt 4 ]
-    then
-        ocdb="local://$OCDB10"
-    else
-                               ocdb=$4
-    fi
-if [ $# -lt 5 ]
-    then
-        start=-1
-    else
-                               start=$5
-    fi
-if [ $# -lt 6 ]
-    then
-        end=-1
-    else
-                               end=$6
-    fi
-
-aliroot ../createHistos.C -q
-
-aliroot -q -b ../config_Flat.C'("'${outputDirectory}'", "'${outputFileName}'" )' $ALICE_ROOT/HLT/exa/recraw-local.C'("'${inputFileName}'","'${ocdb}'", '${start}', '${end}', "HLT", "chains=RootWriter  ignore-hltout")' |tee output.out -a
-
-printf "now merging files"
-cat ${outputDirectory}/* > outFlatESD.dat
index 5eeb8a86dcc719200a0417cf35b8a80963312b9d..cc49402c4d4541f75e92a17628bba55474d01c80 100644 (file)
@@ -1,5 +1,7 @@
 void config_Flat( TString directory="outFlat", TString fileName="outFlatHLT.dat")
 {
+
+  cout<<"Now entering config_Flat"<<endl;
   // set up HLT system to enable configuration registration
   AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();
 
diff --git a/HLT/global/fladevMacros/rawToFlat/createHistos.C b/HLT/global/fladevMacros/rawToFlat/createHistos.C
deleted file mode 100644 (file)
index 865ed36..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-void createHistos(){
-  
-       TString outputFilename = "$PWD/histosBenchmark.root";
-       
-       static const Int_t n=8;
-       
-       TString axes[n] = {"nEvents",   "inputSize(kB)",        "outputSize(kB)",       "realTime(ms)",         "cpuTime(ms)",  "nTracks",      "timestamp (s)",        "nV0s" };
-       Int_t bins[n]   = {100,                 200,                            1000,                           600,                            1000,                   200,            1000,                           10};
-       Double_t mins[n]= {0.,                  0.,                             0.,                             0.,                                     0.,                             0.,                     0.,                                     0.};
-       Double_t maxs[n]= {100.,                200.,                           1000.,                          6.,                                     10.,                    200.,           10000,                          10.};
-       
-       THnSparseD * s = new THnSparseD("benchmarkInformation", "Benchmark information", n, bins, mins, maxs);
-       
-       for(int i=0; i<n;++i){
-               s->GetAxis(i)->SetName(axes[i]);
-               s->GetAxis(i)->SetTitle(axes[i]);
-       }
-       
-       
-       TTimeStamp ts;
-       Int_t t = (Int_t) ts.GetSec() ;
-       TNamed *time = new TNamed("time",Form("%d",t));
-       
-       
-       TList histosList;
-       histosList.Add(s);
-       histosList.Add(time);
-       
- // TH2F* hCpuTimeVsSize;
- // TH2F* hRealTimeVsSize;
- // TH2F* hCpuTimeVsTracks;
- // TH2F* hRealTimeVsTracks;
-  
-  
-//     hCpuTimeVsSize = new TH2F("cpuTimeVsSize","cpu time vs. size", 1000,0,200, 1100,0,11);
-//     hRealTimeVsSize = new TH2F("realTimeVsSize","real time vs. size", 1000,0,200, 1000,0,10);
-//     hCpuTimeVsTracks = new TH2F("cpuTimeVsTracks","cpu time vs. number of tracks", 200,0,200, 1100,0,11);
-//     hRealTimeVsTracks = new TH2F("realTimeVsTracks","real time vs. number of tracks", 200,0,200, 1000,0,10);
-
-//     histosList.Add(hCpuTimeVsSize);
-//     histosList.Add(hRealTimeVsSize);
-//     histosList.Add(hCpuTimeVsTracks);
-//     histosList.Add(hRealTimeVsTracks);
-       histosList.SaveAs(outputFilename);
-       
-       
-       
-       
-       
-}
diff --git a/HLT/global/fladevMacros/rawToHltEsd/command.sh b/HLT/global/fladevMacros/rawToHltEsd/command.sh
deleted file mode 100755 (executable)
index 4dc8bf1..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#! /bin/bash
-
-aliroot -b -q -l $ALICE_ROOT/HLT/exa/recraw-local.C'("raw.root","local://$OCDB10",-1,-1,"HLT","chains=GLOBAL-esd-converter ignore-hltout")' 2>&1|tee recraw-local.log
-
index b8e30f9a89258f330ee7f8959f784570e862371b..b376bc861d859bb23e0a541a2169e0b359f00604 100755 (executable)
@@ -20,7 +20,7 @@ if [ $# -lt 3 ]
     fi
 if [ $# -lt 4 ]
     then
-        ocdb="local://$OCDB10"
+        ocdb="local://$OCDB10local"
     else
                                ocdb=$4
     fi
@@ -45,19 +45,25 @@ do
   #  dir=${dir%*/}
   #  echo ${dir##*/}
   echo "Now processing ${file}"
-  rm galice.root
   mkdir ${iFile}
   
   if [ $config = "flat" ]
        then
          echo "using flat ESD converter"
          aliroot -q -b ../config_Flat.C'("'${iFile}'","'${ouputfileName}'")' $ALICE_ROOT/HLT/exa/recraw-local.C'("'${file}'","'${ocdb}'", '${start}', '${end}', "HLT", "chains=RootWriter  ignore-hltout")' 2>&1|tee recraw-local.log -a
-         cat ${iFile}/* >> outFlatESD.dat
+         cat ${iFile}/*.dat >> outFlatESD.dat
        else
          echo "using normal ESD converter"
          aliroot -b -q -l $ALICE_ROOT/HLT/exa/recraw-local.C'("'${file}'","'${ocdb}'", '${start}', '${end}', "HLT","chains=GLOBAL-esd-converter ignore-hltout")' 2>&1|tee recraw-local.log -a
          mv AliESD* ${iFile}/
        fi
-  
+       mv syswatch.log ${iFile}/syswatch.log 
+       if [ $iFile -eq 1 ]
+               then
+                       cp 1/syswatch.log syswatch_merged.log
+               else
+                       sed 1d $iFile/syswatch.log >> syswatch_merged.log
+               fi
+       mv *.root ${iFile}/
   iFile=$((iFile+1))
 done
diff --git a/HLT/global/fladevMacros/rawToHltEsd/createHistos.C b/HLT/global/fladevMacros/rawToHltEsd/createHistos.C
deleted file mode 100644 (file)
index d3495a5..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-void createHistos(){
-  
-       TString outputFilename = "$PWD/histosBenchmark.root";
-       
-       static const Int_t n=8;
-       
-       TString axes[n] = {"nEvents",   "inputSize(kB)",        "outputSize(kB)",       "realTime(ms)",         "cpuTime(ms)",  "nTracks",      "timestamp (s)",        "nV0s" };
-       Int_t bins[n]   = {100,                 200,                            200,                            2000,                           1000,                   200,            1600,                           10};
-       Double_t mins[n]= {0.,                  0.,                             0.,                             0.,                                     0.,                             0.,                     0.,                                     0.};
-       Double_t maxs[n]= {100.,                200.,                           200.,                           20.,                            10.,                    200.,           16000,                          10.};
-       
-       THnSparseD * s = new THnSparseD("benchmarkInformation", "Benchmark information", n, bins, mins, maxs);
-       
-       for(int i=0; i<n;++i){
-               s->GetAxis(i)->SetName(axes[i]);
-               s->GetAxis(i)->SetTitle(axes[i]);
-       }
-       
-       
-       TTimeStamp ts;
-       Int_t t = (Int_t) ts.GetSec() ;
-       TNamed *time = new TNamed("time",Form("%d",t));
-       
-       
-       TList histosList;
-       histosList.Add(s);
-       histosList.Add(time);
-       
- // TH2F* hCpuTimeVsSize;
- // TH2F* hRealTimeVsSize;
- // TH2F* hCpuTimeVsTracks;
- // TH2F* hRealTimeVsTracks;
-  
-  
-//     hCpuTimeVsSize = new TH2F("cpuTimeVsSize","cpu time vs. size", 1000,0,200, 1100,0,11);
-//     hRealTimeVsSize = new TH2F("realTimeVsSize","real time vs. size", 1000,0,200, 1000,0,10);
-//     hCpuTimeVsTracks = new TH2F("cpuTimeVsTracks","cpu time vs. number of tracks", 200,0,200, 1100,0,11);
-//     hRealTimeVsTracks = new TH2F("realTimeVsTracks","real time vs. number of tracks", 200,0,200, 1000,0,10);
-
-//     histosList.Add(hCpuTimeVsSize);
-//     histosList.Add(hRealTimeVsSize);
-//     histosList.Add(hCpuTimeVsTracks);
-//     histosList.Add(hRealTimeVsTracks);
-       histosList.SaveAs(outputFilename);
-       
-       
-       
-       
-       
-}
diff --git a/HLT/global/fladevMacros/rawToNormalEsd/command_list.sh b/HLT/global/fladevMacros/rawToNormalEsd/command_list.sh
new file mode 100755 (executable)
index 0000000..b162606
--- /dev/null
@@ -0,0 +1,31 @@
+#! /bin/bash
+if [ $# -lt 1 ]
+    then
+                       echo "please specify directory with input raw data"
+                       exit
+    else
+                               fileList=$1
+    fi
+iFile=1
+
+for file in ${fileList}*/raw.root
+do
+  #  dir=${dir%*/}
+  #  echo ${dir##*/}
+  echo "Now processing ${file}"
+  mkdir ${iFile}
+
+        echo "using normal ESD converter"
+        aliroot -b -q ../rec.C'("'${file}'")' 2>&1|tee rec.log -a
+        mv *.root ${iFile}/
+
+
+       mv syswatch.log ${iFile}/syswatch.log 
+       if [ $iFile -eq 1 ]
+               then
+                       cp 1/syswatch.log syswatch_merged.log
+               else
+                       sed 1d $iFile/syswatch.log >> syswatch_merged.log
+               fi
+  iFile=$((iFile+1))
+done
diff --git a/HLT/global/fladevMacros/rawToNormalEsd/rec.C b/HLT/global/fladevMacros/rawToNormalEsd/rec.C
new file mode 100644 (file)
index 0000000..d421355
--- /dev/null
@@ -0,0 +1,97 @@
+void rec(char* input = "raw.root") {
+  AliReconstruction reco;
+
+       reco.SetInput(input);
+  reco.SetWriteESDfriend();
+  reco.SetWriteAlignmentData();
+  reco.SetFractionFriends(1.0);
+
+  reco.SetRunReconstruction("ITS TPC HLT");
+
+  
+//reco.SetDefaultStorage("local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/data/2010/OCDB");
+  reco.SetDefaultStorage("local:///home/steffen/ALICE/ocdb10");
+
+  // -------------------------------------------------------
+
+  // ITS (2 objects)
+  reco.SetSpecificStorage("ITS/Align/Data",          "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("ITS/Calib/SPDSparseDead", "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");  
+
+  // MUON (1 object)
+  reco.SetSpecificStorage("MUON/Align/Data",         "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+
+  // TPC (24 objects)
+  reco.SetSpecificStorage("TPC/Align/Data",          "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/PadTime0",      "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/ClusterParam",  "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Pedestals",     "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Parameters",    "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/ExB",           "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Mapping",       "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/PadNoise",      "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/PadGainFactor", "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Temperature",   "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/RecoParam",     "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/TimeGain",      "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/AltroConfig",   "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/CE",            "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Pulser",        "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Distortion",    "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Ref",           "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Raw",           "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/QA",            "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/TimeDrift",     "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Goofie",        "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/HighVoltage",   "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/LaserTracks",   "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual");
+  reco.SetSpecificStorage("TPC/Calib/Correction",    "local:///home/steffen/gsi/cvmfs/alice.gsi.de/alice/simulation/2008/v4-15-Release/Residual"); 
+
+  /*
+  // TPC
+  //  reco.SetSpecificStorage("TPC/Calib/GainFactorDedx", "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/PadTime0",       "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Pedestals",      "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Mapping",        "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/PadNoise",       "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/PadGainFactor",  "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/CE",             "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Pulser",         "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Distortion",     "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Ref",            "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Raw",            "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/QA",             "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/Goofie",         "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/HighVoltage",    "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  //  reco.SetSpecificStorage("TPC/Calib/LaserTracks",    "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+
+  // maybe from RAW
+  reco.SetSpecificStorage("TPC/Calib/AltroConfig",    "local:///lustre/alice/alien/alice/simulation/2008/v4-15-Release/Ideal/");
+  */
+
+  // -------------------------------------------------------
+  
+  reco.SetRunPlaneEff(kTRUE);
+  //  reco.SetRecoParam("ZDC",AliZDCRecoParamPbPb::GetHighFluxParam(2760));
+
+  reco.SetRunQA(":") ;
+  
+  // -------------------------------------------------------
+
+Bool_t useHLT= kTRUE;
+
+  if (useHLT)  
+    reco.SetOption("TPC", "useHLT");
+  else
+    reco.SetOption("TPC", "useRAW");
+
+  // -------------------------------------------------------
+
+  TStopwatch timer;
+  timer.Start();
+
+  reco.Run();
+
+  timer.Stop();
+  timer.Print();
+}