ROOT logo
/**************************************************************************
 * Copyright(c) 2006-07, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// Class describing EMCAL temperature sensors (including pointers to graphs/fits//
// Authors: David Silvermyr, copied from TPC (Ivanov, Helstrup, Siska)        //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

// Running instructions:
/*
  TClonesArray * arr = AliEMCALSensorTemp::ReadList("TempSensor.txt","emc_PT_%d.Temperature");
  TFile f("TempSensors.root","RECREATE");
  TTree * tree = new TTree("TempSensor", "TempSensor");
  tree->Branch("Temp",&arr);
  tree->Fill();
  tree->Write();
  
*/

//

#include <strings.h>
#include "AliEMCALSensorTemp.h"
ClassImp(AliEMCALSensorTemp)

//______________________________________________________________________________________________

AliEMCALSensorTemp::AliEMCALSensorTemp(): AliDCSSensor(),
  fSide(0),
  fSector(0),
  fNum(0)
{
  //
  //  Standard constructor
  //
}
//______________________________________________________________________________________________

AliEMCALSensorTemp::AliEMCALSensorTemp(const AliEMCALSensorTemp& source) :
  AliDCSSensor(source),
   fSide(source.fSide),
   fSector(source.fSector),
   fNum(source.fNum)

//
//  Copy constructor
//
{ }
//______________________________________________________________________________________________

AliEMCALSensorTemp& AliEMCALSensorTemp::operator=(const AliEMCALSensorTemp& source){
//
// assignment operator
//
  if (&source == this) return *this;
  new (this) AliEMCALSensorTemp(source);
  
  return *this;  
}
//______________________________________________________________________________________________

TClonesArray * AliEMCALSensorTemp::ReadList(const char *fname,
                                          const TString& amandaString) {
  //
  // read values from ascii file
  //
  TTree * tree = new TTree("asci","asci");
  tree->ReadFile(fname,"");
  TClonesArray *arr = ReadTree(tree, amandaString);
  delete tree;
  return arr;
}
     
//______________________________________________________________________________________________

