]>
Commit | Line | Data |
---|---|---|
ce812f4f | 1 | void tag() { |
2 | const char* turl = gSystem->Getenv("ALIEN_JDL_OUTPUTDIR"); | |
3 | TString fESDFileName = "alien://"; | |
4 | fESDFileName += turl; | |
5 | fESDFileName += "/AliESDs.root"; | |
6 | ||
7 | TString fGUID = 0; | |
8 | GetGUID(fGUID); | |
9 | ||
10 | TString fAliroot, fRoot, fGeant; | |
11 | GetVersions(fAliroot,fRoot,fGeant); | |
12 | ||
13 | UpdateTag(fAliroot,fRoot,fGeant,fESDFileName,fGUID); | |
14 | } | |
15 | ||
16 | //_____________________________________// | |
17 | GetVersions(TString &fAliroot, TString &froot, TString &fgeant) { | |
18 | const char* fver = gSystem->Getenv("ALIEN_JDL_PACKAGES"); | |
19 | TString fS = fver; | |
20 | Int_t fFirst = fS.First("#"); | |
21 | ||
22 | while(fFirst != -1) { | |
23 | Int_t fTotalLength = fS.Length(); | |
24 | TString tmp = fS; | |
25 | TString fS1 = fS(0,fFirst); | |
26 | tmp = fS(fFirst+2,fTotalLength); | |
27 | fS = tmp; | |
28 | ||
29 | if(fS1.Contains("Root")) fAliroot = fS1; | |
30 | if(fS1.Contains("ROOT")) froot = fS1; | |
31 | if(fS1.Contains("GEANT")) fgeant = fS1; | |
32 | ||
33 | if(tmp.Contains("Root")) fAliroot = tmp; | |
34 | if(tmp.Contains("ROOT")) froot = tmp; | |
35 | if(tmp.Contains("GEANT")) fgeant = tmp; | |
36 | ||
37 | fFirst = tmp.First("#"); | |
38 | } | |
39 | } | |
40 | ||
41 | //_____________________________________// | |
42 | GetGUID(TString &guid) { | |
43 | ofstream myfile ("guid.txt"); | |
44 | if (myfile.is_open()) { | |
45 | TFile *f = TFile::Open("AliESDs.root","read"); | |
46 | if(f->IsOpen()) { | |
47 | guid = f->GetUUID().AsString(); | |
48 | myfile << "AliESDs.root \t"<<f->GetUUID().AsString(); | |
49 | cout<<guid.Data()<<endl; | |
50 | myfile.close(); | |
51 | } | |
52 | else cout<<"Input file not found"<<endl; | |
53 | } | |
54 | else cout<<"Output file can't be created..."<<endl; | |
55 | } | |
56 | ||
57 | ||
58 | //_____________________________________// | |
59 | Bool_t UpdateTag(TString faliroot, TString froot, TString fgeant, TString turl, TString guid) { | |
60 | cout<<"Updating tags....."<<endl; | |
61 | ||
62 | const char * tagPattern = "tag.root"; | |
63 | // Open the working directory | |
64 | void * dirp = gSystem->OpenDirectory(gSystem->pwd()); | |
65 | const char * name = 0x0; | |
66 | // Add all files matching *pattern* to the chain | |
67 | while((name = gSystem->GetDirEntry(dirp))) { | |
68 | if (strstr(name,tagPattern)) { | |
69 | TFile *f = TFile::Open(name,"read") ; | |
70 | ||
71 | AliRunTag *tag = new AliRunTag; | |
72 | AliEventTag *evTag = new AliEventTag; | |
73 | TTree *fTree = (TTree *)f->Get("T"); | |
74 | fTree->SetBranchAddress("AliTAG",&tag); | |
75 | ||
76 | //Defining new tag objects | |
77 | AliRunTag *newTag = new AliRunTag(); | |
78 | TTree ttag("T","A Tree with event tags"); | |
79 | TBranch * btag = ttag.Branch("AliTAG", &newTag); | |
80 | btag->SetCompressionLevel(9); | |
81 | for(Int_t iTagFiles = 0; iTagFiles < fTree->GetEntries(); iTagFiles++) { | |
82 | fTree->GetEntry(iTagFiles); | |
83 | newTag->SetRunId(tag->GetRunId()); | |
84 | newTag->SetAlirootVersion(faliroot); | |
85 | newTag->SetRootVersion(froot); | |
86 | newTag->SetGeant3Version(fgeant); | |
87 | const TClonesArray *tagList = tag->GetEventTags(); | |
88 | for(Int_t j = 0; j < tagList->GetEntries(); j++) { | |
89 | evTag = (AliEventTag *) tagList->At(j); | |
90 | evTag->SetTURL(turl); | |
91 | evTag->SetGUID(guid); | |
92 | newTag->AddEventTag(*evTag); | |
93 | } | |
94 | ttag.Fill(); | |
95 | newTag->Clear(); | |
96 | }//tag file loop | |
97 | ||
98 | TFile* ftag = TFile::Open(name, "recreate"); | |
99 | ftag->cd(); | |
100 | ttag.Write(); | |
101 | ftag->Close(); | |
102 | ||
103 | delete tag; | |
104 | delete newTag; | |
105 | }//pattern check | |
106 | }//directory loop | |
107 | return kTRUE; | |
108 | } |