]>
Commit | Line | Data |
---|---|---|
20623db1 | 1 | Int_t AliITSHits2Digits() |
2 | { | |
3 | ||
4 | // Connect the Root Galice file containing Geometry, Kine and Hits | |
5 | ||
6 | const char * inFile = "galice.root"; | |
7 | TFile *file = (TFile*)gROOT->GetListOfFiles()->FindObject(inFile); | |
8 | if (file) {file->Close(); delete file;} | |
9 | printf("Hits2Digits\n"); | |
10 | file = new TFile(inFile,"UPDATE"); | |
11 | if (!file->IsOpen()) { | |
12 | cerr<<"Can't open "<<inFile<<" !\n"; | |
13 | return 1; | |
14 | } | |
15 | file->ls(); | |
16 | ||
17 | // Get AliRun object from file or return if not on file | |
18 | if (gAlice) delete gAlice; | |
19 | gAlice = (AliRun*)file->Get("gAlice"); | |
20 | if (!gAlice) { | |
21 | cerr<<"ITSHits2Digits.C : AliRun object not found on file\n"; | |
22 | return 2; | |
23 | } | |
24 | ||
25 | gAlice->GetEvent(0); | |
26 | AliITS *ITS = (AliITS*)gAlice->GetDetector("ITS"); | |
27 | if (!ITS) { | |
28 | cerr<<"ITSHits2Digits.C : AliITS object not found on file\n"; | |
29 | return 3; | |
30 | } | |
31 | ||
32 | // Set the simulation models for the three detector types | |
33 | AliITSgeom *geom = ITS->GetITSgeom(); | |
34 | ||
35 | // SPD | |
36 | AliITSDetType *iDetType=ITS->DetType(0); | |
37 | AliITSsegmentationSPD *seg0=(AliITSsegmentationSPD*)iDetType->GetSegmentationModel(); | |
38 | AliITSresponseSPD *res0 = (AliITSresponseSPD*)iDetType->GetResponseModel(); | |
39 | AliITSsimulationSPD *sim0=new AliITSsimulationSPD(seg0,res0); | |
40 | ITS->SetSimulationModel(0,sim0); | |
41 | // test | |
42 | printf("SPD dimensions %f %f \n",seg0->Dx(),seg0->Dz()); | |
43 | printf("SPD npixels %d %d \n",seg0->Npz(),seg0->Npx()); | |
44 | printf("SPD pitches %d %d \n",seg0->Dpz(0),seg0->Dpx(0)); | |
45 | // end test | |
46 | ||
47 | // SDD | |
1ef94a0c | 48 | // Set response parameters |
b9381d0c | 49 | // SDD compression param: 2 fDecrease, 2fTmin, 2fTmax or disable, 2 fTolerance |
af4af6f5 | 50 | AliITSDetType *iDetType=ITS->DetType(1); |
51 | AliITSresponseSDD *res1 = (AliITSresponseSDD*)iDetType->GetResponseModel(); | |
52 | if (!res1) { | |
53 | res1=new AliITSresponseSDD(); | |
54 | ITS->SetResponseModel(1,res1); | |
55 | } | |
1ef94a0c | 56 | Float_t baseline; |
57 | Float_t noise; | |
58 | res1->GetNoiseParam(noise,baseline); | |
59 | Float_t noise_after_el = res1->GetNoiseAfterElectronics(); | |
60 | cout << "noise_after_el: " << noise_after_el << endl; | |
61 | Float_t fCutAmp; | |
62 | fCutAmp = baseline; | |
63 | fCutAmp += (2.*noise_after_el); // noise | |
64 | cout << "Cut amplitude: " << fCutAmp << endl; | |
65 | Int_t cp[8]={0,0,fCutAmp,fCutAmp,0,0,0,0}; | |
66 | res1->SetCompressParam(cp); | |
67 | ||
68 | res1->Print(); | |
20623db1 | 69 | AliITSsegmentationSDD *seg1=(AliITSsegmentationSDD*)iDetType->GetSegmentationModel(); |
70 | if (!seg1) { | |
71 | seg1 = new AliITSsegmentationSDD(geom,res1); | |
72 | ITS->SetSegmentationModel(1,seg1); | |
73 | } | |
74 | AliITSsimulationSDD *sim1=new AliITSsimulationSDD(seg1,res1); | |
20623db1 | 75 | ITS->SetSimulationModel(1,sim1); |
76 | ||
77 | // SSD | |
78 | AliITSDetType *iDetType=ITS->DetType(2); | |
79 | AliITSsegmentationSSD *seg2=(AliITSsegmentationSSD*)iDetType->GetSegmentationModel(); | |
80 | AliITSresponseSSD *res2 = (AliITSresponseSSD*)iDetType->GetResponseModel(); | |
81 | res2->SetSigmaSpread(3.,2.); | |
82 | AliITSsimulationSSD *sim2=new AliITSsimulationSSD(seg2,res2); | |
83 | ITS->SetSimulationModel(2,sim2); | |
84 | ||
20623db1 | 85 | cerr<<"Digitizing ITS...\n"; |
0687cf0b | 86 | |
87 | if(!gAlice->TreeD()) gAlice->MakeTree("D"); | |
88 | printf("TreeD %p\n",gAlice->TreeD()); | |
89 | //make branch | |
90 | ITS->MakeBranch("D"); | |
20623db1 | 91 | |
92 | TStopwatch timer; | |
93 | timer.Start(); | |
94 | ITS->HitsToDigits(0,0,-1," ","All"," "); | |
95 | timer.Stop(); timer.Print(); | |
96 | ||
97 | delete sim0; | |
98 | delete sim1; | |
99 | delete sim2; | |
100 | ||
101 | ||
102 | delete gAlice; gAlice=0; | |
103 | file->Close(); | |
104 | delete file; | |
105 | return 0; | |
106 | }; | |
107 |