TClonesArray * AliEMCALSensorTemp::ReadTree(TTree *tree, 
                                          const TString& amandaString) 
{ // read selected info from TTree
  
  Int_t nentries = tree->GetEntries();
  Int_t sensor=0;
  Int_t sector=0;
  char  side[100];
  Int_t num=0;
  Int_t echa=0;
  //Double_t x=0;
  //Double_t y=0;
  //Double_t z=0;
  //String_t namedtp[100];

  tree->SetBranchAddress("Sensor",&sensor);
  tree->SetBranchAddress("Side",&side);
  tree->SetBranchAddress("Sec",&sector);
  tree->SetBranchAddress("Num",&num);
  tree->SetBranchAddress("ECha",&echa);
  //tree->SetBranchAddress("X",&x);
  //tree->SetBranchAddress("Y",&y);
  //tree->SetBranchAddress("Z",&z);

  // firstSensor = (Int_t)tree->GetMinimum("ECha");
  // lastSensor = (Int_t)tree->GetMaximum("ECha");

  TClonesArray * array = new TClonesArray("AliEMCALSensorTemp",nentries);

  for (Int_t isensor=0; isensor<nentries; isensor++){
    AliEMCALSensorTemp * temp = new ((*array)[isensor])AliEMCALSensorTemp;
    tree->GetEntry(isensor);
    temp->SetId(sensor);
    temp->SetIdDCS(echa);
    TString stringID = Form (amandaString.Data(),echa);
    temp->SetStringID(stringID);
    if (side[0]=='C') temp->SetSide(1);
    temp->SetSector(sector);
    temp->SetNum(num);

    // Don't yet know the local or global coordinates for where the sensors will be placed..
    //temp->SetX(x);
    //temp->SetY(y);
    //temp->SetZ(z);

  }
  return array;
}
 AliEMCALSensorTemp.cxx:1
 AliEMCALSensorTemp.cxx:2
 AliEMCALSensorTemp.cxx:3
 AliEMCALSensorTemp.cxx:4
 AliEMCALSensorTemp.cxx:5
 AliEMCALSensorTemp.cxx:6
 AliEMCALSensorTemp.cxx:7
 AliEMCALSensorTemp.cxx:8
 AliEMCALSensorTemp.cxx:9
 AliEMCALSensorTemp.cxx:10
 AliEMCALSensorTemp.cxx:11
 AliEMCALSensorTemp.cxx:12
 AliEMCALSensorTemp.cxx:13
 AliEMCALSensorTemp.cxx:14
 AliEMCALSensorTemp.cxx:15
 AliEMCALSensorTemp.cxx:16
 AliEMCALSensorTemp.cxx:17
 AliEMCALSensorTemp.cxx:18
 AliEMCALSensorTemp.cxx:19
 AliEMCALSensorTemp.cxx:20
 AliEMCALSensorTemp.cxx:21
 AliEMCALSensorTemp.cxx:22
 AliEMCALSensorTemp.cxx:23
 AliEMCALSensorTemp.cxx:24
 AliEMCALSensorTemp.cxx:25
 AliEMCALSensorTemp.cxx:26
 AliEMCALSensorTemp.cxx:27
 AliEMCALSensorTemp.cxx:28
 AliEMCALSensorTemp.cxx:29
 AliEMCALSensorTemp.cxx:30
 AliEMCALSensorTemp.cxx:31
 AliEMCALSensorTemp.cxx:32
 AliEMCALSensorTemp.cxx:33
 AliEMCALSensorTemp.cxx:34
 AliEMCALSensorTemp.cxx:35
 AliEMCALSensorTemp.cxx:36
 AliEMCALSensorTemp.cxx:37
 AliEMCALSensorTemp.cxx:38
 AliEMCALSensorTemp.cxx:39
 AliEMCALSensorTemp.cxx:40
 AliEMCALSensorTemp.cxx:41
 AliEMCALSensorTemp.cxx:42
 AliEMCALSensorTemp.cxx:43
 AliEMCALSensorTemp.cxx:44
 AliEMCALSensorTemp.cxx:45
 AliEMCALSensorTemp.cxx:46
 AliEMCALSensorTemp.cxx:47
 AliEMCALSensorTemp.cxx:48
 AliEMCALSensorTemp.cxx:49
 AliEMCALSensorTemp.cxx:50
 AliEMCALSensorTemp.cxx:51
 AliEMCALSensorTemp.cxx:52
 AliEMCALSensorTemp.cxx:53
 AliEMCALSensorTemp.cxx:54
 AliEMCALSensorTemp.cxx:55
 AliEMCALSensorTemp.cxx:56
 AliEMCALSensorTemp.cxx:57
 AliEMCALSensorTemp.cxx:58
 AliEMCALSensorTemp.cxx:59
 AliEMCALSensorTemp.cxx:60
 AliEMCALSensorTemp.cxx:61
 AliEMCALSensorTemp.cxx:62
 AliEMCALSensorTemp.cxx:63
 AliEMCALSensorTemp.cxx:64
 AliEMCALSensorTemp.cxx:65
 AliEMCALSensorTemp.cxx:66
 AliEMCALSensorTemp.cxx:67
 AliEMCALSensorTemp.cxx:68
 AliEMCALSensorTemp.cxx:69
 AliEMCALSensorTemp.cxx:70
 AliEMCALSensorTemp.cxx:71
 AliEMCALSensorTemp.cxx:72
 AliEMCALSensorTemp.cxx:73
 AliEMCALSensorTemp.cxx:74
 AliEMCALSensorTemp.cxx:75
 AliEMCALSensorTemp.cxx:76
 AliEMCALSensorTemp.cxx:77
 AliEMCALSensorTemp.cxx:78
 AliEMCALSensorTemp.cxx:79
 AliEMCALSensorTemp.cxx:80
 AliEMCALSensorTemp.cxx:81
 AliEMCALSensorTemp.cxx:82
 AliEMCALSensorTemp.cxx:83
 AliEMCALSensorTemp.cxx:84
 AliEMCALSensorTemp.cxx:85
 AliEMCALSensorTemp.cxx:86
 AliEMCALSensorTemp.cxx:87
 AliEMCALSensorTemp.cxx:88
 AliEMCALSensorTemp.cxx:89
 AliEMCALSensorTemp.cxx:90
 AliEMCALSensorTemp.cxx:91
 AliEMCALSensorTemp.cxx:92
 AliEMCALSensorTemp.cxx:93
 AliEMCALSensorTemp.cxx:94
 AliEMCALSensorTemp.cxx:95
 AliEMCALSensorTemp.cxx:96
 AliEMCALSensorTemp.cxx:97
 AliEMCALSensorTemp.cxx:98
 AliEMCALSensorTemp.cxx:99
 AliEMCALSensorTemp.cxx:100
 AliEMCALSensorTemp.cxx:101
 AliEMCALSensorTemp.cxx:102
 AliEMCALSensorTemp.cxx:103
 AliEMCALSensorTemp.cxx:104
 AliEMCALSensorTemp.cxx:105
 AliEMCALSensorTemp.cxx:106
 AliEMCALSensorTemp.cxx:107
 AliEMCALSensorTemp.cxx:108
 AliEMCALSensorTemp.cxx:109
 AliEMCALSensorTemp.cxx:110
 AliEMCALSensorTemp.cxx:111
 AliEMCALSensorTemp.cxx:112
 AliEMCALSensorTemp.cxx:113
 AliEMCALSensorTemp.cxx:114
 AliEMCALSensorTemp.cxx:115
 AliEMCALSensorTemp.cxx:116
 AliEMCALSensorTemp.cxx:117
 AliEMCALSensorTemp.cxx:118
 AliEMCALSensorTemp.cxx:119
 AliEMCALSensorTemp.cxx:120
 AliEMCALSensorTemp.cxx:121
 AliEMCALSensorTemp.cxx:122
 AliEMCALSensorTemp.cxx:123
 AliEMCALSensorTemp.cxx:124
 AliEMCALSensorTemp.cxx:125
 AliEMCALSensorTemp.cxx:126
 AliEMCALSensorTemp.cxx:127
 AliEMCALSensorTemp.cxx:128
 AliEMCALSensorTemp.cxx:129
 AliEMCALSensorTemp.cxx:130
 AliEMCALSensorTemp.cxx:131
 AliEMCALSensorTemp.cxx:132
 AliEMCALSensorTemp.cxx:133
 AliEMCALSensorTemp.cxx:134
 AliEMCALSensorTemp.cxx:135
 AliEMCALSensorTemp.cxx:136
 AliEMCALSensorTemp.cxx:137
 AliEMCALSensorTemp.cxx:138