add list of V0 to the data transported to tasks
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 May 2009 12:04:55 +0000 (12:04 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 20 May 2009 12:04:55 +0000 (12:04 +0000)
update PID ref maker to use the new data

TRD/TRDqaRecLinkDef.h
TRD/qaRec/AliTRDinfoGen.cxx
TRD/qaRec/AliTRDinfoGen.h
TRD/qaRec/AliTRDpidRefMaker.cxx
TRD/qaRec/AliTRDpidRefMaker.h
TRD/qaRec/info/AliTRDv0Info.cxx [new file with mode: 0644]
TRD/qaRec/info/AliTRDv0Info.h [new file with mode: 0644]
TRD/qaRec/macros/AddTRDcheckPID.C
TRD/qaRec/macros/AddTRDinfoGen.C
TRD/qaRec/run.C

index c662f66..e1e1c85 100644 (file)
@@ -7,6 +7,7 @@
 #pragma link off all functions;
 
 #pragma link C++ class  AliTRDclusterInfo+;
+#pragma link C++ class  AliTRDv0Info+;
 #pragma link C++ class  AliTRDtrackInfo+;
 #pragma link C++ class  AliTRDeventInfo+;
 #pragma link C++ class  AliTRDtrackInfo::AliESDinfo+;
index a8f6458..901f712 100644 (file)
@@ -62,6 +62,7 @@
 #include "AliTRDinfoGen.h"
 #include "info/AliTRDtrackInfo.h"
 #include "info/AliTRDeventInfo.h"
+#include "info/AliTRDv0Info.h"
 
 ClassImp(AliTRDinfoGen)
 
@@ -76,6 +77,8 @@ AliTRDinfoGen::AliTRDinfoGen():
   ,fESDfriend(0x0)
   ,fTrackInfo(0x0)
   ,fEventInfo(0x0)
+  ,fV0container(0x0)
+  ,fV0Info(0x0)
 {
   //
   // Default constructor
@@ -84,7 +87,7 @@ AliTRDinfoGen::AliTRDinfoGen():
   DefineInput(0, TChain::Class());
   DefineOutput(0, TObjArray::Class());
   DefineOutput(1, AliTRDeventInfo::Class());
-  //DefineOutput(1, TTree::Class());
+  DefineOutput(2, TObjArray::Class());
 }
 
 //____________________________________________________________________
@@ -92,10 +95,15 @@ AliTRDinfoGen::~AliTRDinfoGen()
 {
   if(fTrackInfo) delete fTrackInfo; fTrackInfo = 0x0;
   if(fEventInfo) delete fEventInfo; fEventInfo = 0x0;
+  if(fV0Info) delete fV0Info; fV0Info = 0x0;
   if(fContainer){ 
     fContainer->Delete(); delete fContainer;
     fContainer = 0x0;
   }
+  if(fV0container){ 
+    fV0container->Delete(); delete fV0container;
+    fV0container = 0x0;
+  }
 }
 
 //____________________________________________________________________
@@ -142,13 +150,12 @@ void AliTRDinfoGen::CreateOutputObjects()
   //
   fTrackInfo = new AliTRDtrackInfo();
   fEventInfo = new AliTRDeventInfo();
+  fV0Info    = new AliTRDv0Info();
   fContainer = new TObjArray(1000);
   fContainer->SetOwner(kTRUE);
+  fV0container = new TObjArray(50);
+  fV0container->SetOwner(kTRUE);
 
-/*  OpenFile(1, "RECREATE");
-  fTree = new TTree("trd", "extract of the TRD detector");
-  fTree->Branch("info",  &fTrackInfo);
-  printf("output tree build in %s\n", fTree->GetDirectory()->GetName());*/
 }
 
 //____________________________________________________________________
@@ -169,6 +176,7 @@ void AliTRDinfoGen::Exec(Option_t *){
     return;
   }
   fContainer->Delete();
+  fV0container->Delete();
   fEventInfo->Delete("");
   fESD->SetESDfriend(fESDfriend);
   new(fEventInfo)AliTRDeventInfo(fESD->GetHeader(), const_cast<AliESDRun *>(fESD->GetESDRun()));
@@ -304,6 +312,12 @@ void AliTRDinfoGen::Exec(Option_t *){
   }
   if(fDebugLevel>=2) printf("%3d Tracks: TPC[%d] TRD[%d]\n", (Int_t)AliAnalysisManager::GetAnalysisManager()->GetCurrentEntry(), nTPC, nTRD);
 
