basic quality checks/plots (from Josh Hamblen/UT)
[u/mrichter/AliRoot.git] / EMCAL / SMcalib / QA / EMCALLEDda.C
1 /*
2   a very basic test macro for processing LED events with AliCaloCalibSignal
3   Josh Hamblen
4 */
5 #define AliDebugLevel() -1
6
7 void EMCALLEDda(const int runno = 476){
8   
9   int i, status;
10   
11   /* log start of process */
12   printf("EMCAL DA started - %s\n",__FILE__);
13   
14   AliCaloCalibSignal * calibSignal = new 
15     AliCaloCalibSignal(AliCaloCalibSignal::kEmCal); // pedestal and noise calibration
16   
17   int nevents=0;
18   // Assume we are just interested in the 1st segment, _0.root below for fname*
19   Char_t fname[256];
20   sprintf(fname, "/local/data/Run_%09d.Seq_1A.Stream_0.root",runno);
21     
22   AliRawReader *rawReader = NULL;
23   rawReader = new AliRawReaderRoot(fname);
24   AliCaloRawStream *in = NULL; 
25   in = new AliCaloRawStream(rawReader,"EMCAL");
26   //in->SetOldRCUFormat(kTRUE);
27   
28   AliRawEventHeaderBase *aliHeader=NULL;
29   int nev=0;
30   /* read until EOF */
31   while ( rawReader->NextEvent()) {
32     nev++;
33     
34     aliHeader = (AliRawEventHeaderBase*) rawReader->GetEventHeader();
35     calibSignal->SetRunNumber( aliHeader->Get("RunNb") ); // just for fun; keep info on last run looked at
36     
37     if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kStartOfRun){
38       // set start time
39       calibSignal->SetStartTime(aliHeader->Get("Timestamp"));
40       int time = aliHeader->Get("Timestamp");
41     }
42     
43     // set parameters for led event checking
44     calibSignal->SetAmpCut(50);
45     // for now, fraction choice is set for testbeam files:
46     // 64 channels / (a total of 24 rows * 48 cols * 12 modules) = 0.00462962963
47     calibSignal->SetReqFractionAboveAmpCutVal(0.004);
48     calibSignal->SetReqFractionAboveAmp(kTRUE);
49     calibSignal->SetUseAverage(kTRUE);
50     calibSignal->SetSecInAverage(900);
51     
52     // select physics and calibration events now (only calibration in future)
53     if ( aliHeader->Get("Type") == AliRawEventHeaderBase::kPhysicsEvent || 
54          aliHeader->Get("Type") == AliRawEventHeaderBase::kCalibrationEvent  ) {
55       
56       nevents++;
57       if(nevents%1000==0)cout<<"Event "<<nevents<<endl;
58       //  Signal calibration
59       calibSignal->ProcessEvent(in,aliHeader);
60     }
61   } // loop over all events in file
62     /* cleanup the reading handles */
63   delete in;
64   delete rawReader;    
65   
66   //
67   // write results/histograms to rootfile
68   //
69   
70   printf ("%d physics/calibration events processed.\n",nevents);
71  
72   Char_t outname[256];
73   sprintf(outname, "LED_%09d.root",runno);
74   
75   calibSignal->Save(outname);
76   printf("Wrote %s.\n",outname);
77   calibSignal->Analyze();
78   printf("NEvents Processed %d Accepted %d\n",calibSignal->GetNEvents(),calibSignal->GetNAcceptedEvents());
79   
80   // see if we can delete our analysis helper also
81   delete calibSignal;
82   
83 }