2 const char* turl = gSystem->Getenv("ALIEN_JDL_OUTPUTDIR");
\r
3 TString fESDFileName = "alien://";
\r
4 fESDFileName += turl;
\r
5 fESDFileName += "/AliESDs.root";
\r
10 TString fAliroot, fRoot, fGeant;
\r
11 GetVersions(fAliroot,fRoot,fGeant);
\r
13 UpdateTag(fAliroot,fRoot,fGeant,fESDFileName,fGUID);
\r
16 //_____________________________________//
\r
17 GetVersions(TString &fAliroot, TString &froot, TString &fgeant) {
\r
18 const char* fver = gSystem->Getenv("ALIEN_JDL_PACKAGES");
\r
20 Int_t fFirst = fS.First("#");
\r
22 while(fFirst != -1) {
\r
23 Int_t fTotalLength = fS.Length();
\r
25 TString fS1 = fS(0,fFirst);
\r
26 tmp = fS(fFirst+2,fTotalLength);
\r
29 if(fS1.Contains("Root")) fAliroot = fS1;
\r
30 if(fS1.Contains("ROOT")) froot = fS1;
\r
31 if(fS1.Contains("GEANT")) fgeant = fS1;
\r
33 if(tmp.Contains("Root")) fAliroot = tmp;
\r
34 if(tmp.Contains("ROOT")) froot = tmp;
\r
35 if(tmp.Contains("GEANT")) fgeant = tmp;
\r
37 fFirst = tmp.First("#");
\r
41 //_____________________________________//
\r
42 GetGUID(TString &guid) {
\r
43 ofstream myfile ("guid.txt");
\r
44 if (myfile.is_open()) {
\r
45 TFile *f = TFile::Open("AliESDs.root","read");
\r
47 guid = f->GetUUID().AsString();
\r
48 myfile << "AliESDs.root \t"<<f->GetUUID().AsString();
\r
49 cout<<guid.Data()<<endl;
\r
52 else cout<<"Input file not found"<<endl;
\r
54 else cout<<"Output file can't be created..."<<endl;
\r
58 //_____________________________________//
\r
59 Bool_t UpdateTag(TString faliroot, TString froot, TString fgeant, TString turl, TString guid) {
\r
60 cout<<"Updating tags....."<<endl;
\r
62 const char * tagPattern = "tag.root";
\r
63 // Open the working directory
\r
64 void * dirp = gSystem->OpenDirectory(gSystem->pwd());
\r
65 const char * name = 0x0;
\r
66 // Add all files matching *pattern* to the chain
\r
67 while((name = gSystem->GetDirEntry(dirp))) {
\r
68 if (strstr(name,tagPattern)) {
\r
69 TFile *f = TFile::Open(name,"read") ;
\r
71 AliRunTag *tag = new AliRunTag;
\r
72 AliEventTag *evTag = new AliEventTag;
\r
73 TTree *fTree = (TTree *)f->Get("T");
\r
74 fTree->SetBranchAddress("AliTAG",&tag);
\r
76 //Defining new tag objects
\r
77 AliRunTag *newTag = new AliRunTag();
\r
78 TTree ttag("T","A Tree with event tags");
\r
79 TBranch * btag = ttag.Branch("AliTAG", &newTag);
\r
80 btag->SetCompressionLevel(9);
\r
81 for(Int_t iTagFiles = 0; iTagFiles < fTree->GetEntries(); iTagFiles++) {
\r
82 fTree->GetEntry(iTagFiles);
\r
83 newTag->SetRunId(tag->GetRunId());
\r
84 newTag->SetAlirootVersion(faliroot);
\r
85 newTag->SetRootVersion(froot);
\r
86 newTag->SetGeant3Version(fgeant);
\r
87 const TClonesArray *tagList = tag->GetEventTags();
\r
88 for(Int_t j = 0; j < tagList->GetEntries(); j++) {
\r
89 evTag = (AliEventTag *) tagList->At(j);
\r
90 evTag->SetTURL(turl);
\r
91 evTag->SetGUID(guid);
\r
92 newTag->AddEventTag(*evTag);
\r
98 TFile* ftag = TFile::Open(name, "recreate");
\r