+  AliESDv0 *v0 = 0x0;
+  for(Int_t iv0=0; iv0<fESD->GetNumberOfV0s(); iv0++){
+    if(!(v0 = fESD->GetV0(iv0))) continue;
+    fV0container->Add(new AliTRDv0Info(v0));
+  }
+
   // Insert also MC tracks which are passing TRD where the track is not reconstructed
   if(HasMCdata()){
     if(fDebugLevel > 10){
@@ -356,6 +370,7 @@ void AliTRDinfoGen::Exec(Option_t *){
   }
   PostData(0, fContainer);
   PostData(1, fEventInfo);
+  PostData(2, fV0container);
 }
 
 
index ab42c83..8e0b31e 100644 (file)
@@ -20,6 +20,7 @@ class AliMCEvent;
 class AliESDfriend;
 class AliTRDtrackInfo;
 class AliTRDeventInfo;
+class AliTRDv0Info;
 class TObjArray;
 class TTreeSRedirector;
 class AliTRDinfoGen : public AliTRDrecoTask{
@@ -40,12 +41,14 @@ private:
   AliTRDinfoGen(const AliTRDinfoGen&);
   AliTRDinfoGen& operator=(const AliTRDinfoGen&);
 
-  AliESDEvent      *fESD;                  // ESD event
-  AliMCEvent       *fMC;                   // MC event
-  AliESDfriend     *fESDfriend;            // ESD friends
-  AliTRDtrackInfo  *fTrackInfo;            // Track info
-  AliTRDeventInfo  *fEventInfo;                   // Event info
+  AliESDEvent      *fESD;            //! ESD event
+  AliMCEvent       *fMC;             //! MC event
+  AliESDfriend     *fESDfriend;      //! ESD friends
+  AliTRDtrackInfo  *fTrackInfo;      //! Track info
+  AliTRDeventInfo  *fEventInfo;                   //! Event info
+  TObjArray        *fV0container;    //! V0 container
+  AliTRDv0Info     *fV0Info;                //! V0 info
 
-  ClassDef(AliTRDinfoGen, 1)          // entry to TRD analysis
+  ClassDef(AliTRDinfoGen, 2)         // entry to TRD analysis train
 };
 #endif
index fc7fa05..ba44881 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "AliTRDpidRefMaker.h"
 #include "info/AliTRDtrackInfo.h"
+#include "info/AliTRDv0Info.h"
 
 // builds the reference tree for the training of neural networks
 
@@ -35,6 +36,7 @@ ClassImp(AliTRDpidRefMaker)
 AliTRDpidRefMaker::AliTRDpidRefMaker() 
   :AliTRDrecoTask("PidRefMaker", "PID(NN) Reference Maker")
   ,fReconstructor(0x0)
+  ,fV0s(0x0)
   ,fNN(0x0)
   ,fLQ(0x0)
   ,fLayer(0xff)
@@ -64,6 +66,7 @@ AliTRDpidRefMaker::AliTRDpidRefMaker()
   TDatime datime;
   fDate = datime.GetDate();
 
+  DefineInput(1, TObjArray::Class());
   DefineOutput(1, TTree::Class());
   DefineOutput(2, TTree::Class());
 }
@@ -78,6 +81,13 @@ AliTRDpidRefMaker::~AliTRDpidRefMaker()
 }
 
 
