-//
-void AliPMDRootDataRead()
+// To read PMD raw root data and fetch the adc value for each cell
+void AliPMDRootDataRead(Char_t *file="rawfile.root",Int_t runNr = 0,
+ Int_t NEVT = 10)
{
- // To read PMD raw root data and fetch the adc value for each cell
-
TObjArray pmdddlcont;
- Int_t ievt = 2;
-
- Bool_t junk;
-
- AliRawReaderRoot reader("raw_6b_61.root",ievt);
- //reader.NextEvent();
- //reader.NextEvent();
+ AliCDBManager *man = AliCDBManager::Instance();
+ man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
+ man->SetRun(runNr);
+ gBenchmark->Start("");
+ gStyle->SetOptStat(0);
+ Int_t xpad, ypad;
+ Float_t xx, yy;
- /*
- reader.ReadHeader();
- cout << "LDC ID = " << reader.GetLDCId() << endl;
- cout << "Equipment ID = " << reader.GetEquipmentId() << endl;
- cout << "Data Size = " << reader.GetDataSize() << endl;
- */
+ AliPMDUtility cc;
+ TH2F *h2 = new TH2F("h2","Y vs. X",200,-100.,100.,200,-100.,100.);
- AliPMDRawStream stream(&reader);
+ TH1F *h1 = new TH1F("h1","",200,0.,200.);
- Int_t indexDDL = 0;
-
- for (Int_t iddl = 0; iddl < 6; iddl++)
+ for(Int_t ievt=495; ievt < NEVT; ievt++)
{
-
- reader.Select("PMD", iddl, iddl);
+
+ //AliRawReaderRoot reader("09000095029017.10.root",ievt);
+ AliRawReaderRoot reader(file,ievt);
- junk = stream.DdlData(&pmdddlcont);
+ cout<<" Processing Event No : "<<ievt<<endl;
- Int_t ientries = pmdddlcont.GetEntries();
- for (Int_t ient = 0; ient < ientries; ient++)
+ AliPMDRawStream stream(&reader);
+
+ Int_t iddl = -1;
+
+ while((iddl = stream.DdlData(&pmdddlcont)) >= 0)
{
- AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
-
- Int_t det = pmdddl->GetDetector();
- Int_t smn = pmdddl->GetSMN();
- //Int_t mcm = pmdddl->GetMCM();
- //Int_t chno = pmdddl->GetChannel();
- Int_t row = pmdddl->GetRow();
- Int_t col = pmdddl->GetColumn();
- Int_t sig = pmdddl->GetSignal();
-
- // cout << row << " " << col << " " << sig << endl;
+ Int_t ientries = pmdddlcont.GetEntries();
+
+ cout << "iddl = " << iddl << " ientries = " << ientries << endl;
+
+ for (Int_t ient = 0; ient < ientries; ient++)
+ {
+ AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
+
+ Int_t det = pmdddl->GetDetector();
+ Int_t smn = pmdddl->GetSMN();
+ Int_t mcm = pmdddl->GetMCM();
+ Int_t pbus = pmdddl->GetPatchBusId();
+ //Int_t chno = pmdddl->GetChannel();
+
+ Int_t row = pmdddl->GetRow();
+ Int_t col = pmdddl->GetColumn();
+ Int_t sig = pmdddl->GetSignal();
+
+ //if (iddl == 5)
+ //printf("%d %d %d %d %d %d\n",iddl,det,smn,pbus,row,col);
+
+ if(mcm == 0) continue;
+
+
+ if(smn <12)
+ {
+ xpad = col;
+ ypad = row;
+ }
+ else if(smn >=12 && smn < 24)
+ {
+ xpad = row;
+ ypad = col;
+ }
+
+ if (det == 0)
+ {
+ cc.RectGeomCellPos(smn,xpad,ypad,xx,yy);
+ h2->Fill(xx,yy,sig);
+ h1->Fill(sig);
+ }
+
+ }
+
+ pmdddlcont.Delete();
}
- pmdddlcont.Clear();
-
- }
-
-
+
+ }//event loop
+ h2->Draw();
+ cc.SetWriteModule(1); // set here 0 not to print the module no
+ cc.DrawPMDModule(0); // 0 : for preshower, 1:for CPV plane
+ gBenchmark->Show("");
}