ROOT logo
// $Id: rec-hlt-tpc.C 36001 2009-10-26 17:08:56Z kaamodt $
/*
 * Example macro to run the HLT Conformal mapping tracker embedded into
 * AliRoot reconstruction. The reconstruction is done from the TPC raw
 * data.
 *
 * Usage:
 * <pre>
 *   rm galice.root & aliroot -b -q hwcfCheck.C | tee rec-hlt-tpc.log
 *   rm galice.root & aliroot -b -q hwcfCheck.C'("./")' | tee rec-hlt-tpc.log
 * </pre>
 *
 * 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>
 *   rm galice.root & aliroot -b -q hwcfCheck.C'("./")'
 * </pre>
 *
 * @ingroup alihlt_tpc
 * @author Matthias.Richter@ift.uib.no
 */

TString GetFileList( char *basedir, char *filename )
{
  TString s = "";
  int evnt=0;
  do{
    TString dir;
    dir.Form("%sraw%d",basedir,evnt);
    if( gSystem->AccessPathName(dir.Data()) ) break;
    TString add;
    add.Form(" -datafile %s/%s", dir.Data(), filename);
    if( evnt>0 ) s+=" -nextevent";
    s+=add;
    evnt++;
  }while(1);
  return s;
}

void hwcfCheck(const char* basedir="./")
{
  
  if(!gSystem->AccessPathName("galice.root")){
    cerr << "please delete the galice.root or run at different place." << endl;
    return;
  }

  if (!basedir) {
    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();
 
  ///////////////////////////////////////////////////////////////////////////////////////////////////
  //
  // Setting up which output to give
  //
  int clusterFinderType=0; // 0 = v3; 1 = decoder; 2 = packed (offline v1)
  bool bUseCA=true;   // use the CA tracker and merger
  TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so loglevel=0x7c chains=";

  ///////////////////////////////////////////////////////////////////////////////////////////////////
  //
  // define the analysis chain to be run
  //
  int iMinSlice=0;
  int iMaxSlice=0;
  int iMinPart=0;
  int iMaxPart=0;
  TString clusters;
  for (int slice=iMinSlice; slice<=iMaxSlice; slice++) {    
    for (int part=iMinPart; part<=iMaxPart; part++) {
 
      int ddlno=768;
      if (part>1) ddlno+=72+4*slice+(part-2);
      else ddlno+=2*slice+part;     
 
      // raw data publisher 
      
      TString arg, publisher, cf, publisherHW;

      arg.Form("-minid %d -datatype 'DDL_RAW ' 'TPC '  -dataspec 0x%02x%02x%02x%02x", ddlno, slice, slice, part, part);
      publisher.Form("DP_%02d_%d", slice, part);
      AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());
            

      // FPGA cluster finder emulator

      cf.Form("CF_%02d_%d", slice, part);
      AliHLTConfiguration cfconf(cf.Data(), "TPCHWClusterFinderEmulator", publisher.Data(), "");
            
      if(clusters.Length()>0) clusters+=" ";
      clusters+=cf;
      
      TString fname;
      fname.Form("HWCF_%d.ddl",ddlno);
      TString flist = GetFileList(basedir,fname.Data());

      cout<<"\n\nFileList for FPGA ddl "<<ddlno<<":"<<endl;
      cout<<flist.Data()<<endl;
      cout<<endl;

      arg.Form("-datatype 'HWCLUST1' 'TPC ' %s -dataspec 0x%02x%02x%02x%02x", flist.Data(), slice, slice, part, part);

      publisherHW.Form("DPHW_%02d_%d", slice, part);
      AliHLTConfiguration pubconf(publisherHW.Data(), "FilePublisher", "", arg.Data());
          
      if(clusters.Length()>0) clusters+=" ";
      clusters+=publisherHW;
    }
  }

  
  AliHLTConfiguration pubconf("ConsistencyControl", "TPCHWCFConsistenyControl", clusters.Data(), "");
  
  option+="ConsistencyControl";


  ///////////////////////////////////////////////////////////////////////////////////////////////////
  //
  // Init and run the reconstruction
  // All but HLT reconstructio is switched off
  //
  AliReconstruction rec;
  rec.SetInput(basedir);
  rec.SetRunVertexFinder(0);
  rec.SetRunVertexFinder(0);
  rec.SetRunVertexFinderTracks(0);
  rec.SetRunCascadeFinder(0);
  rec.SetRunMultFinder(0);
  rec.SetRunReconstruction("HLT");
  rec.SetLoadAlignFromCDB(0);
  rec.SetRunQA(":");
  rec.SetDefaultStorage("local://$ALICE_ROOT/OCDB");   
  rec.SetSpecificStorage("GRP/GRP/Data", Form("local://%s",gSystem->pwd()));
  rec.SetOption("HLT", option);
  rec.Run();
}
 hwcfCheck.C:1
 hwcfCheck.C:2
 hwcfCheck.C:3
 hwcfCheck.C:4
 hwcfCheck.C:5
 hwcfCheck.C:6
 hwcfCheck.C:7
 hwcfCheck.C:8
 hwcfCheck.C:9
 hwcfCheck.C:10
 hwcfCheck.C:11
 hwcfCheck.C:12
 hwcfCheck.C:13
 hwcfCheck.C:14
 hwcfCheck.C:15
 hwcfCheck.C:16
 hwcfCheck.C:17
 hwcfCheck.C:18
 hwcfCheck.C:19
 hwcfCheck.C:20
 hwcfCheck.C:21
 hwcfCheck.C:22
 hwcfCheck.C:23
 hwcfCheck.C:24
 hwcfCheck.C:25
 hwcfCheck.C:26
 hwcfCheck.C:27
 hwcfCheck.C:28
 hwcfCheck.C:29
 hwcfCheck.C:30
 hwcfCheck.C:31
 hwcfCheck.C:32
 hwcfCheck.C:33
 hwcfCheck.C:34
 hwcfCheck.C:35
 hwcfCheck.C:36
 hwcfCheck.C:37
 hwcfCheck.C:38
 hwcfCheck.C:39
 hwcfCheck.C:40
 hwcfCheck.C:41
 hwcfCheck.C:42
 hwcfCheck.C:43
 hwcfCheck.C:44
 hwcfCheck.C:45
 hwcfCheck.C:46
 hwcfCheck.C:47
 hwcfCheck.C:48
 hwcfCheck.C:49
 hwcfCheck.C:50
 hwcfCheck.C:51
 hwcfCheck.C:52
 hwcfCheck.C:53
 hwcfCheck.C:54
 hwcfCheck.C:55
 hwcfCheck.C:56
 hwcfCheck.C:57
 hwcfCheck.C:58
 hwcfCheck.C:59
 hwcfCheck.C:60
 hwcfCheck.C:61
 hwcfCheck.C:62
 hwcfCheck.C:63
 hwcfCheck.C:64
 hwcfCheck.C:65
 hwcfCheck.C:66
 hwcfCheck.C:67
 hwcfCheck.C:68
 hwcfCheck.C:69
 hwcfCheck.C:70
 hwcfCheck.C:71
 hwcfCheck.C:72
 hwcfCheck.C:73
 hwcfCheck.C:74
 hwcfCheck.C:75
 hwcfCheck.C:76
 hwcfCheck.C:77
 hwcfCheck.C:78
 hwcfCheck.C:79
 hwcfCheck.C:80
 hwcfCheck.C:81
 hwcfCheck.C:82
 hwcfCheck.C:83
 hwcfCheck.C:84
 hwcfCheck.C:85
 hwcfCheck.C:86
 hwcfCheck.C:87
 hwcfCheck.C:88
 hwcfCheck.C:89
 hwcfCheck.C:90
 hwcfCheck.C:91
 hwcfCheck.C:92
 hwcfCheck.C:93
 hwcfCheck.C:94
 hwcfCheck.C:95
 hwcfCheck.C:96
 hwcfCheck.C:97
 hwcfCheck.C:98
 hwcfCheck.C:99
 hwcfCheck.C:100
 hwcfCheck.C:101
 hwcfCheck.C:102
 hwcfCheck.C:103
 hwcfCheck.C:104
 hwcfCheck.C:105
 hwcfCheck.C:106
 hwcfCheck.C:107
 hwcfCheck.C:108
 hwcfCheck.C:109
 hwcfCheck.C:110
 hwcfCheck.C:111
 hwcfCheck.C:112
 hwcfCheck.C:113
 hwcfCheck.C:114
 hwcfCheck.C:115
 hwcfCheck.C:116
 hwcfCheck.C:117
 hwcfCheck.C:118
 hwcfCheck.C:119
 hwcfCheck.C:120
 hwcfCheck.C:121
 hwcfCheck.C:122
 hwcfCheck.C:123
 hwcfCheck.C:124
 hwcfCheck.C:125
 hwcfCheck.C:126
 hwcfCheck.C:127
 hwcfCheck.C:128
 hwcfCheck.C:129
 hwcfCheck.C:130
 hwcfCheck.C:131
 hwcfCheck.C:132
 hwcfCheck.C:133
 hwcfCheck.C:134
 hwcfCheck.C:135
 hwcfCheck.C:136
 hwcfCheck.C:137
 hwcfCheck.C:138
 hwcfCheck.C:139
 hwcfCheck.C:140
 hwcfCheck.C:141
 hwcfCheck.C:142
 hwcfCheck.C:143
 hwcfCheck.C:144