3 // Author: Constantin Loizides <loizides@ikf.uni-frankfurt.de>
4 //*-- Copyright © ALICE HLT Group
7 BOMB THE COMPILE: USEPACKAGE=ALIROOT
10 #include "AliL3StandardIncludes.h"
12 #include "AliL3RootTypes.h"
13 #include "AliL3MemHandler.h"
14 #include "AliL3FileHandler.h"
15 #include "AliL3DigitData.h"
16 #include "AliL3Transform.h"
25 Converts from AliRoot Digits to L3-RawDigits
27 Int_t Make_Init(Char_t *file, Char_t *tofile);
29 int main (Int_t argc, Char_t** argv)
36 cout<<"Usage: ali2raw datafile path [firstsector] [lastsector]"<<endl;
39 if(argc<4) first=atoi(argv[3]);
40 if(argc<5) first=atoi(argv[4]);
42 Char_t transname[1000];
43 const Int_t npatch = 6;
44 Int_t row[npatch][2] = {{0,31},{32,63},{64,91},{92,119},{120,143},{144,175}};
46 strcpy(transname,argv[1]);
47 strcat(transname,"/.transform.config");
48 if(Make_Init(argv[1],transname)<0) exit(1);
52 AliL3FileHandler *fFileHandler = new AliL3FileHandler();
53 fFileHandler->SetAliInput(in);
54 AliL3Transform *fTransformer = new AliL3Transform(path);
57 fFileHandler->Init(fTransformer);
58 for(int slice=first; slice<=last; slice++){
59 for(int patch=0;patch<npatch;patch++){
60 cerr<<"reading slice: "<<slice<<" patch: "<<patch;
62 fFileHandler->Init(slice,patch,row[patch]);
63 sprintf(name,"%sdigits_%d_%d.raw",path,slice,patch);
64 fFileHandler->SetBinaryOutput(name);
65 fFileHandler->AliDigits2CompBinary();
66 fFileHandler->CloseBinaryOutput();
70 fFileHandler->CloseAliInput();
74 int Make_Init(char *file, char *tofile=NULL){
76 TFile *rootf = new TFile(file,"READ");
79 cerr<<"could not open file: "<<file<<endl;
83 AliTPCParam* par = (AliTPCParam*)rootf->Get("75x40_100x60");
86 cerr<<"no AliTPCParam 75x40_100x60 in file: "<<file<<endl;
90 Int_t fNTimeBins = par->GetMaxTBin()+1;
91 Int_t fNRowLow = par->GetNRowLow();
92 Int_t fNRowUp = par->GetNRowUp();
93 Int_t fNRow= fNRowLow + fNRowUp;
94 Int_t fNSectorLow = par->GetNInnerSector();
95 Int_t fNSectorUp = par->GetNOuterSector();
96 Int_t fNSector = fNSectorLow + fNSectorUp;
98 Char_t tofilename[1000];
100 strcpy(tofilename,tofile);
101 strcat(tofilename,".transform-config");
102 } else strcpy(tofilename,file);
104 FILE *f = fopen(tofilename,"w");
105 fprintf(f,"void AliL3Transform::Init(){\n");
107 fprintf(f," //sector:\n");
108 fprintf(f," fNTimeBins = %d ;\n",fNTimeBins);
109 fprintf(f," fNRowLow = %d ;\n",fNRowLow);
110 fprintf(f," fNRowUp = %d ;\n",fNRowUp);
111 fprintf(f," fNSectorLow = %d ;\n",fNSectorLow);
112 fprintf(f," fNSectorUp = %d ;\n",fNSectorUp);
113 fprintf(f," fNSector = %d ;\n",fNSector);
114 fprintf(f," fPadPitchWidthLow = %f ;\n",par->GetPadPitchWidth(0));
115 fprintf(f," fPadPitchWidthUp = %f ;\n",par->GetPadPitchWidth(fNSectorLow));
116 fprintf(f," fZWidth = %.20f ;\n",par->GetZWidth());
117 fprintf(f," fZSigma = %.20f ;\n",par->GetZSigma());
119 fprintf(f,"\n //slices:\n");
120 fprintf(f," fNSlice = %d ;\n",fNSectorLow);
121 fprintf(f," fNRow = %d ;\n",fNRow);
123 //rotation shift put in by hand -> Constantin
124 fprintf(f," fNRotShift = 0.5 ;\n");
126 fprintf(f," fPi = %.15f ;\n",TMath::Pi());
127 fprintf(f," for(Int_t i=0;i<36;i++){\n");
128 fprintf(f," fCos[i] = cos(2*fPi/9*(i+0.5));\n");
129 fprintf(f," fSin[i] = sin(2*fPi/9*(i+0.5));\n");
132 for(Int_t i=0;i<fNRow;i++){
134 if( i < fNRowLow){sec =0;row =i;}
135 else{sec = fNSectorLow;row =i-fNRowLow;}
136 fprintf(f," fX[%d] = %3.15f ;\n",i,par->GetPadRowRadii(sec,row));
138 for(Int_t i=0;i<fNRow;i++){
140 if( i < fNRowLow){sec =0;row =i;}
141 else{sec = fNSectorLow;row =i-fNRowLow;}
142 fprintf(f," fNPads[%d] = %d ;\n",i,par->GetNPads(sec,row));
153 void singlepatch(Char_t* in,Int_t first, Int_t last,Char_t *path="",Int_t event=0)
156 //l.UnSet(AliL3Logger::kDebug);
157 //l.UnSet(AliL3Logger::kAll);
158 //l.Set(AliL3Logger::kInformational);
163 sprintf(fname,"%sevent_%d/",path,event);
165 AliL3FileHandler *fFileHandler = new AliL3FileHandler();
166 fFileHandler->SetAliInput(in);
167 Int_t srow[2] = {0,175};
169 for(Int_t slice=first; slice<=last; slice++)
171 cerr<<"reading slice: "<<slice;
172 fFileHandler->Free();
173 fFileHandler->Init(slice,patch,srow);
174 sprintf(name,"%sdigits_%d_%d.raw",fname,slice,patch);
175 fFileHandler->SetBinaryOutput(name);
176 fFileHandler->AliDigits2CompBinary(event);
177 fFileHandler->CloseBinaryOutput();
180 fFileHandler->CloseAliInput();