#include "TH1F.h" #include "TH2F.h" #include "TMap.h" #include "TFile.h" #include "TTree.h" #include "TBranch.h" /* #include "/scratch/alla/alice/AliRoot/STEER/AliCDBManager.h" #include "/scratch/alla/alice/AliRoot/RAW/AliRawReader.h" #include "/scratch/alla/alice/AliRoot/T0/AliT0LookUpValue.h" #include "/scratch/alla/alice/AliRoot/T0/AliT0Parameters.h" #include "/scratch/alla/alice/AliRoot/T0/AliT0RawReader.h" */ void readLaserData(Int_t runNumber=905) { TH1F *hChannel[105]; TH1F *hNumHits[105]; TH1F *hQTC[12]; TH2F *hCFD_QTC[12]; TH2F *hCFD_LED[12]; TH1F *h1CFD_LED[12]; TH1F *hQTCc[12];TH1F *hmpd[12]; Int_t allData[110][5]; Int_t numberOfHits[105]; Char_t buf1[10], buf2[10], buf3[10], buf4[10], buf5[10], buf6[10], buf7[10]; TTree* digitsTree = new TTree("testData","Tree of test data Digits"); TBranch *b[106]; Int_t channels[106]; TString names[106], type; AliT0LookUpKey* lookkey= new AliT0LookUpKey(); AliT0LookUpValue* lookvalue= new AliT0LookUpValue(); AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); AliCDBManager::Instance()->SetRun(0); AliT0Parameters *fParam = AliT0Parameters::Instance(); fParam->Init(); TMap *lookup = fParam->GetMapLookup(); TMapIter *iter = new TMapIter(lookup); for( Int_t iline=0; iline<106; iline++) { lookvalue = ( AliT0LookUpValue*) iter->Next(); lookkey = (AliT0LookUpKey*) lookup->GetValue((TObject*)lookvalue); if(lookkey){ Int_t key=lookkey->GetKey(); names[key]=lookkey->GetChannelName(); // cout<GetKey()<<" "<GetChannelName()<<" trm "<GetTRM()<<" tdc "<GetTDC()<<" chain "<GetChain()<<" channel "<GetChannel()<Branch(names[key].Data(),&channels[key], type); } else {cout<LoadEquipmentIdsMap("T0map.txt"); // reader->RequireHeader(kFALSE); reader->RequireHeader(kTRUE); AliT0RawReader *start = new AliT0RawReader(reader); // start->SetNumberOfTRM(1); for (Int_t i0=0; i0<105; i0++) { for (Int_t j0=0; j0<5; j0++) allData[i0][j0]=0; numberOfHits[i0]=0; } Int_t event=0; while (reader->NextEvent()) { start->Next(); for (Int_t i=0; i<105; i++) { for (Int_t iHit=0; iHit<5; iHit++) { allData[i][iHit]= start->GetData(i,iHit); } } if(event%1000 == 0) printf("Event:%d\n",event); // if(event > 200000) break; // cout<<"!!!! Event Number "<< event-2< 0) hQTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit]); if( allData[55][0]-allData[0][0] > 0) hQTCc[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]); hmpd[cc]->Fill(allData[it+26][iHit]-allData[it+25][iHit]); if(allData[cc+1][iHit] != 0 ) hCFD_QTC[cc]->Fill(allData[it+25][iHit]-allData[it+26][iHit],allData[cc+1][iHit]-allData[0][0]); if(allData[cc+1][iHit] != 0 && allData[cc+13][iHit]!=0 ) { hCFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit],allData[cc+1][iHit]-allData[0][0]); h1CFD_LED[cc]->Fill(allData[cc+13][iHit]-allData[cc+1][iHit]); } // cout< 0 ) { numberOfHits[ik]++; hChannel[ik] -> Fill(allData[ik][iHit] - allData[0][0]); channels[ik] = allData[ik][iHit] - allData[0][0]; } } digitsTree->Fill(); } event++; } //event if (event>1) { cout<<"efficiency for "<Fill(i0,Float_t(numberOfHits[i0]) / Float_t(event)); hEffLED->Fill(i0,Float_t(numberOfHits[i0+13]) / Float_t(event)); hEffCFD->Fill(i0+12,Float_t(numberOfHits[i0+57]) /Float_t(event)); hEffLED->Fill(i0+12,Float_t(numberOfHits[i0+69]) /Float_t(event)); } cout<Fill(i0, Float_t (numberOfHits[i0+25]) / Float_t(event)); hEffQT0->Fill(i0, Float_t (numberOfHits[i0]+26) / Float_t(event)); hEffQT1->Fill((i0+12), Float_t (numberOfHits[i0]+81) / Float_t(event)); hEffQT0->Fill((i0+12), Float_t (numberOfHits[i0]+82) / Float_t(event)); cout<Write("",TObject::kOverwrite); hEffCFD->Write(); hEffLED->Write(); hEffQT0->Write(); hEffQT1->Write(); for(Int_t ik=0; ik<105; ik++) hChannel[ik] ->Write(); for (i=0; i<12; i++) { hQTC[i]->Write(); hQTCc[i]->Write(); hmpd[i]->Write(); hCFD_QTC[i]->Write(); hCFD_LED[i]->Write(); h1CFD_LED[i]->Write(); } cout<<" hist in file"<