ROOT logo
/**
 * @file HLTJetReconstruction.C
 * @brief Macro for testing HLT Jet Reconstruction
 *
 * This macro uses the ESDMCEventPublisher to publish AliMCEvents and AliESDEvents.
 * The processing is done be JetFinder's
 * Results are written to disk by a rootfile writer
 *
 * @author thaeder@kip.uni-heidelberg.de
 * @ingroup alihlt_jet
 */

// ---------------------------------------------------------------------------- 
// -- Pythia Parameter 
// ---------------------------------------------------------------------------- 

enum PprRun_t {
  kPythia6Jets20_24,   kPythia6Jets24_29,   kPythia6Jets29_35,
  kPythia6Jets35_42,   kPythia6Jets42_50,   kPythia6Jets50_60,
  kPythia6Jets60_72,   kPythia6Jets72_86,   kPythia6Jets86_104,
  kPythia6Jets104_125, kPythia6Jets125_150, kPythia6Jets150_180,
  kPyJetJet, kPyGammaJetPHOS, kRunMax
};

const Char_t* pprRunName[] = {
  "kPythia6Jets20_24",   "kPythia6Jets24_29",   "kPythia6Jets29_35",
  "kPythia6Jets35_42",   "kPythia6Jets42_50",   "kPythia6Jets50_60",
  "kPythia6Jets60_72",   "kPythia6Jets72_86",   "kPythia6Jets86_104",
  "kPythia6Jets104_125", "kPythia6Jets125_150", "kPythia6Jets150_180",
  "kPyJetJet", "kPyGammaJetPHOS"
};

// ---------------------------------------------------------------------------- 
// -- Jet Parameter 
// ---------------------------------------------------------------------------- 

Float_t aConeRadius[] = { 0.4, 0.7 };
Float_t aCutPtSeed[]  = { 4.0, 7.0, 10.0 };
Float_t aCutEtJet[]   = { 4.0, 7.0, 10.0, 15.0 };

// ---------------------------------------------------------------------------- 


/** HLTJetReconstruction test macro
 *  @param nEvents Number of events which should be processed
 */
