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()
139 // ------------------------------------------------------------------------- //
141 void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt)
143 // Converts digits to recpoints after running clustering
144 // algorithm on CPV plane and PREshower plane
147 Int_t det = 0,smn = 0;
154 TObjArray *pmdcont = new TObjArray();
155 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
157 pmdclust->SetEdepCut(fEcut);
159 fRunLoader->GetEvent(ievt);
162 fTreeD = fPMDLoader->TreeD();
165 AliFatal("AliPMDClusterFinder: Can not get TreeD");
168 AliPMDdigit *pmddigit;
169 TBranch *branch = fTreeD->GetBranch("PMDDigit");
170 branch->SetAddress(&fDigits);
174 fTreeR = fPMDLoader->TreeR();
177 fPMDLoader->MakeTree("R");
178 fTreeR = fPMDLoader->TreeR();
181 Int_t bufsize = 16000;
182 TBranch * branch1 = fTreeR->Branch("PMDRecpoint", &fRecpoints, bufsize);
183 TBranch * branch2 = fTreeR->Branch("PMDRechit", &fRechits, bufsize);
185 Int_t nmodules = (Int_t) fTreeD->GetEntries();
187 for (Int_t imodule = 0; imodule < nmodules; imodule++)
190 fTreeD->GetEntry(imodule);
191 Int_t nentries = fDigits->GetLast();
192 for (Int_t ient = 0; ient < nentries+1; ient++)
194 pmddigit = (AliPMDdigit*)fDigits->UncheckedAt(ient);
196 det = pmddigit->GetDetector();
197 smn = pmddigit->GetSMNumber();
198 xpos = pmddigit->GetRow();
199 ypos = pmddigit->GetColumn();
200 adc = pmddigit->GetADC();
203 Float_t gain = fCalibGain->GetGainFact(det,smn,xpos,ypos);
204 // printf("adc = %d gain = %f\n",adc,gain);
208 //Int_t trno = pmddigit->GetTrackNumber();
209 fCellADC[xpos][ypos] = (Double_t) adc;
214 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
216 Int_t nentries1 = pmdcont->GetEntries();
218 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
220 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
222 AliPMDcluster *pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
223 idet = pmdcl->GetDetector();
224 ismn = pmdcl->GetSMN();
225 clusdata[0] = pmdcl->GetClusX();
226 clusdata[1] = pmdcl->GetClusY();
227 clusdata[2] = pmdcl->GetClusADC();
228 clusdata[3] = pmdcl->GetClusCells();
229 clusdata[4] = pmdcl->GetClusSigmaX();
230 clusdata[5] = pmdcl->GetClusSigmaY();
232 AddRecPoint(idet,ismn,clusdata);
234 Int_t ncell = (Int_t) clusdata[3];
235 for(Int_t ihit = 0; ihit < ncell; ihit++)
237 Int_t celldataX = pmdcl->GetClusCellX(ihit);
238 Int_t celldataY = pmdcl->GetClusCellY(ihit);
239 AddRecHit(celldataX, celldataY);
252 fPMDLoader = fRunLoader->GetLoader("PMDLoader");
253 fPMDLoader->WriteRecPoints("OVERWRITE");
255 // delete the pointers
260 // ------------------------------------------------------------------------- //
262 void AliPMDClusterFinder::Digits2RecPoints(TTree *digitsTree,
265 // Converts digits to recpoints after running clustering
266 // algorithm on CPV plane and PREshower plane
269 Int_t det = 0,smn = 0;
276 AliPMDcluster *pmdcl = 0x0;
278 TObjArray *pmdcont = new TObjArray();
279 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
281 pmdclust->SetEdepCut(fEcut);
283 AliPMDdigit *pmddigit;
284 TBranch *branch = digitsTree->GetBranch("PMDDigit");
285 branch->SetAddress(&fDigits);
289 Int_t bufsize = 16000;
290 TBranch * branch1 = clustersTree->Branch("PMDRecpoint", &fRecpoints, bufsize);
291 TBranch * branch2 = clustersTree->Branch("PMDRechit", &fRechits, bufsize);
293 Int_t nmodules = (Int_t) digitsTree->GetEntries();
295 for (Int_t imodule = 0; imodule < nmodules; imodule++)
300 digitsTree->GetEntry(imodule);
301 Int_t nentries = fDigits->GetLast();
302 for (Int_t ient = 0; ient < nentries+1; ient++)
304 pmddigit = (AliPMDdigit*)fDigits->UncheckedAt(ient);
306 det = pmddigit->GetDetector();
307 smn = pmddigit->GetSMNumber();
308 xpos = pmddigit->GetRow();
309 ypos = pmddigit->GetColumn();
310 adc = pmddigit->GetADC();
312 // Pedestal Subtraction
313 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,xpos,ypos);
314 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
315 Float_t pedrms = (Float_t)pedrms1/10.;
316 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
317 //printf("%f %f\n",pedmean, pedrms);
319 Float_t adc1 = adc - (pedmean + 3.0*pedrms);
322 Float_t gain = fCalibGain->GetGainFact(det,smn,xpos,ypos);
323 // printf("adc = %d gain = %f\n",adc,gain);
327 //Int_t trno = pmddigit->GetTrackNumber();
328 fCellADC[xpos][ypos] = (Double_t) adc;
337 if (totADCMod <= 0) continue;
339 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
341 Int_t nentries1 = pmdcont->GetEntries();
343 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
345 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
347 pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
348 idet = pmdcl->GetDetector();
349 ismn = pmdcl->GetSMN();
350 clusdata[0] = pmdcl->GetClusX();
351 clusdata[1] = pmdcl->GetClusY();
352 clusdata[2] = pmdcl->GetClusADC();
353 clusdata[3] = pmdcl->GetClusCells();
354 clusdata[4] = pmdcl->GetClusSigmaX();
355 clusdata[5] = pmdcl->GetClusSigmaY();
357 AddRecPoint(idet,ismn,clusdata);
359 Int_t ncell = (Int_t) clusdata[3];
360 for(Int_t ihit = 0; ihit < ncell; ihit++)
362 Int_t celldataX = pmdcl->GetClusCellX(ihit);
363 Int_t celldataY = pmdcl->GetClusCellY(ihit);
364 AddRecHit(celldataX, celldataY);
378 // delete the pointers
383 // ------------------------------------------------------------------------- //
385 void AliPMDClusterFinder::Digits2RecPoints(AliRawReader *rawReader,
388 // Converts RAW data to recpoints after running clustering
389 // algorithm on CPV and PREshower plane
391 // This method is called at the time of reconstruction
394 AliPMDddldata *pmdddl = 0x0;
395 AliPMDcluster *pmdcl = 0x0;
399 TObjArray pmdddlcont;
401 TObjArray *pmdcont = new TObjArray();
403 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
405 pmdclust->SetEdepCut(fEcut);
409 Int_t bufsize = 16000;
410 TBranch *branch1 = clustersTree->Branch("PMDRecpoint", &fRecpoints, bufsize);
412 TBranch * branch2 = clustersTree->Branch("PMDRechit", &fRechits, bufsize);
414 const Int_t kRow = 48;
415 const Int_t kCol = 96;
421 AliPMDRawStream pmdinput(rawReader);
423 while ((indexDDL = pmdinput.DdlData(&pmdddlcont)) >=0)
429 else if (indexDDL >= 4)
434 precpvADC = new int **[iSMN];
435 for (Int_t i=0; i<iSMN; i++) precpvADC[i] = new int *[kRow];
436 for (Int_t i=0; i<iSMN;i++)
438 for (Int_t j=0; j<kRow; j++) precpvADC[i][j] = new int [kCol];
440 for (Int_t i = 0; i < iSMN; i++)
442 for (Int_t j = 0; j < kRow; j++)
444 for (Int_t k = 0; k < kCol; k++)
446 precpvADC[i][j][k] = 0;
453 Int_t ientries = pmdddlcont.GetEntries();
454 for (Int_t ient = 0; ient < ientries; ient++)
456 pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
458 Int_t det = pmdddl->GetDetector();
459 Int_t smn = pmdddl->GetSMN();
460 //Int_t mcm = pmdddl->GetMCM();
461 //Int_t chno = pmdddl->GetChannel();
462 Int_t row = pmdddl->GetRow();
463 Int_t col = pmdddl->GetColumn();
464 Int_t sig = pmdddl->GetSignal();
466 // Pedestal Subtraction
467 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
468 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
469 Float_t pedrms = (Float_t)pedrms1/10.;
470 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
472 //printf("%f %f\n",pedmean, pedrms);
474 // Float_t sig1 = (Float_t) sig;
475 Float_t sig1 = (Float_t) sig - (pedmean + 3.0*pedrms);
478 Float_t gain = fCalibGain->GetGainFact(det,smn,row,col);
479 //printf("sig = %d gain = %f\n",sig,gain);
480 sig = (Int_t) (sig1*gain);
485 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
487 indexsmn = smn - indexDDL * 6;
489 else if (indexDDL == 4)
492 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
498 else if (smn >= 18 && smn < 24)
503 else if (indexDDL == 5)
506 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
508 if (smn >= 6 && smn < 12)
512 else if (smn >= 12 && smn < 18)
517 precpvADC[indexsmn][row][col] = sig;
525 for (indexsmn = 0; indexsmn < iSMN; indexsmn++)
529 for (Int_t irow = 0; irow < kRow; irow++)
531 for (Int_t icol = 0; icol < kCol; icol++)
533 fCellADC[irow][icol] =
534 (Double_t) precpvADC[indexsmn][irow][icol];
535 totAdcMod += precpvADC[indexsmn][irow][icol];
541 ismn = indexsmn + indexDDL * 6;
544 else if (indexDDL == 4)
550 else if (indexsmn >= 6 && indexsmn < 12)
552 ismn = indexsmn + 12;
556 else if (indexDDL == 5)
562 else if (indexsmn >= 6 && indexsmn < 12)
569 if (totAdcMod <= 0) continue;
570 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
571 Int_t nentries1 = pmdcont->GetEntries();
573 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
575 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
577 pmdcl = (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
578 idet = pmdcl->GetDetector();
579 ismn = pmdcl->GetSMN();
580 clusdata[0] = pmdcl->GetClusX();
581 clusdata[1] = pmdcl->GetClusY();
582 clusdata[2] = pmdcl->GetClusADC();
583 clusdata[3] = pmdcl->GetClusCells();
584 clusdata[4] = pmdcl->GetClusSigmaX();
585 clusdata[5] = pmdcl->GetClusSigmaY();
587 AddRecPoint(idet,ismn,clusdata);
589 Int_t ncell = (Int_t) clusdata[3];
590 for(Int_t ihit = 0; ihit < ncell; ihit++)
592 Int_t celldataX = pmdcl->GetClusCellX(ihit);
593 Int_t celldataY = pmdcl->GetClusCellY(ihit);
594 AddRecHit(celldataX, celldataY);
608 for (Int_t i=0; i<iSMN; i++)
610 for (Int_t j=0; j<kRow; j++) delete [] precpvADC[i][j];
612 for (Int_t i=0; i<iSMN; i++) delete [] precpvADC[i];
619 // delete the pointers
624 // ------------------------------------------------------------------------- //
626 void AliPMDClusterFinder::Digits2RecPoints(Int_t ievt, AliRawReader *rawReader)
628 // Converts RAW data to recpoints after running clustering
629 // algorithm on CPV and PREshower plane
633 TObjArray pmdddlcont;
634 TObjArray *pmdcont = new TObjArray();
636 AliPMDClustering *pmdclust = new AliPMDClusteringV1();
638 pmdclust->SetEdepCut(fEcut);
640 fRunLoader->GetEvent(ievt);
644 fTreeR = fPMDLoader->TreeR();
647 fPMDLoader->MakeTree("R");
648 fTreeR = fPMDLoader->TreeR();
650 Int_t bufsize = 16000;
651 TBranch *branch1 = fTreeR->Branch("PMDRecpoint", &fRecpoints, bufsize);
652 TBranch *branch2 = fTreeR->Branch("PMDRechit", &fRechits, bufsize);
654 const Int_t kRow = 48;
655 const Int_t kCol = 96;
660 AliPMDRawStream pmdinput(rawReader);
663 while ((indexDDL = pmdinput.DdlData(&pmdddlcont)) >=0) {
669 else if (indexDDL >= 4)
674 precpvADC = new int **[iSMN];
675 for (Int_t i=0; i<iSMN; i++) precpvADC[i] = new int *[kRow];
676 for (Int_t i=0; i<iSMN;i++)
678 for (Int_t j=0; j<kRow; j++) precpvADC[i][j] = new int [kCol];
680 for (Int_t i = 0; i < iSMN; i++)
682 for (Int_t j = 0; j < kRow; j++)
684 for (Int_t k = 0; k < kCol; k++)
686 precpvADC[i][j][k] = 0;
694 Int_t ientries = pmdddlcont.GetEntries();
695 for (Int_t ient = 0; ient < ientries; ient++)
697 AliPMDddldata *pmdddl = (AliPMDddldata*)pmdddlcont.UncheckedAt(ient);
699 Int_t det = pmdddl->GetDetector();
700 Int_t smn = pmdddl->GetSMN();
701 //Int_t mcm = pmdddl->GetMCM();
702 //Int_t chno = pmdddl->GetChannel();
703 Int_t row = pmdddl->GetRow();
704 Int_t col = pmdddl->GetColumn();
705 Int_t sig = pmdddl->GetSignal();
707 // Pedestal Subtraction
708 Int_t pedmeanrms = fCalibPed->GetPedMeanRms(det,smn,row,col);
709 Int_t pedrms1 = (Int_t) pedmeanrms%1000;
710 Float_t pedrms = (Float_t)pedrms1/10.;
711 Float_t pedmean = (Float_t) (pedmeanrms - pedrms1)/1000.0;
713 //printf("%f %f\n",pedmean, pedrms);
715 //Float_t sig1 = (Float_t) sig;
716 Float_t sig1 = (Float_t) sig - (pedmean + 3.0*pedrms);
718 Float_t gain = fCalibGain->GetGainFact(det,smn,row,col);
720 //printf("sig = %d gain = %f\n",sig,gain);
721 sig = (Int_t) (sig1*gain);
727 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
729 indexsmn = smn - indexDDL * 6;
731 else if (indexDDL == 4)
734 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
740 else if (smn >= 18 && smn < 24)
745 else if (indexDDL == 5)
748 AliError(Form("*DDL %d and Detector NUMBER %d NOT MATCHING *",
750 if (smn >= 6 && smn < 12)
754 else if (smn >= 12 && smn < 18)
759 precpvADC[indexsmn][row][col] = sig;
766 for (indexsmn = 0; indexsmn < iSMN; indexsmn++)
769 for (Int_t irow = 0; irow < kRow; irow++)
771 for (Int_t icol = 0; icol < kCol; icol++)
773 fCellADC[irow][icol] =
774 (Double_t) precpvADC[indexsmn][irow][icol];
781 ismn = indexsmn + indexDDL * 6;
784 else if (indexDDL == 4)
790 else if (indexsmn >= 6 && indexsmn < 12)
792 ismn = indexsmn + 12;
796 else if (indexDDL == 5)
802 else if (indexsmn >= 6 && indexsmn < 12)
809 pmdclust->DoClust(idet,ismn,fCellADC,pmdcont);
810 Int_t nentries1 = pmdcont->GetEntries();
812 AliDebug(1,Form("Total number of clusters/module = %d",nentries1));
814 for (Int_t ient1 = 0; ient1 < nentries1; ient1++)
816 AliPMDcluster *pmdcl =
817 (AliPMDcluster*)pmdcont->UncheckedAt(ient1);
818 idet = pmdcl->GetDetector();
819 ismn = pmdcl->GetSMN();
820 clusdata[0] = pmdcl->GetClusX();
821 clusdata[1] = pmdcl->GetClusY();
822 clusdata[2] = pmdcl->GetClusADC();
823 clusdata[3] = pmdcl->GetClusCells();
824 clusdata[4] = pmdcl->GetClusSigmaX();
825 clusdata[5] = pmdcl->GetClusSigmaY();
827 AddRecPoint(idet,ismn,clusdata);
829 Int_t ncell = (Int_t) clusdata[3];
830 for(Int_t ihit = 0; ihit < ncell; ihit++)
832 Int_t celldataX = pmdcl->GetClusCellX(ihit);
833 Int_t celldataY = pmdcl->GetClusCellY(ihit);
834 AddRecHit(celldataX, celldataY);
848 for (Int_t i=0; i<iSMN; i++)
850 for (Int_t j=0; j<kRow; j++) delete [] precpvADC[i][j];
852 for (Int_t i=0; i<iSMN; i++) delete [] precpvADC[i];
858 fPMDLoader = fRunLoader->GetLoader("PMDLoader");
859 fPMDLoader->WriteRecPoints("OVERWRITE");
861 // delete the pointers
866 // ------------------------------------------------------------------------- //
867 void AliPMDClusterFinder::SetCellEdepCut(Float_t ecut)
871 // ------------------------------------------------------------------------- //
872 void AliPMDClusterFinder::AddRecPoint(Int_t idet,Int_t ismn,Float_t *clusdata)
874 // Add Reconstructed points
876 TClonesArray &lrecpoints = *fRecpoints;
877 AliPMDrecpoint1 *newrecpoint;
878 newrecpoint = new AliPMDrecpoint1(idet, ismn, clusdata);
879 new(lrecpoints[fNpoint++]) AliPMDrecpoint1(newrecpoint);
882 // ------------------------------------------------------------------------- //
883 void AliPMDClusterFinder::AddRecHit(Int_t celldataX,Int_t celldataY)
885 // Add associated cell hits to the Reconstructed points
887 TClonesArray &lrechits = *fRechits;
888 AliPMDrechit *newrechit;
889 newrechit = new AliPMDrechit(celldataX, celldataY);
890 new(lrechits[fNhit++]) AliPMDrechit(newrechit);
893 // ------------------------------------------------------------------------- //
894 void AliPMDClusterFinder::ResetCellADC()
896 // Reset the individual cell ADC value to zero
898 for(Int_t irow = 0; irow < fgkRow; irow++)
900 for(Int_t icol = 0; icol < fgkCol; icol++)
902 fCellADC[irow][icol] = 0.;
906 // ------------------------------------------------------------------------- //
908 void AliPMDClusterFinder::ResetRecpoint()
910 // Clear the list of reconstructed points
912 if (fRecpoints) fRecpoints->Clear();
914 // ------------------------------------------------------------------------- //
915 void AliPMDClusterFinder::ResetRechit()
917 // Clear the list of reconstructed points
919 if (fRechits) fRechits->Clear();
921 // ------------------------------------------------------------------------- //
922 void AliPMDClusterFinder::Load()
924 // Load all the *.root files
926 fPMDLoader->LoadDigits("READ");
927 fPMDLoader->LoadRecPoints("recreate");
929 // ------------------------------------------------------------------------- //
930 void AliPMDClusterFinder::LoadClusters()
932 // Load all the *.root files
934 fPMDLoader->LoadRecPoints("recreate");
936 // ------------------------------------------------------------------------- //
937 void AliPMDClusterFinder::UnLoad()
939 // Unload all the *.root files
941 fPMDLoader->UnloadDigits();
942 fPMDLoader->UnloadRecPoints();
944 // ------------------------------------------------------------------------- //
945 void AliPMDClusterFinder::UnLoadClusters()
947 // Unload all the *.root files
949 fPMDLoader->UnloadRecPoints();
951 // ------------------------------------------------------------------------- //
953 AliPMDCalibData* AliPMDClusterFinder::GetCalibGain() const
955 // The run number will be centralized in AliCDBManager,
956 // you don't need to set it here!
958 AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Gain");
960 if(!entry) AliFatal("Calibration object retrieval failed! ");
962 AliPMDCalibData *calibdata=0;
963 if (entry) calibdata = (AliPMDCalibData*) entry->GetObject();
965 if (!calibdata) AliFatal("No calibration data from calibration database !");
970 // ------------------------------------------------------------------------- //
972 AliPMDPedestal* AliPMDClusterFinder::GetCalibPed() const
974 // The run number will be centralized in AliCDBManager,
975 // you don't need to set it here!
976 AliCDBEntry *entry = AliCDBManager::Instance()->Get("PMD/Calib/Ped");
978 if(!entry) AliFatal("Pedestal object retrieval failed!");
980 AliPMDPedestal *pedestal = 0;
981 if (entry) pedestal = (AliPMDPedestal*) entry->GetObject();
983 if (!pedestal) AliFatal("No pedestal data from pedestal database !");