ROOT logo
// $Id$
/**
 * @file sampleEsdAnalysis.C
 * @brief Example macro to run the AliHLTSampleESDAnalysisComponent in
 * AliReconstruction.
 *
 * The component subscribes to the output of the default HLT reconstruction
 * chain and extracts the ESD from the input.
 *
 * <pre>
 * Usage: aliroot -b -q -l \
 *     sampleEsdAnalysis.C'("file", "cdb", minEvent, maxEvent)'
 *
 * Examples:
 *     sampleEsdAnalysis.C'("alien:///alice/data/2009/.../....root")' 
 *     sampleEsdAnalysis.C'("raw.root", "local://$PWD", minEvent, MaxEvent)'
 *
 * Defaults
 *     cdb="raw://"  -> take OCDB from GRID
 *     minEvent=-1   -> no lower event selection
 *     maxEvent=-1   -> no upper event selection
 *
 * </pre>
 *
 * The input file can be a file on the grid, indicated by the tag
 * 'alien://' indicates. By default also the OCDB is set to the GRID.
 * If either the file or the OCDB is taken from the GRID, the macros
 * connects to the Grid in the beginning.
 *
 * As for the OCDB it is always a good idea to use the OCDB from the
 * Grid as this will contain all the necessary objects and the latest
 * calibration. The special URI 'raw://' is most advisable as it selects
 * the storage automatically from the run number. Other options are e.g.
 * - "alien://folder=/alice/data/2010/OCDB"
 * - "local://$ALICE_ROOT/OCDB"
 *
 * Note: You need a valid GRID token, if you want to access files directly
 * from the Grid, use 'alien-token-init' of your alien installation.
 *
 * @author Matthias.Richter@ift.uib.no
 * @ingroup alihlt_tutorial
 */
void sampleEsdAnalysis(const char *filename,
		       const char *cdbURI,
		       int minEvent=-1,
		       int maxEvent=-1)
{
  // connect to the GRID if we use a file or OCDB from the GRID
  TString struri=cdbURI;
  TString strfile=filename;
  if (struri.BeginsWith("raw://") ||
      strfile.Contains("://") && !strfile.Contains("local://")) {
    TGrid::Connect("alien");
  }

  // Set the CDB storage location
  AliCDBManager * man = AliCDBManager::Instance();
  man->SetDefaultStorage(cdbURI);
  if (struri.BeginsWith("local://")) {
    // set specific storage for GRP entry
    // search in the working directory and one level above, the latter
    // follows the standard simulation setup like e.g. in test/ppbench
    if (!gSystem->AccessPathName("GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD");
    } else if (!gSystem->AccessPathName("../GRP/GRP/Data")) {
      man->SetSpecificStorage("GRP/GRP/Data", "local://$PWD/..");      
    }
  }

  //////////////////////////////////////////////////////////////////////////////////////
  //
  // Reconstruction settings
  AliReconstruction rec;

  if (minEvent>=0 || maxEvent>minEvent) {
    if (minEvent<0) minEvent=0;
    if (maxEvent<minEvent) maxEvent=minEvent;
    rec.SetEventRange(minEvent,maxEvent);
  }
  rec.SetRunReconstruction("HLT ITS TPC");
  rec.SetWriteESDfriend(kFALSE);
  rec.SetInput(filename);

  // QA options
  rec.SetRunQA(":") ;
  //rec.SetQARefDefaultStorage("local://$ALICE_ROOT/QAref") ;

  //////////////////////////////////////////////////////////////////////////////////////
  //
  // setup the HLT system
  AliHLTSystem* pHLT=AliHLTPluginBase::GetInstance();

  // define a configuration for the SampleESDAnalysis component
  // arguments:
  //  1) id of the configuartion, later used to refer to this configuration
  //  2) id of the component to run
  //  3) parents, here the configuration 'GLOBAL-esd-converter' of the libAliHLTGlobal
  //  4) optional component arguments
  AliHLTConfiguration esdanalysis("ESD-Analysis", "SampleESDAnalysis", "GLOBAL-esd-converter", "");

  // set option for the HLT module in AliReconstruction
  // arguments
  //  - ignore-hltout : ignore the HLTOUT payload from the HLT DDLs
  //  - libraries to be used as plugins
  //  - loglevel=0x79 : Important, Warning, Error, Fatal
  //  - chains=ESD-Analysis : chains to be run
  rec.SetOption("HLT",
		"ignore-hltout " 
		"libAliHLTUtil.so libAliHLTGlobal.so libAliHLTSample.so "
		"loglevel=0x79 "
		"chains=ESD-Analysis "
		);

  rec.SetRunPlaneEff(kFALSE);

  // switch off cleanESD
  rec.SetCleanESD(kFALSE);

  AliLog::Flush();
  rec.Run();

}

