updated
[u/mrichter/AliRoot.git] / TPC / FindKrClustersRaw.C
1 Int_t FindKrClustersRaw(const char *fileName="data.root"){
2
3
4
5   //
6   // remove Altro warnings
7   //
8   AliLog::SetClassDebugLevel("AliTPCRawStream",-5);
9   AliLog::SetClassDebugLevel("AliRawReaderDate",-5);
10   AliLog::SetClassDebugLevel("AliTPCAltroMapping",-5);
11   AliLog::SetModuleDebugLevel("RAW",-5);
12   //
13   // Get calibration
14   //
15   //  char *ocdbpath = gSystem->Getenv("OCDB_PATH");
16   char *ocdbpath ="local:///afs/cern.ch/alice/tpctest/OCDB";
17   if (ocdbpath==0){
18     ocdbpath="alien://folder=/alice/data/2007/LHC07w/OCDB/";
19   }
20   printf("OCDB PATH = %s\n",ocdbpath); 
21   AliCDBManager * man = AliCDBManager::Instance();
22   man->SetDefaultStorage(ocdbpath);
23   man->SetRun(0);
24
25   AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();
26   AliTPCAltroMapping** mapping =AliTPCcalibDB::Instance()->GetMapping();
27   //
28   //
29
30
31   //define tree
32   TFile *hfile=new TFile("adc.root","RECREATE","ADC file");
33   // Create a ROOT Tree
34   TTree *mytree = new TTree("Kr","Krypton cluster tree");
35
36
37   Int_t debugLevel=1;
38   if(debugLevel>0){
39     TH1F *histoRow   =new TH1F("histoRow","rows",100,0.,100.);
40     TH1F *histoPad   =new TH1F("histoPad","pads",150,0.,150.);
41     TH1F *histoTime  =new TH1F("histoTime","timebins",100,0.,1000.);
42     TH2F *histoRowPad=new TH2F("histoRowPad","pads-vs-rows" ,150,0.,150.,100,0.,100.);
43   }
44
45   AliRawReader *reader = new AliRawReaderRoot(fileName);
46   //AliRawReader *reader = new AliRawReaderDate(fileName);
47   reader->Reset();
48
49   TStopwatch timer;
50   timer.Start();
51
52   AliAltroRawStreamFast* stream = new AliAltroRawStreamFast(reader);
53   stream->SelectRawData("TPC");
54
55   //one general output
56   AliTPCclustererKr *clusters = new AliTPCclustererKr();
57   clusters->SetOutput(mytree);
58   clusters->SetRecoParam(0);
59
60   if(debugLevel>0){
61     clusters->SetDebugLevel(debugLevel);
62     clusters->SetHistoRow(histoRow   );
63     clusters->SetHistoPad(histoPad   );
64     clusters->SetHistoTime(histoTime  );
65     clusters->SetHistoRowPad(histoRowPad);
66   }
67
68
69   AliTPCParamSR *param=new AliTPCParamSR();
70   //only for geometry parameters loading - temporarly
71 //  AliRunLoader* rl = AliRunLoader::Open("galice.root");
72 //  AliTPCParam *param=(AliTPCParamSR *)gDirectory->Get("75x40_100x60_150x60");
73   //if (!param) {cerr<<"TPC parameters have not been found !\n"; return 4;}
74
75   clusters->SetParam(param);
76   clusters->SetOldRCUFormat(kTRUE);
77
78   //set cluster finder parameters (from data)
79   clusters->SetZeroSup(param->GetZeroSup());//zero suppression parameter
80   clusters->SetFirstBin(60);//first bin
81   clusters->SetLastBin(950);//last bin
82   clusters->SetMaxNoiseAbs(2);//maximal noise
83   clusters->SetMaxNoiseSigma(3);//maximal amount of sigma of noise
84
85   //set cluster finder parameters (from MC)
86   clusters->SetMinAdc(3);//signal threshold (everything below is treated as 0)
87   clusters->SetMinTimeBins(2);//number of neighbouring timebins
88   clusters->SetMaxPadRangeCm(2.5);//distance of the cluster center to the center of a pad (in cm)
89   clusters->SetMaxRowRangeCm(3.5);//distance of the cluster center to the center of a padrow (in cm)
90   clusters->SetMaxTimeRange(7);//distance of the cluster center to the max time bin on a pad (in tackts)
91   //ie. fabs(centerT - time)<7
92   clusters->SetValueToSize(3.5);//cut reduce peak at 0
93
94
95
96
97   Int_t evtnr=0;
98   while (reader->NextEvent()) {
99     //output for each event
100   //  AliTPCclustererKr *clusters = new AliTPCclustererKr();
101   //  clusters->SetOutput(mytree);
102   //  clusters->SetRecoParam(0);
103   //  clusters->SetParam(param);
104
105     // if(evtnr++>5) break;
106     cout<<"Evt = "<<evtnr<<endl;
107     clusters->FinderIO(reader);
108     evtnr++;
109
110   }
111
112   mytree->Print();//print rootuple summary 
113   // Save all objects in this file
114   hfile->Write();
115   // Close the file
116   hfile->Close();
117
118   timer.Stop();
119   timer.Print();
120
121   delete stream;
122
123
124   TCanvas *c2=new TCanvas("c2","title",800,800);
125   c2->SetHighLightColor(2);
126   c2->Range(-458.9552,-2948.238,3296.642,26856.6);
127   c2->SetBorderSize(2);
128   c2->SetLeftMargin(0.15);
129   c2->SetRightMargin(0.06);
130   c2->SetFrameFillColor(0);
131
132   gStyle->SetOptStat(111111);
133   histoRow->Draw();
134   c2->Print("rows.ps");
135   histoPad->Draw();
136   c2->Print("pads.ps");
137   histoTime->Draw();
138   c2->Print("timebins.ps");
139   histoRowPad->Draw();
140   c2->Print("row-pad.ps");
141
142   return 0;
143 }