ROOT logo

void rec_hlt_calo(const char *input = "./", const char *grp = "./", bool doPhos = true, bool doEmcal = true, bool doTM = true)
{

    AliCDBManager::Instance()->SetRun(0);

    if (!gSystem->AccessPathName("galice.root")) {
        cerr << "please delete the galice.root or run at different place." << endl;
        return;
    }

    ///////////////////////////////////////////////////////////////////////////////////////////////////
    //
    // init the HLT system in order to define the analysis chain below
    //
    AliHLTSystem* gHLT=AliHLTPluginBase::GetInstance();

    // Input to the ESD converter
    TString ecInput;
    TString option="libAliHLTUtil.so libAliHLTRCU.so libAliHLTTPC.so libAliHLTCalo.so libAliHLTPHOS.so libAliHLTEMCAL.so libAliHLTGlobal.so loglevel=0x7f chains=ESD-CONVERTER";


    if (doTM)
    {

        ///////////////////////////////////////
        // The TPC part of the chain
        //////////////////////////////////////

        int clusterFinderType=0; // 0 = v3; 1 = decoder; 2 = packed (offline v1)
        bool bUseCA=true;   // use the CA tracker and merger

        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);
                AliHLTConfiguration pubconf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());

                // cluster finder components
                cf.Form("CF_%02d_%d", slice, part);
                if (clusterFinderType==1) {
                    AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderDecoder", publisher.Data(), "-timebins 1001");
                } else if (clusterFinderType==2) {
                    AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinderPacked", publisher.Data(), "-timebins 1001 -sorted");
                } else {
                    AliHLTConfiguration cfconf(cf.Data(), "TPCClusterFinder32Bit", publisher.Data(), "");
                }
                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;

                if (0) {
                    clusterHistoOutput.Form("CH_%02d_%d", slice, part);
                    AliHLTConfiguration cfconf(clusterHistoOutput.Data(), "TPCClusterHisto", cf.Data(), "");
                    if (histogramHandlerInputClusterFinder.Length()>0) histogramHandlerInputClusterFinder+=" ";
                    histogramHandlerInputClusterFinder+=clusterHistoOutput;
                }
            }
            TString tracker;
            // tracker components
            tracker.Form("TR_%02d", slice);
            if (bUseCA) {
                AliHLTConfiguration trackerconf(tracker.Data(), "TPCCATracker", trackerInput.Data(), "");
            } else {
                AliHLTConfiguration trackerconf(tracker.Data(), "TPCSliceTracker", trackerInput.Data(), "-pp-run");
            }

            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
        if (bUseCA) {
            AliHLTConfiguration mergerconf("globalmerger","TPCCAGlobalMerger",mergerInput.Data(),"");
        } else {
            AliHLTConfiguration mergerconf("globalmerger","TPCGlobalMerger",mergerInput.Data(),"");
        }



        //add all global tracks to histo input
        if (histoInput.Length()>0) histoInput+=" ";
        histoInput+="globalmerger";

        ecInput += " globalmerger";

        // END OF TPC
    }

    if (doPhos)
    {
        ///////////////////////////////////////
        // The PHOS part of the chain
        //////////////////////////////////////

        int moduleStart = 2;
        int moduleEnd = 4;
        int rcuStart = 0;
        int rcuEnd = 3;
        int rcusPerModule = 4;
        int ddlOffset = 1792;

        for (int module = moduleStart; module <= moduleEnd; module++)
        {
            TString clInput;

            for (int rcu = rcuStart; rcu <= rcuEnd; rcu++)
            {
                TString arg, publisher, ra, dm;
                // raw data publisher components
                publisher.Form("PHS-RP_%02d_%d", module, rcu);
                arg.Form("-minid %d -datatype 'DDL_RAW ' 'PHOS'  -dataspec 0x%x ", ddlOffset + module*(rcusPerModule) + rcu, 0x1 << (module*rcusPerModule + rcu));
                AliHLTConfiguration pubConf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());

                // Raw analyzer
                arg = "";
                ra.Form("PHS-RA_%02d_%d", module, rcu);
                AliHLTConfiguration rawConf(ra.Data(), "PhosRawCrude", publisher.Data(), arg.Data());

                // digit maker components
                dm.Form("PHS-DM_%02d_%d", module, rcu);
                arg="";
                AliHLTConfiguration dmConf(dm.Data(), "PhosDigitMaker", ra.Data(), arg.Data());

                if (clInput.Length() > 0) clInput += " ";
                clInput+=dm;
            }
            TString arg, cl;

            // Clusterizer
            cl.Form("PHS-CL_%02d", module);
            arg = "";
            AliHLTConfiguration clConf(cl.Data(), "PhosClusterizer", clInput.Data(), arg.Data());

            if (ecInput.Length() > 0) ecInput += " ";
            ecInput += cl;
        }

        // END OF PHOS
    }

    if (doEmcal)
    {
        int moduleStart = 0;
        int moduleEnd = 0;
        int rcuStart = 0;
        int rcuEnd = 1;
        int rcusPerModule = 2;
        int ddlOffset = 4608;

        histoInput = "";

        for (int module = moduleStart; module <= moduleEnd; module++)
        {
            TString clInput;

            for (int rcu = rcuStart; rcu <= rcuEnd; rcu++)
            {
                TString arg, publisher, ra, dm;
                // raw data publisher components
                publisher.Form("EMC-RP_%02d_%d", module, rcu);
                arg.Form("-minid %d -datatype 'DDL_RAW ' 'EMCA'  -dataspec 0x%x ", ddlOffset + module*(rcusPerModule) + rcu, 0x1 << (module*rcusPerModule + rcu));
                AliHLTConfiguration pubConf(publisher.Data(), "AliRawReaderPublisher", NULL , arg.Data());

                // Raw analyzer
                arg = "";
                ra.Form("EMC-RA_%02d_%d", module, rcu);
                AliHLTConfiguration rawConf(ra.Data(), "EmcalRawCrude", publisher.Data(), arg.Data());

                // digit maker components
                dm.Form("EMC-DM_%02d_%d", module, rcu);
                arg="";
                AliHLTConfiguration dmConf(dm.Data(), "EmcalDigitMaker", ra.Data(), arg.Data());

                if (clInput.Length() > 0) clInput += " ";
                clInput+=dm;
            }
            TString arg, cl, ca;

            // Clusterizer
            cl.Form("EMC-CL_%02d", module);
            arg = "";
            AliHLTConfiguration clConf(cl.Data(), "EmcalClusterizer", clInput.Data(), arg.Data());

            if (ecInput.Length() > 0) ecInput += " ";
            ecInput += cl;
        }


        // END OF EMCAL
    }

    // If there are no tracks it shouldn't do anything...
    AliHLTConfiguration tmconf("track-matcher", "TrackMatcher", ecInput.Data(), "");

    if (doEmcal)
    {
        // EMCAL Histograms
        AliHLTConfiguration hconf("emcalHistocomp", "CaloPhysicsHistos", "track-matcher", "-emcal -invariantmass -clusterenergy -matchedtracks");
        AliHLTConfiguration fwconf("emcalHist", "ROOTFileWriter"   , "emcalHistocomp", "-datafile emcalHistograms -concatenate-events -overwrite");
    }

    if (doPhos)
    {
        // PHOS Histograms
        AliHLTConfiguration hconf("phosHistocomp", "CaloPhysicsHistos", "track-matcher", "-phos -invariantmass -clusterenergy -matchedtracks");
        AliHLTConfiguration fwconf("phosHist", "ROOTFileWriter"   , "phosHistocomp", "-datafile phosHistograms -concatenate-events -overwrite");
    }
    
    TString arg, ec;


    ec.Form("ESD-CONVERTER");
    arg = "";

    AliHLTConfiguration esdcconf(ec.Data(), "GlobalEsdConverter"   , "track-matcher", "");

    AliReconstruction rec;

    rec.SetInput(input);
    rec.SetRunVertexFinder(kFALSE);
    rec.SetRunReconstruction("HLT");
    rec.SetRunTracking(":");
    rec.SetLoadAlignFromCDB(0);
    rec.SetRunQA(":");
    //  rec.SetRunLocalReconstruction("PHOS") ;
    rec.SetOption("HLT", option);
    rec.SetSpecificStorage("GRP/GRP/Data", Form("local://%s", grp));
    rec.Run();
}
 rec_hlt_calo.C:1
 rec_hlt_calo.C:2
 rec_hlt_calo.C:3
 rec_hlt_calo.C:4
 rec_hlt_calo.C:5
 rec_hlt_calo.C:6
 rec_hlt_calo.C:7
 rec_hlt_calo.C:8
 rec_hlt_calo.C:9
 rec_hlt_calo.C:10
 rec_hlt_calo.C:11
 rec_hlt_calo.C:12
 rec_hlt_calo.C:13
 rec_hlt_calo.C:14
 rec_hlt_calo.C:15
 rec_hlt_calo.C:16
 rec_hlt_calo.C:17
 rec_hlt_calo.C:18
 rec_hlt_calo.C:19
 rec_hlt_calo.C:20
 rec_hlt_calo.C:21
 rec_hlt_calo.C:22
 rec_hlt_calo.C:23
 rec_hlt_calo.C:24
 rec_hlt_calo.C:25
 rec_hlt_calo.C:26
 rec_hlt_calo.C:27
 rec_hlt_calo.C:28
 rec_hlt_calo.C:29
 rec_hlt_calo.C:30
 rec_hlt_calo.C:31
 rec_hlt_calo.C:32
 rec_hlt_calo.C:33
 rec_hlt_calo.C:34
 rec_hlt_calo.C:35
 rec_hlt_calo.C:36
 rec_hlt_calo.C:37
 rec_hlt_calo.C:38
 rec_hlt_calo.C:39
 rec_hlt_calo.C:40
 rec_hlt_calo.C:41
 rec_hlt_calo.C:42
 rec_hlt_calo.C:43
 rec_hlt_calo.C:44
 rec_hlt_calo.C:45
 rec_hlt_calo.C:46
 rec_hlt_calo.C:47
 rec_hlt_calo.C:48
 rec_hlt_calo.C:49
 rec_hlt_calo.C:50
 rec_hlt_calo.C:51
 rec_hlt_calo.C:52
 rec_hlt_calo.C:53
 rec_hlt_calo.C:54
 rec_hlt_calo.C:55
 rec_hlt_calo.C:56
 rec_hlt_calo.C:57
 rec_hlt_calo.C:58
 rec_hlt_calo.C:59
 rec_hlt_calo.C:60
 rec_hlt_calo.C:61
 rec_hlt_calo.C:62
 rec_hlt_calo.C:63
 rec_hlt_calo.C:64
 rec_hlt_calo.C:65
 rec_hlt_calo.C:66
 rec_hlt_calo.C:67
 rec_hlt_calo.C:68
 rec_hlt_calo.C:69
 rec_hlt_calo.C:70
 rec_hlt_calo.C:71
 rec_hlt_calo.C:72
 rec_hlt_calo.C:73
 rec_hlt_calo.C:74
 rec_hlt_calo.C:75
 rec_hlt_calo.C:76
 rec_hlt_calo.C:77
 rec_hlt_calo.C:78
 rec_hlt_calo.C:79
 rec_hlt_calo.C:80
 rec_hlt_calo.C:81
 rec_hlt_calo.C:82
 rec_hlt_calo.C:83
 rec_hlt_calo.C:84
 rec_hlt_calo.C:85
 rec_hlt_calo.C:86
 rec_hlt_calo.C:87
 rec_hlt_calo.C:88
 rec_hlt_calo.C:89
 rec_hlt_calo.C:90
 rec_hlt_calo.C:91
 rec_hlt_calo.C:92
 rec_hlt_calo.C:93
 rec_hlt_calo.C:94
 rec_hlt_calo.C:95
 rec_hlt_calo.C:96
 rec_hlt_calo.C:97
 rec_hlt_calo.C:98
 rec_hlt_calo.C:99
 rec_hlt_calo.C:100
 rec_hlt_calo.C:101
 rec_hlt_calo.C:102
 rec_hlt_calo.C:103
 rec_hlt_calo.C:104
 rec_hlt_calo.C:105
 rec_hlt_calo.C:106
 rec_hlt_calo.C:107
 rec_hlt_calo.C:108
 rec_hlt_calo.C:109
 rec_hlt_calo.C:110
 rec_hlt_calo.C:111
 rec_hlt_calo.C:112
 rec_hlt_calo.C:113
 rec_hlt_calo.C:114
 rec_hlt_calo.C:115
 rec_hlt_calo.C:116
 rec_hlt_calo.C:117
 rec_hlt_calo.C:118
 rec_hlt_calo.C:119
 rec_hlt_calo.C:120
 rec_hlt_calo.C:121
 rec_hlt_calo.C:122
 rec_hlt_calo.C:123
 rec_hlt_calo.C:124
 rec_hlt_calo.C:125
 rec_hlt_calo.C:126
 rec_hlt_calo.C:127
 rec_hlt_calo.C:128
 rec_hlt_calo.C:129
 rec_hlt_calo.C:130
 rec_hlt_calo.C:131
 rec_hlt_calo.C:132
 rec_hlt_calo.C:133
 rec_hlt_calo.C:134
 rec_hlt_calo.C:135
 rec_hlt_calo.C:136
 rec_hlt_calo.C:137
 rec_hlt_calo.C:138
 rec_hlt_calo.C:139
 rec_hlt_calo.C:140
 rec_hlt_calo.C:141
 rec_hlt_calo.C:142
 rec_hlt_calo.C:143
 rec_hlt_calo.C:144
 rec_hlt_calo.C:145
 rec_hlt_calo.C:146
 rec_hlt_calo.C:147
 rec_hlt_calo.C:148
 rec_hlt_calo.C:149
 rec_hlt_calo.C:150
 rec_hlt_calo.C:151
 rec_hlt_calo.C:152
 rec_hlt_calo.C:153
 rec_hlt_calo.C:154
 rec_hlt_calo.C:155
 rec_hlt_calo.C:156
 rec_hlt_calo.C:157
 rec_hlt_calo.C:158
 rec_hlt_calo.C:159
 rec_hlt_calo.C:160
 rec_hlt_calo.C:161
 rec_hlt_calo.C:162
 rec_hlt_calo.C:163
 rec_hlt_calo.C:164
 rec_hlt_calo.C:165
 rec_hlt_calo.C:166
 rec_hlt_calo.C:167
 rec_hlt_calo.C:168
 rec_hlt_calo.C:169
 rec_hlt_calo.C:170
 rec_hlt_calo.C:171
 rec_hlt_calo.C:172
 rec_hlt_calo.C:173
 rec_hlt_calo.C:174
 rec_hlt_calo.C:175
 rec_hlt_calo.C:176
 rec_hlt_calo.C:177
 rec_hlt_calo.C:178
 rec_hlt_calo.C:179
 rec_hlt_calo.C:180
 rec_hlt_calo.C:181
 rec_hlt_calo.C:182
 rec_hlt_calo.C:183
 rec_hlt_calo.C:184
 rec_hlt_calo.C:185
 rec_hlt_calo.C:186
 rec_hlt_calo.C:187
 rec_hlt_calo.C:188
 rec_hlt_calo.C:189
 rec_hlt_calo.C:190
 rec_hlt_calo.C:191
 rec_hlt_calo.C:192
 rec_hlt_calo.C:193
 rec_hlt_calo.C:194
 rec_hlt_calo.C:195
 rec_hlt_calo.C:196
 rec_hlt_calo.C:197
 rec_hlt_calo.C:198
 rec_hlt_calo.C:199
 rec_hlt_calo.C:200
 rec_hlt_calo.C:201
 rec_hlt_calo.C:202
 rec_hlt_calo.C:203
 rec_hlt_calo.C:204
 rec_hlt_calo.C:205
 rec_hlt_calo.C:206
 rec_hlt_calo.C:207
 rec_hlt_calo.C:208
 rec_hlt_calo.C:209
 rec_hlt_calo.C:210
 rec_hlt_calo.C:211
 rec_hlt_calo.C:212
 rec_hlt_calo.C:213
 rec_hlt_calo.C:214
 rec_hlt_calo.C:215
 rec_hlt_calo.C:216
 rec_hlt_calo.C:217
 rec_hlt_calo.C:218
 rec_hlt_calo.C:219
 rec_hlt_calo.C:220
 rec_hlt_calo.C:221
 rec_hlt_calo.C:222
 rec_hlt_calo.C:223
 rec_hlt_calo.C:224
 rec_hlt_calo.C:225
 rec_hlt_calo.C:226
 rec_hlt_calo.C:227
 rec_hlt_calo.C:228
 rec_hlt_calo.C:229
 rec_hlt_calo.C:230
 rec_hlt_calo.C:231
 rec_hlt_calo.C:232
 rec_hlt_calo.C:233
 rec_hlt_calo.C:234
 rec_hlt_calo.C:235
 rec_hlt_calo.C:236
 rec_hlt_calo.C:237
 rec_hlt_calo.C:238
 rec_hlt_calo.C:239
 rec_hlt_calo.C:240
 rec_hlt_calo.C:241
 rec_hlt_calo.C:242
 rec_hlt_calo.C:243
 rec_hlt_calo.C:244
 rec_hlt_calo.C:245
 rec_hlt_calo.C:246
 rec_hlt_calo.C:247
 rec_hlt_calo.C:248
 rec_hlt_calo.C:249
 rec_hlt_calo.C:250
 rec_hlt_calo.C:251
 rec_hlt_calo.C:252
 rec_hlt_calo.C:253
 rec_hlt_calo.C:254
 rec_hlt_calo.C:255
 rec_hlt_calo.C:256
 rec_hlt_calo.C:257