+//________________________________________________________________________
+void AliTRDpidRefMaker::ConnectInputData(Option_t *opt)
+{
+  AliTRDrecoTask::ConnectInputData(opt);
+  fV0s = dynamic_cast<TObjArray*>(GetInputData(1));
+}
+
 //________________________________________________________________________
 void AliTRDpidRefMaker::CreateOutputObjects()
 {
@@ -135,14 +145,17 @@ void AliTRDpidRefMaker::Exec(Option_t *)
   Int_t nTRD = 0;
 
   AliTRDtrackInfo     *track = 0x0;
+  AliTRDv0Info           *v0 = 0x0;
   AliTRDtrackV1    *TRDtrack = 0x0;
   AliTrackReference     *ref = 0x0;
   AliExternalTrackParam *esd = 0x0;
-
   AliTRDseedV1 *TRDtracklet = 0x0;
 
-  //AliTRDcluster *TRDcluster = 0x0;
-
+  for(Int_t iv0=0; iv0<fV0s->GetEntriesFast(); iv0++){
+    v0 = dynamic_cast<AliTRDv0Info*>(fV0s->At(iv0));
+    v0->Print();
+  }
+  
   for(Int_t itrk=0; itrk<fTracks->GetEntriesFast(); itrk++){
 
     // reset the pid information
index 8c247c1..6eab5c5 100644 (file)
@@ -28,6 +28,7 @@
 #endif\r
 \r
 class TTree;\r
+class TObjArray;\r
 class TEventList;\r
 class TMultiLayerPerceptron;\r
 class AliPID;\r
@@ -65,6 +66,7 @@ public:
 \r
   virtual ~AliTRDpidRefMaker();\r
   \r
+  void    ConnectInputData(Option_t *opt);\r
   void    CreateOutputObjects();\r
   void    Exec(Option_t *option);\r
   Int_t   GetEpochs() {return fEpochs;};\r
@@ -98,6 +100,7 @@ private:
   void BuildLQRefs(Int_t mombin);                           // build the 2dim histos for a given momentum bin\r
 \r
   AliTRDReconstructor *fReconstructor;     //! reconstructor needed for recalculation the PID\r
+  TObjArray     *fV0s;                     //! v0 array\r
   TTree         *fNN;                      // NN data\r
   TTree         *fLQ;                      // LQ data\r
   TEventList *fTrain[AliTRDCalPID::kNMom][AliTRDgeometry::kNlayer];          // Training list for each momentum \r
diff --git a/TRD/qaRec/info/AliTRDv0Info.cxx b/TRD/qaRec/info/AliTRDv0Info.cxx
new file mode 100644 (file)
index 0000000..d473d32
--- /dev/null
@@ -0,0 +1,26 @@
+
+#include "AliESDv0.h"
+#include "AliTRDv0Info.h"
+
+ClassImp(AliTRDv0Info)
+
+//_________________________________________________
+AliTRDv0Info::AliTRDv0Info()
+  : TObject()
+  ,fStatus(0)
+{
+}
+
+//_________________________________________________
+AliTRDv0Info::AliTRDv0Info(AliESDv0 */*v0*/)
+  : TObject()
+  ,fStatus(0)
+{
+}
+
+
+//_________________________________________________
+void AliTRDv0Info::Print(Option_t */*opt*/) const
+{
+  printf("AliTRDv0Info::Print() : Nothing implemented so far.\n");
+}
diff --git a/TRD/qaRec/info/AliTRDv0Info.h b/TRD/qaRec/info/AliTRDv0Info.h
new file mode 100644 (file)
index 0000000..6078db0
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef ALITRDV0INFO_H
+#define ALITRDV0INFO_H
+
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+
+#ifndef Root_TObject
+#include "TObject.h"
+#endif
+
+#ifndef ALITRDGEOMETRY_H
+#include "AliTRDgeometry.h"
+#endif
+
+#ifndef ALIPID_H
+#include "AliPID.h"
+#endif
+
+class AliESDv0;
+class AliTRDv0Info : public TObject
+{
+public:
+  enum ETRDv0Info{
+    kNV0param = 10
+   ,kNlayer   = AliTRDgeometry::kNlayer
+   ,kNDetectors = 2
+  };
+  AliTRDv0Info();
+  AliTRDv0Info(AliESDv0 *v0);
+  void            Print(Option_t *opt=0x0) const;
+
+
+private:
+  Int_t   fStatus;              // track status
+  Float_t fV0param[kNV0param];  // V0 parameters (momentum, variance, etc)
+  Float_t fPplus[2*kNlayer];    // momentum and variance for the positive daughter  
+  Float_t fPminus[2*kNlayer];   // momentum and variance for the negative daughter  
+  Float_t fPID[kNDetectors][AliPID::kSPECIES]; // PID provided by TPC and TOF
+
+  ClassDef(AliTRDv0Info, 0) // extracted V0 MC information
+};
+
+
+#endif
+
index 75cdeff..f8d48f0 100644 (file)
@@ -29,6 +29,7 @@ void AddTRDcheckPID(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContain
   
   // Create containers for input/output
   mgr->ConnectInput( ref, 0, ci[0]);
+  mgr->ConnectInput( ref, 1, ci[2]);
   mgr->ConnectOutput(ref, 0, mgr->CreateContainer(ref->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", ref->GetName())));
   
   // network container
index 62c27e7..4340ed5 100644 (file)
@@ -18,7 +18,9 @@ void AddTRDinfoGen(AliAnalysisManager *mgr, Char_t *trd, AliAnalysisDataContaine
   mgr->ConnectInput( info, 0, mgr->GetCommonInputContainer());
   co[0] = mgr->CreateContainer("trackInfo", TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
   co[1] = mgr->CreateContainer("eventInfo", AliTRDeventInfo::Class(), AliAnalysisManager::kExchangeContainer);
+  co[2] = mgr->CreateContainer("v0Info", TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
   mgr->ConnectOutput(info, 0, co[0]);
   mgr->ConnectOutput(info, 1, co[1]);
+  mgr->ConnectOutput(info, 2, co[2]);
 }
 
index 032acfd..fb2b23e 100644 (file)
@@ -158,7 +158,7 @@ void run(Char_t *trd="ALL", Char_t *tpc="ALL", const Char_t *files=0x0, Long64_t
   // TRD specific library
   if(gSystem->Load("libTRDqaRec.so")<0) return;
   // TRD data containers
-  AliAnalysisDataContainer *ci[] = {0x0, 0x0};
+  AliAnalysisDataContainer *ci[] = {0x0, 0x0, 0x0};
 
 
   // initialize TRD settings