void ITSSDDQA(char *iFile, Int_t MaxEvts=1000000, Int_t FirstEvt=0) { cout << "SDD Quality Assurance Prototype Macro" << endl; const Int_t nSDDmodules= 260; const Int_t imodoffset = 240; const Int_t modtotSDD = nSDDmodules*2; Float_t xi = 0.5; Float_t xf = xi + nSDDmodules; TH1F *modulePattern = new TH1F("patternModule","Modules pattern",nSDDmodules,xi,xf); xf = xi + modtotSDD; TH1F *moduleSidePattern = new TH1F("patternSide","Modules/Side pattern",modtotSDD,xi,xf); TH2F *hismap[modtotSDD]; //260 dx e 260 sx with A, T, Q TH2F *hispop[modtotSDD]; //260 dx e 260 sx with A, T, Ncounts Char_t *cindex = new Char_t[5]; for(Int_t imod=0; imodCreateAliITSgeom(); delete initgeom; */ Int_t eqOffset = 256; Int_t DDLid_range = 24; do{ // start loop on events if(++evCounter > MaxEvts) { cout << MaxEvts << " events read, stop" << endl; evCounter--; break; } cout << "Read Event: " << evCounter+FirstEvt-1 << endl; rd->RequireHeader(kFALSE); rd->SelectEvents(7); // read only events with the given type. no selection is applied if a value < 0 is used. rd->SelectEquipment(17,eqOffset+1,eqOffset+DDLid_range); rd->Reset(); // reset the current position to the beginning of the event AliITSRawStreamSDD s(rd); //This class provides access to ITS SDD digits in raw data. Int_t iddl; Int_t isddmod; Int_t moduleSDD; while(s.Next()){ //read the next raw digit; returns kFALSE if there is no digit left iddl=rd->GetDDLID(); isddmod=s.GetModuleNumber(iddl,s.GetCarlosId()); //this is the FEE Carlos //cout<<"DDLID= "<Fill(s.GetCoord1(), s.GetCoord2(),s.GetSignal() ); hispop[moduleSDD]->Fill(s.GetCoord1(), s.GetCoord2() ); } } while(rd->NextEvent()); // end loop on events delete rd; cout << "end after " << evCounter << " events" << endl; TString oFileName(iFile); oFileName.Append(".root"); TFile *oFile = TFile::Open(oFileName,"recreate"); modulePattern->Write(); moduleSidePattern->Write(); for(Int_t i=0; iWrite(); hispop[i]->Write(); } oFile->Close(); for(Int_t imod=0; imod