ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

#include <Riostream.h>

#include <TChain.h>
#include <TTree.h>
#include <TString.h>
#include <TFile.h>
#include <TSystem.h>

#include "AliAnalysisTaskTagCreator.h"
#include "AliAnalysisManager.h"
#include "AliESDEvent.h"
#include "AliAODEvent.h"
#include "AliESDInputHandler.h"
#include "AliAODHandler.h"
#include "AliRunTag.h"
#include "AliEventTag.h"
#include "AliAODTagCreator.h"
#include "AliLog.h"


using std::cout;
using std::endl;
using std::ofstream;
ClassImp(AliAnalysisTaskTagCreator)

////////////////////////////////////////////////////////////////////////

AliAnalysisTaskTagCreator::AliAnalysisTaskTagCreator():
    AliAnalysisTaskSE(),
    fCreateTags(kFALSE),
    fFirstFile(kTRUE),
    fRunTag(0), 
    fTreeT(0),
    fTagCreator(0),
    fAODFileName(""),
    fGUID(0)
{
  // Default constructor
}

AliAnalysisTaskTagCreator::AliAnalysisTaskTagCreator(const char* name):
    AliAnalysisTaskSE(name),
    fCreateTags(kFALSE),
    fFirstFile(kTRUE),
    fRunTag(0), 
    fTreeT(0),
    fTagCreator(0),
    fAODFileName(""),
    fGUID(0)
{
  // Constructor
    DefineOutput(1, TTree::Class()); 	
}

void AliAnalysisTaskTagCreator::UserCreateOutputObjects()
{
// Create the output container
    OpenFile(1);
    fTreeT  = new TTree("T", "AOD Tags");
    fRunTag = new AliRunTag();
    TBranch * btag = fTreeT->Branch("AliTAG", "AliRunTag", &fRunTag);
    btag->SetCompressionLevel(9);
    fTagCreator = new AliAODTagCreator();
    PostData(1, fTreeT);
}

void AliAnalysisTaskTagCreator::Init()
{

}

void AliAnalysisTaskTagCreator::ConnectInputData(Option_t * /*option*/)
{
    // Initialization
    const char* turl = gSystem->Getenv("ALIEN_JDL_OUTPUTDIR");
    TString sturl = turl;
    
    if (sturl.Length() != 0) {
      fAODFileName = "alien://";
      fAODFileName += turl;
      fAODFileName += "/AliAOD.root";
    }  
}

void AliAnalysisTaskTagCreator::UserExec(Option_t */*option*/)
{

    // Create Tags for the current event
    AliEventTag* evtTag = new AliEventTag();
    fTagCreator->FillEventTag(AODEvent(), evtTag);
    // Reference to the input file
    TString fturl, fturltemp, guid;
    
    TString opt(fInputHandler->GetAnalysisType());
    opt.ToLower();
    
    TFile *file = OutputTree()->GetCurrentFile();
    const TUrl *url = file->GetEndpointUrl();
    guid = file->GetUUID().AsString();
    if (fAODFileName.Length() != 0) {
	fturl = fAODFileName;
	guid  = fGUID;
    } else {
	fturl = url->GetFile();
    }

    if (fRunTag->GetFileId(guid) == -1) {
      AliFileTag *eftag = new AliFileTag();

      eftag->SetGUID(guid);
      if(fAODFileName.Length() != 0) {
	eftag->SetMD5("");
	eftag->SetTURL(fturl);
	eftag->SetSize(0);
      }
      else eftag->SetPath(fturl);

      fRunTag->AddFileTag(eftag);
    }
    //
    // Add the event tag
    fRunTag->AddEventTag(*evtTag);
    PostData(1, fTreeT);
}


void AliAnalysisTaskTagCreator::FinishTaskOutput()
{
// Terminate analysis
//
    if (fInputHandler->GetRunTag()) fRunTag->CopyStandardContent(fInputHandler->GetRunTag());	    
    fTreeT->Fill();
}

Bool_t AliAnalysisTaskTagCreator::Notify()
{
    // Notify file change
    fInputHandler = (AliInputEventHandler*) 
      ((AliAnalysisManager::GetAnalysisManager())->GetInputEventHandler());
    return kTRUE;
}


void AliAnalysisTaskTagCreator::GetGUID(TString &guid) {
    // Get the guid of the AliAOD.root file
    ofstream myfile ("guid.txt");
    if (myfile.is_open()) {
	TFile *f = TFile::Open("AliAOD.root","read");
	if(f->IsOpen()) {
	    guid = f->GetUUID().AsString();
	    myfile << "AliAOD.root \t"<<f->GetUUID().AsString();
	    cout<<guid.Data()<<endl;
	    myfile.close();
	}
	else cout<<"Input file not found"<<endl;
	f->Close();
    }
    else cout<<"Output file can't be created..."<<endl;
}



void AliAnalysisTaskTagCreator::Terminate(Option_t */*option*/)
{
// Terminate analysis
//
    if (fDebug > 1) printf("AnalysisTagCreator: Terminate() \n");
}


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