1 //_____________________________________________________//
3 // This macro reads AD DDL Raw Data and //
4 // converts it into Digits //
6 //____________________________________________________ //
9 void ADRaw2Digits(Int_t nEvent = 5)
11 for(int iEvent=0; iEvent<nEvent; iEvent++) {
12 printf("=========== EVENT %d ===========\n",iEvent);
13 TString FileName = "raw.root";
14 RawStreamEvent(FileName.Data(),iEvent); }
18 Bool_t RawStreamEvent(TString fileName = "./",Int_t iEvent = 0)
20 // Reads DDL data from fileName
25 // Creates a TreeD to dump Digits
27 AliRunLoader* rl = AliRunLoader::Open("galice.root");
29 AliADLoader* loader = (AliADLoader*) rl->GetLoader("ADLoader");
32 AliError("no AD loader found");
35 TTree* treeD = loader->TreeD();
37 loader->MakeTree("D");
38 treeD = loader->TreeD(); }
41 AliADdigit* pdigit = &digit;
42 const Int_t kBufferSize = 4000;
44 treeD->Branch("AD", "AliADdigit", &pdigit, kBufferSize);
46 AliRawReader* rawReader = 0x0;
47 rawReader = new AliRawReaderRoot(fileName); // DDL files
49 AliADRawStream* rawStream = new AliADRawStream(rawReader);
51 rawReader->GotoEvent(iEvent);
55 printf("Data size is %d\n",rawReader->GetDataSize());
57 for(Int_t i=0; i<16; i++) {
59 Short_t chargeADC[21];
60 for(Int_t iClock=0; iClock < 21; ++iClock) {
61 chargeADC[iClock] = rawStream->GetPedestal(i,iClock);
64 new(pdigit) AliADdigit(i, (Int_t)rawStream->GetTime(i), (Int_t)rawStream->GetWidth(i), rawStream->GetIntegratorFlag(i, 10),chargeADC);
68 // Checks if everything is OK by printing results
70 for(int i=0;i<16;i++) {
71 printf("Channel %d : %d %d \n",i,rawStream->GetADC(i),rawStream->GetTime(i)); }
72 //treeD->Print(); printf(" \n");
74 loader->WriteDigits("OVERWRITE");
75 loader->UnloadDigits();