void sampleEsdAnalysis(const char *filename,
		       int minEvent=-1,
		       int maxEvent=-1)
{
  sampleEsdAnalysis(filename, "raw://", minEvent, maxEvent);
}

void sampleEsdAnalysis()
{
  cout << "sampleEsdAnalysis: Run HLT component 'SampleESDAnalyis' in AliReconstruction" << endl;
  cout << " Usage: aliroot -b -q -l \\" << endl;
  cout << "     sampleEsdAnalysis.C'(\"file\", \"cdb\", minEvent, maxEvent)'" << endl;
  cout << "" << endl;
  cout << " Examples:" << endl;
  cout << "     sampleEsdAnalysis.C'(\"alien:///alice/data/2009/.../....root\")' " << endl;
  cout << "     sampleEsdAnalysis.C'(\"raw.root\", \"local://$PWD\", minEvent, MaxEvent)'" << endl;
  cout << "" << endl;
  cout << " Defaults" << endl;
  cout << "     cdb=\"raw://\"  -> take OCDB from GRID" << endl;
  cout << "     minEvent=-1   -> no lower event selection" << endl;
  cout << "     maxEvent=-1   -> no upper event selection" << endl;
}
 sampleEsdAnalysis.C:1
 sampleEsdAnalysis.C:2
 sampleEsdAnalysis.C:3
 sampleEsdAnalysis.C:4
 sampleEsdAnalysis.C:5
 sampleEsdAnalysis.C:6
 sampleEsdAnalysis.C:7
 sampleEsdAnalysis.C:8
 sampleEsdAnalysis.C:9
 sampleEsdAnalysis.C:10
 sampleEsdAnalysis.C:11
 sampleEsdAnalysis.C:12
 sampleEsdAnalysis.C:13
 sampleEsdAnalysis.C:14
 sampleEsdAnalysis.C:15
 sampleEsdAnalysis.C:16
 sampleEsdAnalysis.C:17
 sampleEsdAnalysis.C:18
 sampleEsdAnalysis.C:19
 sampleEsdAnalysis.C:20
 sampleEsdAnalysis.C:21
 sampleEsdAnalysis.C:22
 sampleEsdAnalysis.C:23
 sampleEsdAnalysis.C:24
 sampleEsdAnalysis.C:25
 sampleEsdAnalysis.C:26
 sampleEsdAnalysis.C:27
 sampleEsdAnalysis.C:28
 sampleEsdAnalysis.C:29
 sampleEsdAnalysis.C:30
 sampleEsdAnalysis.C:31
 sampleEsdAnalysis.C:32
 sampleEsdAnalysis.C:33
 sampleEsdAnalysis.C:34
 sampleEsdAnalysis.C:35
 sampleEsdAnalysis.C:36
 sampleEsdAnalysis.C:37
 sampleEsdAnalysis.C:38
 sampleEsdAnalysis.C:39
 sampleEsdAnalysis.C:40
 sampleEsdAnalysis.C:41
 sampleEsdAnalysis.C:42
 sampleEsdAnalysis.C:43
 sampleEsdAnalysis.C:44
 sampleEsdAnalysis.C:45
 sampleEsdAnalysis.C:46
 sampleEsdAnalysis.C:47
 sampleEsdAnalysis.C:48
 sampleEsdAnalysis.C:49
 sampleEsdAnalysis.C:50
 sampleEsdAnalysis.C:51
 sampleEsdAnalysis.C:52
 sampleEsdAnalysis.C:53
 sampleEsdAnalysis.C:54
 sampleEsdAnalysis.C:55
 sampleEsdAnalysis.C:56
 sampleEsdAnalysis.C:57
 sampleEsdAnalysis.C:58
 sampleEsdAnalysis.C:59
 sampleEsdAnalysis.C:60
 sampleEsdAnalysis.C:61
 sampleEsdAnalysis.C:62
 sampleEsdAnalysis.C:63
 sampleEsdAnalysis.C:64
 sampleEsdAnalysis.C:65
 sampleEsdAnalysis.C:66
 sampleEsdAnalysis.C:67
 sampleEsdAnalysis.C:68
 sampleEsdAnalysis.C:69
 sampleEsdAnalysis.C:70
 sampleEsdAnalysis.C:71
 sampleEsdAnalysis.C:72
 sampleEsdAnalysis.C:73
 sampleEsdAnalysis.C:74
 sampleEsdAnalysis.C:75
 sampleEsdAnalysis.C:76
 sampleEsdAnalysis.C:77
 sampleEsdAnalysis.C:78
 sampleEsdAnalysis.C:79
 sampleEsdAnalysis.C:80
 sampleEsdAnalysis.C:81
 sampleEsdAnalysis.C:82
 sampleEsdAnalysis.C:83
 sampleEsdAnalysis.C:84
 sampleEsdAnalysis.C:85
 sampleEsdAnalysis.C:86
 sampleEsdAnalysis.C:87
 sampleEsdAnalysis.C:88
 sampleEsdAnalysis.C:89
 sampleEsdAnalysis.C:90
 sampleEsdAnalysis.C:91
 sampleEsdAnalysis.C:92
 sampleEsdAnalysis.C:93
 sampleEsdAnalysis.C:94
 sampleEsdAnalysis.C:95
 sampleEsdAnalysis.C:96
 sampleEsdAnalysis.C:97
 sampleEsdAnalysis.C:98
 sampleEsdAnalysis.C:99
 sampleEsdAnalysis.C:100
 sampleEsdAnalysis.C:101
 sampleEsdAnalysis.C:102
 sampleEsdAnalysis.C:103
 sampleEsdAnalysis.C:104
 sampleEsdAnalysis.C:105
 sampleEsdAnalysis.C:106
 sampleEsdAnalysis.C:107
 sampleEsdAnalysis.C:108
 sampleEsdAnalysis.C:109
 sampleEsdAnalysis.C:110
 sampleEsdAnalysis.C:111
 sampleEsdAnalysis.C:112
 sampleEsdAnalysis.C:113
 sampleEsdAnalysis.C:114
 sampleEsdAnalysis.C:115
 sampleEsdAnalysis.C:116
 sampleEsdAnalysis.C:117
 sampleEsdAnalysis.C:118
 sampleEsdAnalysis.C:119
 sampleEsdAnalysis.C:120
 sampleEsdAnalysis.C:121
 sampleEsdAnalysis.C:122
 sampleEsdAnalysis.C:123
 sampleEsdAnalysis.C:124
 sampleEsdAnalysis.C:125
 sampleEsdAnalysis.C:126
 sampleEsdAnalysis.C:127
 sampleEsdAnalysis.C:128
 sampleEsdAnalysis.C:129
 sampleEsdAnalysis.C:130
 sampleEsdAnalysis.C:131
 sampleEsdAnalysis.C:132
 sampleEsdAnalysis.C:133
 sampleEsdAnalysis.C:134
 sampleEsdAnalysis.C:135
 sampleEsdAnalysis.C:136
 sampleEsdAnalysis.C:137
 sampleEsdAnalysis.C:138
 sampleEsdAnalysis.C:139
 sampleEsdAnalysis.C:140
 sampleEsdAnalysis.C:141
 sampleEsdAnalysis.C:142
 sampleEsdAnalysis.C:143
 sampleEsdAnalysis.C:144
 sampleEsdAnalysis.C:145
 sampleEsdAnalysis.C:146