]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/vertexingHF/MakeAODInputChain.C
Added like-sign 3Prong
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / MakeAODInputChain.C
CommitLineData
27c1406d 1TChain *MakeAODInputChain(const char* collectionfileAOD,
2 const char* collectionfileAODfriend) {
3 //
4 // Check one-to-one correspondence of the two collections
5 // Create AOD chain with friend AODVertexingHF chain
6 // Origin: A.Rossi, andrea.rossi@ts.infn.it
7 //
8
9 TAlienCollection *collectionAOD = TAlienCollection::Open(collectionfileAOD);
10 TAlienCollection *collectionAODfriend = TAlienCollection::Open(collectionfileAODfriend);
11
12
13 TGridResult *tagResultAOD = collectionAOD->GetGridResult("",0,0);
14 TGridResult *tagResultAODFriend = collectionAODfriend->GetGridResult("",0,0);
15 // tagResultAOD->Print();
16 TMap *mappa;
17 TObjString *filename;
18 Int_t event,dir,pos;
19 string str;
20 Int_t lastAOD[1000],lastAODFriend[1000];
21 TArrayI ***arrAOD=new TArrayI**[1000];
22 TArrayI ***arrAODFriend=new TArrayI**[1000];
23
24 for(Int_t j=0;j<1000;j++) {
25 arrAOD[j]=new TArrayI*[2];
26 arrAOD[j][0]=new TArrayI(100);
27 arrAOD[j][0]->Reset(0);
28 arrAOD[j][1]=new TArrayI(100);
29 arrAOD[j][1]->Reset(-1);
30
31 arrAODFriend[j]=new TArrayI*[2];
32 arrAODFriend[j][0]=new TArrayI(100);
33 arrAODFriend[j][0]->Reset(0);
34 arrAODFriend[j][1]=new TArrayI(100);
35 arrAODFriend[j][1]->Reset(-1);
36
37 lastAOD[j]=0;
38 lastAODFriend[j]=0;
39 }
40
41 for(Int_t j=0;j<tagResultAOD->GetEntries();j++) {
42 mappa=(TMap*)tagResultAOD->At(j);
43 filename=(TObjString*)mappa->GetValue("turl");
44 str=filename->GetString();
45 pos=str.find_last_of("/");
46 str.string::replace(pos,50,"");
47 pos=str.find_last_of("/");
48 str.string::replace(pos,1," ");
49 sscanf(str.data(),"%*s %d",&event);
50 pos=str.find_last_of("/");
51 str.string::replace(pos,1," ");
52 sscanf(str.data(),"%*s %d",&dir);
53 arrAOD[event][0]->AddAt(dir,lastAOD[event]);
54 arrAOD[event][1]->AddAt(j,lastAOD[event]);
55 // printf("Adding AOD, event:%d,dir:%d,position:%d\n",event,dir,j);
56 lastAOD[event]++;
57 }
58
59 for(Int_t j=0;j<tagResultAODFriend->GetEntries();j++) {
60 mappa=(TMap*)tagResultAODFriend->At(j);
61 filename=(TObjString*)mappa->GetValue("turl");
62 str=filename->GetString();
63 pos=str.find_last_of("/");
64 str.string::replace(pos,50,"");
65 pos=str.find_last_of("/");
66 str.string::replace(pos,1," ");
67 sscanf(str.data(),"%*s %d",&event);
68 pos=str.find_last_of("/");
69 str.string::replace(pos,1," ");
70 sscanf(str.data(),"%*s %d",&dir);
71 arrAODFriend[event][0]->AddAt(dir,lastAODFriend[event]);
72 arrAODFriend[event][1]->AddAt(j,lastAODFriend[event]);
73 //printf("Adding AODFriend, event:%d,dir:%d,position:%d\n",event,dir,j);
74 lastAODFriend[event]++;
75 }
76
77 TChain *chainAOD = new TChain("aodTree");
78 TChain *chainAODfriend = new TChain("aodTree");
79
80 for(Int_t ev=0;ev<1000;ev++) {
81 for(Int_t j=0;j<lastAOD[ev];j++) {
82 dir= arrAOD[ev][0]->At(j);
83 for(Int_t k=0;k<lastAODFriend[ev];k++) {
84 if(arrAODFriend[ev][0]->At(k)==dir){
85 chainAOD->Add((((TObjString*)((TMap*)tagResultAOD->At(arrAOD[ev][1]->At(j)))->GetValue("turl"))->GetString()).Data());
86 chainAODfriend->Add((((TObjString*)((TMap*)tagResultAODFriend->At(arrAODFriend[ev][1]->At(k)))->GetValue("turl"))->GetString()).Data());
87 printf("Events: %d, adding AOD at position %d,dir:%d posarray:%d \n and Friend at %d, dir:%d , posarray: %d \n \n",ev,arrAOD[ev][1]->At(j),arrAOD[ev][0]->At(j),j,arrAODFriend[ev][1]->At(k),arrAODFriend[ev][0]->At(k),k);
88 break;
89 }
90 }
91 }
92 }
93
94
95 chainAOD->AddFriend(chainAODfriend);
96
97 return chainAOD;
98}
99//----------------------------------------------------------------------------
100TChain *MakeAODInputChain(const char* pathname="",
101 Int_t firstdir=1,Int_t lastdir=-1) {
102 //
103 // Create AOD chain with friend AODVertexingHF chain
104 // Example path: "alien:///alice/cern.ch/user/r/rbala/analysis/out_lhcw/290001/"
105 // Origin: A.Rossi, andrea.rossi@ts.infn.it
106 //
107
108
109 TChain *chainAOD = new TChain("aodTree");
110 TChain *chainAODfriend = new TChain("aodTree");
111
112 if(lastdir==-1) { // only one pair of files
113 chainAOD->Add("AliAOD.root");
114 chainAODfriend->Add("AliAOD.VertexingHF.root");
115 } else {
116 // set the path to the files (can be local or on alien)
117 for(Int_t idir=firstdir; idir<=lastdir; idir++) {
118 TString aodname=pathname;
119 TString aodHFname=pathname;
120 aodname+=idir;
121 aodHFname+=idir;
122 aodname.Append("/AliAOD.root");
123 aodHFname.Append("/AliAOD.VertexingHF.root");
124 chainAOD->Add(aodname.Data());
125 chainAODfriend->Add(aodHFname.Data());
126 }
127 }
128
129 chainAOD->AddFriend(chainAODfriend);
130
131 return chainAOD;
132}