3 // Author: Constantin Loizides <loizides@ikf.uni-frankfurt.de>
6 BOMB THE COMPILE: USEPACKAGE=ALIROOT
9 #include "AliL3StandardIncludes.h"
11 #include "AliL3RootTypes.h"
12 #include "AliL3MemHandler.h"
13 #include "AliL3FileHandler.h"
14 #include "AliL3DigitData.h"
15 #include "AliL3Transform.h"
24 Converts from AliRoot Digits to L3-RawDigits
26 Int_t Make_Init(Char_t *file, Char_t *tofile);
28 int main (Int_t argc, Char_t** argv)
35 cout<<"Usage: ali2raw datafile path [firstsector] [lastsector]"<<endl;
38 if(argc<4) first=atoi(argv[3]);
39 if(argc<5) first=atoi(argv[4]);
41 Char_t transname[1000];
42 const Int_t npatch = 6;
43 Int_t row[npatch][2] = {{0,31},{32,63},{64,91},{92,119},{120,143},{144,175}};
45 strcpy(transname,argv[1]);
46 strcat(transname,"/.transform.config");
47 if(Make_Init(argv[1],transname)<0) exit(1);
51 AliL3FileHandler *fFileHandler = new AliL3FileHandler();
52 fFileHandler->SetAliInput(in);
53 AliL3Transform *fTransformer = new AliL3Transform(path);
56 fFileHandler->Init(fTransformer);
57 for(int slice=first; slice<=last; slice++){
58 for(int patch=0;patch<npatch;patch++){
59 cerr<<"reading slice: "<<slice<<" patch: "<<patch;
61 fFileHandler->Init(slice,patch,row[patch]);
62 sprintf(name,"%sdigits_%d_%d.raw",path,slice,patch);
63 fFileHandler->SetBinaryOutput(name);
64 fFileHandler->AliDigits2CompBinary();
65 fFileHandler->CloseBinaryOutput();
69 fFileHandler->CloseAliInput();
73 int Make_Init(char *file, char *tofile=NULL){
75 TFile *rootf = new TFile(file,"READ");
78 cerr<<"could not open file: "<<file<<endl;
82 AliTPCParam* par = (AliTPCParam*)rootf->Get("75x40_100x60");
85 cerr<<"no AliTPCParam 75x40_100x60 in file: "<<file<<endl;
89 Int_t fNTimeBins = par->GetMaxTBin()+1;
90 Int_t fNRowLow = par->GetNRowLow();
91 Int_t fNRowUp = par->GetNRowUp();
92 Int_t fNRow= fNRowLow + fNRowUp;
93 Int_t fNSectorLow = par->GetNInnerSector();
94 Int_t fNSectorUp = par->GetNOuterSector();
95 Int_t fNSector = fNSectorLow + fNSectorUp;
97 Char_t tofilename[1000];
99 strcpy(tofilename,tofile);
100 strcat(tofilename,".transform-config");
101 } else strcpy(tofilename,file);
103 FILE *f = fopen(tofilename,"w");
104 fprintf(f,"void AliL3Transform::Init(){\n");
106 fprintf(f," //sector:\n");
107 fprintf(f," fNTimeBins = %d ;\n",fNTimeBins);
108 fprintf(f," fNRowLow = %d ;\n",fNRowLow);
109 fprintf(f," fNRowUp = %d ;\n",fNRowUp);
110 fprintf(f," fNSectorLow = %d ;\n",fNSectorLow);
111 fprintf(f," fNSectorUp = %d ;\n",fNSectorUp);
112 fprintf(f," fNSector = %d ;\n",fNSector);
113 fprintf(f," fPadPitchWidthLow = %f ;\n",par->GetPadPitchWidth(0));
114 fprintf(f," fPadPitchWidthUp = %f ;\n",par->GetPadPitchWidth(fNSectorLow));
115 fprintf(f," fZWidth = %.20f ;\n",par->GetZWidth());
116 fprintf(f," fZSigma = %.20f ;\n",par->GetZSigma());
118 fprintf(f,"\n //slices:\n");
119 fprintf(f," fNSlice = %d ;\n",fNSectorLow);
120 fprintf(f," fNRow = %d ;\n",fNRow);
122 //rotation shift put in by hand -> Constantin
123 fprintf(f," fNRotShift = 0.5 ;\n");
125 fprintf(f," fPi = %.15f ;\n",TMath::Pi());
126 fprintf(f," for(Int_t i=0;i<36;i++){\n");
127 fprintf(f," fCos[i] = cos(2*fPi/9*(i+0.5));\n");
128 fprintf(f," fSin[i] = sin(2*fPi/9*(i+0.5));\n");
131 for(Int_t i=0;i<fNRow;i++){
133 if( i < fNRowLow){sec =0;row =i;}
134 else{sec = fNSectorLow;row =i-fNRowLow;}
135 fprintf(f," fX[%d] = %3.15f ;\n",i,par->GetPadRowRadii(sec,row));
137 for(Int_t i=0;i<fNRow;i++){
139 if( i < fNRowLow){sec =0;row =i;}
140 else{sec = fNSectorLow;row =i-fNRowLow;}
141 fprintf(f," fNPads[%d] = %d ;\n",i,par->GetNPads(sec,row));
152 void singlepatch(Char_t* in,Int_t first, Int_t last,Char_t *path="",Int_t event=0)
155 //l.UnSet(AliL3Logger::kDebug);
156 //l.UnSet(AliL3Logger::kAll);
157 //l.Set(AliL3Logger::kInformational);
162 sprintf(fname,"%sevent_%d/",path,event);
164 AliL3FileHandler *fFileHandler = new AliL3FileHandler();
165 fFileHandler->SetAliInput(in);
166 Int_t srow[2] = {0,175};
168 for(Int_t slice=first; slice<=last; slice++)
170 cerr<<"reading slice: "<<slice;
171 fFileHandler->Free();
172 fFileHandler->Init(slice,patch,srow);
173 sprintf(name,"%sdigits_%d_%d.raw",fname,slice,patch);
174 fFileHandler->SetBinaryOutput(name);
175 fFileHandler->AliDigits2CompBinary(event);
176 fFileHandler->CloseBinaryOutput();
179 fFileHandler->CloseAliInput();