void HLTJetReconstruction(Int_t nEvents=1, Bool_t generate=kFALSE, PprRun_t runType = kPythia6Jets104_125 ) {

  TString writerInput;
  TString analysisInput;
  TString jetInput;

  // -- Switch Logging
  // -------------------
  AliLog::SetGlobalLogLevel( AliLog::kError );
  AliHLTLogging log;
  log.SwitchAliLog(0);

  // -- Initialize HLT
  // -------------------
  AliHLTSystem gHLT;
  gHLT.SetGlobalLoggingLevel(0x7D);
  
  if ( getenv("FASTJET") ) {
    gHLT.LoadComponentLibraries("libCGAL.so");
    gHLT.LoadComponentLibraries("libfastjet.so");
    gHLT.LoadComponentLibraries("libSISConePlugin.so");
  }

  gHLT.LoadComponentLibraries("libESD.so");  
  gHLT.LoadComponentLibraries("libSTEER.so");  
  gHLT.LoadComponentLibraries("libSTEERBase.so");  
  gHLT.LoadComponentLibraries("libAOD.so");  
  gHLT.LoadComponentLibraries("libANALYSIS.so");  
  gHLT.LoadComponentLibraries("libANALYSISalice.so");  
  gHLT.LoadComponentLibraries("libJETAN.so");  

  gHLT.LoadComponentLibraries("libAliHLTUtil.so");
  gHLT.LoadComponentLibraries("libAliHLTJET.so");  

  gHLT.LoadComponentLibraries("liblhapdf.so");  
  gHLT.LoadComponentLibraries("libEGPythia6.so");   
  gHLT.LoadComponentLibraries("libpythia6.so");  
  gHLT.LoadComponentLibraries("libAliPythia6.so");  

  // ----------------------------//
  // -                         - //
  // -- Parameters            -- //
  // -                         - //
  // ----------------------------//

  Float_t coneRadius = aConeRadius[0];
  Float_t cutPtSeed  = aCutPtSeed[0];
  Float_t cutEtJet   = aCutEtJet[1];

  Int_t seed = 12345;

  // ----------------------------//
  // -                         - //
  // -- Publisher  Components -- //
  // -                         - //
  // ----------------------------//

  if ( ! generate ) {
    // ------------------------------------------
    // -- The ESDMCEventPublisher   
    // ------------------------------------------
    TString publisherId("ESDMCEventPublisher");
    // ------------------------------------------
    // MCFAST - MC - ESD
    TString publisherArg("-entrytype ESD -dataspec 0x0000001F -datapath /lustre/alice/jthaeder/data/HEAD_2010-07-09/7TeV/pp_Perugia0/014000");
    
    AliHLTConfiguration ESDMCEventPublisher(publisherId.Data(), "ESDMCEventPublisher", NULL, publisherArg.Data() );

    if (!analysisInput.IsNull()) analysisInput+=" ";
    analysisInput += publisherId;

    if (!jetInput.IsNull()) jetInput+=" ";
    jetInput += publisherId;
  }

  else {
    // ------------------------------------------
    // -- The MCGenerator
    // ------------------------------------------    
    TString generatorId( Form("MCGenerator_%s", pprRunName[runType]) );
    // ------------------------------------------

    TString generatorArg( Form("-seed %d -nevents %d -runtype %d -coneRadius %.1f -jetCutMinEt %.1f", 
			       seed, nEvents, runType, coneRadius, cutEtJet));
    
    AliHLTConfiguration mcGenerator(generatorId.Data(), "MCGenerator", NULL, generatorArg.Data() );

    if (!analysisInput.IsNull()) analysisInput+=" ";
    analysisInput += generatorId;

    if (!jetInput.IsNull()) jetInput+=" ";
    jetInput += generatorId;
  }

  // ----------------------------//
  // -                         - //
  // -- Processing Components -- //
  // -                         - //
  // ----------------------------//

#if 1

  // ------------------------------------------
  // -- ConeJetFinder
  // ------------------------------------------
  TString jetId("JETConeJet");
  // ------------------------------------------

  TString jetArg(
		 Form("-algorithm FSCSquareCell -leading 1 -coneRadius %.1f -trackCutMinPt 0.0 -seedCutMinPt %.1f -jetCutMinEt %.1f", coneRadius, cutPtSeed, cutEtJet) 
		 );
  
  AliHLTConfiguration jetCone(jetId.Data(), "JETConeJetFinder", jetInput.Data(), jetArg.Data()); 
  
  if (!analysisInput.IsNull()) analysisInput+=" ";
  analysisInput += jetId;

#else

  // ------------------------------------------
  // -- FastJetFinder
  // ------------------------------------------

  AliHLTConfiguration jetFinder("JETFastJet_Kt", "JETFastJetFinder", jetInput.Data(),"-finderType kt");
    
  if (!writerInput.IsNull()) writerInput+=" ";
  writerInput+="JETFastJet_Kt";
  
  AliHLTConfiguration jetFinder("JETFastJet_AntiKt", "JETFastJetFinder", jetInput.Data(),"-finderType antikt");
  
  if (!writerInput.IsNull()) writerInput+=" ";
  writerInput+="JETFastJet_AntiKt";
#endif

  // ------------------------------------------
  // -- Jet Analysis 
  // ------------------------------------------
  TString analysisId("JETAnalysis");
  // ------------------------------------------

  TString analysisArg("");
  
  AliHLTConfiguration jetAnalysis(analysisId.Data(), "JETAnalysis", analysisInput.Data(), analysisArg.Data() );

  if (!writerInput.IsNull()) writerInput+=" ";
  writerInput += analysisId;

  // ----------------------------//
  // -                         - //
  // --    Sink Components    -- //
  // -                         - //
  // ----------------------------//
  
  TString writerArg( Form("-directory analysis -datafile analyze_%d_%s -write-all-events", nEvents, pprRunName[runType] ));

  // -- The RootFileWriter 
  AliHLTConfiguration rootWriter("RootWriter", "ROOTFileWriter", writerInput.Data(), writerArg.Data() );
  
  // --------------------------- //
  // -                         - //
  // --         Run           -- //
  // -                         - //
  // --------------------------- //

  gHLT.BuildTaskList("RootWriter");
  gHLT.Run(nEvents);

  return;
}
 HLTJetReconstruction.C:1
 HLTJetReconstruction.C:2
 HLTJetReconstruction.C:3
 HLTJetReconstruction.C:4
 HLTJetReconstruction.C:5
 HLTJetReconstruction.C:6
 HLTJetReconstruction.C:7
 HLTJetReconstruction.C:8
 HLTJetReconstruction.C:9
 HLTJetReconstruction.C:10
 HLTJetReconstruction.C:11
 HLTJetReconstruction.C:12
 HLTJetReconstruction.C:13
 HLTJetReconstruction.C:14
 HLTJetReconstruction.C:15
 HLTJetReconstruction.C:16
 HLTJetReconstruction.C:17
 HLTJetReconstruction.C:18
 HLTJetReconstruction.C:19
 HLTJetReconstruction.C:20
 HLTJetReconstruction.C:21
 HLTJetReconstruction.C:22
 HLTJetReconstruction.C:23
 HLTJetReconstruction.C:24
 HLTJetReconstruction.C:25
 HLTJetReconstruction.C:26
 HLTJetReconstruction.C:27
 HLTJetReconstruction.C:28
 HLTJetReconstruction.C:29
 HLTJetReconstruction.C:30
 HLTJetReconstruction.C:31
 HLTJetReconstruction.C:32
 HLTJetReconstruction.C:33
 HLTJetReconstruction.C:34
 HLTJetReconstruction.C:35
 HLTJetReconstruction.C:36
 HLTJetReconstruction.C:37
 HLTJetReconstruction.C:38
 HLTJetReconstruction.C:39
 HLTJetReconstruction.C:40
 HLTJetReconstruction.C:41
 HLTJetReconstruction.C:42
 HLTJetReconstruction.C:43
 HLTJetReconstruction.C:44
 HLTJetReconstruction.C:45
 HLTJetReconstruction.C:46
 HLTJetReconstruction.C:47
 HLTJetReconstruction.C:48
 HLTJetReconstruction.C:49
 HLTJetReconstruction.C:50
 HLTJetReconstruction.C:51
 HLTJetReconstruction.C:52
 HLTJetReconstruction.C:53
 HLTJetReconstruction.C:54
 HLTJetReconstruction.C:55
 HLTJetReconstruction.C:56
 HLTJetReconstruction.C:57
 HLTJetReconstruction.C:58
 HLTJetReconstruction.C:59
 HLTJetReconstruction.C:60
 HLTJetReconstruction.C:61
 HLTJetReconstruction.C:62
 HLTJetReconstruction.C:63
 HLTJetReconstruction.C:64
 HLTJetReconstruction.C:65
 HLTJetReconstruction.C:66
 HLTJetReconstruction.C:67
 HLTJetReconstruction.C:68
 HLTJetReconstruction.C:69
 HLTJetReconstruction.C:70
 HLTJetReconstruction.C:71
 HLTJetReconstruction.C:72
 HLTJetReconstruction.C:73
 HLTJetReconstruction.C:74
 HLTJetReconstruction.C:75
 HLTJetReconstruction.C:76
 HLTJetReconstruction.C:77
 HLTJetReconstruction.C:78
 HLTJetReconstruction.C:79
 HLTJetReconstruction.C:80
 HLTJetReconstruction.C:81
 HLTJetReconstruction.C:82
 HLTJetReconstruction.C:83
 HLTJetReconstruction.C:84
 HLTJetReconstruction.C:85
 HLTJetReconstruction.C:86
 HLTJetReconstruction.C:87
 HLTJetReconstruction.C:88
 HLTJetReconstruction.C:89
 HLTJetReconstruction.C:90
 HLTJetReconstruction.C:91
 HLTJetReconstruction.C:92
 HLTJetReconstruction.C:93
 HLTJetReconstruction.C:94
 HLTJetReconstruction.C:95
 HLTJetReconstruction.C:96
 HLTJetReconstruction.C:97
 HLTJetReconstruction.C:98
 HLTJetReconstruction.C:99
 HLTJetReconstruction.C:100
 HLTJetReconstruction.C:101
 HLTJetReconstruction.C:102
 HLTJetReconstruction.C:103
 HLTJetReconstruction.C:104
 HLTJetReconstruction.C:105
 HLTJetReconstruction.C:106
 HLTJetReconstruction.C:107
 HLTJetReconstruction.C:108
 HLTJetReconstruction.C:109
 HLTJetReconstruction.C:110
 HLTJetReconstruction.C:111
 HLTJetReconstruction.C:112
 HLTJetReconstruction.C:113
 HLTJetReconstruction.C:114
 HLTJetReconstruction.C:115
 HLTJetReconstruction.C:116
 HLTJetReconstruction.C:117
 HLTJetReconstruction.C:118
 HLTJetReconstruction.C:119
 HLTJetReconstruction.C:120
 HLTJetReconstruction.C:121
 HLTJetReconstruction.C:122
 HLTJetReconstruction.C:123
 HLTJetReconstruction.C:124
 HLTJetReconstruction.C:125
 HLTJetReconstruction.C:126
 HLTJetReconstruction.C:127
 HLTJetReconstruction.C:128
 HLTJetReconstruction.C:129
 HLTJetReconstruction.C:130
 HLTJetReconstruction.C:131
 HLTJetReconstruction.C:132
 HLTJetReconstruction.C:133
 HLTJetReconstruction.C:134
 HLTJetReconstruction.C:135
 HLTJetReconstruction.C:136
 HLTJetReconstruction.C:137
 HLTJetReconstruction.C:138
 HLTJetReconstruction.C:139
 HLTJetReconstruction.C:140
 HLTJetReconstruction.C:141
 HLTJetReconstruction.C:142
 HLTJetReconstruction.C:143
 HLTJetReconstruction.C:144
 HLTJetReconstruction.C:145
 HLTJetReconstruction.C:146
 HLTJetReconstruction.C:147
 HLTJetReconstruction.C:148
 HLTJetReconstruction.C:149
 HLTJetReconstruction.C:150
 HLTJetReconstruction.C:151
 HLTJetReconstruction.C:152
 HLTJetReconstruction.C:153
 HLTJetReconstruction.C:154
 HLTJetReconstruction.C:155
 HLTJetReconstruction.C:156
 HLTJetReconstruction.C:157
 HLTJetReconstruction.C:158
 HLTJetReconstruction.C:159
 HLTJetReconstruction.C:160
 HLTJetReconstruction.C:161
 HLTJetReconstruction.C:162
 HLTJetReconstruction.C:163
 HLTJetReconstruction.C:164
 HLTJetReconstruction.C:165
 HLTJetReconstruction.C:166
 HLTJetReconstruction.C:167
 HLTJetReconstruction.C:168
 HLTJetReconstruction.C:169
 HLTJetReconstruction.C:170
 HLTJetReconstruction.C:171
 HLTJetReconstruction.C:172
 HLTJetReconstruction.C:173
 HLTJetReconstruction.C:174
 HLTJetReconstruction.C:175
 HLTJetReconstruction.C:176
 HLTJetReconstruction.C:177
 HLTJetReconstruction.C:178
 HLTJetReconstruction.C:179
 HLTJetReconstruction.C:180
 HLTJetReconstruction.C:181
 HLTJetReconstruction.C:182
 HLTJetReconstruction.C:183
 HLTJetReconstruction.C:184
 HLTJetReconstruction.C:185
 HLTJetReconstruction.C:186
 HLTJetReconstruction.C:187
 HLTJetReconstruction.C:188
 HLTJetReconstruction.C:189
 HLTJetReconstruction.C:190
 HLTJetReconstruction.C:191
 HLTJetReconstruction.C:192
 HLTJetReconstruction.C:193
 HLTJetReconstruction.C:194
 HLTJetReconstruction.C:195
 HLTJetReconstruction.C:196
 HLTJetReconstruction.C:197
 HLTJetReconstruction.C:198
 HLTJetReconstruction.C:199
 HLTJetReconstruction.C:200
 HLTJetReconstruction.C:201
 HLTJetReconstruction.C:202
 HLTJetReconstruction.C:203
 HLTJetReconstruction.C:204
 HLTJetReconstruction.C:205
 HLTJetReconstruction.C:206
 HLTJetReconstruction.C:207
 HLTJetReconstruction.C:208
 HLTJetReconstruction.C:209
 HLTJetReconstruction.C:210
 HLTJetReconstruction.C:211
 HLTJetReconstruction.C:212
 HLTJetReconstruction.C:213
 HLTJetReconstruction.C:214
 HLTJetReconstruction.C:215
 HLTJetReconstruction.C:216