1 /***************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-----------------------------------------------------//
18 // Date : August 05 2003 //
19 // This reads the file PMD.digits.root(TreeD), //
20 // calls the Clustering algorithm and stores the //
21 // clustering output in PMD.RecPoints.root(TreeR) //
23 //-----------------------------------------------------//
25 #include <Riostream.h>
27 #include <TObjArray.h>
28 #include <TClonesArray.h>
31 #include "AliRunLoader.h"
32 #include "AliLoader.h"
33 #include "AliRawReader.h"
35 #include "AliPMDdigit.h"
36 #include "AliPMDClusterFinder.h"
37 #include "AliPMDClustering.h"
38 #include "AliPMDClusteringV1.h"
39 #include "AliPMDcluster.h"
40 #include "AliPMDrecpoint1.h"
41 #include "AliPMDrechit.h"
42 #include "AliPMDRawStream.h"
43 #include "AliPMDCalibData.h"
44 #include "AliPMDPedestal.h"
45 #include "AliPMDddldata.h"
48 #include "AliCDBManager.h"
49 #include "AliCDBEntry.h"
53 ClassImp(AliPMDClusterFinder)
55 AliPMDClusterFinder::AliPMDClusterFinder():
58 fCalibGain(GetCalibGain()),
59 fCalibPed(GetCalibPed()),
62 fDigits(new TClonesArray("AliPMDdigit", 1000)),
63 fRecpoints(new TClonesArray("AliPMDrecpoint1", 1000)),
64 fRechits(new TClonesArray("AliPMDrechit", 1000)),
74 // ------------------------------------------------------------------------- //
75 AliPMDClusterFinder::AliPMDClusterFinder(AliRunLoader* runLoader):
76 fRunLoader(runLoader),
77 fPMDLoader(runLoader->GetLoader("PMDLoader")),
78 fCalibGain(GetCalibGain()),
79 fCalibPed(GetCalibPed()),
82 fDigits(new TClonesArray("AliPMDdigit", 1000)),
83 fRecpoints(new TClonesArray("AliPMDrecpoint1", 1000)),
84 fRechits(new TClonesArray("AliPMDrechit", 1000)),
94 // ------------------------------------------------------------------------- //
95 AliPMDClusterFinder::AliPMDClusterFinder(const AliPMDClusterFinder & finder):
99 fCalibGain(GetCalibGain()),
100 fCalibPed(GetCalibPed()),
112 AliError("Copy constructor not allowed");
114 // ------------------------------------------------------------------------- //
115 AliPMDClusterFinder &AliPMDClusterFinder::operator=(const AliPMDClusterFinder & /*finder*/)
118 AliError("Assignment Operator not allowed");
121 // ------------------------------------------------------------------------- //
122 AliPMDClusterFinder::~AliPMDClusterFinder()
138 fRecpoints->Delete();
153 // ------------------------------------------------------------------------- //
155 void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
157 // Converts digits to recpoints after running clustering
158 // algorithm on CPV plane and PREshower plane
161 Int_t det = 0,smn = 0;
168 TObjArray *pmdcont = new TObjArray();
169 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
171 pmdclust->SetEdepCut(fEcut);
173 fRunLoader->GetEvent(ievt);
176 fTreeD = fPMDLoader->TreeD();
179 AliFatal("AliPMDClusterFinder: Can not get TreeD");
182 AliPMDdigit *pmddigit;
183 TBranch *branch = fTreeD->GetBranch("PMDDigit");
184 branch->SetAddress(&fDigits);
188 fTreeR = fPMDLoader->TreeR();
191 fPMDLoader->MakeTree("R");
192 fTreeR = fPMDLoader->TreeR();
195 Int_t bufsize = 16000;
196 TBranch * branch1 = fTreeR->Branch("PMDRecpoint", &fRecpoints, bufsize);
197 TBranch * branch2 = fTreeR->Branch("PMDRechit", &fRechits, bufsize);
199 Int_t nmodules = (Int_t) fTreeD->GetEntries();
201 for (Int_t imodule = 0; imodule < nmodules; imodule++)
204 fTreeD->GetEntry(imodule);
205 Int_t nentries = fDigits->GetLast();
206 for (Int_t ient = 0; ient < nentries+1; ient++)
208 pmddigit = (AliPMDdigit*)fDigits->UncheckedAt(ient);
210 det = pmddigit->GetDetector();
211 smn = pmddigit->GetSMNumber();
212 xpos = pmddigit->GetRow();
213 ypos = pmddigit->GetColumn();
214 adc = pmddigit->GetADC();
217 Float_t gain = fCalibGain->GetGainFact(det,smn,xpos,ypos);
218 // printf("adc = %d gain = %f\n",adc,gain);
222 //Int_t trno = pmddigit->GetTrackNumber();
223 fCellADC[xpos][ypos] = (Double_t) adc;
228 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
230 Int_t nentries1 = pmdcont->GetEntries();
232 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
234 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
236 AliPMDcluster *pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
237 idet = pmdcl->GetDetector();
238 ismn = pmdcl->GetSMN();
239 clusdata[0] = pmdcl->GetClusX();
240 clusdata[1] = pmdcl->GetClusY();
241 clusdata[2] = pmdcl->GetClusADC();
242 clusdata[3] = pmdcl->GetClusCells();
243 clusdata[4] = pmdcl->GetClusSigmaX();
244 clusdata[5] = pmdcl->GetClusSigmaY();
246 AddRecPoint(idet,ismn,clusdata);
248 Int_t ncell = (Int_t) clusdata[3];
249 for(Int_t ihit = 0; ihit < ncell; ihit++)
251 Int_t celldataX = pmdcl->GetClusCellX(ihit);
252 Int_t celldataY = pmdcl->GetClusCellY(ihit);
253 AddRecHit(celldataX, celldataY);
266 fPMDLoader = fRunLoader->GetLoader("PMDLoader");
267 fPMDLoader->WriteRecPoints("OVERWRITE");
269 // delete the pointers
274 // ------------------------------------------------------------------------- //
276 void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
279 // Converts digits to recpoints after running clustering
280 // algorithm on CPV plane and PREshower plane
283 Int_t det = 0,smn = 0;
290 TObjArray *pmdcont = new TObjArray();
291 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
293 pmdclust->SetEdepCut(fEcut);
295 AliPMDdigit *pmddigit;
296 TBranch *branch = digitsTree->GetBranch("PMDDigit");
297 branch->SetAddress(&fDigits);
301 Int_t bufsize = 16000;
302 TBranch * branch1 = clustersTree->Branch("PMDRecpoint", &fRecpoints, bufsize);
303 TBranch * branch2 = clustersTree->Branch("PMDRechit", &fRechits, bufsize);
305 Int_t nmodules = (Int_t) digitsTree->GetEntries();
307 for (Int_t imodule = 0; imodule < nmodules; imodule++)
310 digitsTree->GetEntry(imodule);
311 Int_t nentries = fDigits->GetLast();
312 for (Int_t ient = 0; ient < nentries+1; ient++)
314 pmddigit = (AliPMDdigit*)fDigits->UncheckedAt(ient);
316 det = pmddigit->GetDetector();
317 smn = pmddigit->GetSMNumber();
318 xpos = pmddigit->GetRow();
319 ypos = pmddigit->GetColumn();
320 adc = pmddigit->GetADC();
322 // Pedestal Subtraction
323 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,xpos,ypos);
324 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
325 Float_t pedrms = (Float_t)pedrms1/10.;
326 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
327 //printf("%f %f\n",pedmean, pedrms);
329 Float_t adc1 = adc - (pedmean + 3.0*pedrms);
332 Float_t gain = fCalibGain->GetGainFact(det,smn,xpos,ypos);
333 // printf("adc = %d gain = %f\n",adc,gain);
337 //Int_t trno = pmddigit->GetTrackNumber();
338 fCellADC[xpos][ypos] = (Double_t) adc;
343 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
345 Int_t nentries1 = pmdcont->GetEntries();
347 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
349 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
351 AliPMDcluster *pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
352 idet = pmdcl->GetDetector();
353 ismn = pmdcl->GetSMN();
354 clusdata[0] = pmdcl->GetClusX();
355 clusdata[1] = pmdcl->GetClusY();
356 clusdata[2] = pmdcl->GetClusADC();
357 clusdata[3] = pmdcl->GetClusCells();
358 clusdata[4] = pmdcl->GetClusSigmaX();
359 clusdata[5] = pmdcl->GetClusSigmaY();
361 AddRecPoint(idet,ismn,clusdata);
363 Int_t ncell = (Int_t) clusdata[3];
364 for(Int_t ihit = 0; ihit < ncell; ihit++)
366 Int_t celldataX = pmdcl->GetClusCellX(ihit);
367 Int_t celldataY = pmdcl->GetClusCellY(ihit);
368 AddRecHit(celldataX, celldataY);
382 // delete the pointers
387 // ------------------------------------------------------------------------- //
389 void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
392 // Converts RAW data to recpoints after running clustering
393 // algorithm on CPV and PREshower plane
395 // This method is called at the time of reconstruction
399 TObjArray pmdddlcont;
401 TObjArray *pmdcont = new TObjArray();
402 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
404 pmdclust->SetEdepCut(fEcut);
408 Int_t bufsize = 16000;
409 TBranch *branch1 = clustersTree->Branch("PMDRecpoint", &fRecpoints, bufsize);
411 TBranch * branch2 = clustersTree->Branch("PMDRechit", &fRechits, bufsize);
413 const Int_t kRow = 48;
414 const Int_t kCol = 96;
420 AliPMDRawStream pmdinput(rawReader);
422 while ((indexDDL = pmdinput.DdlData(&pmdddlcont)) >=0)
428 else if (indexDDL >= 4)
433 precpvADC = new int **[iSMN];
434 for (Int_t i=0; i<iSMN; i++) precpvADC[i] = new int *[kRow];
435 for (Int_t i=0; i<iSMN;i++)
437 for (Int_t j=0; j<kRow; j++) precpvADC[i][j] = new int [kCol];
439 for (Int_t i = 0; i < iSMN; i++)
441 for (Int_t j = 0; j < kRow; j++)
443 for (Int_t k = 0; k < kCol; k++)
445 precpvADC[i][j][k] = 0;
452 Int_t ientries = pmdddlcont.GetEntries();
453 for (Int_t ient = 0; ient < ientries; ient++)
455 AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
457 Int_t det = pmdddl->GetDetector();
458 Int_t smn = pmdddl->GetSMN();
459 //Int_t mcm = pmdddl->GetMCM();
460 //Int_t chno = pmdddl->GetChannel();
461 Int_t row = pmdddl->GetRow();
462 Int_t col = pmdddl->GetColumn();
463 Int_t sig = pmdddl->GetSignal();
465 // Pedestal Subtraction
466 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
467 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
468 Float_t pedrms = (Float_t)pedrms1/10.;
469 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
471 //printf("%f %f\n",pedmean, pedrms);
473 // Float_t sig1 = (Float_t) sig;
474 Float_t sig1 = (Float_t) sig - (pedmean + 3.0*pedrms);
477 Float_t gain = fCalibGain->GetGainFact(det,smn,row,col);
478 //printf("sig = %d gain = %f\n",sig,gain);
479 sig = (Int_t) (sig1*gain);
484 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
486 indexsmn = smn - indexDDL * 6;
488 else if (indexDDL == 4)
491 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
497 else if (smn >= 18 && smn < 24)
502 else if (indexDDL == 5)
505 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
507 if (smn >= 6 && smn < 12)
511 else if (smn >= 12 && smn < 18)
516 precpvADC[indexsmn][row][col] = sig;
522 for (indexsmn = 0; indexsmn < iSMN; indexsmn++)
525 for (Int_t irow = 0; irow < kRow; irow++)
527 for (Int_t icol = 0; icol < kCol; icol++)
529 fCellADC[irow][icol] =
530 (Double_t) precpvADC[indexsmn][irow][icol];
536 ismn = indexsmn + indexDDL * 6;
539 else if (indexDDL == 4)
545 else if (indexsmn >= 6 && indexsmn < 12)
547 ismn = indexsmn + 12;
551 else if (indexDDL == 5)
557 else if (indexsmn >= 6 && indexsmn < 12)
564 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
565 Int_t nentries1 = pmdcont->GetEntries();
567 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
569 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
571 AliPMDcluster *pmdcl =
572 (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
573 idet = pmdcl->GetDetector();
574 ismn = pmdcl->GetSMN();
575 clusdata[0] = pmdcl->GetClusX();
576 clusdata[1] = pmdcl->GetClusY();
577 clusdata[2] = pmdcl->GetClusADC();
578 clusdata[3] = pmdcl->GetClusCells();
579 clusdata[4] = pmdcl->GetClusSigmaX();
580 clusdata[5] = pmdcl->GetClusSigmaY();
582 AddRecPoint(idet,ismn,clusdata);
584 Int_t ncell = (Int_t) clusdata[3];
585 for(Int_t ihit = 0; ihit < ncell; ihit++)
587 Int_t celldataX = pmdcl->GetClusCellX(ihit);
588 Int_t celldataY = pmdcl->GetClusCellY(ihit);
589 AddRecHit(celldataX, celldataY);
603 for (Int_t i=0; i<iSMN; i++)
605 for (Int_t j=0; j<kRow; j++) delete [] precpvADC[i][j];
607 for (Int_t i=0; i<iSMN; i++) delete [] precpvADC[i];
614 // delete the pointers
619 // ------------------------------------------------------------------------- //
621 void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
623 // Converts RAW data to recpoints after running clustering
624 // algorithm on CPV and PREshower plane
628 TObjArray pmdddlcont;
629 TObjArray *pmdcont = new TObjArray();
631 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
633 pmdclust->SetEdepCut(fEcut);
635 fRunLoader->GetEvent(ievt);
639 fTreeR = fPMDLoader->TreeR();
642 fPMDLoader->MakeTree("R");
643 fTreeR = fPMDLoader->TreeR();
645 Int_t bufsize = 16000;
646 TBranch *branch1 = fTreeR->Branch("PMDRecpoint", &fRecpoints, bufsize);
647 TBranch *branch2 = fTreeR->Branch("PMDRechit", &fRechits, bufsize);
649 const Int_t kRow = 48;
650 const Int_t kCol = 96;
655 AliPMDRawStream pmdinput(rawReader);
658 while ((indexDDL = pmdinput.DdlData(&pmdddlcont)) >=0) {
664 else if (indexDDL >= 4)
669 precpvADC = new int **[iSMN];
670 for (Int_t i=0; i<iSMN; i++) precpvADC[i] = new int *[kRow];
671 for (Int_t i=0; i<iSMN;i++)
673 for (Int_t j=0; j<kRow; j++) precpvADC[i][j] = new int [kCol];
675 for (Int_t i = 0; i < iSMN; i++)
677 for (Int_t j = 0; j < kRow; j++)
679 for (Int_t k = 0; k < kCol; k++)
681 precpvADC[i][j][k] = 0;
689 Int_t ientries = pmdddlcont.GetEntries();
690 for (Int_t ient = 0; ient < ientries; ient++)
692 AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
694 Int_t det = pmdddl->GetDetector();
695 Int_t smn = pmdddl->GetSMN();
696 //Int_t mcm = pmdddl->GetMCM();
697 //Int_t chno = pmdddl->GetChannel();
698 Int_t row = pmdddl->GetRow();
699 Int_t col = pmdddl->GetColumn();
700 Int_t sig = pmdddl->GetSignal();
702 // Pedestal Subtraction
703 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
704 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
705 Float_t pedrms = (Float_t)pedrms1/10.;
706 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
708 //printf("%f %f\n",pedmean, pedrms);
710 //Float_t sig1 = (Float_t) sig;
711 Float_t sig1 = (Float_t) sig - (pedmean + 3.0*pedrms);
713 Float_t gain = fCalibGain->GetGainFact(det,smn,row,col);
715 //printf("sig = %d gain = %f\n",sig,gain);
716 sig = (Int_t) (sig1*gain);
722 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
724 indexsmn = smn - indexDDL * 6;
726 else if (indexDDL == 4)
729 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
735 else if (smn >= 18 && smn < 24)
740 else if (indexDDL == 5)
743 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
745 if (smn >= 6 && smn < 12)
749 else if (smn >= 12 && smn < 18)
754 precpvADC[indexsmn][row][col] = sig;
761 for (indexsmn = 0; indexsmn < iSMN; indexsmn++)
764 for (Int_t irow = 0; irow < kRow; irow++)
766 for (Int_t icol = 0; icol < kCol; icol++)
768 fCellADC[irow][icol] =
769 (Double_t) precpvADC[indexsmn][irow][icol];
776 ismn = indexsmn + indexDDL * 6;
779 else if (indexDDL == 4)
785 else if (indexsmn >= 6 && indexsmn < 12)
787 ismn = indexsmn + 12;
791 else if (indexDDL == 5)
797 else if (indexsmn >= 6 && indexsmn < 12)
804 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
805 Int_t nentries1 = pmdcont->GetEntries();
807 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
809 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
811 AliPMDcluster *pmdcl =
812 (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
813 idet = pmdcl->GetDetector();
814 ismn = pmdcl->GetSMN();
815 clusdata[0] = pmdcl->GetClusX();
816 clusdata[1] = pmdcl->GetClusY();
817 clusdata[2] = pmdcl->GetClusADC();
818 clusdata[3] = pmdcl->GetClusCells();
819 clusdata[4] = pmdcl->GetClusSigmaX();
820 clusdata[5] = pmdcl->GetClusSigmaY();
822 AddRecPoint(idet,ismn,clusdata);
824 Int_t ncell = (Int_t) clusdata[3];
825 for(Int_t ihit = 0; ihit < ncell; ihit++)
827 Int_t celldataX = pmdcl->GetClusCellX(ihit);
828 Int_t celldataY = pmdcl->GetClusCellY(ihit);
829 AddRecHit(celldataX, celldataY);
843 for (Int_t i=0; i<iSMN; i++)
845 for (Int_t j=0; j<kRow; j++) delete [] precpvADC[i][j];
847 for (Int_t i=0; i<iSMN; i++) delete [] precpvADC[i];
853 fPMDLoader = fRunLoader->GetLoader("PMDLoader");
854 fPMDLoader->WriteRecPoints("OVERWRITE");
856 // delete the pointers
861 // ------------------------------------------------------------------------- //
862 void AliPMDClusterFinder::SetCellEdepCut(Float_t ecut)
866 // ------------------------------------------------------------------------- //
867 void AliPMDClusterFinder::AddRecPoint(Int_t idet,Int_t ismn,Float_t *clusdata)
869 // Add Reconstructed points
871 TClonesArray &lrecpoints = *fRecpoints;
872 AliPMDrecpoint1 *newrecpoint;
873 newrecpoint = new AliPMDrecpoint1(idet, ismn, clusdata);
874 new(lrecpoints[fNpoint++]) AliPMDrecpoint1(newrecpoint);
877 // ------------------------------------------------------------------------- //
878 void AliPMDClusterFinder::AddRecHit(Int_t celldataX,Int_t celldataY)
880 // Add associated cell hits to the Reconstructed points
882 TClonesArray &lrechits = *fRechits;
883 AliPMDrechit *newrechit;
884 newrechit = new AliPMDrechit(celldataX, celldataY);
885 new(lrechits[fNhit++]) AliPMDrechit(newrechit);
888 // ------------------------------------------------------------------------- //
889 void AliPMDClusterFinder::ResetCellADC()
891 // Reset the individual cell ADC value to zero
893 for(Int_t irow = 0; irow < fgkRow; irow++)
895 for(Int_t icol = 0; icol < fgkCol; icol++)
897 fCellADC[irow][icol] = 0.;
901 // ------------------------------------------------------------------------- //
903 void AliPMDClusterFinder::ResetRecpoint()
905 // Clear the list of reconstructed points
907 if (fRecpoints) fRecpoints->Clear();
909 // ------------------------------------------------------------------------- //
910 void AliPMDClusterFinder::ResetRechit()
912 // Clear the list of reconstructed points
914 if (fRechits) fRechits->Clear();
916 // ------------------------------------------------------------------------- //
917 void AliPMDClusterFinder::Load()
919 // Load all the *.root files
921 fPMDLoader->LoadDigits("READ");
922 fPMDLoader->LoadRecPoints("recreate");
924 // ------------------------------------------------------------------------- //
925 void AliPMDClusterFinder::LoadClusters()
927 // Load all the *.root files
929 fPMDLoader->LoadRecPoints("recreate");
931 // ------------------------------------------------------------------------- //
932 void AliPMDClusterFinder::UnLoad()
934 // Unload all the *.root files
936 fPMDLoader->UnloadDigits();
937 fPMDLoader->UnloadRecPoints();
939 // ------------------------------------------------------------------------- //
940 void AliPMDClusterFinder::UnLoadClusters()
942 // Unload all the *.root files
944 fPMDLoader->UnloadRecPoints();
946 // ------------------------------------------------------------------------- //
948 AliPMDCalibData* AliPMDClusterFinder::GetCalibGain() const
950 // The run number will be centralized in AliCDBManager,
951 // you don't need to set it here!
953 AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Gain");
955 if(!entry) AliFatal("Calibration object retrieval failed! ");
957 AliPMDCalibData *calibdata=0;
958 if (entry) calibdata = (AliPMDCalibData*) entry->GetObject();
960 if (!calibdata) AliFatal("No calibration data from calibration database !");
965 // ------------------------------------------------------------------------- //
967 AliPMDPedestal* AliPMDClusterFinder::GetCalibPed() const
969 // The run number will be centralized in AliCDBManager,
970 // you don't need to set it here!
971 AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Ped");
973 if(!entry) AliFatal("Pedestal object retrieval failed!");
975 AliPMDPedestal *pedestal = 0;
976 if (entry) pedestal = (AliPMDPedestal*) entry->GetObject();
978 if (!pedestal) AliFatal("No pedestal data from pedestal database !");