Kenneth: New macro to test the vertexer component.
authorkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Nov 2009 13:24:18 +0000 (13:24 +0000)
committerkaamodt <kaamodt@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 2 Nov 2009 13:24:18 +0000 (13:24 +0000)
HLT/global/macros/rec-vertexer.C [new file with mode: 0644]

diff --git a/HLT/global/macros/rec-vertexer.C b/HLT/global/macros/rec-vertexer.C
new file mode 100644 (file)
index 0000000..84630a5
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ * Example macro to run the HLT vertexer embedded
+ * into AliRoot reconstruction. The reconstruction is done from the raw data.
+ *
+ * Usage:
+ * <pre>
+ *   aliroot -b -q rec-vertexer.C | tee rec-vertexer.log
+ * </pre>
+ *
+ * The chain to be run is defined by the macro given to the parameter
+ * 'config='
+ *
+ * The macro asumes raw data to be available in the rawx folders, either
+ * simulated or real data. A different input can be specified as parameter
+ * <pre>
+ *   aliroot -b -q rec-vertexer.C'("input.root")'
+ * </pre>
+ *
+ * AliHLTTPCDigitReader32Bit is used to read the data
+ *
+ * In the first section, an analysis chain is defined. The scale of the
+ * chain can be defined by choosing the range of sectors and partitions.
+ *
+ * The reconstruction is steered by the AliReconstruction object in the
+ * usual way.
+ *
+ * @ingroup alihlt_global
+ * @author 
+ */
+void rec_vertexer(const char* input="./")
+{
+  
+  if(!gSystem->AccessPathName("galice.root")){
+    cerr << "please delete the galice.root or run at different place." << endl;
+    return;
+  }
+
+  if (!input) {
+    cerr << "please specify input or run without arguments" << endl;
+    return;
+  }
+
+  ///////////////////////////////////////////////////////////////////////////////////////////////////
+  //
+  // init the HLT system in order to define the analysis chain below
+  //
+  AliHLTSystem* gHLT=AliHLTPluginBase::GetInstance();
+  TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so libAliHLTGlobal.so loglevel=0x7c chains=";
+  ///////////////////////////////////////////////////////////////////////////////////////////////////
+  //
+  // define the analysis chain to be run
+  //
+  int iMinSlice=0;
+  int iMaxSlice=35;
+  int iMinPart=0;
+  int iMaxPart=5;
+  TString writerInput;
+  TString mergerInput;
+  TString histoInput;
+  TString histogramHandlerInputClusterFinder;
+  TString cdumpInput;
+  for (int slice=iMinSlice; slice<=iMaxSlice; slice++) {
+    TString trackerInput;
+    for (int part=iMinPart; part<=iMaxPart; part++) {
+      TString arg, publisher, cf;
+      TString clusterHistoOutput;
+      // raw data publisher components
+      int ddlno=768;
+      if (part>1) ddlno+=72+4*slice+(part-2);
+      else ddlno+=2*slice+part;
+      arg.Form("-minid %d -datatype 'DDL_RAW ' 'TPC '  -dataspec 0x%02x%02x%02x%02x -verbose", ddlno, slice, slice, part, part);
+      publisher.Form("DP_%02d_%d", slice, part);
+      new AliHLTConfiguration(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());
+
+      // cluster finder components
+      cf.Form("CF_%02d_%d", slice, part);
+      new AliHLTConfiguration(cf.Data(), "TPCClusterFinder32Bit", publisher.Data(), "-solenoidBz -5");
+
+      if (trackerInput.Length()>0) trackerInput+=" ";
+      trackerInput+=cf;
+      if (writerInput.Length()>0) writerInput+=" ";
+      writerInput+=cf;
+      if (histoInput.Length()>0) histoInput+=" ";
+      histoInput+=cf;
+      if (cdumpInput.Length()>0) cdumpInput+=" ";
+      cdumpInput+=cf;
+    }
+    TString tracker;
+    // tracker components
+    tracker.Form("TR_%02d", slice);
+    new AliHLTConfiguration(tracker.Data(), "TPCCATracker", trackerInput.Data(), "");
+
+    if (writerInput.Length()>0) writerInput+=" ";
+    writerInput+=tracker;
+    if (mergerInput.Length()>0) mergerInput+=" ";
+    mergerInput+=tracker;
+    //add all slice tracks to histo input
+    //if (histoInput.Length()>0) histoInput+=" ";
+    //histoInput+=tracker;
+  }
+
+  // GlobalMerger component
+    new AliHLTConfiguration("globalmerger","TPCCAGlobalMerger",mergerInput.Data(),"");
+  
+    //add all global tracks to histo input
+  if (histoInput.Length()>0) histoInput+=" ";
+  histoInput+="globalmerger";
+  
+  // specify whether to write all blocks separately or merge the tracks
+  // and convert to ESD
+  bool writeBlocks=false;
+
+  // the esd converter configuration
+  new AliHLTConfiguration("esd-converter", "GlobalEsdConverter"   , "globalmerger", "-fitTracksToVertex 1");
+  
+  new AliHLTConfiguration("global-vertexer", "GlobalVertexer"   , "esd-converter", "");
+  
+  new AliHLTConfiguration("v0HistoOut", "V0Histo"   , "global-vertexer", "");
+
+  new AliHLTConfiguration("GVhistorootfile", "ROOTFileWriter", "global-vertexer" , "-datafile GVv0Histograms -concatenate-events -overwrite");
+  
+  new AliHLTConfiguration("v0historootfile", "ROOTFileWriter", "v0HistoOut" , "-datafile v0Histograms -concatenate-events -overwrite");
+
+  option+="v0historootfile";
+
+  option+=",GVhistorootfile";
+
+  ///////////////////////////////////////////////////////////////////////////////////////////////////
+  //
+  // Init and run the reconstruction
+  // All but HLT reconstructio is switched off
+  //
+  AliReconstruction rec;
+
+
+  rec.SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+  // rec.SetDefaultStorage("local://$HOME/HCDB"); 
+  //rec.SetSpecificStorage("GRP/GRP/Data",
+  //                    Form("local://%s",gSystem->pwd()));
+
+  //  rec.SetSpecificStorage("GRP/GRP/Data","local:///opt/HLT-public/OCDB/LHC09c");
+  //  rec.SetSpecificStorage("GRP/CTP/Config","local:///opt/HLT-public/OCDB/LHC09c");
+  //  rec.SetSpecificStorage("GRP/CTP/Config", "local:///opt/HLT-public/rec/LHC09c/");
+
+  rec.SetInput(input);
+  rec.SetRunVertexFinder(kFALSE);
+  rec.SetRunReconstruction("HLT");  //add TPC for comparison
+  rec.SetLoadAlignFromCDB(0);
+  rec.SetRunQA(":");
+  rec.SetOption("HLT",option);
+  // switch off cleanESD
+  rec.SetCleanESD(kFALSE);
+  //  rec.SetEventRange(0, 100);
+  rec.Run();
+}