]>
Commit | Line | Data |
---|---|---|
0a6dde4c | 1 | void hbtanalysis(Int_t first = -1,Int_t last = -1, char *outfile = "hbtanalysis.root") |
2 | { | |
3 | //HBT Anlysis Macro | |
4 | //Anlyzes TPC recontructed tracks and simulated particles that corresponds to them | |
5 | //Reads data from diroctories from first to last(including) | |
6 | // For examples if first=3 and last=5 it reads from | |
7 | // ./3/ | |
8 | // ./4/ | |
9 | // ./5/ | |
10 | //if first or last is negative (or both), it reads from current directory | |
11 | // | |
12 | //these names I use when analysis is done directly from CASTOR files via RFIO | |
13 | // const char* basedir="rfio:/castor/cern.ch/user/s/skowron/"; | |
14 | // const char* serie="standard"; | |
15 | // const char* field = "0.4"; | |
16 | const char* basedir="."; | |
17 | const char* serie=""; | |
18 | const char* field = ""; | |
19 | ||
20 | // Dynamically link some shared libs | |
21 | gROOT->LoadMacro("loadlibs.C"); | |
22 | loadlibs(); | |
23 | ||
24 | gSystem->Load("$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET)/libHBTAnalysis"); | |
25 | ||
26 | ||
27 | /***********************************************************/ | |
28 | //Create analysis and reader | |
29 | AliHBTAnalysis * analysis = new AliHBTAnalysis(); | |
30 | ||
31 | AliHBTReader* reader; | |
32 | TObjArray* dirs=0; | |
33 | if ( (first < 0) || (last<0) || ( (last-first)<0 ) ) | |
34 | {//read from current directory | |
35 | reader = new AliHBTReaderTPC(); | |
36 | } | |
37 | else | |
38 | {//read from many dirs dirs | |
39 | char buff[50]; | |
40 | dirs = new TObjArray(last-first+1); | |
41 | for (Int_t i = first; i<=last; i++) | |
42 | { | |
43 | sprintf(buff,"%s/%s/%s/%d",basedir,field,serie,i); | |
44 | TObjString *odir= new TObjString(buff); | |
45 | dirs->Add(odir); | |
46 | } | |
47 | reader = new AliHBTReaderTPC(dirs); | |
48 | } | |
49 | ||
50 | /***********************************************************/ | |
51 | ||
52 | //we want have only low pt pi+ so set a cut to reader | |
53 | AliHBTParticleCut* readerpartcut= new AliHBTParticleCut(); | |
54 | readerpartcut->SetPtRange(0.0,3.0); | |
55 | readerpartcut->SetPID(kPiPlus); | |
56 | reader->AddParticleCut(readerpartcut);//read this particle type with this cut | |
57 | ||
58 | analysis->SetReader(reader); | |
59 | /************************************************************/ | |
60 | ||
61 | AliHBTPairCut *paircut = new AliHBTPairCut(); | |
62 | paircut->SetQInvRange(0.0,0.15); | |
63 | analysis->SetGlobalPairCut(paircut); | |
64 | ||
65 | AliHBTQInvCorrelFctn * qinvcfT= new AliHBTQInvCorrelFctn(); | |
66 | AliHBTQInvCorrelFctn * qinvcfP= new AliHBTQInvCorrelFctn(); | |
67 | ||
68 | analysis->AddTrackFunction(qinvcfT); | |
69 | analysis->AddParticleFunction(qinvcfP); | |
70 | ||
71 | analysis->Process(); | |
72 | ||
73 | qinvcfP->Rename("qinvcfP","Particle (simulated) Qinv CF \\pi^{+} \\pi^{+}"); | |
74 | qinvcfT->Rename("qinvcfT","Track (recontructed) Qinv CF \\pi^{+} \\pi^{+}"); | |
75 | ||
76 | TFile histoOutput(outfile,"recreate"); | |
77 | analysis->WriteFunctions(); | |
78 | histoOutput.Close(); | |
79 | ||
80 | delete qinvcfP; | |
81 | delete qinvcfT; | |
82 | delete paircut; | |
83 | delete readerpartcut; | |
84 | if (dirs) | |
85 | { | |
86 | dirs->SetOwner(); | |
87 | delete dirs; | |
88 | } | |
89 | delete reader; | |
90 | delete analysis; | |
91 | ||
92 | } | |
93 |