ROOT logo
void addInput( TString &input, const TString &add )
{
  if (input.Length()>0) input+=" ";
  input+=add;
}
 
void rec_hlt_tpc_its(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=";

  TString histoInput;
  TString esdInput;
  TString Bz = "";
  //Bz = "-solenoidBz -5";

  // TPC 
  {
    TString tpcMergerInput;

    int iMinSlice=0;
    int iMaxSlice=35;
    int iMinPart=0;
    int iMaxPart=5;

    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());
	
	cf.Form("CF_%02d_%d", slice, part);
	new AliHLTConfiguration(cf.Data(), "TPCClusterFinder32Bit", publisher.Data(), "-release-memory");
	
	addInput( trackerInput, cf);
      }
      TString tracker;
      tracker.Form("TR_%02d", slice);
      new AliHLTConfiguration(tracker.Data(), "TPCCATracker", trackerInput.Data(), Bz.Data());
      
      addInput( tpcMergerInput, tracker);
    }

    new AliHLTConfiguration("tpcMerger","TPCCAGlobalMerger",tpcMergerInput.Data(), Bz.Data());
    addInput( esdInput, "tpcMerger");
  }

  // ITS 
  {
    Bool_t runspd=1, runsdd=1, runssd=1;
    TString cfout="";

    if(runspd){
      int minddl=0;          //min ddl number for SPD
      int maxddl=19;         //max ddl number for SPD
      int spec=0x1;          //spec for ddl's
      for(int ddlno=minddl;ddlno<=maxddl;ddlno++){  
	TString arg, publisher, cf;	
	publisher.Form("DP_%d", ddlno);
	cf.Form("CF_%d",ddlno);
	arg.Form("-minid %d -datatype 'DDL_RAW ' 'ISPD ' -dataspec 0x%08x -verbose",ddlno, spec);
	new AliHLTConfiguration(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());	
	new AliHLTConfiguration (cf.Data(), "ITSClusterFinderSPD", publisher.Data(), "");	
	addInput( cfout, cf);
	spec=spec<<1;
      }       
      AliHLTConfiguration itsVtx("itsVtx", "ITSVertexerSPD"   , cfout.Data(), Bz.Data());
      addInput( esdInput, "itsVtx");
      addInput( histoInput, "itsVtx");
    }
  
    if(runsdd){
      int minddl=256;        //min ddl number for SDD    
      int maxddl=279;        //max ddl number for SDD
      int spec=0x1;          //spec for ddl's    
      for(int ddlno=minddl;ddlno<=maxddl;ddlno++){  
	TString arg, publisher, cf;      
	publisher.Form("DP_%d", ddlno);
	cf.Form("CF_%d",ddlno);
	arg.Form("-minid %d -datatype 'DDL_RAW ' 'ISDD ' -dataspec 0x%08x -verbose",ddlno, spec); 
	AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());	
	AliHLTConfiguration cfconf(cf.Data(), "ITSClusterFinderSDD", publisher.Data(), "");	
	addInput( cfout, cf);
	spec=spec<<1;
      }
    }

    if(runssd){
      minddl=512;      //min ddl number for SSD     
      maxddl=527;      //max ddl number for SSD
      spec=0x1;        //spec for ddl's      
      for(int ddlno=minddl;ddlno<=maxddl;ddlno++){  
	TString arg, publisher, cf;      
	publisher.Form("DP_%d", ddlno);
	cf.Form("CF_%d",ddlno);
	arg.Form("-minid %d -datatype 'DDL_RAW ' 'ISSD ' -dataspec 0x%08x -verbose",ddlno, spec);
	AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());      
	AliHLTConfiguration cfconf(cf.Data(), "ITSClusterFinderSSD", publisher.Data(), "");      
	addInput( cfout, cf);      
	spec=spec<<1;
      }
    }

    addInput( cfout, "tpcMerger");      
    AliHLTConfiguration its("itsTracker", "ITSTracker"   , cfout.Data(), Bz.Data());
    addInput( esdInput, "itsTracker");
  }

  
  new AliHLTConfiguration ("esd-converter", "GlobalEsdConverter", esdInput.Data(), Bz.Data());
  new AliHLTConfiguration ("globalVtx", "GlobalVertexer"   , "esd-converter", "");
  new AliHLTConfiguration ("v0Histo", "V0Histo"   , "globalVtx", "");

  addInput( histoInput, "globalVtx v0Histo");  

  new AliHLTConfiguration("histFilter", "BlockFilter", histoInput.Data(), "-datatype 'ROOTHIST' '    '");
  new AliHLTConfiguration("histoRootFile", "ROOTFileWriter", "histFilter", "-datafile hltHisto -concatenate-events -overwrite");    
  
  new AliHLTConfiguration("sink-esd-file", "EsdCollector" , "globalVtx", "");

  option+="histoRootFile,sink-esd-file";


  ///////////////////////////////////////////////////////////////////////////////////////////////////
  //
  // 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.SetInput(input);
  rec.SetRunVertexFinder(kFALSE);
  rec.SetRunReconstruction("HLT");
  rec.SetLoadAlignFromCDB(0);
  rec.SetRunQA(":");
  rec.SetOption("HLT",option);
  // switch off cleanESD
  rec.SetCleanESD(kFALSE);
  //rec.SetEventRange(0, 0);
  rec.Run();
}
 rec-hlt-tpc-its.C:1
 rec-hlt-tpc-its.C:2
 rec-hlt-tpc-its.C:3
 rec-hlt-tpc-its.C:4
 rec-hlt-tpc-its.C:5
 rec-hlt-tpc-its.C:6
 rec-hlt-tpc-its.C:7
 rec-hlt-tpc-its.C:8
 rec-hlt-tpc-its.C:9
 rec-hlt-tpc-its.C:10
 rec-hlt-tpc-its.C:11
 rec-hlt-tpc-its.C:12
 rec-hlt-tpc-its.C:13
 rec-hlt-tpc-its.C:14
 rec-hlt-tpc-its.C:15
 rec-hlt-tpc-its.C:16
 rec-hlt-tpc-its.C:17
 rec-hlt-tpc-its.C:18
 rec-hlt-tpc-its.C:19
 rec-hlt-tpc-its.C:20
 rec-hlt-tpc-its.C:21
 rec-hlt-tpc-its.C:22
 rec-hlt-tpc-its.C:23
 rec-hlt-tpc-its.C:24
 rec-hlt-tpc-its.C:25
 rec-hlt-tpc-its.C:26
 rec-hlt-tpc-its.C:27
 rec-hlt-tpc-its.C:28
 rec-hlt-tpc-its.C:29
 rec-hlt-tpc-its.C:30
 rec-hlt-tpc-its.C:31
 rec-hlt-tpc-its.C:32
 rec-hlt-tpc-its.C:33
 rec-hlt-tpc-its.C:34
 rec-hlt-tpc-its.C:35
 rec-hlt-tpc-its.C:36
 rec-hlt-tpc-its.C:37
 rec-hlt-tpc-its.C:38
 rec-hlt-tpc-its.C:39
 rec-hlt-tpc-its.C:40
 rec-hlt-tpc-its.C:41
 rec-hlt-tpc-its.C:42
 rec-hlt-tpc-its.C:43
 rec-hlt-tpc-its.C:44
 rec-hlt-tpc-its.C:45
 rec-hlt-tpc-its.C:46
 rec-hlt-tpc-its.C:47
 rec-hlt-tpc-its.C:48
 rec-hlt-tpc-its.C:49
 rec-hlt-tpc-its.C:50
 rec-hlt-tpc-its.C:51
 rec-hlt-tpc-its.C:52
 rec-hlt-tpc-its.C:53
 rec-hlt-tpc-its.C:54
 rec-hlt-tpc-its.C:55
 rec-hlt-tpc-its.C:56
 rec-hlt-tpc-its.C:57
 rec-hlt-tpc-its.C:58
 rec-hlt-tpc-its.C:59
 rec-hlt-tpc-its.C:60
 rec-hlt-tpc-its.C:61
 rec-hlt-tpc-its.C:62
 rec-hlt-tpc-its.C:63
 rec-hlt-tpc-its.C:64
 rec-hlt-tpc-its.C:65
 rec-hlt-tpc-its.C:66
 rec-hlt-tpc-its.C:67
 rec-hlt-tpc-its.C:68
 rec-hlt-tpc-its.C:69
 rec-hlt-tpc-its.C:70
 rec-hlt-tpc-its.C:71
 rec-hlt-tpc-its.C:72
 rec-hlt-tpc-its.C:73
 rec-hlt-tpc-its.C:74
 rec-hlt-tpc-its.C:75
 rec-hlt-tpc-its.C:76
 rec-hlt-tpc-its.C:77
 rec-hlt-tpc-its.C:78
 rec-hlt-tpc-its.C:79
 rec-hlt-tpc-its.C:80
 rec-hlt-tpc-its.C:81
 rec-hlt-tpc-its.C:82
 rec-hlt-tpc-its.C:83
 rec-hlt-tpc-its.C:84
 rec-hlt-tpc-its.C:85
 rec-hlt-tpc-its.C:86
 rec-hlt-tpc-its.C:87
 rec-hlt-tpc-its.C:88
 rec-hlt-tpc-its.C:89
 rec-hlt-tpc-its.C:90
 rec-hlt-tpc-its.C:91
 rec-hlt-tpc-its.C:92
 rec-hlt-tpc-its.C:93
 rec-hlt-tpc-its.C:94
 rec-hlt-tpc-its.C:95
 rec-hlt-tpc-its.C:96
 rec-hlt-tpc-its.C:97
 rec-hlt-tpc-its.C:98
 rec-hlt-tpc-its.C:99
 rec-hlt-tpc-its.C:100
 rec-hlt-tpc-its.C:101
 rec-hlt-tpc-its.C:102
 rec-hlt-tpc-its.C:103
 rec-hlt-tpc-its.C:104
 rec-hlt-tpc-its.C:105
 rec-hlt-tpc-its.C:106
 rec-hlt-tpc-its.C:107
 rec-hlt-tpc-its.C:108
 rec-hlt-tpc-its.C:109
 rec-hlt-tpc-its.C:110
 rec-hlt-tpc-its.C:111
 rec-hlt-tpc-its.C:112
 rec-hlt-tpc-its.C:113
 rec-hlt-tpc-its.C:114
 rec-hlt-tpc-its.C:115
 rec-hlt-tpc-its.C:116
 rec-hlt-tpc-its.C:117
 rec-hlt-tpc-its.C:118
 rec-hlt-tpc-its.C:119
 rec-hlt-tpc-its.C:120
 rec-hlt-tpc-its.C:121
 rec-hlt-tpc-its.C:122
 rec-hlt-tpc-its.C:123
 rec-hlt-tpc-its.C:124
 rec-hlt-tpc-its.C:125
 rec-hlt-tpc-its.C:126
 rec-hlt-tpc-its.C:127
 rec-hlt-tpc-its.C:128
 rec-hlt-tpc-its.C:129
 rec-hlt-tpc-its.C:130
 rec-hlt-tpc-its.C:131
 rec-hlt-tpc-its.C:132
 rec-hlt-tpc-its.C:133
 rec-hlt-tpc-its.C:134
 rec-hlt-tpc-its.C:135
 rec-hlt-tpc-its.C:136
 rec-hlt-tpc-its.C:137
 rec-hlt-tpc-its.C:138
 rec-hlt-tpc-its.C:139
 rec-hlt-tpc-its.C:140
 rec-hlt-tpc-its.C:141
 rec-hlt-tpc-its.C:142
 rec-hlt-tpc-its.C:143
 rec-hlt-tpc-its.C:144
 rec-hlt-tpc-its.C:145
 rec-hlt-tpc-its.C:146
 rec-hlt-tpc-its.C:147
 rec-hlt-tpc-its.C:148
 rec-hlt-tpc-its.C:149
 rec-hlt-tpc-its.C:150
 rec-hlt-tpc-its.C:151
 rec-hlt-tpc-its.C:152
 rec-hlt-tpc-its.C:153
 rec-hlt-tpc-its.C:154
 rec-hlt-tpc-its.C:155
 rec-hlt-tpc-its.C:156
 rec-hlt-tpc-its.C:157
 rec-hlt-tpc-its.C:158
 rec-hlt-tpc-its.C:159
 rec-hlt-tpc-its.C:160
 rec-hlt-tpc-its.C:161
 rec-hlt-tpc-its.C:162
 rec-hlt-tpc-its.C:163
 rec-hlt-tpc-its.C:164
 rec-hlt-tpc-its.C:165
 rec-hlt-tpc-its.C:166
 rec-hlt-tpc-its.C:167
 rec-hlt-tpc-its.C:168
 rec-hlt-tpc-its.C:169
 rec-hlt-tpc-its.C:170
 rec-hlt-tpc-its.C:171